コード例 #1
0
ファイル: Beacon.cs プロジェクト: pallop/Servuo
        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);
                }
            }
        }
コード例 #2
0
ファイル: Beacon.cs プロジェクト: pallop/Servuo
        private void AddRubble(Item i, Point3D p)
        {
            i.MoveToWorld(p, this.Map);

            if (Rubble == null)
            {
                Rubble = new List <Item>();
            }

            Rubble.Add(i);
        }
コード例 #3
0
ファイル: Beacon.cs プロジェクト: pallop/Servuo
        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));
            }
        }
コード例 #4
0
ファイル: Beacon.cs プロジェクト: pallop/Servuo
        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();
            }
        }
コード例 #5
0
ファイル: Beacon.cs プロジェクト: pallop/Servuo
        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);
        }
コード例 #6
0
ファイル: DigTask.cs プロジェクト: bmjoy/PlanetMiners
 public DigTask(Rubble rubble)
 {
     _rubble       = rubble;
     _multipleMode = true;
 }
コード例 #7
0
ファイル: Digging.cs プロジェクト: bmjoy/PlanetMiners
 public Digging(Rubble rubble, float digSpeed)
 {
     _rubble   = rubble;
     _digSpeed = digSpeed;
 }
コード例 #8
0
    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;
        }
    }
コード例 #9
0
 public static DigTask createDigTask(Rubble rubble)
 {
     return(new DigTask(rubble));
 }