diff --git a/lib/aethyr/core/objects/game_object.rb b/lib/aethyr/core/objects/game_object.rb index 873fe8c64e8edaab48254fb51123c768021deff6..710fbceb79e59447a47910a6d1833841ae66a82d 100644 --- a/lib/aethyr/core/objects/game_object.rb +++ b/lib/aethyr/core/objects/game_object.rb @@ -83,10 +83,6 @@ class GameObject < Publisher @admin = false load_defaults - puts "checking gender for #{@name}" - puts @gender - puts "and defaults" - puts @@defaults end def attributes diff --git a/lib/aethyr/core/util/defaults.rb b/lib/aethyr/core/util/defaults.rb index 5c120cb577080d32e534833720b67075c8f68f88..090a671099a737b3a7645c62d8666938b12b71a0 100644 --- a/lib/aethyr/core/util/defaults.rb +++ b/lib/aethyr/core/util/defaults.rb @@ -10,13 +10,15 @@ module Defaults end def load_defaults - return if not @@defaults.key? self.class.name.to_s - local_defaults = @@defaults[self.class.name.to_s] - local_defaults.each do |default| - attribute = default[:attribute] - block = default[:block] - if not instance_variable_defined?(attribute) - self.set_default(attribute, &block) + @@defaults.each do |klazz, local_defaults| + if self.kind_of? klazz + local_defaults.each do |default| + attribute = default[:attribute] + block = default[:block] + if not instance_variable_defined?(attribute) + self.set_default(attribute, &block) + end + end end end end @@ -30,107 +32,13 @@ module Defaults module ClassMethods def default(attribute_raw, &block) - default_exists = Defaults.defaults.key? self.name.to_s - local_defaults = default_exists ? Defaults.defaults[self.name.to_s] : [] + default_exists = Defaults.defaults.key? self + local_defaults = default_exists ? Defaults.defaults[self] : [] attribute = "@".concat(attribute_raw.to_s).to_sym local_defaults.push({:attribute => attribute, :block => block}) - Defaults.defaults[self.name.to_s] = local_defaults if not default_exists + Defaults.defaults[self] = local_defaults if not default_exists end end end - -class Foo - include Defaults - - attr_reader :sex - - default(:bar) {"foobar"} - default(:baz) { |this| this.instance_variable_get(:@bar).concat(" and baz") } - #default(:sex) {"m"} - default(:gender) do |this| - if this.sex == 'm' - "Lexicon::Gender::MASCULINE" - elsif this.sex == 'f' - "Lexicon::Gender::FEMININE" - else - "Lexicon::Gender::NEUTER" - end - end - - def initialize - @dummy_var = "this is just so something exists" - @sex = 'm' - load_defaults - end - - def local_failbar - @failbar - end - - def local_bar - @bar - end - - def self.check_df - @@defaults - end - - def local_df - @@defaults - end - - def class_vars_proxy - self.class.instance_variables - end - - def local_baz - @baz - end - - def local_sex - @sex - end - - def local_gender - @gender - end -end - -puts "check_df" -puts Foo.check_df - -puts "local_df" -foo = Foo.new -puts foo.local_df - -puts "Defaults::defaults" -puts Defaults::defaults - -#puts "foo.defaults" -#puts foo.defaults - -puts "local_bar" -puts foo.local_bar - -puts "local_failbar" -puts foo.local_failbar - -puts "instance vars" -puts foo.instance_variables - -puts "class vars" -puts Foo.instance_variables - -puts "class vars proxy" -puts foo.class_vars_proxy - -puts "local_baz" -puts foo.local_baz - -puts "local_sex" -puts foo.local_sex - -puts "local_gender" -puts foo.local_gender