class Core::States::GameState
Runs the map and basic game logic
Attributes
map[R]
osd[R]
party[R]
Public Class Methods
new(window)
click to toggle source
Calls superclass method
Core::States::State::new
# File lib/states/states.rb, line 44 def initialize(window) super(window) Core.window.state = self Core::Game.items = Core::Parse.items Core::Game.skills = Core::Parse.skills Core::Game.spells = Core::Parse.spells Core::Game.weapons = Core::Parse.weapons Core::Game.enemies = Core::Parse.enemies # needs the weapons Core::Game.characters = Core::Parse.characters Core::Game::Alchemy.recipies = Core::Parse.recipies Core::Trans.parse_items Core::Trans.parse_skills Core::Trans.parse_spells Core::Trans.parse_dialogues Core::Trans.parse_enemies @party = Core::Game::Party.new @map = Core::Game::MapLoader.new @map.load("test") # TODO fetch from init.def @setup = false @context = nil @osd = {} end
Public Instance Methods
battle(enemies, bg, ctrl)
click to toggle source
# File lib/states/states.rb, line 132 def battle(enemies, bg, ctrl) Core.window.save Core.window.advance(BattleState.new(@party, enemies, bg, ctrl)) end
draw()
click to toggle source
# File lib/states/states.rb, line 101 def draw @map.draw @osd.each_value { |w| w.draw } @context.draw if @context draw_cursor end
find_object(x, y)
click to toggle source
Looks for an objects on the current map at the given screen coordinates
Returns nil
if nothing was found
# File lib/states/states.rb, line 113 def find_object(x, y) #puts("looking for object at #{x/32}|#{y/32} (#{x}|#{y})") @map.objects.each { |obj| if obj.x/32 == x/32 and obj.y/32 == y/32 #puts("found #{obj.inspect}") return obj end } return nil end
player()
click to toggle source
# File lib/states/states.rb, line 124 def player @map.objects.each { |obj| if obj.class == Core::Game::Player return obj end } end
update()
click to toggle source
# File lib/states/states.rb, line 67 def update if @window.pressed?(Gosu::KbEscape) @window.save @window.advance(IngameMenu.new(Core.window, @party)) return end if @window.pressed?(Gosu::MsRight) and @context ? !Core.inside?(@window.mouse_x, @window.mouse_y, @context.x, @context.y, @context.x+@context.w, @context.y+@context.h) : true obj = find_object(@window.mouse_x.to_i - @map.xoff, @window.mouse_y.to_i - @map.yoff) @context = Core::GUI::ContextMenu.new(@window.mouse_x, @window.mouse_y, obj) end if @context @context.update # TODO fade context menu if (@window.pressed?(Gosu::MsLeft) and !Core.inside?(@window.mouse_x, @window.mouse_y, @context.x, @context.y, @context.x+@context.w, @context.y+@context.h)) or @context.remove? #@context.fade @context = nil end #if @context.faded? #end end @party.update @map.update @osd.each_value { |w| w.update if w.remove? @osd.delete(@osd.key(w)) end } update_cursor @window.unpress @setup = true #battle([Core::Game.enemies.first], "white_ties_grass", Core::Game::Combat::Control.new(:test)) end