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 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); }