Пример #1
0
        public void SetString(string build, Player pl)
        {
            if (build == null || build == "")
            {
                return;
            }

            pl.SoftReset();

            var ents = build.Split(",");

            foreach (var ent in ents)
            {
                if (ent.Count(x => x == '|') > 1)
                {
                    var  unitents = ent.Split('|');
                    Unit unit     = UnitPool.Units.SingleOrDefault(x => x.ID == int.Parse(unitents[0]));
                    if (unit != null)
                    {
                        Unit myunit = unit.DeepCopy();
                        myunit.PlacePos = new Vector2(float.Parse(unitents[2]), float.Parse(unitents[1]));
                        UnitService.NewUnit(pl, myunit);
                        pl.Units.Add(myunit);
                        pl.MineralsCurrent += myunit.Cost;
                    }
                }
                else if (ent.Count(x => x == '|') == 1)
                {
                    var         upgradeents = ent.Split('|');
                    UnitUpgrade upgrade     = new UnitUpgrade();
                    upgrade.Upgrade     = (UnitUpgrades)int.Parse(upgradeents[0]);
                    upgrade.Level       = int.Parse(upgradeents[1]);
                    pl.MineralsCurrent += UnitService.UpgradeUnit(upgrade.Upgrade, pl);
                }
                else
                {
                    int ua = -1;
                    if (int.TryParse(ent, out ua))
                    {
                        UnitAbility myability = AbilityPool.Abilities.SingleOrDefault(x => x.Ability == (UnitAbilities)ua).DeepCopy();
                        pl.MineralsCurrent += UnitService.AbilityUpgradeUnit(myability, pl);
                    }
                }
            }
        }
Пример #2
0
        public UnitAbility DeepCopy()
        {
            UnitAbility deepcopy = new UnitAbility();

            deepcopy.Ability             = Ability;
            deepcopy.Activated           = Activated;
            deepcopy.Duration            = Duration;
            deepcopy.Cooldown            = Cooldown;
            deepcopy.Type                = new List <UnitAbilityTypes>(Type);
            deepcopy.Regeneration        = Regeneration;
            deepcopy.isActive            = isActive;
            deepcopy.AttacSpeedModifier  = AttacSpeedModifier;
            deepcopy.AttacDamageModifier = AttacDamageModifier;
            deepcopy.Healthmodifier      = Healthmodifier;
            deepcopy.MoveSpeedModifier   = MoveSpeedModifier;
            deepcopy.PosModifier         = PosModifier;
            deepcopy.Radius              = Radius;
            deepcopy.TargetPos           = TargetPos;
            deepcopy.Tier                = Tier;
            deepcopy.Image               = Image;
            deepcopy.Triggers            = Triggers;
            deepcopy.EnergyCost          = EnergyCost;
            deepcopy.Cost                = Cost;
            deepcopy.CastOnEnemy         = CastOnEnemy;
            if (Beacon != null)
            {
                deepcopy.Beacon = Beacon.DeepCopy();
            }
            deepcopy.Deactivated = Deactivated;
            deepcopy.Desc        = Desc;
            if (Tandem != null)
            {
                deepcopy.Tandem = new List <UnitAbilities>(Tandem);
            }
            return(deepcopy);
        }