Add map generator
This commit is contained in:
parent
f03a13ce66
commit
6fa9a7cf8e
@ -3,7 +3,8 @@ require "../src/game/world"
|
||||
|
||||
describe "World" do
|
||||
it "should build crystal harvester" do
|
||||
world = Game::World.new
|
||||
map = Game::Generator.make 5, 5
|
||||
world = Game::World.new map
|
||||
point = Game::Point.new 2, 3
|
||||
cmd = Game::BuildCrystalHarvesterCommand.new(point)
|
||||
world.push(cmd)
|
||||
@ -12,7 +13,8 @@ describe "World" do
|
||||
end
|
||||
|
||||
it "should fail when not enought resources" do
|
||||
world = Game::World.new
|
||||
map = Game::Generator.make 5, 5
|
||||
world = Game::World.new map
|
||||
point = Game::Point.new 2, 3
|
||||
cmd = Game::BuildCrystalRestorerCommand.new(point)
|
||||
expect_raises(Game::NotEnoughtResources) do
|
||||
|
@ -2,8 +2,9 @@ require "colorize"
|
||||
require "./game/**"
|
||||
require "./cli/**"
|
||||
|
||||
map = Game::Generator.make 5, 10
|
||||
ts = Time.local.to_unix
|
||||
world = Game::World.new(ts)
|
||||
world = Game::World.new map, ts
|
||||
|
||||
router = CLI::CommandRouter.new
|
||||
|
||||
|
@ -20,19 +20,15 @@ module Game
|
||||
|
||||
property data : DataArray
|
||||
|
||||
def initialize(@rows : Int32, @cols : Int32)
|
||||
def initialize(@rows : Int32, @cols : Int32, tile_type = PlateauTile)
|
||||
@data = DataArray.new @rows
|
||||
@rows.times do |row_index|
|
||||
tile_row = TileRow.new @cols
|
||||
@cols.times do |col_index|
|
||||
tile_row << PlateauTile.new(Point.new(row_index, col_index))
|
||||
tile_row << tile_type.new(Point.new(row_index, col_index))
|
||||
end
|
||||
@data << tile_row
|
||||
end
|
||||
self.set(MainBaseTile.new(Point.new(0, 0)))
|
||||
self.set(CrystalTile.new(Point.new(1, 2), 100))
|
||||
self.set(CrystalTile.new(Point.new(4, 2), 200))
|
||||
self.set(CrystalTile.new(Point.new(3, 3), 100))
|
||||
end
|
||||
|
||||
getter rows
|
||||
@ -80,6 +76,14 @@ module Game
|
||||
end
|
||||
end
|
||||
|
||||
class MapGenerator
|
||||
class Generator
|
||||
def self.make(rows, cols) : Map
|
||||
map = Map.new(rows, cols)
|
||||
map.set(MainBaseTile.new(Point.new(0, 0)))
|
||||
map.set(CrystalTile.new(Point.new(1, 2), 100))
|
||||
map.set(CrystalTile.new(Point.new(4, 2), 200))
|
||||
map.set(CrystalTile.new(Point.new(3, 3), 100))
|
||||
map
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -3,9 +3,8 @@ require "./resources"
|
||||
class Game::World
|
||||
property ts : Int64
|
||||
|
||||
def initialize(@ts = 0_i64)
|
||||
def initialize(@map : Map, @ts = 0_i64)
|
||||
@start_ts = @ts
|
||||
@map = Map.new 5, 5
|
||||
@resources = Resources.new
|
||||
@queue = Queue.new
|
||||
@finished = false
|
||||
|
Loading…
Reference in New Issue
Block a user