public Empire() { FleetManager = new FleetManager(this); TechnologyManager = new TechnologyManager(); PlanetManager = new PlanetManager(); SitRepManager = new SitRepManager(); visibleOtherFleets = new List<Fleet>(); }
public void EstablishContact(Empire empireContacted, SitRepManager sitRepManager) { foreach (Contact contact in contacts) { if (contact.EmpireInContact == empireContacted && !contact.Contacted) { //Need to add some fudge factor contact.RelationshipStatus = (int)(thisEmpire.EmpireRace.CharismaMultipler * empireContacted.EmpireRace.CharismaMultipler * 500); contact.Contacted = true; contact.OutgoingMessage = MessageType.NONE; contact.IncomingMessage = MessageType.NONE; sitRepManager.AddItem(new SitRepItem(Screen.Diplomacy, null, null, new Point(-1, -1), "You have established contact with " + empireContacted.EmpireName + " empire.")); return; } } }
public void UpdateContacts(SitRepManager sitRepManager) { //Handle messages foreach (Contact contact in contacts) { if (!contact.Contacted) { continue; } Empire whichEmpireInRequest; contact.IncomingMessage = contact.EmpireInContact.ContactManager.GetMessage(thisEmpire, out whichEmpireInRequest); contact.IncomingEmpireRequest = whichEmpireInRequest; if (contact.IncomingMessage != MessageType.NONE) { sitRepManager.AddItem(new SitRepItem(Screen.Diplomacy, null, null, new Point(), "You have received a message from the " + contact.EmpireInContact.EmpireName + " Empire.")); HandleMessage(contact, contact.IncomingMessage, contact.IncomingEmpireRequest); } } //Handle relationship changes }
public List<TechField> RollForDiscoveries(Random r, SitRepManager sitRepManager) { List<TechField> fieldsNeedingNewItems = new List<TechField>(); //Only items being currently researched have a chance of being discovered, otherwise they degrade (handled in AccureResearch function) if (ComputerPercentage > 0) { if (WhichComputerBeingResearched == null && UnresearchedComputerTechs.Count > 0 && ComputerResearchAmount > 0) { fieldsNeedingNewItems.Add(TechField.COMPUTER); } else if (WhichComputerBeingResearched != null) { //See if it is discovered this turn int chance = GetChanceForDiscovery(TechField.COMPUTER); if (chance > 0 && (r.Next(100) + 1) < chance) //Eureka! We've discovered the tech! +1 is to change from 0-99 to 1-100 { sitRepManager.AddItem(new SitRepItem(Screen.Research, null, null, new Point(), WhichComputerBeingResearched.TechName + " has been discovered.")); ResearchedComputerTechs.Add(WhichComputerBeingResearched); UnresearchedComputerTechs.Remove(WhichComputerBeingResearched); ComputerResearchAmount = 0; fieldsNeedingNewItems.Add(TechField.COMPUTER); } } } if (ConstructionPercentage > 0) { if (WhichConstructionBeingResearched == null && UnresearchedConstructionTechs.Count > 0 && ConstructionResearchAmount > 0) { fieldsNeedingNewItems.Add(TechField.CONSTRUCTION); } else if (WhichConstructionBeingResearched != null) { //See if it is discovered this turn int chance = GetChanceForDiscovery(TechField.CONSTRUCTION); if (chance > 0 && (r.Next(100) + 1) < chance) //Eureka! We've discovered the tech! +1 is to change from 0-99 to 1-100 { sitRepManager.AddItem(new SitRepItem(Screen.Research, null, null, new Point(), WhichConstructionBeingResearched.TechName + " has been discovered.")); ResearchedConstructionTechs.Add(WhichConstructionBeingResearched); UnresearchedConstructionTechs.Remove(WhichConstructionBeingResearched); ConstructionResearchAmount = 0; fieldsNeedingNewItems.Add(TechField.CONSTRUCTION); } } } if (ForceFieldPercentage > 0) { if (WhichForceFieldBeingResearched == null && UnresearchedForceFieldTechs.Count > 0 && ForceFieldResearchAmount > 0) { fieldsNeedingNewItems.Add(TechField.FORCE_FIELD); } else if (WhichForceFieldBeingResearched != null) { //See if it is discovered this turn int chance = GetChanceForDiscovery(TechField.FORCE_FIELD); if (chance > 0 && (r.Next(100) + 1) < chance) //Eureka! We've discovered the tech! +1 is to change from 0-99 to 1-100 { sitRepManager.AddItem(new SitRepItem(Screen.Research, null, null, new Point(), WhichForceFieldBeingResearched.TechName + " has been discovered.")); ResearchedForceFieldTechs.Add(WhichForceFieldBeingResearched); UnresearchedForceFieldTechs.Remove(WhichForceFieldBeingResearched); ForceFieldResearchAmount = 0; fieldsNeedingNewItems.Add(TechField.FORCE_FIELD); } } } if (PlanetologyPercentage > 0) { if (WhichPlanetologyBeingResearched == null && UnresearchedPlanetologyTechs.Count > 0 && PlanetologyResearchAmount > 0) { fieldsNeedingNewItems.Add(TechField.PLANETOLOGY); } else if (WhichPlanetologyBeingResearched != null) { //See if it is discovered this turn int chance = GetChanceForDiscovery(TechField.PLANETOLOGY); if (chance > 0 && (r.Next(100) + 1) < chance) //Eureka! We've discovered the tech! +1 is to change from 0-99 to 1-100 { sitRepManager.AddItem(new SitRepItem(Screen.Research, null, null, new Point(), WhichPlanetologyBeingResearched.TechName + " has been discovered.")); ResearchedPlanetologyTechs.Add(WhichPlanetologyBeingResearched); UnresearchedPlanetologyTechs.Remove(WhichPlanetologyBeingResearched); PlanetologyResearchAmount = 0; fieldsNeedingNewItems.Add(TechField.PLANETOLOGY); } } } if (PropulsionPercentage > 0) { if (WhichPropulsionBeingResearched == null && UnresearchedPropulsionTechs.Count > 0 && PropulsionResearchAmount > 0) { fieldsNeedingNewItems.Add(TechField.PROPULSION); } else if (WhichPropulsionBeingResearched != null) { //See if it is discovered this turn int chance = GetChanceForDiscovery(TechField.PROPULSION); if (chance > 0 && (r.Next(100) + 1) < chance) //Eureka! We've discovered the tech! +1 is to change from 0-99 to 1-100 { sitRepManager.AddItem(new SitRepItem(Screen.Research, null, null, new Point(), WhichPropulsionBeingResearched.TechName + " has been discovered.")); ResearchedPropulsionTechs.Add(WhichPropulsionBeingResearched); UnresearchedPropulsionTechs.Remove(WhichPropulsionBeingResearched); PropulsionResearchAmount = 0; fieldsNeedingNewItems.Add(TechField.PROPULSION); } } } if (WeaponPercentage > 0) { if (WhichWeaponBeingResearched == null && UnresearchedWeaponTechs.Count > 0 && WeaponResearchAmount > 0) { fieldsNeedingNewItems.Add(TechField.WEAPON); } else if (WhichWeaponBeingResearched != null) { //See if it is discovered this turn int chance = GetChanceForDiscovery(TechField.WEAPON); if (chance > 0 && (r.Next(100) + 1) < chance) //Eureka! We've discovered the tech! +1 is to change from 0-99 to 1-100 { sitRepManager.AddItem(new SitRepItem(Screen.Research, null, null, new Point(), WhichWeaponBeingResearched.TechName + " has been discovered.")); ResearchedWeaponTechs.Add(WhichWeaponBeingResearched); UnresearchedWeaponTechs.Remove(WhichWeaponBeingResearched); WeaponResearchAmount = 0; fieldsNeedingNewItems.Add(TechField.WEAPON); } } } UpdateValues(); return fieldsNeedingNewItems; }