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