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)