protected MineSerializer GetMineSerializer() { MineSerializer ms = new MineSerializer(); ms.workBuildingSerializer = GetWorkBuildingSerializer(); ms.workFinished = workFinished; ms.lastWorkObjectPos = lastWorkObjectPos; ms.awaitingElevatorBuilding = awaitingElevatorBuilding; ms.level = level; ms.elevators = new List <StructureSerializer>(); ms.elevatorHeights = new List <byte>(); ms.haveElevators = false; if (level > 1) { for (int i = 0; i < elevators.Count; i++) { if (elevators[i] == null) { continue; } else { ms.elevators.Add((elevators[i] as MineElevator).GetSerializer()); ms.elevatorHeights.Add(elevators[i].basement.pos.y); ms.haveElevators = true; } } } return(ms); }
override public void Load(StructureSerializer ss, SurfaceBlock sblock) { LoadStructureData(ss, sblock); MineSerializer ms = new MineSerializer(); GameMaster.DeserializeByteArray(ss.specificData, ref ms); LoadMineData(ms); }
protected void LoadMineData(MineSerializer ms) { level = ms.level; LoadWorkBuildingData(ms.workBuildingSerializer); elevators = new List <Structure>(); if (level > 1 & ms.haveElevators) { for (int i = 0; i < ms.elevators.Count; i++) { Structure s = Structure.GetStructureByID(MINE_ELEVATOR_ID); s.Load(ms.elevators[i], basement.myChunk.GetBlock(basement.pos.x, ms.elevatorHeights[i], basement.pos.z) as SurfaceBlock); elevators.Add(s); } } workFinished = ms.workFinished; lastWorkObjectPos = ms.lastWorkObjectPos; awaitingElevatorBuilding = ms.awaitingElevatorBuilding; }