/* * * * Research of "Space Travel" allows shipyard and scout hull * -> Returns the two follow up researhces with "researchable" set * -> Returns old quests (which is wrong) + current quest (which might be set to completed) + 2 new quests (which will be loaded and shown) * * <ResearchDone> * <Researches> * <PlayerResearch> * <id>501</id> * <label>585</label> * <descriptionLabel>585</descriptionLabel> * <objectimageUrl>1.gif</objectimageUrl> * <cost>15</cost> * <researchable>1</researchable> * <isCompleted>0</isCompleted> * <investedResearchpoints>0</investedResearchpoints> * <researchPriority>0</researchPriority> * </PlayerResearch> * <PlayerResearch> * <id>4002</id> * <label>553</label> * <descriptionLabel>558</descriptionLabel> * <objectimageUrl>1.gif</objectimageUrl> * <cost>11</cost> * <researchable>1</researchable> * <isCompleted>0</isCompleted> * <investedResearchpoints>0</investedResearchpoints> * <researchPriority>0</researchPriority> * </PlayerResearch> * </Researches> * <Quest> * <userId>1400</userId> * <questId>1</questId> * <isRead>1</isRead> * <isCompleted>1</isCompleted> * <hasScript>1</hasScript> * <script>Welcome.js</script> * <label>103</label> * </Quest> * <Quest> * <userId>1400</userId> * <questId>2</questId> * <isRead>1</isRead> * <isCompleted>1</isCompleted> * <hasScript>1</hasScript> * <script>ShortOverview.js</script> * <label>104</label> * </Quest> * <Quest> * <userId>1400</userId> * <questId>3</questId> * <isRead>1</isRead> * <isCompleted>0</isCompleted> * <hasScript>1</hasScript> * <script>Movement.js</script> * <label>116</label> * </Quest> * <Quest> * <userId>1400</userId> * <questId>21</questId> * <isRead>0</isRead> * <isCompleted>0</isCompleted> * <hasScript>1</hasScript> * <script>ShipModulePlant.js</script> * <label>254</label> * </Quest> * <Quest> * <userId>1400</userId> * <questId>22</questId> * <isRead>0</isRead> * <isCompleted>0</isCompleted> * <hasScript>1</hasScript> * <script>Spaceport.js</script> * <label>112</label> * </Quest> * <allowedBuildings> * <allowedBuilding> * <allowedBuildingId>17</allowedBuildingId> * </allowedBuilding> * </allowedBuildings> * <ShipHulls> * <ShipHull> * <shipHullId>1</shipHullId> * </ShipHull> * </ShipHulls> * <allowedModules /> * </ResearchDone> * * */ /* * * <ResearchDone> * <Researches> * <PlayerResearch> * <id>501</id> * <researchable>1</researchable> * <isCompleted>1</isCompleted> * <investedResearchpoints>0</investedResearchpoints> * <researchPriority>0</researchPriority> * </PlayerResearch> * <PlayerResearch> * <id>4002</id> * <researchable>1</researchable> * <isCompleted>1</isCompleted> * <investedResearchpoints>0</investedResearchpoints> * <researchPriority>0</researchPriority> * </PlayerResearch> * </Researches> * <Quest> * <UserQuest> * <userId>1</userId> * <questId>21</questId> * <isRead>false</isRead> * <isCompleted>false</isCompleted> * <hasScript>1</hasScript> * <script>ShipModulePlant.js</script> * <label>254</label> * </UserQuest> * <UserQuest> * <userId>1</userId> * <questId>22</questId> * <isRead>false</isRead> * <isCompleted>false</isCompleted> * <hasScript>1</hasScript> * <script>Spaceport.js</script> * <label>112</label> * </UserQuest> * </Quest> * <allowedBuildings> * <allowedBuilding> * <allowedBuildingId>17</allowedBuildingId> * </allowedBuilding> * </allowedBuildings> * <ShipHulls> * <ShipHull> * <shipHullId>1</shipHullId> * </ShipHull> * </ShipHulls> * </ResearchDone> * * */ public string doResearch2(int researchId) { SpacegameServer.Core.User user = core.users[this.userId]; List <SpacegameServer.Core.UserQuest> NewQuests = new List <SpacegameServer.Core.UserQuest>(); user.doResearch2(researchId, ref NewQuests); string ret = ""; //fetch all things now available by the new research var AllNewItems = Core.ResearchQuestPrerequisite.AvailableQRB(user, 1, researchId); SpacegameServer.BC.XMLGroups.ResearchDone ResearchDone = SpacegameServer.BC.XMLGroups.ResearchDone.createResearchDone(user, AllNewItems, ref NewQuests); BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.ResearchDone>(ResearchDone, ref ret, true); return(ret); }
public string ChooseSpecialization(string[] researchs) { SpacegameServer.Core.User user = core.users[this.userId]; List <SpacegameServer.Core.UserQuest> NewQuests = new List <SpacegameServer.Core.UserQuest>(); List <SpacegameServer.Core.Research> researchIds = new List <SpacegameServer.Core.Research>(); //check that all researchs are Id of spececializationResearchs foreach (var entry in researchs) { if (entry == "") { continue; } int result; if (!Int32.TryParse(entry, out result)) { return(""); } if (!SpacegameServer.Core.Core.Instance.Researchs.sparseContainsIndex(result)) { return(""); } var Research = Core.Core.Instance.Researchs[result]; if (Research.researchType != 10) { return(""); } researchIds.Add(Research); } if (!user.ChooseSpecialization(researchIds)) { return(""); } string ret = ""; //create a list of all possible follow-up researches. These might not fulfill other requirements... List <Core.ResearchQuestPrerequisite> AllNewResearchs = Core.Core.Instance.ResearchQuestPrerequisites.Where(e => e.SourceType == 1 && researchIds.Any(rId => rId.id == e.SourceId) && e.TargetType == 1).ToList(); // Prüfe Vorbedingungen (andere Forschungen, Quests, Rohstoffe) ob diese Forschung erlaubt ist List <Core.ResearchQuestPrerequisite> FilteredNewResearchs = new List <Core.ResearchQuestPrerequisite>(); foreach (Core.ResearchQuestPrerequisite Follower in AllNewResearchs) { Core.Research TargetResearch = Core.Core.Instance.Researchs[Follower.TargetId]; if (!user.canResearch(TargetResearch)) { continue; } FilteredNewResearchs.Add(Follower); } SpacegameServer.BC.XMLGroups.ResearchDone ResearchDone = SpacegameServer.BC.XMLGroups.ResearchDone.createResearchDone(user, FilteredNewResearchs, ref NewQuests); BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.ResearchDone>(ResearchDone, ref ret, true); return(ret); }