def test_settler_level_save_load(s, p): """ Verify that settler level up with save/load works """ # test all available upgrades: 0->1, 1->2, 2->3... for test_level in range(TIER.CURRENT_MAX): session, player = new_session() settlement, island = settle(s) settler = Build(BUILDINGS.RESIDENTIAL, 22, 22, island, settlement=settlement)(p) settler.level += test_level settler._update_level_data(True, True) settler_worldid = settler.worldid settlement.tax_settings[settler.level] = -0.5 # make it happy inv = settler.get_component(StorageComponent).inventory to_give = inv.get_free_space_for(RES.HAPPINESS) inv.alter(RES.HAPPINESS, to_give) settler.inhabitants = settler.inhabitants_max level = settler.level # wait for it to realize it's supposed to upgrade s.run(seconds=GAME.INGAME_TICK_INTERVAL) assert settler.level == level session = saveload(session) settler = WorldObject.get_object_by_id(settler_worldid) inv = settler.get_component(StorageComponent).inventory assert settler.level == level # continue s.run(seconds=GAME.INGAME_TICK_INTERVAL) assert inv[RES.BOARDS] == 0 assert inv[RES.BRICKS] == 0 assert settler.level == level # give upgrade res inv.alter(RES.BOARDS, 100) inv.alter(RES.BRICKS, 100) # give it max population settler.inhabitants = settler.inhabitants_max s.run(seconds=GAME.INGAME_TICK_INTERVAL) # should have leveled up assert settler.level == level + 1
def test_settler_level_save_load(s, p): """ Verify that settler level up with save/load works """ # test all available upgrades: 0->1, 1->2, 2->3... for test_level in xrange(TIER.CURRENT_MAX): session, player = new_session() settlement, island = settle(s) settler = Build(BUILDINGS.RESIDENTIAL, 22, 22, island, settlement=settlement)(p) settler.level += test_level settler_worldid = settler.worldid # make it happy inv = settler.get_component(StorageComponent).inventory to_give = inv.get_free_space_for(RES.HAPPINESS) inv.alter(RES.HAPPINESS, to_give) level = settler.level # wait for it to realize it's supposed to upgrade s.run(seconds=GAME.INGAME_TICK_INTERVAL) session = saveload(session) settler = WorldObject.get_object_by_id(settler_worldid) inv = settler.get_component(StorageComponent).inventory # continue s.run(seconds=GAME.INGAME_TICK_INTERVAL) assert settler.level == level # give upgrade res inv.alter(RES.BOARDS, 100) inv.alter(RES.BRICKS, 100) # give it max population settler.inhabitants = settler.inhabitants_max s.run(seconds=GAME.INGAME_TICK_INTERVAL) # should have leveled up assert settler.level == level + 1
def test_settler_level_save_load(s, p): """ Verify that settler level up with save/load works """ for test_level in xrange(3): # test upgrade 0->1, 1->2 and 2->3 session, player = new_session() settlement, island = settle(s) settler = Build(BUILDINGS.RESIDENTIAL, 22, 22, island, settlement=settlement)(p) settler.level += test_level settler_worldid = settler.worldid # make it happy inv = settler.get_component(StorageComponent).inventory to_give = inv.get_free_space_for(RES.HAPPINESS) inv.alter(RES.HAPPINESS, to_give) level = settler.level # wait for it to realize it's supposed to upgrade s.run(seconds=GAME.INGAME_TICK_INTERVAL) session = saveload(session) settler = WorldObject.get_object_by_id(settler_worldid) inv = settler.get_component(StorageComponent).inventory # continue s.run(seconds=GAME.INGAME_TICK_INTERVAL) assert settler.level == level # give upgrade res inv.alter(RES.BOARDS, 100) inv.alter(RES.BRICKS, 100) # give it max population settler.inhabitants = settler.inhabitants_max s.run(seconds=GAME.INGAME_TICK_INTERVAL) # should have leveled up assert settler.level == level + 1