private void manageInfluence(GraphicModel.SolarSystem ss) { double influence = 10.0; int level = 2; if (ss.hasstatsion) { influence *= 6; level = 1; } switch (ss.sovlevel) { case 0: influence *= 0.5; break; case 2: influence *= 1.1; break; case 3: influence *= 1.2; break; case 4: influence *= 1.4; break; case 5: influence *= 1.6; break; } Alliance al; if (alliances.ContainsKey(ss.allianceid)) { al = alliances[ss.allianceid]; } else { al = null; } addInfluence(ss, influence, al, level, new List <GraphicModel.SolarSystem>()); }
private void addInfluence(GraphicModel.SolarSystem ss, double value, Alliance al, int level, List <GraphicModel.SolarSystem> set) { ss.addInfluence(al, value); if (!systemsSov.AsParallel().Any(p => p.systemid == ss.systemid)) { systemsSov.Add(ss); } if (level >= 4) { return; } var arr = jumpsTable[ss.systemid]; foreach (var s in arr) { if (set.Contains(s)) { continue; } set.Add(s); addInfluence(s, value * 0.3, al, level + 1, set); } }