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); } } } }
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); }