class TyranoDsl::Elements::World

The game world

Attributes

backgrounds[R]

@return [Hash{String => TyranoDsl::Elements::Background}]

characters[R]

@return [Hash{String => TyranoDsl::Elements::Character}]

jump_targets[R]

@return [Array<TyranoDsl::Elements::JumpTarget>]

labels[R]

@return [Hash{String => TyranoDsl::Elements::Label}]

scenes[R]

@return [Hash{String => TyranoDsl::Elements::Scene}]

title_screen[R]

@return [TyranoDsl::Elements::TitleScreen]

variables[R]

@return [Hash{String => TyranoDsl::Elements::Variable}]

Public Class Methods

new() click to toggle source
# File lib/tyrano_dsl/elements/world.rb, line 24
def initialize
  @characters = {}
  @backgrounds = {}
  @labels = {}
  @jump_targets = []
  @scenes = {}
  @variables = {}
  @title_screen = TyranoDsl::Elements::TitleScreen.new
end

Public Instance Methods

label_value(label_name) click to toggle source

@param [String, nil] label_name @return [TyranoDsl::Elements::Label]

# File lib/tyrano_dsl/elements/world.rb, line 51
def label_value(label_name)
  if @labels.key? label_name
    @labels[label_name]
  else
    technical_name = label_name ? "label_#{@labels.length}" : nil
    label = TyranoDsl::Elements::Label.new(label_name, technical_name)
    @labels[label_name] = label
    label
  end
end
validate() click to toggle source

@return [void] @raise [TyranoDsl::TyranoException]

# File lib/tyrano_dsl/elements/world.rb, line 36
def validate
  @jump_targets.each do |jump_target|
    scene = @scenes[jump_target.scene]
    unless scene
      raise TyranoDsl::TyranoException, "Unknown scene [#{jump_target.scene}] declared in label"
    end
    jump_target_label = jump_target.label
    if jump_target_label && (!scene.labels.include?(jump_target_label.name))
      raise TyranoDsl::TyranoException, "Unknown label [#{jump_target_label.name}] declared in label"
    end
  end
end