Example #1
0
void GameInstSet::deserialize(GameState* gs, SerializeBuffer& serializer) {
	serializer.read_int(grid_w);
	serializer.read_int(grid_h);

	//Resize and clear
	unit_grid.resize(grid_w * grid_h);
	clear();

	int amnt;
	serializer.read_int(amnt);
	serializer.read_int(next_id);

	for (int i = 0; i < amnt; i++) {
		InstType type;
		int id;
		serializer.read_int(type);
		serializer.read_int(id);
		printf("Deserializing id=%d\n", id);
		GameInst* inst = get_instance(id);
		bool has_inst = inst != NULL;
		if (!has_inst) {
			inst = from_inst_type(type);
			inst->deserialize(gs, serializer);
			inst->last_x = inst->x;
			inst->last_y = inst->y;
			inst->id = id;
			add_instance(inst, inst->id);

		} else {
			safe_deserialize(inst, gs, serializer);
		}
		LANARTS_ASSERT(
				serializer_equals_read(serializer, inst->integrity_hash()));
	}
}