mirror of
https://github.com/cyberarm/i-mic-rts.git
synced 2025-12-15 15:52:34 +00:00
now save player name from SoloLobby, made Director know able game so that construction workers can set active tool for Game (todo: implement tools :D), drafted 'structure' document
This commit is contained in:
@@ -9,19 +9,31 @@ class IMICRTS
|
||||
@actions = []
|
||||
end
|
||||
|
||||
def add(action, *args)
|
||||
case action
|
||||
def add(type, *args)
|
||||
action = Action.new
|
||||
|
||||
case type
|
||||
when :add_to_build_queue
|
||||
action = Action.new
|
||||
ent = IMICRTS::Entity.get(args.first)
|
||||
raise "Failed to find entity: #{args.first.inspect}" unless ent
|
||||
|
||||
action.label = ent.name.to_s.split("_").map{ |s| s.capitalize }.join(" ")
|
||||
action.description = "Cost: #{ent.cost}\n#{ent.description}"
|
||||
action.block = proc { @parent.component(:build_queue).add(args.first) }
|
||||
|
||||
@actions << action
|
||||
when :set_build_tool
|
||||
ent = IMICRTS::Entity.get(args[1])
|
||||
raise "Failed to find entity: #{args[1].inspect}" unless ent
|
||||
|
||||
action.label = ent.name.to_s.split("_").map { |s| s.capitalize }.join(" ")
|
||||
action.description = "Cost: #{ent.cost}\n#{ent.description}"
|
||||
action.block = proc { @parent.director.game.set_tool(:building, ent) }
|
||||
|
||||
else
|
||||
raise "Unhandled sidebar action: #{action.inspect}"
|
||||
end
|
||||
|
||||
@actions << action
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
class IMICRTS
|
||||
class Director
|
||||
attr_reader :current_tick, :map
|
||||
def initialize(map:, players:, networking_mode:, tick_rate: 10)
|
||||
attr_reader :current_tick, :map, :game
|
||||
def initialize(game:, map:, players:, networking_mode:, tick_rate: 10)
|
||||
@game = game
|
||||
@map = map
|
||||
@players = players
|
||||
@connection = IMICRTS::Connection.new(director: self, mode: networking_mode)
|
||||
@@ -121,4 +122,4 @@ class IMICRTS
|
||||
@connection.finalize
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3,7 +3,7 @@ IMICRTS::Entity.define_entity(:construction_worker, :unit, 1000, "Constructs bui
|
||||
entity.has(:build_queue)
|
||||
entity.has(:sidebar_actions)
|
||||
[:power_plant, :refinery, :barracks, :war_factory, :helipad, :construction_yard].each do |ent|
|
||||
entity.component(:sidebar_actions).add(:add_to_build_queue, ent)
|
||||
entity.component(:sidebar_actions).add(:set_build_tool, :place_building, ent)
|
||||
end
|
||||
|
||||
entity.radius = 14
|
||||
|
||||
@@ -15,7 +15,7 @@ class IMICRTS
|
||||
end
|
||||
end
|
||||
|
||||
attr_reader :player, :id, :name, :type, :speed
|
||||
attr_reader :director, :player, :id, :name, :type, :speed
|
||||
attr_accessor :position, :angle, :radius, :target, :state,
|
||||
:movement, :health, :max_health,
|
||||
:turret, :center, :particle_emitters
|
||||
@@ -188,4 +188,4 @@ end
|
||||
|
||||
Dir.glob("#{IMICRTS::GAME_ROOT_PATH}/lib/entities/**/*.rb").each do |entity|
|
||||
require_relative entity
|
||||
end
|
||||
end
|
||||
|
||||
@@ -8,7 +8,7 @@ class IMICRTS
|
||||
@options[:networking_mode] ||= :host
|
||||
|
||||
@player = Player.new(id: 0)
|
||||
@director = Director.new(map: Map.new(map_file: "maps/test_map.tmx"), networking_mode: @options[:networking_mode], players: [@player])
|
||||
@director = Director.new(game: self, map: Map.new(map_file: "maps/test_map.tmx"), networking_mode: @options[:networking_mode], players: [@player])
|
||||
@entity_controller = EntityController.new(game: self, director: @director, player: @player)
|
||||
|
||||
@overlays = []
|
||||
@@ -172,8 +172,12 @@ class IMICRTS
|
||||
@player.camera.button_up(id)
|
||||
end
|
||||
|
||||
def set_tool(tool, *args)
|
||||
pp tool, args
|
||||
end
|
||||
|
||||
def finalize
|
||||
@director.finalize
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -12,7 +12,7 @@ class IMICRTS
|
||||
end
|
||||
flow do
|
||||
button("Refresh") do
|
||||
# refresh_games
|
||||
refresh_games
|
||||
end
|
||||
button("Host Game")
|
||||
button("Join Game")
|
||||
@@ -25,9 +25,9 @@ class IMICRTS
|
||||
end
|
||||
|
||||
def refresh_games
|
||||
@games_list.clear do
|
||||
label "No games found..."
|
||||
@games_list.clear do |stack|
|
||||
stack.label "No games found..."
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -35,15 +35,22 @@ class IMICRTS
|
||||
|
||||
flow(width: 1.0) do
|
||||
button("Accept", width: 0.5) do
|
||||
Setting.set(:player_name, @player_name.value)
|
||||
save_playerdata
|
||||
push_state(Game, networking_mode: :virtual)
|
||||
end
|
||||
|
||||
button("Back", align: :right) do
|
||||
save_playerdata
|
||||
push_state(MainMenu)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def save_playerdata
|
||||
Setting.set(:player_name, @player_name.value)
|
||||
|
||||
Setting.save!
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user