Module: Lich::Common::GameLoader

Defined in:
documented/common/gameloader.rb,
documented/common/game-loader.rb

Overview

Module responsible for loading game-specific resources.

Examples:

Loading the Gemstone game

Lich::Common::GameLoader.load!

Class Method Summary collapse

Class Method Details

.common_aftervoid

This method returns an undefined value.

Placeholder for any cleanup or finalization after loading.



75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'documented/common/gameloader.rb', line 75

def self.common_after
  require File.join(LIB_DIR, 'common', 'postload.rb')
  PostLoad.register("settings_init") do
    # When the game server sends malformed <settingsInfo  space not found ...> XML,
    # it means this character has never logged in with the Wrayth client.
    # The reactive fix in handle_xml_error patches the XML and sets the flag.
    # Here we send a dummy <db> command to seed a valid client record so
    # the server sends properly formatted settingsInfo on future connects.
    if GameBase::Game.settings_init_needed?
      Game._puts("<db><settings client='1.0.1.28'></settings>")
    end
  end
  PostLoad.watch!
end

.common_beforevoid

This method returns an undefined value.

Loads common dependencies required for the game.



10
11
12
13
14
15
16
17
# File 'documented/common/gameloader.rb', line 10

def self.common_before
  require File.join(LIB_DIR, 'common', 'account.rb')
  require File.join(LIB_DIR, 'common', 'log.rb')
  require File.join(LIB_DIR, 'common', 'spell.rb')
  require File.join(LIB_DIR, 'util', 'util.rb')
  require File.join(LIB_DIR, 'util', 'textstripper.rb')
  require File.join(LIB_DIR, 'common', 'hmr.rb')
end

.dragon_realmsvoid

This method returns an undefined value.

Loads all resources specific to the Dragon Realms game.



62
63
64
65
66
67
68
69
70
71
# File 'documented/common/gameloader.rb', line 62

def self.dragon_realms
  self.common_before
  require File.join(LIB_DIR, 'common', 'map', 'map_dr.rb')
  require File.join(LIB_DIR, 'attributes', 'char.rb')
  require File.join(LIB_DIR, 'dragonrealms', 'dependency', 'settings_config.rb')
  require File.join(LIB_DIR, 'dragonrealms', 'drinfomon.rb')
  require File.join(LIB_DIR, 'dragonrealms', 'commons.rb')
  DRInfomon.watch!
  self.common_after
end

.gemstonevoid

This method returns an undefined value.

Loads all resources specific to the Gemstone game.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'documented/common/gameloader.rb', line 21

def self.gemstone
  self.common_before
  require File.join(LIB_DIR, 'gemstone', 'sk.rb')
  require File.join(LIB_DIR, 'common', 'map', 'map_gs.rb')
  require File.join(LIB_DIR, 'gemstone', 'effects.rb')
  require File.join(LIB_DIR, 'gemstone', 'bounty.rb')
  require File.join(LIB_DIR, 'gemstone', 'claim.rb')
  require File.join(LIB_DIR, 'gemstone', 'overwatch.rb')
  require File.join(LIB_DIR, 'gemstone', 'infomon.rb')
  require File.join(LIB_DIR, 'attributes', 'resources.rb')
  require File.join(LIB_DIR, 'attributes', 'stats.rb')
  require File.join(LIB_DIR, 'attributes', 'spells.rb')
  require File.join(LIB_DIR, 'attributes', 'skills.rb')
  require File.join(LIB_DIR, 'attributes', 'enhancive.rb')
  require File.join(LIB_DIR, 'gemstone', 'society.rb')
  require File.join(LIB_DIR, 'gemstone', 'infomon', 'status.rb')
  require File.join(LIB_DIR, 'gemstone', 'experience.rb')
  require File.join(LIB_DIR, 'attributes', 'spellsong.rb')
  require File.join(LIB_DIR, 'gemstone', 'infomon', 'activespell.rb')
  require File.join(LIB_DIR, 'gemstone', 'psms.rb')
  require File.join(LIB_DIR, 'attributes', 'char.rb')
  require File.join(LIB_DIR, 'gemstone', 'currency.rb')
  # require File.join(LIB_DIR, 'gemstone', 'character', 'disk.rb') # dup
  require File.join(LIB_DIR, 'gemstone', 'group.rb')
  require File.join(LIB_DIR, 'gemstone', 'critranks')
  require File.join(LIB_DIR, 'gemstone', 'injured')
  require File.join(LIB_DIR, 'gemstone', 'wounds.rb')
  require File.join(LIB_DIR, 'gemstone', 'scars.rb')
  require File.join(LIB_DIR, 'gemstone', 'gift.rb')
  # require File.join(LIB_DIR, 'gemstone', 'creature.rb') # combat tracker below loads this so not needed to preload
  require File.join(LIB_DIR, 'gemstone', 'combat', 'tracker.rb')
  require File.join(LIB_DIR, 'gemstone', 'readylist.rb')
  require File.join(LIB_DIR, 'gemstone', 'stowlist.rb')
  require File.join(LIB_DIR, 'gemstone', 'armaments.rb')
  ActiveSpell.watch!
  Infomon.watch!
  self.common_after
end

.load!void

This method returns an undefined value.

Loads the appropriate game based on the XMLData configuration.

Examples:

Loading a game

Lich::Common::GameLoader.load!

Raises:

  • (RuntimeError)

    if the game cannot be loaded.



92
93
94
95
96
97
# File 'documented/common/gameloader.rb', line 92

def self.load!
  sleep 0.1 while XMLData.game.nil? or XMLData.game.empty?
  return self.dragon_realms if XMLData.game =~ /DR/
  return self.gemstone if XMLData.game =~ /GS/
  echo "could not load game specifics for %s" % XMLData.game
end