示例#1
0
    public UnitInstance CreateUnitObject(MapLua.SaveLua.Army.Unit Source, MapLua.SaveLua.Army.UnitsGroup Group)
    {
        Vector3    position          = ScmapEditor.ScmapPosToWorld(Source.Position);
        Vector3    RadianOrientation = Vector3.zero;
        Quaternion rotation          = Quaternion.Euler(Source.Orientation * Mathf.Rad2Deg);


        GameObject Obj = Instantiate(UnitsInfo.Current.UnitInstancePrefab, transform) as GameObject;

        Obj.name = Source.Name;

        UnitInstance UInst = Obj.GetComponent <UnitInstance>();

        //UInst.Owner = Owner;
        UInst.Group = Group;
        Group.UnitInstances.Add(UInst);
        UInst.orders       = Source.orders;
        UInst.platoon      = Source.platoon;
        UInst.UnitRenderer = this;
        UInst.SetMatrix(ScmapEditor.SnapToTerrain(position), rotation);

        if (BP.Footprint.x > 0 && BP.Footprint.y > 0)
        {
            UInst.Col.size = new Vector3(BP.Footprint.x * 0.1f, BP.Size.y * 0.1f, BP.Footprint.y * 0.1f);
        }
        else
        {
            UInst.Col.size = BP.Size * 0.1f;
        }
        UInst.Col.center = Vector3.up * (BP.Size.y * 0.05f);

        AddInstance(UInst);
        return(UInst);
    }
    public static void CreateRanges()
    {
        //SelectionManager.Current.AffectedGameObjects[SelectionManager.Current.Selection.Ids[0]].GetComponent<UnitInstance>()

        Count = SelectionManager.Current.Selection.Ids.Count;
        if (Count > MaxUnitRanges)
        {
            Count = MaxUnitRanges;
        }

        for (int i = 0; i < Count; i++)
        {
            GameObject UIobj = SelectionManager.Current.AffectedGameObjects[SelectionManager.Current.Selection.Ids[i]];
            if (UIobj == null)
            {
                continue;
            }

            UnitInstance UI = UIobj.GetComponent <UnitInstance>();
            if (UI == null)
            {
                UnitRanges[i].UnitTr = null;
                UnitRanges[i].Radius = 0;
            }
            else
            {
                UnitRanges[i].UnitTr    = UI.transform;
                UnitRanges[i].Radius    = ScmapEditor.ScmapPosToWorld(UI.UnitRenderer.BP.MaxRange);
                UnitRanges[i].MinRadius = ScmapEditor.ScmapPosToWorld(UI.UnitRenderer.BP.MinRange);
            }
        }
    }
示例#3
0
        private void InitUnits()
        {
            var dataUnits = DataGetter.GetItems(DataType.data_unit);

            if (_goodsInstanceCategory.ContainsKey(ItemType.Unit) == false)
            {
                _goodsInstanceCategory.Add(ItemType.Unit, new List <IItemInstance>());
            }

            //TODO: 임의값을 넣기위해 랜덤으로,기본적으로는 서버에서 받는 값을 넣습니다.
            Random r = new Random();

            foreach (var data in dataUnits)
            {
                var dataUnit = data.Value as DataUnit;
                if (_unitInstances.ContainsKey(dataUnit.ClassId))
                {
                    continue;
                }

                var unitInstance = new UnitInstance(dataUnit, r.Next(0, 100), r.Next(0, 2) == 0);

                _unitInstances.Add(dataUnit.ClassId, unitInstance);
                _goodsInstanceCategory[ItemType.Unit].Add(unitInstance);
            }
        }
示例#4
0
        /// <summary>
        /// Settles a city with the given settler unit
        /// </summary>
        /// <param name="settler"></param>
        /// <returns>whether a city was successfully settled</returns>
        public bool SettleCity(UnitInstance settler)
        {
            // check if the settler is too close to another city
            foreach (City c in cities)
            {
                if (Board.HexDistance(settler.Location, c.Location) < 4)
                {
                    ConsoleManager.Instance.WriteLine("City too close to another", MsgType.ServerInfo);
                    return(false); // the city was not settled
                }
            }

            // get the player that is trying to settle the city
            Player player = Controllers.Player.GetPlayer(settler.PlayerID);
            // create a new city and give it a unique id
            City city = new City(player, Controllers.Data.Empire.GetEmpire(player.EmpireID).GetNextDefaultCityName(), settler.Location);

            city.InstanceID = lastCityID++;
            // check if this is the players first city
            if (GetPlayerCities(player.InstanceID).Count == 0)
            {
                city.IsCapital = true;                 // the player's first city is its capital
                city.Buildings.Add("BUILDING_PALACE"); // capital city's have the palace
            }
            cities.Add(city);                          // add the city to the city list
            TryExpandBorders(city);                    // expand the city's borders
            UpdateCity(city);                          // update city data
            //OnCitySettled(new CityEventArgs(city)); // trigger the CitySettled event
            OnCityUpdated(new CityEventArgs(city));    // trigger the CityUpdated event
            return(true);                              // the city was settled
        }
        GameObject[] ReadUnitsStorage(UnitsStorage Data)
        {
            List <GameObject> CreatedUnits = new List <GameObject>();

            if (Data != null && Data.Units != null)
            {
                for (int i = 0; i < Data.Units.Length; i++)
                {
                    SaveLua.Army.Unit NewUnit = new SaveLua.Army.Unit();
                    NewUnit.Name    = SaveLua.Army.Unit.GetFreeName("UNIT_");
                    NewUnit.type    = Data.Units[i].ID;
                    NewUnit.orders  = Data.Units[i].orders;
                    NewUnit.platoon = Data.Units[i].platoon;

                    if (!ScmapEditor.Current.Teren.terrainData.bounds.Contains(ScmapEditor.Current.Teren.transform.InverseTransformPoint(Data.Units[i].pos)))
                    {
                        Vector3 Offset = ScmapEditor.Current.Teren.transform.TransformPoint(ScmapEditor.Current.Teren.terrainData.bounds.center) - Data.Center;
                        Offset.y           = 0;
                        Data.Units[i].pos += Offset;
                    }

                    NewUnit.Position    = ScmapEditor.WorldPosToScmap(Data.Units[i].pos);
                    NewUnit.Orientation = UnitInstance.ScmapRotationFromRotation(Data.Units[i].rot);

                    FirstSelected.Source.AddUnit(NewUnit);
                    NewUnit.Instantiate();

                    SnapAction(NewUnit.Instance.transform, NewUnit.Instance.gameObject);
                    CreatedUnits.Add(NewUnit.Instance.gameObject);
                }
            }

            return(CreatedUnits.ToArray());
        }
        public void SelectUnit()
        {
            RenderUnitRanges.CreateRanges();


            if (SelectionManager.Current.Selection.Ids.Count <= 0)
            {
            }
            else
            {
                UnitInstance Uinst = SelectionManager.Current.AffectedGameObjects[SelectionManager.Current.Selection.Ids[0]].GetComponent <UnitInstance>();

                if (Uinst != null)
                {
                    UnitName.SetValue(Uinst.Owner.Name);
                    SelectedUnitsGroup.text = Uinst.Owner.Parent.Name + " (" + Uinst.Owner.Parent.Owner.Name + ")";

                    UnitStats.text = Uinst.UnitRenderer.BP.CodeName + "\n"
                                     + "Reclaim: Mass: " + (Uinst.UnitRenderer.BP.BuildCostMass * Uinst.UnitRenderer.BP.Wreckage_MassMult)
                                     + ", Energy: " + (Uinst.UnitRenderer.BP.BuildCostEnergy * Uinst.UnitRenderer.BP.Wreckage_EnergyMult)
                                     + "\nVision radius: " + Uinst.UnitRenderer.BP.VisionRadius
                                     + ((Uinst.UnitRenderer.BP.MaxRange > 0) ? ("\nWeapon range: " + Uinst.UnitRenderer.BP.MaxRange) : "");
                    return;
                }
            }


            // Default
            UnitName.SetValue("");
            SelectedUnitsGroup.text = "";
            UnitStats.text          = "";
        }
        public void SelectGroupOfUnit()
        {
            if (SelectionManager.Current.Selection.Ids.Count == 0)
            {
                return;
            }

            GameObject SelectedUnit = SelectionManager.Current.AffectedGameObjects[SelectionManager.Current.Selection.Ids[0]];

            UnitInstance inst = SelectedUnit.GetComponent <UnitInstance>();

            if (inst != null && inst.Owner != null && inst.Owner.Parent != null)
            {
                foreach (UnitListObject ulo in UnitGroups)
                {
                    if (ulo.Source == inst.Owner.Parent)
                    {
                        ClearGrpSelection();
                        //AddToGrpSelection(ulo);
                        SelectGroup(ulo, false);
                        break;
                    }
                }
            }
        }
        static UnitsStorage GetUnitsStorage()
        {
            GameObject[] Objs = SelectionManager.Current.GetAllSelectedObjects(false);

            UnitsStorage Data = new UnitsStorage();

            Data.Units = new UnitsStorage.Unit[Objs.Length];

            for (int i = 0; i < Objs.Length; i++)
            {
                UnitInstance UnitI = Objs[i].GetComponent <UnitInstance>();

                UnitsStorage.Unit UnitToSave = new UnitsStorage.Unit();
                UnitToSave.ID      = UnitI.Owner.type;
                UnitToSave.pos     = UnitI.transform.position;
                UnitToSave.rot     = UnitI.transform.rotation;
                UnitToSave.orders  = UnitI.Owner.orders;
                UnitToSave.platoon = UnitI.Owner.platoon;
                Data.Units[i]      = UnitToSave;
                Data.Center       += UnitToSave.pos;
            }

            Data.Center /= Data.Units.Length;
            return(Data);
        }
        public void Place(Vector3[] Positions, Quaternion[] Rotations, Vector3[] Scales, bool RegisterUndo)
        {
            if (FirstSelected == null)
            {
                ShowGroupError();
                return;
            }

            if (Positions.Length > 0 && RegisterUndo)
            {
                Undo.RegisterUndo(new UndoHistory.HistoryUnitsRemove(), new UndoHistory.HistoryUnitsRemove.UnitsRemoveParam(new SaveLua.Army.UnitsGroup[] { FirstSelected.Source }));
            }


            for (int i = 0; i < Positions.Length; i++)
            {
                if (RandomRotation.isOn)
                {
                    Rotations[i] = GetRandomRotation;
                }

                SaveLua.Army.Unit NewUnit = new SaveLua.Army.Unit();
                NewUnit.Name        = SaveLua.Army.Unit.GetFreeName("UNIT_");
                NewUnit.type        = SelectedUnit.CodeName;
                NewUnit.orders      = "";
                NewUnit.platoon     = "";
                NewUnit.Position    = ScmapEditor.WorldPosToScmap(Positions[i]);
                NewUnit.Orientation = UnitInstance.ScmapRotationFromRotation(Rotations[i]);

                FirstSelected.Source.AddUnit(NewUnit);
                NewUnit.Instantiate();

                FirstSelected.Refresh();
            }
        }
示例#10
0
    public UnitInstance FillGameObjectValues(GameObject Obj, MapLua.SaveLua.Army.Unit Source, MapLua.SaveLua.Army.UnitsGroup Group, Vector3 position, Quaternion rotation)
    {
        Obj.name = Source.Name;

        UnitInstance UInst = Obj.GetComponent <UnitInstance>();

        //UInst.Owner = Owner;
        UInst.Owner     = Source;
        Source.Instance = UInst;
        //Group.Units.Add(Source);
        UInst.orders       = Source.orders;
        UInst.platoon      = Source.platoon;
        UInst.UnitRenderer = this;
        UInst.SetMatrix(UInst.GetSnapPosition(position), rotation);
        UInst.ArmyColor = Group.Owner.ArmyColor;

        if (BP.Footprint.x > 0 && BP.Footprint.y > 0)
        {
            UInst.Col.size = new Vector3(BP.Footprint.x * 0.1f, BP.Size.y * 0.1f, BP.Footprint.y * 0.1f);
        }
        else
        {
            UInst.Col.size = BP.Size * 0.1f;
        }
        UInst.Col.center = Vector3.up * (BP.Size.y * 0.05f);

        AddInstance(UInst);
        return(UInst);
    }
示例#11
0
        public void DestroyUnits(List <GameObject> MarkerObjects, bool RegisterUndo = true)
        {
            int Count = MarkerObjects.Count;

            if (RegisterUndo && MarkerObjects.Count > 0)
            {
                List <SaveLua.Army.UnitsGroup> AllGroups = new List <SaveLua.Army.UnitsGroup>();

                for (int i = 0; i < Count; i++)
                {
                    UnitInstance uinst = MarkerObjects[i].GetComponent <UnitInstance>();
                    if (!AllGroups.Contains(uinst.Owner.Parent))
                    {
                        AllGroups.Add(uinst.Owner.Parent);
                    }
                }
                Undo.RegisterUndo(new UndoHistory.HistoryUnitsRemove(), new UndoHistory.HistoryUnitsRemove.UnitsRemoveParam(AllGroups.ToArray()));
            }

            for (int i = 0; i < Count; i++)
            {
                //DestroyImmediate(MarkerObjects[i]);
                SaveLua.Army.Unit u = MarkerObjects[i].GetComponent <UnitInstance>().Owner;
                u.ClearInstance();
                if (u.Parent != null)
                {
                    u.Parent.RemoveUnit(u);
                }
            }

            SelectionManager.Current.CleanSelection();
            GoToSelection();
        }
示例#12
0
 // draws the given unit's movement path
 private void DrawMovementPath(SpriteBatch sb, UnitInstance unit)
 {
     if (unit.MovementQueue == null || unit.MovementQueue.Count <= 0)
     {
         return;
     }
     DrawPath(sb, unit.Location, unit.MovementQueue, pathColor);
 }
示例#13
0
        /// <summary>
        /// Creates a new unit of the given id at the given location and puts it in control of the player of the given id
        /// </summary>
        /// <param name="unitID"></param>
        /// <param name="playerID"></param>
        /// <param name="location"></param>
        public void AddUnit(string unitID, int playerID, Point location)
        {
            UnitInstance unit = new UnitInstance(Controllers.Data.Unit, unitID, playerID, location);

            units.Add(unit);

            OnUnitAdded(new UnitEventArgs(unit));
        }
示例#14
0
    public void AddUnit(UnitInstance unitInstance)
    {
        if (StackToExistingUnit(unitInstance) == false)
        {
            AddNewUnitToList(unitInstance);
        }

        RefreshCurrentWeight();
    }
示例#15
0
        public void ReplaceSelected()
        {
            if (FirstSelected == null)
            {
                ShowGroupError();

                return;
            }

            if (string.IsNullOrEmpty(SelectedUnit.CodeName))
            {
                ShowUnitError();
                return;
            }

            List <SaveLua.Army.UnitsGroup> AllGroups = new List <SaveLua.Army.UnitsGroup>();
            List <GameObject> AllObjects             = SelectionManager.GetAllSelectedGameobjects();
            int Count = AllObjects.Count;

            if (Count == 0)
            {
                return;
            }

            for (int i = 0; i < Count; i++)
            {
                UnitInstance uinst = AllObjects[i].GetComponent <UnitInstance>();
                if (!AllGroups.Contains(uinst.Owner.Parent))
                {
                    AllGroups.Add(uinst.Owner.Parent);
                }
            }
            Undo.RegisterUndo(new UndoHistory.HistoryUnitsRemove(), new UndoHistory.HistoryUnitsRemove.UnitsRemoveParam(AllGroups.ToArray()));


            Vector3[]    Positions = new Vector3[Count];
            Quaternion[] Rotations = new Quaternion[Count];
            Vector3[]    Scales    = new Vector3[Count];

            for (int i = 0; i < Count; i++)
            {
                UnitInstance uinst = AllObjects[i].GetComponent <UnitInstance>();

                Positions[i] = uinst.transform.position;
                Rotations[i] = uinst.transform.rotation;
                Scales[i]    = uinst.transform.localScale;

                SaveLua.Army.Unit u = uinst.Owner;

                u.ClearInstance();
                u.Parent.RemoveUnit(u);
            }

            Place(Positions, Rotations, Scales, false);
            GoToSelection();
        }
示例#16
0
 public static UnitBody CreateNewUnitBody( UnitBody prefab,
                                           UnitInstance isInstanceOf )
 {
     UnitBody body = Instantiate( prefab );
     body.m_unitInstance = isInstanceOf;
     body.transform.SetParent( null, false );
     body.gameObject.SetActive( false );
     body.SpriteRenderer.sprite = isInstanceOf.Definition.BodySprite;
     return body;
 }
示例#17
0
        // parses a packet with the header UnitAdded
        private void ParseUnitAdded(Packet p)
        {
            UnitInstance unit = (UnitInstance)p.Item;

            DataManager.Unit.Reconstruct(unit);
            AllUnits.Add(unit);
            UpdateCache();
            ConsoleManager.Instance.WriteLine($"Added a unit {unit.InstanceID}:{unit.UnitID}:{unit.Name}");
            OnUnitsUpdated(new UnitListEventArgs(AllUnits));
        }
    public UnitInstance CreateUnitObject(MapLua.SaveLua.Army.Unit Source, MapLua.SaveLua.Army.UnitsGroup Group)
    {
        Vector3    position          = ScmapEditor.ScmapPosToWorld(Source.Position);
        Vector3    RadianOrientation = Vector3.zero;
        Quaternion rotation          = UnitInstance.RotationFromScmapRotation(Source.Orientation);

        GameObject Obj = Instantiate(UnitsInfo.Current.UnitInstancePrefab, transform) as GameObject;

        return(FillGameObjectValues(Obj, Source, Group, position, rotation));
    }
示例#19
0
        // parses a packet with the header UnitRemoved
        private void ParseUnitRemoved(Packet p)
        {
            int          unitInstanceID = (int)p.Item;
            UnitInstance unit           = AllUnits.Find(u => u.InstanceID == unitInstanceID);

            AllUnits.Remove(unit);
            UpdateCache();
            ConsoleManager.Instance.WriteLine($"Removed unit {unit.InstanceID}:{unit.UnitID}:{unit.Name}");
            OnUnitsUpdated(new UnitListEventArgs(AllUnits));
        }
示例#20
0
        public void Reconstruct(UnitInstance unit)
        {
            unit.BaseUnit = data[unit.UnitID];
            if (unit.Name == null || unit.Name.Equals(""))
            {
                unit.Name = unit.BaseUnit.Name;
            }

            unit.Rebuild();
        }
    public UnitInstance FillGameObjectValues(GameObject Obj, MapLua.SaveLua.Army.Unit Source, MapLua.SaveLua.Army.UnitsGroup Group, Vector3 position, Quaternion rotation)
    {
        if (Obj.transform.childCount > 0)
        {
            foreach (Transform child in Obj.transform)
            {
                Destroy(child.gameObject);
            }
        }

        Obj.name = Source.Name;

        UnitInstance UInst = Obj.GetComponent <UnitInstance>();

        //UInst.Owner = Owner;
        UInst.Owner     = Source;
        Source.Instance = UInst;
        //Group.Units.Add(Source);
        UInst.orders       = Source.orders;
        UInst.platoon      = Source.platoon;
        UInst.UnitRenderer = this;
        UInst.SetMatrix(UInst.GetSnapPosition(position), rotation);
        UInst.ArmyColor = Group.Owner.ArmyColor;

        if (BP.SelectionSize.x > 0 && BP.SelectionSize.y > 0)
        {
            UInst.Col.size = BP.SelectionSize * 0.1f;
        }
        else
        {
            UInst.Col.size = BP.Size * 0.1f;
        }
        UInst.Col.center = Vector3.up * (BP.Size.y * 0.05f);

        if (BP.HasTermac)
        {
            if (BP.Termac_Albedo != null)
            {
                DecalsInfo.CreateGameObjectFromDecal(BP.Termac_Albedo);
                BP.Termac_Albedo.Obj.tr.parent        = UInst.transform;
                BP.Termac_Albedo.Obj.tr.localPosition = Vector3.zero;
            }

            if (BP.Termac_Normal != null)
            {
                DecalsInfo.CreateGameObjectFromDecal(BP.Termac_Normal);
                BP.Termac_Normal.Obj.tr.parent        = UInst.transform;
                BP.Termac_Normal.Obj.tr.localPosition = Vector3.zero;
            }
        }

        AddInstance(UInst);
        return(UInst);
    }
示例#22
0
    public Card SpawnUnitInRow(UnitInstance unitInstance, int rowIndex, Country unitCountry)
    {
        Card card = Instantiate(cardPrefab, BattleController.instance.GetWorldCanvas().transform);

        card.transform.position = rows[rowIndex].transform.position + new Vector3(0, 5, 0);
        card.transform.rotation = Quaternion.Euler(90, 0, 0);
        card.Init(unitInstance, unitCountry);
        rows[rowIndex].AddCardToRow(card);

        return(card);
    }
示例#23
0
        public void OnNameChanged()
        {
            if (SelectionManager.Current.Selection.Ids.Count < 0)
            {
                return;
            }

            string SourceName = UnitName.text;

            if (string.IsNullOrEmpty(SourceName) || string.IsNullOrWhiteSpace(SourceName))
            {
                SelectUnit();
                return;                 // EmptyName
            }

            SourceName = SourceName.Replace(" ", "_");

            //TODO Register undo

            for (int i = 0; i < SelectionManager.Current.Selection.Ids.Count; i++)
            {
                UnitInstance Uinst = SelectionManager.Current.AffectedGameObjects[SelectionManager.Current.Selection.Ids[i]].GetComponent <UnitInstance>();

                if (Uinst != null)
                {
                    string NewName = SourceName;

                    if (SaveLua.Army.Unit.NameExist(NewName))
                    {
                        string[] Split  = NewName.Split('_');
                        int      OutInt = 0;
                        if (Split.Length > 1 && int.TryParse(Split[Split.Length - 1], out OutInt))
                        {
                            NewName = "";
                            for (int s = 0; s < Split.Length - 1; s++)
                            {
                                if (s > 0)
                                {
                                    NewName += "_";
                                }
                                NewName += Split[s];
                            }
                        }

                        NewName = SaveLua.Army.Unit.GetFreeName(NewName + "_");
                    }

                    SaveLua.Army.Unit.ReplaceName(Uinst.Owner.Name, NewName);
                    Uinst.Owner.Name = NewName;

                    SelectUnit();
                }
            }
        }
示例#24
0
    bool StackToExistingUnit(UnitInstance unitInstance)
    {
        int unitIndex = FindUnitByID(unitInstance.GetUnit().UnitID);

        if (unitIndex >= 0)
        {
            units[unitIndex].amount += unitInstance.amount;
            return(true);
        }

        return(false);
    }
示例#25
0
                public static void SaveUnit(LuaParser.Creator LuaFile, UnitInstance Instance)
                {
                    LuaFile.OpenTab(LuaParser.Write.PropertieToLua(Instance.gameObject.name) + LuaParser.Write.OpenBracketValue);

                    LuaFile.AddLine(LuaParser.Write.StringToLua(UnitsGroup.KEY_TYPE, Instance.UnitRenderer.BP.CodeName));
                    LuaFile.AddLine(LuaParser.Write.StringToLua(UnitsGroup.KEY_ORDERS, Instance.orders));
                    LuaFile.AddLine(LuaParser.Write.StringToLua(UnitsGroup.KEY_PLATOON, Instance.platoon));
                    LuaFile.AddLine(LuaParser.Write.Vector3ToLua(UnitsGroup.KEY_POSITION, ScmapEditor.WorldPosToScmap(Instance.transform.localPosition)));
                    LuaFile.AddLine(LuaParser.Write.Vector3ToLua(UnitsGroup.KEY_ORIENTATION, Instance.GetScmapRotation()));

                    LuaFile.CloseTab(LuaParser.Write.EndBracketNext);
                }
示例#26
0
        public static void GetTotalUnitsReclaim(out float Mass, out float Energy)
        {
            Mass   = 0;
            Energy = 0;

            foreach (GameObject obj in UnitInstance.AllUnitInstances)
            {
                UnitInstance UI = obj.GetComponent <UnitInstance>();
                Mass   += UI.UnitRenderer.BP.BuildCostMass * UI.UnitRenderer.BP.Wreckage_MassMult;
                Energy += UI.UnitRenderer.BP.BuildCostEnergy * UI.UnitRenderer.BP.Wreckage_EnergyMult;
            }
        }
示例#27
0
        public void GoToSelection()
        {
            int[] AllTypes;
            AllObjects = UnitInstance.GetAllUnitGo(out AllTypes);
            SelectionManager.Current.SetAffectedGameObjects(AllObjects, SelectionManager.SelectionControlTypes.Units);
            SelectionManager.Current.SetAffectedTypes(AllTypes);


            PlacementManager.Clear();
            if (ChangeControlerType.Current)
            {
                ChangeControlerType.Current.UpdateButtons();
            }
        }
示例#28
0
 public void Refresh(UnitInstance unitInstance)
 {
     if (unitInstance != null)
     {
         unitToRefresh    = unitInstance;
         iconImage.sprite = unitInstance.GetUnit().icon;
         amountText.text  = unitInstance.GetUnit().name + " x " + unitInstance.amount.ToString("f0");
     }
     else
     {
         unitToRefresh    = null;
         iconImage.sprite = UnitsManager.instance.GetDefaultSprite();
         amountText.text  = "-";
     }
 }
示例#29
0
        // parses a packet with the header UnitUpdate
        private void ParseUnitUpdate(Packet p)
        {
            UnitInstance unit    = (UnitInstance)p.Item;
            UnitInstance oldUnit = AllUnits.Find(u => u.InstanceID == unit.InstanceID);

            if (!AllUnits.Remove(oldUnit))
            {
                return;
            }
            DataManager.Unit.Reconstruct(unit);
            AllUnits.Add(unit);
            UpdateCache();
            ConsoleManager.Instance.WriteLine($"Updated unit {unit.InstanceID}:{unit.UnitID}:{unit.Name}");
            OnUnitsUpdated(new UnitListEventArgs(AllUnits));
        }
示例#30
0
    public void RemoveInstance(UnitInstance UInst)
    {
        if (!Instances.Contains(UInst))
        {
            return;
        }

        Instances.Remove(UInst);

        if (Lod.Contains(UInst))
        {
            Lod.Remove(UInst);
        }
        IsDirty = true;
    }
示例#31
0
                public void Instantiate()
                {
                    if (Instance && Instance.gameObject)
                    {
                        return;
                    }
                    UnitInstance ui = GetGamedataFile.LoadUnit(type).CreateUnitObject(this, Parent);

                    ui.IsWreckage = Parent.IsWreckage ? 1 : 0;
                    if (AllNames.Contains(Name))
                    {
                        Name = GetFreeName("UNIT_");
                    }
                    AllNames.Add(Name);
                }
示例#32
0
 void Restart()
 {
     //Debug.Log("*AI* Restarting Steps");
     currentStep = AIStep.SelectUnit;
     selectedUnit = null;
     target = null;
     path = null;
 }
示例#33
0
 bool SelectUnit()
 {
     //Debug.Log("*AI* Slecting Unit");
     foreach (UnitInstance i in myUnits)
     {
         if (!i.IsDead && !i.IsExausted)
         {
             selectedUnit = i;
             return true;
         }
     }
     //Debug.Log("*AI* No Unit to select!");
     return false;
 }