public IUnitData CreateUnit(IUnitAdd impact) { var unit = Factory.CreateUnit(impact.Id, impact.Shards, impact.Stars, impact.Exp, impact.Level, impact.EquipmentRarity, impact.FamiliarUnlock); unit.ExplorerPosition = impact.SlotExplorer; foreach (var temp in impact.Equipment ?? new Dictionary <int, int>()) { unit.Equipment[temp.Key] = temp.Value; } foreach (var temp in impact.PerkCharges ?? new Dictionary <int, int>()) { unit.PerkCharges[temp.Key] = temp.Value; } var allPerks = Static.Perks.Where(x => x.Value.UnitId == impact.Id); foreach (var temp in allPerks) { unit.PerkStars[temp.Key] = 1; } var allAbilities = Static.Abilities.Where(x => x.Value.Params.UnitId == impact.Id); foreach (var temp in allAbilities) { unit.Abilities[temp.Key] = 1; } return(unit); }
public bool AddUnit(IUnitAdd impact) { var unit = CreateUnit(impact); if (State.Units.FirstOrDefault(x => x.ExplorerPosition == impact.SlotExplorer) != null) { unit.ExplorerPosition = -1; } var oldUnit = State.Units.FirstOrDefault(x => x.Id == impact.Id); if (oldUnit != null) { if (oldUnit.Stars > 0) { return(false); } unit.Shards += oldUnit.Shards; State.Units.Remove(oldUnit); } State.Units.Add(unit); return(true); }