override public void Load(BlockSerializer bs) { LoadBlockData(bs); SurfaceBlockSerializer sbs = new SurfaceBlockSerializer(); GameMaster.DeserializeByteArray <SurfaceBlockSerializer>(bs.specificData, ref sbs); LoadSurfaceBlockData(sbs); if (sbs.haveStructures) { foreach (StructureSerializer ss in sbs.structuresList) { if (ss.id != Structure.PLANT_ID) { Structure s = Structure.GetStructureByID(ss.id); if (s != null) { s.Load(ss, this); } } else { Plant p = Plant.GetNewPlant(ss.id); if (p != null) { p.Load(ss, this); } } } } }
protected void LoadSurfaceBlockData(SurfaceBlockSerializer sbs) { if (sbs.haveGrassland) { grassland = Grassland.CreateOn(this); grassland.Load(sbs.grasslandSerializer); } }
public SurfaceBlockSerializer GetSurfaceBlockSerializer() { SurfaceBlockSerializer sbs = new SurfaceBlockSerializer(); if (grassland != null) { sbs.haveGrassland = true; sbs.grasslandSerializer = grassland.Save(); } else { sbs.haveGrassland = false; } if (surfaceObjects.Count != 0) { sbs.haveStructures = true; sbs.structuresList = new List <StructureSerializer>(); int realCount = 0; foreach (Structure s in surfaceObjects) { if (s == null) { continue; } StructureSerializer ss = s.Save(); if (ss == null) { continue; } sbs.structuresList.Add(ss); realCount++; } if (realCount == 0) { sbs.haveStructures = false; } } else { sbs.haveStructures = false; } return(sbs); }