private void AddAllReqTech(ShipSpec ship, List <TechItem> tech) { if (ship.DependsOnTechIds == null || ship.DependsOnTechIds.Length == 0) { return; } var allTech = _game.TechTree[0].TechItems; if (Ship.IsCapitalShip(ship.Type)) { var capTech = allTech.FirstOrDefault(_ => _.Type == ETechType.ShipyardConstruction && _.Name == ship.Type.ToString()); if (capTech != null) { tech.Add(capTech); } } var shipTech = (from t in allTech where ship.DependsOnTechIds.Contains(t.Id) && !tech.Any(_ => _.Id == t.Id) select t).ToList(); tech.AddRange(shipTech); foreach (var t in shipTech) { AddAllReqTech(t, tech); } }
void InitializePools(ShipSpec spec, bool isPlayer) { // TODO: Propagate to weapon spec int count = isPlayer ? 1 : 16; InitializePools(spec.shipPrefab, count); InitializePools(spec.explosionPrefab, count); InitializePools(spec.weaponSpec); InitializePools(spec.magnetismSpec); //InitializePools(spec.aiSpec); }