mirror of
https://github.com/cyberarm/i-mic-rts.git
synced 2025-12-15 15:52:34 +00:00
50 lines
1.1 KiB
Ruby
50 lines
1.1 KiB
Ruby
class IMICRTS
|
|
class GameSave
|
|
def initialize(mode:, gamesave_file:, map_file: nil, players: nil, gamesave: false, player_id: nil)
|
|
@mode = mode
|
|
@gamesave_file = File.open(gamesave_file, "#{@mode == :write ? 'w' : 'r'}")
|
|
@map_file = map_file
|
|
@players = players
|
|
@gamesave = gamesave
|
|
@player_id = player_id
|
|
|
|
@version = IMICRTS::VERSION
|
|
end
|
|
|
|
def parse
|
|
#
|
|
end
|
|
|
|
def feed_tick(tick_id)
|
|
|
|
end
|
|
|
|
def write_header
|
|
player_data = @players.map do |player|
|
|
{
|
|
id: player.id,
|
|
name: player.name,
|
|
team: player.team,
|
|
spawnpoint: player.spawnpoint,
|
|
color: player.color&.gl,
|
|
bot: player.bot
|
|
}
|
|
end
|
|
|
|
s = %{#{@version}
|
|
#{@map_file}?#{Digest::SHA256.digest(File.read("#{IMICRTS::GAME_ROOT_PATH}/assets/#{@map_file}"))}
|
|
#{@gamesave ? "GAMESAVE?#{@player_id}" : "REPLAY"}
|
|
#{JSON.dump(player_data)}}
|
|
|
|
@gamesave_file.puts(s)
|
|
end
|
|
|
|
def write_order(raw_order)
|
|
@gamesave_file.puts(raw_order)
|
|
end
|
|
|
|
def finalize
|
|
@gamesave_file&.close
|
|
end
|
|
end
|
|
end |