Store resources in generic inventories
This commit is contained in:
parent
02643c76c4
commit
1721edd123
24 changed files with 385 additions and 172 deletions
48
tests/test_generic_inventory.gd
Normal file
48
tests/test_generic_inventory.gd
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
extends SceneTree
|
||||
|
||||
const INVENTORY = preload("res://Inventory.gd")
|
||||
const TEST_RESOURCE: String = "crystal"
|
||||
|
||||
|
||||
func _initialize() -> void:
|
||||
var game_state: Node = root.get_node("GameState")
|
||||
game_state.buildings.clear()
|
||||
game_state.bank_inventory.set_amount(TEST_RESOURCE, 40)
|
||||
game_state.fleet_inventory.set_amount(TEST_RESOURCE, 0)
|
||||
|
||||
var mothership_id: int = game_state.add_building(GameState.BUILDING_MOTHERSHIP, Vector2.ZERO)
|
||||
var crafter_id: int = game_state.add_building(GameState.BUILDING_SHIP_CRAFTER, Vector2(100, 0))
|
||||
if game_state.transfer_resource_to_fleet(mothership_id, TEST_RESOURCE, 15) != 15:
|
||||
return _fail("third resource could not move from bank to fleet")
|
||||
if game_state.transfer_resource_to_building(crafter_id, TEST_RESOURCE, 9) != 9:
|
||||
return _fail("third resource could not move from fleet to building")
|
||||
if game_state.transfer_resource_to_fleet(crafter_id, TEST_RESOURCE, 4) != 4:
|
||||
return _fail("third resource could not move back out of building")
|
||||
if game_state.banked_resource(TEST_RESOURCE) != 25 \
|
||||
or game_state.fleet_resource(TEST_RESOURCE) != 10 \
|
||||
or game_state.building_resource(crafter_id, TEST_RESOURCE) != 5:
|
||||
return _fail("third-resource amounts were not conserved")
|
||||
|
||||
var limited: RefCounted = INVENTORY.new({}, 10)
|
||||
limited.resource_capacities[TEST_RESOURCE] = 6
|
||||
if limited.deposit(TEST_RESOURCE, 99) != 6 or limited.deposit("water", 99) != 4:
|
||||
return _fail("total or per-resource capacity was not enforced")
|
||||
|
||||
var legacy_id: int = game_state.next_building_id
|
||||
game_state.next_building_id += 1
|
||||
game_state.buildings.append({"id": legacy_id, "type": GameState.BUILDING_SHIP_CRAFTER,
|
||||
"position": Vector2.ZERO, "stock": 7, "gas_stock": 3, "orders": []})
|
||||
if game_state.building_resource(legacy_id, GameState.RESOURCE_ORE) != 7 \
|
||||
or game_state.building_resource(legacy_id, GameState.RESOURCE_GAS) != 3:
|
||||
return _fail("legacy building stock was not migrated")
|
||||
var migrated: Dictionary = game_state.find_building(legacy_id)
|
||||
if migrated.has("stock") or migrated.has("gas_stock") or not migrated.has("inventory"):
|
||||
return _fail("legacy fields remained after migration")
|
||||
|
||||
print("TEST_GENERIC_INVENTORY: PASS")
|
||||
quit(0)
|
||||
|
||||
|
||||
func _fail(message: String) -> void:
|
||||
print("TEST_GENERIC_INVENTORY: FAIL (%s)" % message)
|
||||
quit(1)
|
||||
Loading…
Reference in a new issue