private float GetMilitaryStr(Empire e) { float single; float str = 0f; try { foreach (Ship ship in e.GetShips()) { str = str + ship.GetStrength(); } return str; } catch { single = str; } return single; }
private void LoadEverything(object sender, RunWorkerCompletedEventArgs ev) { bool stop; List<SolarSystem>.Enumerator enumerator; base.ScreenManager.inter.ObjectManager.Clear(); this.data = new UniverseData(); RandomEventManager.ActiveEvent = this.savedData.RandomEvent; UniverseScreen.DeepSpaceManager = new SpatialManager(); this.ThrusterEffect = base.ScreenManager.Content.Load<Effect>("Effects/Thrust"); int count = this.data.SolarSystemsList.Count; this.data.loadFogPath = this.savedData.FogMapName; this.data.difficulty = UniverseData.GameDifficulty.Normal; this.data.difficulty = this.savedData.gameDifficulty; this.data.Size = this.savedData.Size; this.data.FTLSpeedModifier = this.savedData.FTLModifier; this.data.EnemyFTLSpeedModifier = this.savedData.EnemyFTLModifier; this.data.GravityWells = this.savedData.GravityWells; //added by gremlin: adjuse projector radius to map size. but only normal or higher. //this is pretty bad as its not connected to the creating game screen code that sets the map sizes. If someone changes the map size they wont know to change this as well. if (this.data.Size.X > 7300000f) Empire.ProjectorRadius = this.data.Size.X / 70f; EmpireManager.EmpireList.Clear(); if (Empire.universeScreen!=null && Empire.universeScreen.MasterShipList != null) Empire.universeScreen.MasterShipList.Clear(); foreach (SavedGame.EmpireSaveData d in this.savedData.EmpireDataList) { Empire e =new Empire(); e.data = new EmpireData(); e= this.CreateEmpireFromEmpireSaveData(d); this.data.EmpireList.Add(e); if (e.data.Traits.Name == this.PlayerLoyalty) { e.AutoColonize = this.savedData.AutoColonize; e.AutoExplore = this.savedData.AutoExplore; e.AutoFreighters = this.savedData.AutoFreighters; e.AutoBuild = this.savedData.AutoProjectors; } EmpireManager.EmpireList.Add(e); } foreach (Empire e in this.data.EmpireList) { if (e.data.AbsorbedBy == null) { continue; } foreach (KeyValuePair<string, TechEntry> tech in EmpireManager.GetEmpireByName(e.data.AbsorbedBy).GetTDict()) { if (!tech.Value.Unlocked) { continue; } EmpireManager.GetEmpireByName(e.data.AbsorbedBy).UnlockHullsSave(tech.Key, e.data.Traits.ShipType); } } foreach (SavedGame.EmpireSaveData d in this.savedData.EmpireDataList) { Empire e = EmpireManager.GetEmpireByName(d.Name); foreach (Relationship r in d.Relations) { e.GetRelations().Add(EmpireManager.GetEmpireByName(r.Name), r); if (r.ActiveWar == null) { continue; } r.ActiveWar.SetCombatants(e, EmpireManager.GetEmpireByName(r.Name)); } } this.data.SolarSystemsList = new List<SolarSystem>(); foreach (SavedGame.SolarSystemSaveData sdata in this.savedData.SolarSystemDataList) { SolarSystem system = this.CreateSystemFromData(sdata); system.guid = sdata.guid; this.data.SolarSystemsList.Add(system); } foreach (SavedGame.EmpireSaveData d in this.savedData.EmpireDataList) { Empire e = EmpireManager.GetEmpireByName(d.empireData.Traits.Name); foreach (SavedGame.ShipSaveData shipData in d.OwnedShips) { Ship ship = Ship.LoadSavedShip(shipData.data); ship.guid = shipData.guid; ship.Name = shipData.Name; if (!string.IsNullOrEmpty(shipData.VanityName)) ship.VanityName = shipData.VanityName; else { if (ship.Role == "troop") { if (shipData.TroopList.Count > 0) { ship.VanityName = shipData.TroopList[0].Name; } else ship.VanityName = shipData.Name; } else ship.VanityName = shipData.Name; } ship.Position = shipData.Position; if (shipData.IsPlayerShip) { this.playerShip = ship; this.playerShip.PlayerShip = true; this.data.playerShip = this.playerShip; } ship.experience = shipData.experience; ship.kills = shipData.kills; if (!Ship_Game.ResourceManager.ShipsDict.ContainsKey(shipData.Name)) { shipData.data.Hull = shipData.Hull; Ship newShip = Ship.CreateShipFromShipData(shipData.data); newShip.SetShipData(shipData.data); if (!newShip.InitForLoad()) { continue; } newShip.InitializeStatus(); newShip.IsPlayerDesign = false; newShip.FromSave = true; Ship_Game.ResourceManager.ShipsDict.Add(shipData.Name, newShip); } else if (Ship_Game.ResourceManager.ShipsDict[shipData.Name].FromSave) { ship.IsPlayerDesign = false; ship.FromSave = true; } float oldbasestr = ship.BaseStrength; float newbasestr = ResourceManager.CalculateBaseStrength(ship); ship.BaseStrength = newbasestr; foreach(ModuleSlotData moduleSD in shipData.data.ModuleSlotList) { ShipModule mismatch =null; bool exists =ResourceManager.ShipModulesDict.TryGetValue(moduleSD.InstalledModuleUID,out mismatch); if (exists) continue; System.Diagnostics.Debug.WriteLine(string.Concat("mismatch =", moduleSD.InstalledModuleUID)); } ship.PowerCurrent = shipData.Power; ship.yRotation = shipData.yRotation; ship.Ordinance = shipData.Ordnance; ship.Rotation = shipData.Rotation; ship.Velocity = shipData.Velocity; ship.isSpooling = shipData.AfterBurnerOn; ship.InCombatTimer = shipData.InCombatTimer; foreach (Troop t in shipData.TroopList) { t.SetOwner(EmpireManager.GetEmpireByName(t.OwnerString)); ship.TroopList.Add(t); } foreach (Rectangle AOO in shipData.AreaOfOperation) { ship.AreaOfOperation.Add(AOO); } ship.TetherGuid = shipData.TetheredTo; ship.TetherOffset = shipData.TetherOffset; if (ship.InCombatTimer > 0f) { ship.InCombat = true; } ship.loyalty = e; ship.InitializeAI(); ship.GetAI().CombatState = shipData.data.CombatState; ship.GetAI().FoodOrProd = shipData.AISave.FoodOrProd; ship.GetAI().State = shipData.AISave.state; ship.GetAI().DefaultAIState = shipData.AISave.defaultstate; ship.GetAI().GotoStep = shipData.AISave.GoToStep; ship.GetAI().MovePosition = shipData.AISave.MovePosition; ship.GetAI().OrbitTargetGuid = shipData.AISave.OrbitTarget; ship.GetAI().ColonizeTargetGuid = shipData.AISave.ColonizeTarget; ship.GetAI().TargetGuid = shipData.AISave.AttackTarget; ship.GetAI().SystemToDefendGuid = shipData.AISave.SystemToDefend; ship.GetAI().EscortTargetGuid = shipData.AISave.EscortTarget; bool hasCargo = false; if (shipData.FoodCount > 0f) { ship.AddGood("Food", (int)shipData.FoodCount); ship.GetAI().FoodOrProd = "Food"; hasCargo = true; } if (shipData.ProdCount > 0f) { ship.AddGood("Production", (int)shipData.ProdCount); ship.GetAI().FoodOrProd = "Prod"; hasCargo = true; } if (shipData.PopCount > 0f) { ship.AddGood("Colonists_1000", (int)shipData.PopCount); } AIState state = ship.GetAI().State; if (state == AIState.SystemTrader) { ship.GetAI().OrderTradeFromSave(hasCargo, shipData.AISave.startGuid, shipData.AISave.endGuid); } else if (state == AIState.PassengerTransport) { ship.GetAI().OrderTransportPassengersFromSave(); } e.AddShip(ship); foreach (SavedGame.ProjectileSaveData pdata in shipData.Projectiles) { Weapon w = Ship_Game.ResourceManager.GetWeapon(pdata.Weapon); Projectile p = w.LoadProjectiles(pdata.Velocity, ship); p.Velocity = pdata.Velocity; p.Position = pdata.Position; p.Center = pdata.Position; p.duration = pdata.Duration; ship.Projectiles.Add(p); } this.data.MasterShipList.Add(ship); } } foreach (SavedGame.EmpireSaveData d in this.savedData.EmpireDataList) { Empire e = EmpireManager.GetEmpireByName(d.Name); foreach (SavedGame.FleetSave fleetsave in d.FleetsList) { Ship_Game.Gameplay.Fleet fleet = new Ship_Game.Gameplay.Fleet() { guid = fleetsave.FleetGuid, IsCoreFleet = fleetsave.IsCoreFleet, facing = fleetsave.facing }; foreach (SavedGame.FleetShipSave ssave in fleetsave.ShipsInFleet) { foreach (Ship ship in this.data.MasterShipList) { if (ship.guid != ssave.shipGuid) { continue; } ship.RelativeFleetOffset = ssave.fleetOffset; fleet.AddShip(ship); } } foreach (FleetDataNode node in fleetsave.DataNodes) { fleet.DataNodes.Add(node); } foreach (FleetDataNode node in fleet.DataNodes) { foreach (Ship ship in fleet.Ships) { if (!(node.ShipGuid != Guid.Empty) || !(ship.guid == node.ShipGuid)) { continue; } node.SetShip(ship); node.ShipName = ship.Name; break; } } fleet.AssignPositions(fleet.facing); fleet.Name = fleetsave.Name; fleet.TaskStep = fleetsave.TaskStep; fleet.Owner = e; fleet.Position = fleetsave.Position; if (e.GetFleetsDict().ContainsKey(fleetsave.Key)) { e.GetFleetsDict()[fleetsave.Key] = fleet; } else { e.GetFleetsDict().TryAdd(fleetsave.Key, fleet); } e.GetFleetsDict()[fleetsave.Key].SetSpeed(); fleet.findAveragePositionset(); fleet.Setavgtodestination(); } foreach (SavedGame.ShipSaveData shipData in d.OwnedShips) { foreach (Ship ship in e.GetShips()) { if (ship.Position != shipData.Position) { continue; } } } } foreach (SavedGame.EmpireSaveData d in this.savedData.EmpireDataList) { Empire e = EmpireManager.GetEmpireByName(d.Name); e.SpaceRoadsList = new List<SpaceRoad>(); foreach (SavedGame.SpaceRoadSave roadsave in d.SpaceRoadData) { SpaceRoad road = new SpaceRoad(); foreach (SolarSystem s in this.data.SolarSystemsList) { if (roadsave.OriginGUID == s.guid) { road.SetOrigin(s); } if (roadsave.DestGUID != s.guid) { continue; } road.SetDestination(s); } foreach (SavedGame.RoadNodeSave nodesave in roadsave.RoadNodes) { RoadNode node = new RoadNode(); foreach (Ship s in this.data.MasterShipList) { if (nodesave.Guid_Platform != s.guid) { continue; } node.Platform = s; } node.Position = nodesave.Position; road.RoadNodesList.Add(node); } e.SpaceRoadsList.Add(road); } foreach (SavedGame.GoalSave gsave in d.GSAIData.Goals) { Goal g = new Goal() { empire = e, type = gsave.type }; if (g.type == GoalType.BuildShips && gsave.ToBuildUID != null && !Ship_Game.ResourceManager.ShipsDict.ContainsKey(gsave.ToBuildUID)) { continue; } g.ToBuildUID = gsave.ToBuildUID; g.Step = gsave.GoalStep; g.guid = gsave.GoalGuid; g.GoalName = gsave.GoalName; g.BuildPosition = gsave.BuildPosition; if (gsave.fleetGuid != Guid.Empty) { foreach (KeyValuePair<int, Ship_Game.Gameplay.Fleet> Fleet in e.GetFleetsDict()) { if (Fleet.Value.guid != gsave.fleetGuid) { continue; } g.SetFleet(Fleet.Value); } } foreach (SolarSystem s in this.data.SolarSystemsList) { foreach (Planet p in s.PlanetList) { if (p.guid == gsave.planetWhereBuildingAtGuid) { g.SetPlanetWhereBuilding(p); } if (p.guid != gsave.markedPlanetGuid) { continue; } g.SetMarkedPlanet(p); } } foreach (Ship s in this.data.MasterShipList) { if (gsave.colonyShipGuid == s.guid) { g.SetColonyShip(s); } if (gsave.beingBuiltGUID != s.guid) { continue; } g.SetBeingBuilt(s); } e.GetGSAI().Goals.Add(g); } for (int i = 0; i < d.GSAIData.PinGuids.Count; i++) { e.GetGSAI().ThreatMatrix.Pins.TryAdd(d.GSAIData.PinGuids[i], d.GSAIData.PinList[i]); } e.GetGSAI().UsedFleets = d.GSAIData.UsedFleets; lock (GlobalStats.TaskLocker) { foreach (MilitaryTask task in d.GSAIData.MilitaryTaskList) { task.SetEmpire(e); e.GetGSAI().TaskList.Add(task); if (task.TargetPlanetGuid != Guid.Empty) { enumerator = this.data.SolarSystemsList.GetEnumerator(); try { do { if (!enumerator.MoveNext()) { break; } SolarSystem s = enumerator.Current; stop = false; foreach (Planet p in s.PlanetList) { if (p.guid != task.TargetPlanetGuid) { continue; } task.SetTargetPlanet(p); stop = true; break; } } while (!stop); } finally { ((IDisposable)enumerator).Dispose(); } } foreach (Guid guid in task.HeldGoals) { foreach (Goal g in e.GetGSAI().Goals) { if (g.guid != guid) { continue; } g.Held = true; } } try { if (task.WhichFleet != -1) { e.GetFleetsDict()[task.WhichFleet].Task = task; } } catch { task.WhichFleet = 0; } } } foreach (SavedGame.ShipSaveData shipData in d.OwnedShips) { foreach (Ship ship in this.data.MasterShipList) { if (ship.guid != shipData.guid) { continue; } foreach (Vector2 waypoint in shipData.AISave.ActiveWayPoints) { ship.GetAI().ActiveWayPoints.Enqueue(waypoint); } foreach (SavedGame.ShipGoalSave sg in shipData.AISave.ShipGoalsList) { ArtificialIntelligence.ShipGoal g = new ArtificialIntelligence.ShipGoal(sg.Plan, sg.MovePosition, sg.FacingVector); foreach (SolarSystem s in this.data.SolarSystemsList) { foreach (Planet p in s.PlanetList) { if (sg.TargetPlanetGuid == p.guid) { g.TargetPlanet = p; ship.GetAI().ColonizeTarget = p; } if (p.guid == shipData.AISave.startGuid) { ship.GetAI().start = p; } if (p.guid != shipData.AISave.endGuid) { continue; } ship.GetAI().end = p; } } if (sg.fleetGuid != Guid.Empty) { foreach (KeyValuePair<int, Ship_Game.Gameplay.Fleet> fleet in e.GetFleetsDict()) { if (fleet.Value.guid != sg.fleetGuid) { continue; } g.fleet = fleet.Value; } } g.VariableString = sg.VariableString; g.DesiredFacing = sg.DesiredFacing; g.SpeedLimit = sg.SpeedLimit; foreach (Goal goal in ship.loyalty.GetGSAI().Goals) { if (sg.goalGuid != goal.guid) { continue; } g.goal = goal; } ship.GetAI().OrderQueue.AddLast(g); } } } } foreach (SavedGame.SolarSystemSaveData sdata in this.savedData.SolarSystemDataList) { foreach (SavedGame.RingSave rsave in sdata.RingList) { Planet p = new Planet(); foreach (SolarSystem s in this.data.SolarSystemsList) { foreach (Planet p1 in s.PlanetList) { if (p1.guid != rsave.Planet.guid) { continue; } p = p1; break; } } if (p.Owner == null) { continue; } foreach (SavedGame.QueueItemSave qisave in rsave.Planet.QISaveList) { QueueItem qi = new QueueItem(); if (qisave.isBuilding) { qi.isBuilding = true; qi.Building = Ship_Game.ResourceManager.BuildingsDict[qisave.UID]; qi.Cost = qi.Building.Cost * this.savedData.GamePacing; qi.NotifyOnEmpty = false; foreach (PlanetGridSquare pgs in p.TilesList) { if ((float)pgs.x != qisave.pgsVector.X || (float)pgs.y != qisave.pgsVector.Y) { continue; } pgs.QItem = qi; qi.pgs = pgs; break; } } if (qisave.isTroop) { qi.isTroop = true; qi.troop = Ship_Game.ResourceManager.TroopsDict[qisave.UID]; qi.Cost = qi.troop.GetCost(); qi.NotifyOnEmpty = false; } if (qisave.isShip) { qi.isShip = true; if (!Ship_Game.ResourceManager.ShipsDict.ContainsKey(qisave.UID)) { continue; } qi.sData = Ship_Game.ResourceManager.GetShip(qisave.UID).GetShipData(); qi.DisplayName = qisave.DisplayName; qi.Cost = 0f; foreach (ModuleSlot slot in Ship_Game.ResourceManager.GetShip(qisave.UID).ModuleSlotList) { if (slot.InstalledModuleUID == null) { continue; } QueueItem cost = qi; cost.Cost = cost.Cost + Ship_Game.ResourceManager.GetModule(slot.InstalledModuleUID).Cost * this.savedData.GamePacing; } QueueItem queueItem = qi; queueItem.Cost += qi.Cost * p.Owner.data.Traits.ShipCostMod; queueItem.Cost *= (GlobalStats.ActiveModInfo != null && GlobalStats.ActiveModInfo.useHullBonuses && ResourceManager.HullBonuses.ContainsKey(Ship_Game.ResourceManager.GetShip(qisave.UID).GetShipData().Hull) ? 1f - ResourceManager.HullBonuses[Ship_Game.ResourceManager.GetShip(qisave.UID).GetShipData().Hull].CostBonus : 1); if (qi.sData.HasFixedCost) { qi.Cost = (float)qi.sData.FixedCost; } if (qisave.IsRefit) { qi.isRefit = true; qi.Cost = qisave.RefitCost; } } foreach (Goal g in p.Owner.GetGSAI().Goals) { if (g.guid != qisave.GoalGUID) { continue; } qi.Goal = g; qi.NotifyOnEmpty = false; } if (qisave.isShip && qi.Goal != null) { qi.Goal.beingBuilt = Ship_Game.ResourceManager.GetShip(qisave.UID); } qi.productionTowards = qisave.ProgressTowards; p.ConstructionQueue.Add(qi); } } } this.Loaded = true; }
public War(Empire us, Empire them, float StarDate) { this.StartDate = StarDate; this.Us = us; this.Them = them; this.UsName = us.data.Traits.Name; this.ThemName = them.data.Traits.Name; foreach (Ship ship in us.GetShips()) { War ourStartingStrength = this; ourStartingStrength.OurStartingStrength = ourStartingStrength.OurStartingStrength + ship.GetStrength(); foreach (Troop t in ship.TroopList) { War ourStartingGroundStrength = this; ourStartingGroundStrength.OurStartingGroundStrength = ourStartingGroundStrength.OurStartingGroundStrength + (float)t.Strength; } } foreach (Planet p in us.GetPlanets()) { War ourStartingColonies = this; ourStartingColonies.OurStartingColonies = ourStartingColonies.OurStartingColonies + 1; p.TroopsHere.thisLock.EnterReadLock(); foreach (Troop t in p.TroopsHere) { if (t.GetOwner() != us) { continue; } War war = this; war.OurStartingGroundStrength = war.OurStartingGroundStrength + (float)t.Strength; } p.TroopsHere.thisLock.ExitReadLock(); } foreach (Ship ship in them.GetShips()) { War theirStartingStrength = this; theirStartingStrength.TheirStartingStrength = theirStartingStrength.TheirStartingStrength + ship.GetStrength(); foreach (Troop t in ship.TroopList) { War theirStartingGroundStrength = this; theirStartingGroundStrength.TheirStartingGroundStrength = theirStartingGroundStrength.TheirStartingGroundStrength + (float)t.Strength; } } foreach (Planet p in them.GetPlanets()) { p.TroopsHere.thisLock.EnterReadLock(); foreach (Troop t in p.TroopsHere) { if (t.GetOwner() != them) { continue; } War theirStartingGroundStrength1 = this; theirStartingGroundStrength1.TheirStartingGroundStrength = theirStartingGroundStrength1.TheirStartingGroundStrength + (float)t.Strength; } p.TroopsHere.thisLock.ExitReadLock(); } foreach (KeyValuePair<Guid, SolarSystem> system in this.Us.GetUS().SolarSystemDict) { bool WeAreThere = false; bool TheyAreThere = false; if (system.Value.OwnerList.Contains(this.Us)) { WeAreThere = true; } if (system.Value.OwnerList.Contains(this.Them)) { TheyAreThere = true; } if (!WeAreThere || !TheyAreThere) { continue; } War startingNumContestedSystems = this; startingNumContestedSystems.StartingNumContestedSystems = startingNumContestedSystems.StartingNumContestedSystems + 1; this.ContestedSystemsGUIDs.Add(system.Key); } }
public void AbsorbEmpire(Empire target) { foreach (Planet planet in target.GetPlanets()) { this.OwnedPlanets.Add(planet); planet.Owner = (Empire)null; planet.Owner = this; if (!planet.system.OwnerList.Contains(this)) { planet.system.OwnerList.Add(this); planet.system.OwnerList.Remove(target); } } foreach (KeyValuePair<Guid, SolarSystem> keyValuePair in Empire.universeScreen.SolarSystemDict) { foreach (Planet planet in keyValuePair.Value.PlanetList) { foreach (Troop troop in planet.TroopsHere) { if (troop.GetOwner() == target) troop.SetOwner(this); } } } target.GetPlanets().Clear(); foreach (Ship ship in (List<Ship>)target.GetShips()) { this.OwnedShips.Add(ship); ship.loyalty = this; ship.fleet = (Fleet)null; ship.GetAI().State = AIState.AwaitingOrders; ship.GetAI().OrderQueue.Clear(); } target.GetShips().Clear(); foreach (KeyValuePair<string, TechEntry> keyValuePair in target.GetTDict()) { if (keyValuePair.Value.Unlocked && !this.TechnologyDict[keyValuePair.Key].Unlocked) this.UnlockTech(keyValuePair.Key); } foreach (KeyValuePair<string, bool> keyValuePair in target.GetHDict()) { if (keyValuePair.Value) this.UnlockedHullsDict[keyValuePair.Key] = true; } foreach (KeyValuePair<string, bool> keyValuePair in target.GetTrDict()) { if (keyValuePair.Value) this.UnlockedTroopDict[keyValuePair.Key] = true; } foreach (Artifact artifact in target.data.OwnedArtifacts) { this.data.OwnedArtifacts.Add(artifact); this.AddArtifact(artifact); } target.data.OwnedArtifacts.Clear(); if ((double)target.Money > 0.0) { this.Money += target.Money; target.Money = 0.0f; } target.SetAsMerged(); this.ResetBorders(); this.UpdateShipsWeCanBuild(); if (this != EmpireManager.GetEmpireByName(Ship.universeScreen.PlayerLoyalty)) { this.data.difficulty = Difficulty.Brutal; lock (GlobalStats.TaskLocker) { foreach (MilitaryTask item_7 in (List<MilitaryTask>)this.GSAI.TaskList) item_7.EndTask(); this.GSAI.TaskList.ApplyPendingRemovals(); } this.GSAI.DefensiveCoordinator.DefensiveForcePool.Clear(); this.GSAI.DefensiveCoordinator.DefenseDict.Clear(); this.ForcePool.Clear(); //foreach (Ship s in (List<Ship>)this.OwnedShips) //.OrderByDescending(experience=> experience.experience).ThenBy(strength=> strength.BaseStrength)) for (int i = 0; i < this.OwnedShips.Count; i++) { Ship s = ((List<Ship>)this.OwnedShips)[i]; //added by gremlin Do not include 0 strength ships in defensive force pool s.GetAI().OrderQueue.Clear(); s.GetAI().State = AIState.AwaitingOrders; this.ForcePoolAdd(s); } if (this.data.Traits.Cybernetic != 0) { foreach (Planet planet in this.OwnedPlanets) { List<Building> list = new List<Building>(); foreach (Building building in planet.BuildingList) { if ((double)building.PlusFlatFoodAmount > 0.0 || (double)building.PlusFoodPerColonist > 0.0 || (double)building.PlusTerraformPoints > 0.0) list.Add(building); } foreach (Building b in list) planet.ScrapBuilding(b); } } } foreach (Agent agent in (List<Agent>)target.data.AgentList) { this.data.AgentList.Add(agent); agent.Mission = AgentMission.Defending; agent.TargetEmpire = (string)null; } target.data.AgentList.Clear(); target.data.AbsorbedBy = this.data.Traits.Name; this.CalculateScore(); }