public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); Component = reader.ReadItem() as BeaconItem; if (Component != null) { Component.Beacon = this; } int count = reader.ReadInt(); for (int i = 0; i < count; i++) { Item item = reader.ReadItem(); if (item != null) { if (Rubble == null) { Rubble = new List <Item>(); } Rubble.Add(item); } } }
private void AddRubble(Item i, Point3D p) { i.MoveToWorld(p, this.Map); if (Rubble == null) { Rubble = new List <Item>(); } Rubble.Add(i); }
public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write(0); writer.Write(Component); writer.Write(Rubble == null ? 0 : Rubble.Count); if (Rubble != null) { Rubble.ForEach(i => writer.Write(i)); } }
public override void Delete() { base.Delete(); if (Rubble != null) { List <Item> rubble = new List <Item>(Rubble); rubble.ForEach(i => i.Delete()); rubble.ForEach(i => Rubble.Remove(i)); rubble.Clear(); rubble.TrimExcess(); } }
public override bool OnBeforeDestroyed() { if (Controller != null) { Controller.OnBeaconDestroyed(); } List <Item> delete = new List <Item>(); if (Rubble != null) { foreach (Item i in Rubble.Where(item => item.Z > this.Z)) { i.Delete(); delete.Add(i); } delete.ForEach(i => Rubble.Remove(i)); } DoEffects(); if (Component != null) { Component.ItemID = 1; Component.Visible = false; } Visible = false; delete.Clear(); delete.TrimExcess(); AddRubble(new Static(634), new Point3D(this.X - 2, this.Y, this.Z)); AddRubble(new Static(633), new Point3D(this.X - 2, this.Y + 1, this.Z)); AddRubble(new Static(635), new Point3D(this.X + 2, this.Y - 2, this.Z)); AddRubble(new Static(632), new Point3D(this.X + 3, this.Y - 2, this.Z)); AddRubble(new Static(634), new Point3D(this.X + 2, this.Y, this.X)); AddRubble(new Static(633), new Point3D(this.X + 2, this.Y + 1, this.Z)); return(true); }
public DigTask(Rubble rubble) { _rubble = rubble; _multipleMode = true; }
public Digging(Rubble rubble, float digSpeed) { _rubble = rubble; _digSpeed = digSpeed; }
public void assignTaskToSelected(string task, GameObject target) { switch (task) { case "WalkTask": Vector3 targetPos = target.transform.position; foreach (Unit unit in _selectedUnits) { Task t = TaskSystem.createWalkTask(targetPos); unit.enqueueTask(t); if (!t.multipleMode) { return; } } break; case "DrillTask": Wall targetWall = target.GetComponent <Wall>(); foreach (Unit unit in _selectedUnits) { Task t = TaskSystem.createDrillTask(targetWall); unit.enqueueTask(t); if (!t.multipleMode) { return; } } break; case "PickupTask": Resource resource = target.GetComponent <Resource>(); foreach (Unit unit in _selectedUnits) { Task t = TaskSystem.createPickupTask(resource); unit.enqueueTask(t); if (!t.multipleMode) { return; } } break; case "DropTask": foreach (Unit unit in _selectedUnits) { Task t = TaskSystem.createDropTask(); unit.enqueueTask(t); if (!t.multipleMode) { return; } } break; case "DigTask": Rubble rubble = target.GetComponent <Rubble>(); foreach (Unit unit in _selectedUnits) { Task t = TaskSystem.createDigTask(rubble); unit.enqueueTask(t); if (!t.multipleMode) { return; } } break; case "HaulTask": Building building = target.GetComponent <Building>(); break; } }
public static DigTask createDigTask(Rubble rubble) { return(new DigTask(rubble)); }