Sha256: dd53ccd90826b53c8b087a09540f16a6016ad432e3e6fbe627e0d5c4428c89a9
Contents?: true
Size: 1.06 KB
Versions: 3
Compression:
Stored size: 1.06 KB
Contents
# Use this for a thing that damages. # # Example: # class Rocket # it_is Damaging # # damage { rand(10) + 5 } # end # # OR # class Rocket # it_is Damaging # # damage 15 # end # # OR # # class Rocket # it_is Damaging # # def damage # # Define your own damage method. # end # end # module Damaging class DamageMissingError < RuntimeError def initialize super <<-MESSAGE In a Damaging thing, you need to define method damage damage = nil, &block with params damage 13 # some value or damage { 13 + rand(7) } # some block to define how much damage the thing does. MESSAGE end end def self.included klass klass.extend ClassMethods end def initialize window raise DamageMissingError.new unless self.respond_to? :damage super window end module ClassMethods def damage damage = nil, &block block = lambda { damage } unless block_given? define_method :damage, &block end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
gosu_extensions-0.1.14 | lib/traits/damaging.rb |
gosu_extensions-0.1.13 | lib/traits/damaging.rb |
gosu_extensions-0.1.12 | lib/traits/damaging.rb |