public string getCombatMessages(int fromNr, int toNr, int highestId) { List <Core.Combat> result; //no message present: fromNr -= 1; toNr -= 1; result = Core.Combat.getCombatMessages(user, fromNr, toNr, highestId); SpacegameServer.BC.XMLGroups.CombatMessages messages = new SpacegameServer.BC.XMLGroups.CombatMessages(); //messages.messages = result; foreach (var x in result) { messages.messages.Add(Core.Combat.CloneWORounds(x)); } string ret = ""; BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.CombatMessages>(messages, ref ret, true); ret = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(messages); return(ret); }
/// <summary> /// Wrong name. Does in fact check if the user may be added, then ALSO adds the user to the node /// </summary> /// <param name="user"></param> /// <param name="ship"></param> /// <param name="node"></param> /// <returns></returns> public static string checkShipAtCommNode(Core.User user, Core.Ship ship, Core.CommunicationNode node) { string ret = ""; //List<SpacegameServer.Core.DiplomaticRelation> newContacts = new List<SpacegameServer.Core.DiplomaticRelation>(); if (!node.checkAndAddUser(user, ship)) { return(ret); } SpacegameServer.BC.XMLGroups.CommNodeData nodeData = new SpacegameServer.BC.XMLGroups.CommNodeData(); //nodeData.xmlKnownUsers = SpacegameServer.BC.XMLGroups.UserContacts.createContacts(user, newContacts); nodeData.commNodes = new XMLGroups.CommNodes(); nodeData.commNodes.commNode = new List <XMLGroups.CommNode>(); nodeData.commNodes.commNode.Add(XMLGroups.CommNode.createCommNode(node, user)); //Todo: only transfer "new" alliance contact data //nodeData.allianceDiplomacy = XMLGroups.KnownAlliances.createAllianceContacts(user); //nodeData.allianceRelations = XMLGroups.AllianceUserRelations.createAllianceUserRelations(user); BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.CommNodeData>(nodeData, ref ret, true); return(ret); }
public string getMessagesText(int userId, int messageId) { SpacegameServer.BC.XMLGroups.Messages messages = new XMLGroups.Messages(); var message = core.messages[messageId]; //check that user is part of the conversation if (message.messageParticipants.Any(e => e.participant == userId)) { messages.messages = message.messages; var participantToUpdate = message.messageParticipants.First(e => e.participant == userId); if (!participantToUpdate.read) { participantToUpdate.read = true; core.dataConnection.SaveMessageparticipant(participantToUpdate); } } string ret = ""; BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.Messages>(messages, ref ret, true); return(ret); }
public static string Repair(int shipId, int userId) { SpacegameServer.Core.Core core = SpacegameServer.Core.Core.Instance; //moveShip SpacegameServer.Core.Ship ship = core.ships[shipId]; SpacegameServer.Core.User user = core.users[userId]; Core.Colony colony = null; var IsRepaired = ship.Repair(user, ref colony); //core.colonize(ship, user, newname, ref ret); //do the action //ship.colonize(user, newname, ref ret); //calc the xml result XMLGroups.MoveResultTree scan = new XMLGroups.MoveResultTree(); scan.ships = new List <Core.Ship>(); scan.stars = new List <Core.SystemMap>(); scan.colonies = new List <Core.Colony>(); scan.ships.Add(ship); scan.colonies.Add(colony); string ret = ""; BusinessConnector.Serialize <BC.XMLGroups.MoveResultTree>(scan, ref ret); return(ret); }
public string trySetRelation(int userId, int diplEntId, int diplEntType, SpacegameServer.Core.Relation relation) { string xml = ""; List <SpacegameServer.Core.DiplomaticRelation> changes = new List <SpacegameServer.Core.DiplomaticRelation>(); Core.Core.Instance.userRelations.trySetRelation(userId, diplEntId, diplEntType, relation, changes); //get all contacts of this user: //toDo: better would be to only fetch contacts that changed due to the newRelations BC.XMLGroups.ChangeRelation ChangeRelation = new XMLGroups.ChangeRelation(); ChangeRelation.ships = new List <Core.Ship>(); //fill xml data ChangeRelation.knownUsers = SpacegameServer.BC.XMLGroups.UserContacts.createContacts(user, 0); ChangeRelation.allianceRelations = SpacegameServer.BC.XMLGroups.AllianceUserRelations.createAllianceUserRelations(user); if (relation == 0) { List <SpacegameServer.Core.SystemMap> stars = new List <Core.SystemMap>(); List <SpacegameServer.Core.Colony> colonies = new List <Core.Colony>(); Core.Core.Instance.getUserScans(userId, null, ref ChangeRelation.ships, ref stars, ref colonies); } BusinessConnector.Serialize <BC.XMLGroups.ChangeRelation>(ChangeRelation, ref xml, true); //BusinessConnector.Serialize<SpacegameServer.BC.XMLGroups.StarSystemMap>(response, ref ret, true); return(xml); }
public static SpacegameServer.BC.BusinessConnector createServer() { SpacegameServer.Core.Core core = SpacegameServer.Core.Core.Instance; //new SpacegameServer.Core.SpaceServerCore(); -> Singleton SpacegameServer.BC.BusinessConnector bc = new BC.BusinessConnector(); return(bc); }
public string buildShip() { SpacegameServer.Core.Core core = SpacegameServer.Core.Core.Instance; //moveShip SpacegameServer.Core.User user = core.users[userId]; SpacegameServer.Core.ShipBuild builder = new Core.ShipBuild(core); string retValue = ""; int newShipId = 0; //builder.build(shipTemplateId, userId, colonyId, fastBuild, ref retValue); Core.ShipBuildErrorCode errorCode = 0; int errorValue = 0; if (builder.build2(shipTemplateId, userId, colonyId, fastBuild, ref newShipId, ref errorCode, ref errorValue)) { SpacegameServer.BC.XMLGroups.shipBuild built = new SpacegameServer.BC.XMLGroups.shipBuild(); built.Colonies = new List <Core.Colony>(); built.Colonies.Add(core.colonies[colonyId]); built.ship = core.ships[newShipId]; BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.shipBuild>(built, ref retValue, true); } else { retValue = "<error><errorCode>" + ((int)errorCode).ToString() + "</errorCode>" + "<errorValue>" + errorValue.ToString() + "</errorValue></error>"; } return(retValue); }
public static string Abandon(int colonyId, int userId) { SpacegameServer.Core.Core core = SpacegameServer.Core.Core.Instance; //moveShip SpacegameServer.Core.Colony colony = core.colonies[colonyId]; //prepare output string ret = ""; XMLGroups.MoveResultTree scan = new XMLGroups.MoveResultTree(); scan.ships = new List <Core.Ship>(); scan.stars = new List <Core.SystemMap>(); scan.colonies = new List <Core.Colony>(); //call abandon if (!colony.Abandon(userId, ref scan.ships)) { return(ret); } scan.colonies.Add(colony); //create xml BusinessConnector.Serialize <BC.XMLGroups.MoveResultTree>(scan, ref ret); return(ret); }
public static string buildBuilding(int userId, int colonyId, int tileNr, short buildingId) { string xml = ""; SpacegameServer.Core.Core core = SpacegameServer.Core.Core.Instance; //moveShip SpacegameServer.Core.User user = core.users[userId]; int newBuildingId = -1; SpacegameServer.Core.ColonyBuildingActions.build(userId, colonyId, tileNr, buildingId, ref newBuildingId); if (newBuildingId == -1) { xml = @"<buildResult> <result>0</result> </buildResult>"; return(xml); } Core.ColonyBuilding newBuilding = core.colonyBuildings[newBuildingId]; SpacegameServer.BC.XMLGroups.ColonyBuildings buildResult = new XMLGroups.ColonyBuildings(newBuilding); BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.ColonyBuildings>(buildResult, ref xml, true); return(xml); }
public string getCommNodeMessages(int fromNr, int toNr) { /* * <messages> * <message> * <id>6</id> * <commNodeId>936</commNodeId> * <sender>157</sender> * <headline>Title</headline> * <messageBody>Today, the Prokyon Syndicate was founded.<br />We are a small group of traders living near the Algol 550 space station, which is at the coordinates 5000|5000.<br />Our products will soon be available at that station. I can especially recommend our high quality Yttrium metal. <br />In addition, we are offering trade treaties to all peaceful dwellers of this galaxy. <br /><br /><br />Yours sincerely,<br /><br />Skratti,<br />CEO Prokyon Syndicate</messageBody> * <sendingDate>2015-06-23T05:43:02</sendingDate> * <newMessage>0</newMessage> * </message> * <message> * <id>9</id> * <commNodeId>936</commNodeId> * <sender>186</sender> * <headline>Title</headline> * <messageBody>Dear neighbours!<br />Yesterday a plebiscite of the inhabitants of sector 4980/4980 to 5000/5000 ended with clear decision to close the borders of the sektor for security reasons.<br />Also, a security zone of one field around the sector will be established.<br /><br />Any ship entering the zone without previous declaration of intention, flight plan, destination and onboard cargo will be regarded as a thread and thus treated.<br /><br />Expect the diplomatic status to be changed to hostile in near future so al potentialy inevitable actions can be taken, if necessary.<br />This dont mean you have to fear any thread as long you stand clear of the borders and security zone.</messageBody> * <sendingDate>2015-06-26T19:19:56</sendingDate> * <newMessage>0</newMessage> * </message> * </messages> * */ /* * <message> * <id>1</id> * <commNodeId>913</commNodeId> * <sender>0</sender> * <sendingdate>0001-01-01T00:00:00</sendingdate> * </message> * */ List <Core.CommunicationNodeMessage> result; //no message present: fromNr -= 1; toNr -= 1; result = node.getCommMessages(user, fromNr, toNr); //todo: convert result to response SpacegameServer.BC.XMLGroups.CommNodeMessages messages = new SpacegameServer.BC.XMLGroups.CommNodeMessages(); /*foreach (var message in result ) * { * messages.message.Add(message); * }*/ messages.message = result; string ret = ""; BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.CommNodeMessages>(messages, ref ret, true); return(ret); }
public static string leaveAlliance(Core.User user, Core.User userToRemove, int allianceId) { string xml = ""; Core.Alliance.leaveCheck(user, userToRemove, allianceId); SpacegameServer.BC.XMLGroups.AllianceFullData allianceInfo = SpacegameServer.BC.XMLGroups.AllianceFullData.createFullData(user); BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.AllianceFullData>(allianceInfo, ref xml, true); return(xml); }
public string getColonySurfacefields(int colonyId) { string ret = ""; SpacegameServer.BC.XMLGroups.ColonyPlanets response = new XMLGroups.ColonyPlanets(); response.planets.AddRange(core.planets.Where(e => e.Value.colonyId == colonyId).Select(e => new XMLGroups.ColonyPlanet(e.Value.id, e.Value, e.Value.surfaceFields))); BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.ColonyPlanets>(response, ref ret, true); return(ret); }
public static string getTrade() { string ret = ""; SpacegameServer.BC.XMLGroups.TradeOffers TradeOffers = new XMLGroups.TradeOffers(); TradeOffers.TradeOffer = SpacegameServer.Core.Core.Instance.tradeOffer.Values.ToList(); //SpacegameServer.BC.XMLGroups.ColonySurface response = new XMLGroups.ColonySurface(); //if (core.planets.ContainsKey(planetId)) // response.surfaceTiles = core.planets[planetId].surfaceFields; BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.TradeOffers>(TradeOffers, ref ret, true); return(ret); }
public string getSystemFields(int starId) { string ret = ""; SpacegameServer.BC.XMLGroups.StarSystemMap response = new XMLGroups.StarSystemMap(); if (core.stars.ContainsKey(starId)) { response.SolarSystem = core.stars[starId].planets; } BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.StarSystemMap>(response, ref ret, true); return(ret); }
public string getPlanetSurfacefields(int planetId) { string ret = ""; SpacegameServer.BC.XMLGroups.ColonySurface response = new XMLGroups.ColonySurface(); if (core.planets.ContainsKey(planetId)) { response.surfaceTiles = core.planets[planetId].surfaceFields; } BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.ColonySurface>(response, ref ret, true); return(ret); }
public string getShipData(int?shipId) { //userData userData = new userData(); //userData.ships.ship = new List<Core.Ship>(); BC.XMLGroups.userData userData = new BC.XMLGroups.userData(); userData.ships = new List <Core.Ship>(); Core.Core core = Core.Core.Instance; //check if user exists: if (core.users.ContainsKey(userId)) //if (userId >= 0 && userId < core.users.Length) { if (Core.Core.Instance.users[userId] != null) { Core.User user = core.users[userId]; //check ship parameter if (shipId != null) { if (core.ships.ContainsKey((int)shipId)) //if (shipId >= 0 && shipId < core.ships.Length) { Core.Ship ship = core.ships[(int)shipId]; if (ship.userid == user.id) { //userData.ships.ship.Add(ship); userData.ships.Add(ship); } } } else { //userData.ships.ship = user.ships; userData.ships = user.ships; } } } string x = ""; BusinessConnector.Serialize <BC.XMLGroups.userData>(userData, ref x, true); return(x); }
public static string joinAlliance(Core.User user, int allianceId) { string ret = ""; Core.Alliance.joinCheck(user, allianceId); SpacegameServer.BC.XMLGroups.AllianceFullData allianceInfo = SpacegameServer.BC.XMLGroups.AllianceFullData.createFullData(user); allianceInfo.commNodes = new XMLGroups.CommNodes(); allianceInfo.commNodes.commNode = new List <XMLGroups.CommNode>(); allianceInfo.commNodes.commNode.Add(XMLGroups.CommNode.createAllianceCommNode(user)); BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.AllianceFullData>(allianceInfo, ref ret, true); return(ret); }
public string getReceivedMessages( int userId, int fromNr, // fromNr - toNumber create a span of messages that should be fetched (normally 50).0-50 are the moste current messages, 150-200 would be older ones. int toNr, // int lastMessageId, // The highest ID that the user already got (if he is currently fetching older messages, unreceived newer ones should also be transferred int messageType) // Filter for message type { SpacegameServer.BC.XMLGroups.messageExport messages = new XMLGroups.messageExport(); var allUserMessages = core.messages.Values.Where(e => e.messagetype == messageType && e.messageParticipants.Any(p => p.participant == userId)); var messagesSorted = allUserMessages.OrderByDescending(e => e.id); int messageCounter = 0; var messageList = messagesSorted.ToList(); if (messageList.Count != 0) { foreach (var message in messagesSorted) { messageCounter++; if (messageCounter > toNr) { break; } if (message.id > lastMessageId) { messages.messages.Add(new XMLGroups.messageHeader(message, user)); messages.amount++; } else { if (messageCounter > fromNr) { messages.messages.Add(new XMLGroups.messageHeader(message, user)); messages.amount++; } } } } string ret = ""; BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.messageExport>(messages, ref ret, true); return(ret); }
/* * * * 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 static string MovePathFleet(List <int> fleetIds, List <byte> directions, int userId, int attackedShipId = 0) { SpacegameServer.Core.Core core = SpacegameServer.Core.Core.Instance; BC.XMLGroups.MovePathResult Pathresult = new XMLGroups.MovePathResult(); Pathresult.StepResults = new List <string>(); foreach (var direction in directions) { Pathresult.StepResults.Add(MoveFleet(fleetIds, direction, userId, attackedShipId)); } string ret = ""; //BusinessConnector.Serialize<SpacegameServer.Core.Ship>(ship, ref x); BusinessConnector.Serialize <BC.XMLGroups.MovePathResult>(Pathresult, ref ret); return(ret); }
public static string constructSpaceStation(int shipId, int userId) { SpacegameServer.Core.Core core = SpacegameServer.Core.Core.Instance; //moveShip SpacegameServer.Core.Ship ship = core.ships[shipId]; SpacegameServer.Core.User user = core.users[userId]; int newShipId = 0; var FinishedConstruction = ship.createSpaceStation(user, ref newShipId); //core.colonize(ship, user, newname, ref ret); //do the action //ship.colonize(user, newname, ref ret); //calc the xml result XMLGroups.MoveResultTree scan = new XMLGroups.MoveResultTree(); scan.ships = new List <Core.Ship>(); scan.stars = new List <Core.SystemMap>(); scan.colonies = new List <Core.Colony>(); if (FinishedConstruction) { core.getUserScans(ship.userid, core.ships[newShipId], ref scan.ships, ref scan.stars, ref scan.colonies); //ship.userid = -1; scan.ships.Add(ship); //if the scan range of the new base is 0, it is not included so add it to the result manually if (!scan.ships.Any(e => e.id == newShipId)) { scan.ships.Add(core.ships[newShipId]); } } string ret = ""; BusinessConnector.Serialize <BC.XMLGroups.MoveResultTree>(scan, ref ret); return(ret); }
public static string transcensionAdd(int shipId, int userId) { SpacegameServer.Core.Core core = SpacegameServer.Core.Core.Instance; //break if the elements if ((!core.ships.ContainsKey(shipId)) || (!core.users.ContainsKey(userId))) { return(""); } //moveShip SpacegameServer.Core.Ship ship = core.ships[shipId]; SpacegameServer.Core.User user = core.users[userId]; int stationId; ship.transcensionAdd(user, out stationId); //calc the xml result XMLGroups.MoveResultTree scan = new XMLGroups.MoveResultTree(); scan.ships = new List <Core.Ship>(); scan.stars = new List <Core.SystemMap>(); scan.colonies = new List <Core.Colony>(); ship.userid = -1; scan.ships.Add(ship); if (stationId != 0 && core.ships.ContainsKey(stationId)) { scan.ships.Add(core.ships[stationId]); } string ret = ""; BusinessConnector.Serialize <BC.XMLGroups.MoveResultTree>(scan, ref ret); return(ret); }
public string setQuestComplete(int userId, int questId) { string xml = ""; SpacegameServer.Core.User user = core.users[userId]; if (user.quests.Any(e => e.questId == questId && e.isCompleted)) { return(xml); } Core.UserQuest.completeQuest(user, questId); BC.XMLGroups.Quests Quests = new XMLGroups.Quests(); Quests.Quest = user.quests; Quests.allowedBuildings = new List <XMLGroups.AllowedBuilding>(); BusinessConnector.Serialize <BC.XMLGroups.Quests>(Quests, ref xml, true); //gib alle unfertigen(neuen) Quests raus und die aktuell beendete. ToDo: könnte eingeschränkt werden auf die gerade fertiggestellten.ToDo2: auch die neuen Gebäude rausgeben, und die neue Forschung //und neue gebäude return(xml); }
/// <summary> /// creates a new message or adds a new messagePart to an existing conversation /// </summary> /// <param name="userId"></param> /// <param name="addressee"></param> /// <param name="header"></param> /// <param name="body"></param> /// <param name="id"></param> /// <param name="messageType"></param> /// <param name="messageParticipants"></param> /// <returns>0 if no messagePart was created, else the messagePart-Id</returns> public string sendMessage( int userId, string header, string body, int id, int messageType, List <Core.MessageParticipants> messageParticipants) { Core.MessageBody part = Core.Messages.sendMessage(userId, header, body, id, messageType, messageParticipants); string ret = ""; if (part != null) { XMLGroups.SendMessage messageIds = new XMLGroups.SendMessage(); messageIds.newMessageId = part.headerId; messageIds.newMessagePartId = part.messagePart; BusinessConnector.Serialize <SpacegameServer.BC.XMLGroups.SendMessage>(messageIds, ref ret, true); } return(ret); }
/// <summary> /// if a user creates an account, other user sessions may ask about contact data /// </summary> /// <param name="userId"></param> /// <param name="targetUserId"></param> /// <param name="targetShipId"></param> /// <param name="targetColonyId"></param> /// <param name="userShipId"></param> /// <param name="userColonyId"></param> /// <param name="xml"></param> public void checkuserContact(int userId, int targetUserId, out string xml) { xml = "<result>2</result>"; //fail if (!Core.Core.Instance.users.ContainsKey(userId)) { return; } Core.User user = Core.Core.Instance.users[userId]; if (!Core.Core.Instance.users.ContainsKey(targetUserId)) { return; } Core.User targetUser = Core.Core.Instance.users[targetUserId]; SpacegameServer.BC.XMLGroups.UserContacts knownUsers = SpacegameServer.BC.XMLGroups.UserContacts.createContact(user, targetUser); BusinessConnector.Serialize <BC.XMLGroups.UserContacts>(knownUsers, ref xml, true); }
public static string refit(int userId, string refitXml) { SpacegameServer.Core.Core core = SpacegameServer.Core.Core.Instance; SpacegameServer.Core.User user = core.users[userId]; XmlDocument doc = new XmlDocument(); doc.LoadXml(refitXml); string shipString = doc.DocumentElement.SelectSingleNode("/Ship/ShipId").InnerText; int shipId; if (!Int32.TryParse(shipString, out shipId)) { return(""); } SpacegameServer.Core.Ship ship = core.ships[shipId]; if (!ship.refit(refitXml)) { return(""); } //calc the xml result XMLGroups.MoveResultTree scan = new XMLGroups.MoveResultTree(); scan.ships = new List <Core.Ship>(); scan.stars = new List <Core.SystemMap>(); scan.colonies = new List <Core.Colony>(); scan.ships.Add(ship); string ret = ""; BusinessConnector.Serialize <BC.XMLGroups.MoveResultTree>(scan, ref ret); 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); }
public string getUserData() { /* * // Example of the output after serialization * <languages> * <language> * <id>0</id> * <shortName>en</shortName> * <longName>English</longName> * </language> * <language> * <id>1</id> * <shortName>de</shortName> * <longName>Deutsch</longName> * </language> * <language> * <id>2</id> * <shortName>fr</shortName> * <longName>Francais</longName> * </language> * </languages> * <messageHighestId>3</messageHighestId> * <unreadMessages>0</unreadMessages> * <maxServerEventId>2218</maxServerEventId> * <nextTurn> * <targetTime>2014-12-14T18:55:52.057</targetTime> * </nextTurn> * * * <map> * <staticMap> * <star> * <starId>23</starId> * <xpos>4999</xpos> * <ypos>5014</ypos> * <type>3</type> * <gif>RedSun_1.png</gif> * <name>Capella 457</name> * <size>24</size> * <ressourceId>4</ressourceId> * </star> * </staticMap> * <GalaxyMap> * <id>1</id> * <galaxyName>Starmap</galaxyName> * <objectId>1</objectId> * <size>10000</size> * </GalaxyMap> * </map> * * * <knownUsers> * <knownUser> * <id>6</id> * <username>Demo user 000006</username> * <currentRelation>1</currentRelation> * <targetRelation>1</targetRelation> * <otherUserRelationTowardsPlayer>1</otherUserRelationTowardsPlayer> * <allianceId>0</allianceId> * <popVicPoints>-1</popVicPoints> * <researchVicPoints>-1</researchVicPoints> * <goodsVicPoints>-1</goodsVicPoints> * <shipVicPoints>-1</shipVicPoints> * <overallVicPoints>1095</overallVicPoints> * <overallRank>3</overallRank> * </knownUser> * * * <allianceDiplomacy> * <allianceDetail> * <id>4</id> * <name>Heroes</name> * <allianceOwner>5</allianceOwner> * <overallVicPoints>1708</overallVicPoints> * <overallRank>1</overallRank> * </allianceDetail> * <allianceInvite> * <userId>1</userId> * <allianceId>4</allianceId> * </allianceInvite> * </allianceDiplomacy> * * * * <commNodes> * <commNode> * <id>286</id> * <owner>0</owner> * <name>Space Station</name> * <unformattedName>NoName</unformattedName> * <positionX>4960</positionX> * <positionY>4960</positionY> * <systemX>0</systemX> * <systemY>0</systemY> * <connectionType>0</connectionType> * <connectionId>1292</connectionId> * <activ>1</activ> * <visited>0</visited> * <readAccess>0</readAccess> * <writeAccess>0</writeAccess> * <adminRights>0</adminRights> * <informWhenNew>0</informWhenNew> * <lastReadMessage>0</lastReadMessage> * <messageCount>0</messageCount> * <messageUnReadCount>0</messageUnReadCount> * </commNode> * <commNode> * <id>287</id> * <owner>0</owner> * <name>Space Station</name> * <unformattedName>NoName</unformattedName> * <positionX>5000</positionX> * <positionY>4960</positionY> * <systemX>0</systemX> * <systemY>0</systemY> * <connectionType>0</connectionType> * <connectionId>1293</connectionId> * <activ>1</activ> * <visited>0</visited> * <readAccess>0</readAccess> * <writeAccess>0</writeAccess> * <adminRights>0</adminRights> * <informWhenNew>0</informWhenNew> * <lastReadMessage>0</lastReadMessage> * <messageCount>0</messageCount> * <messageUnReadCount>0</messageUnReadCount> * </commNode> * * * * <allowedBuildings> * <allowedBuilding> * <allowedBuildingId>3</allowedBuildingId> * </allowedBuilding> * * * <PlayerResearches> * <PlayerResearch> * <id>1</id> * <researchable>0</researchable> * <isCompleted>1</isCompleted> * <investedResearchpoints>3</investedResearchpoints> * <researchPriority>0</researchPriority> * </PlayerResearch> * * * <ShipTemplates> * <ShipTemplate> * * * * <Quests> * <Quest> * * <TradeOffers /> * * <allowedModules> * <allowedModule> * * <Colonies> * <Colony> * * * <Labels> * <languageId>0</languageId> * <Label> * <id>1</id> * <label>Orange dwarf star</label> * </Label> * * * * <Colonies> * <Colony> * * * * * * SpacegameServer.Core.User user = (SpacegameServer.Core.User)Core.Core.Instance.users[userId]; * if (user == null) return ""; * * string temp = ""; * BusinessConnector.Serialize<Core.User>(user, ref temp, true); */ BC.XMLGroups.userData userData = new BC.XMLGroups.userData(); if (!Core.Core.Instance.users.ContainsKey(this.userId)) { return("<user></user>"); } Core.User user = Core.Core.Instance.users[this.userId]; userData.user = user; userData.knownUsers = XMLGroups.UserContacts.createAllContacts(user); //userData.languageShortName = user.languageShortName; userData.languages = Core.Core.Instance.languages.Where(e => e != null).ToList(); userData.messageHighestId = 0; userData.unreadMessages = 0; if (Core.Core.Instance.messages.Values.Any(e => e.messageParticipants.Any(f => f.participant == this.userId))) { /* * userData.messageHighestId = Core.Core.Instance.messages.Values.Where(e => e.messageParticipants.Any(f => f.participant == this.userId)) * .OrderByDescending(e => e.id).First().id; */ userData.messageHighestId = Core.Core.Instance.messages.Values.OrderByDescending(e => e.id).First().id; userData.unreadMessages = Core.Core.Instance.messages.Values.Any(e => e.messageParticipants.Any(f => f.participant == this.userId && !f.read)) ? 1 : 0; } userData.maxServerEventId = (int)Core.Core.Instance.identities.galacticEvents.id; userData.allowedBuildings = XMLGroups.AllowedBuilding.createAllowedBuildings(user); userData.PlayerResearches = user.getPlayerResearch(); userData.ShipHulls = XMLGroups.AllowedShipHulls.createAllowedShipHulls(user); userData.ShipTemplates = Core.Core.Instance.shipTemplate.Values.Where(e => e.userId == user.id).ToList(); userData.Quests = user.quests; userData.allowedModules = XMLGroups.AllowedModule.createAllowedModules(user); userData.TradeOffers = new List <Core.TradeOffer>(); /* * * * * userData.TradeOffers; */ userData.allianceDiplomacy = XMLGroups.KnownAlliances.createAllianceContacts(user); userData.allianceRelations = XMLGroups.AllianceUserRelations.createAllianceUserRelations(user); userData.allianceInvites = XMLGroups.AllianceInvites.createAllianceInvites(user); userData.ships = new List <Core.Ship>(); var allColonies = new List <Core.Colony>(); userData.commNodes = new XMLGroups.CommNodes(); userData.commNodes.commNode = XMLGroups.CommNodes.createKnownAndNearNodesList(user); userData.staticMap = new XMLGroups.StaticMap(); userData.staticMap.stars = new List <Core.SystemMap>(); userData.staticMap.GalaxyMap = core.GalaxyMap; core.getUserScans(userId, null, ref userData.ships, ref userData.staticMap.stars, ref allColonies); userData.Colonies = Core.Colony.userScanCopy(allColonies, user.id); List <Core.Ship> transcensions = (from ship in core.ships where ship.Value.shipTranscension != null select ship.Value).ToList(); userData.ships.AddRange(transcensions.Except(userData.ships)); //int startingHours = 4 - (DateTime.Now.Hour % 4 ); //DateTime nextTurn = DateTime.Now.AddHours(startingHours); DateTime nextTurn = SpacegameServer.Core.Core.nextTurnDateTime(DateTime.Now); userData.targetTime = nextTurn.ToString("yyyy-MM-ddTHH:mm:00"); userData.unreadCombatMessages = core.combats.Any(e => e.Value.DefenderUserId == user.id && !e.Value.DefenderHasRead); userData.Labels = XMLGroups.Labels.GetLabels(user.language); string x = ""; BusinessConnector.Serialize <BC.XMLGroups.userData>(userData, ref x, true); return(x); }
public string moveShip() { //moveShip SpacegameServer.Core.Ship ship = core.ships[shipId]; if (ship == null) { return(""); } byte result = 0; //Todo: move kann auch occupyColony zurücksenden string combatLog = ""; //SpacegameServer.Core.Classes.ShipMovement move = new SpacegameServer.Core.Classes.ShipMovement(); Core.Combat Combat = null; ship.move(direction, userId, duration, ref result, ref combatLog, ref Combat, attackedShipId); if (Combat != null) { SpacegameServer.BC.XMLGroups.CombatMessages messages = new SpacegameServer.BC.XMLGroups.CombatMessages(); messages.messages.Add(Combat); combatLog = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(messages); } //move.move(ship, direction, userId, duration, ref result, ref combatLog); /* * scanResult scan = new scanResult(); * scan.ships.ship = new List<Core.Ship>(); * scan.stars.star = new List<Core.StarMap>(); * scan.colonies.colony = new List<Core.Colony>(); * * * core.getUserScans(ship.userid, ship, ref scan.ships.ship, ref scan.stars.star, ref scan.colonies.colony); * scan.result = result; * scan.combatLog = combatLog; */ BC.XMLGroups.MoveResultTree scan = new BC.XMLGroups.MoveResultTree(); scan.ships = new List <Core.Ship>(); scan.stars = new List <Core.SystemMap>(); scan.colonies = new List <Core.Colony>(); core.getUserScans(ship.userid, ship, ref scan.ships, ref scan.stars, ref scan.colonies); //user tried to move into an area that was neutral to him //fetch the system/colony that creatd the neutral area if (result == 31) { scan.ships = new List <Core.Ship>(); scan.stars = new List <Core.SystemMap>(); scan.colonies = new List <Core.Colony>(); core.getAreaCreator(direction, ship.userid, ship, ref scan.ships, ref scan.stars, ref scan.colonies); } scan.result = result; scan.combatLog = combatLog; string ret = ""; //BusinessConnector.Serialize<SpacegameServer.Core.Ship>(ship, ref x); BusinessConnector.Serialize <BC.XMLGroups.MoveResultTree>(scan, ref ret); //fetch new data //ship //scanrange of ship //star //non user colonies + colonyStock //@combatLog //@output1 as result, //if statement breaks, just return info xml of ship return(ret); }
public static string MoveFleet(List <int> fleetIds, byte direction, int userId, int duration = 1, int attackedShipId = 0) { SpacegameServer.Core.Core core = SpacegameServer.Core.Core.Instance; List <Core.Ship> fleet = new List <Core.Ship>(); foreach (var shipId in fleetIds) { if (!core.ships.ContainsKey(shipId)) { return(""); } fleet.Add(core.ships[shipId]); } if (fleet.Count == 0) { return(""); } byte result = 0; //Todo: move kann auch occupyColony zurücksenden string combatLog = ""; //SpacegameServer.Core.Classes.ShipMovement move = new SpacegameServer.Core.Classes.ShipMovement(); Core.Combat Combat = null; SpacegameServer.Core.Ship.MoveFleet(fleet, direction, userId, duration, ref result, ref combatLog, ref Combat, attackedShipId); if (Combat != null) { SpacegameServer.BC.XMLGroups.CombatMessages messages = new SpacegameServer.BC.XMLGroups.CombatMessages(); messages.messages.Add(Combat); combatLog = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(messages); } //move.move(ship, direction, userId, duration, ref result, ref combatLog); /* * scanResult scan = new scanResult(); * scan.ships.ship = new List<Core.Ship>(); * scan.stars.star = new List<Core.StarMap>(); * scan.colonies.colony = new List<Core.Colony>(); * * * core.getUserScans(ship.userid, ship, ref scan.ships.ship, ref scan.stars.star, ref scan.colonies.colony); * scan.result = result; * scan.combatLog = combatLog; */ BC.XMLGroups.MoveResultTree scan = new BC.XMLGroups.MoveResultTree(); scan.ships = new List <Core.Ship>(); scan.stars = new List <Core.SystemMap>(); scan.colonies = new List <Core.Colony>(); var MaxScanrange = fleet.Select(s => s.scanRange).Max(); var BestScanner = fleet.First(e => e.scanRange == MaxScanrange); core.getUserScans(userId, BestScanner, ref scan.ships, ref scan.stars, ref scan.colonies); //user tried to move into an area that was neutral to him //fetch the system/colony that creatd the neutral area if (result == 31) { scan.ships = new List <Core.Ship>(); scan.stars = new List <Core.SystemMap>(); scan.colonies = new List <Core.Colony>(); core.getAreaCreator(direction, userId, BestScanner, ref scan.ships, ref scan.stars, ref scan.colonies); } scan.result = result; scan.combatLog = combatLog; string ret = ""; //BusinessConnector.Serialize<SpacegameServer.Core.Ship>(ship, ref x); BusinessConnector.Serialize <BC.XMLGroups.MoveResultTree>(scan, ref ret); //BusinessConnector.Serialize2<BC.XMLGroups.MoveResultTree>(scan, ref ret); //fetch new data //ship //scanrange of ship //star //non user colonies + colonyStock //@combatLog //@output1 as result, //if statement breaks, just return info xml of ship return(ret); }