Beispiel #1
0
        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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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.&lt;br /&gt;We are a small group of traders living near the Algol 550 space station, which is at the coordinates 5000|5000.&lt;br /&gt;Our products will soon be available at that station. I can especially recommend our high quality Yttrium metal. &lt;br /&gt;In addition, we are offering trade treaties to all peaceful dwellers of this galaxy. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Yours sincerely,&lt;br /&gt;&lt;br /&gt;Skratti,&lt;br /&gt;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!&lt;br /&gt;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.&lt;br /&gt;Also, a security zone of one field around the sector will be established.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Expect the diplomatic status to be changed to hostile in near future so al potentialy inevitable actions can be taken, if necessary.&lt;br /&gt;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);
        }
Beispiel #11
0
        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);
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        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);
        }
Beispiel #14
0
        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);
        }
Beispiel #15
0
        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);
        }
Beispiel #16
0
        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);
        }
Beispiel #17
0
        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);
        }
Beispiel #18
0
        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);
        }
Beispiel #19
0
        /*
         *
         *
         * 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);
        }
Beispiel #20
0
        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);
        }
Beispiel #21
0
        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);
        }
Beispiel #22
0
        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);
        }
Beispiel #23
0
        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);
        }
Beispiel #24
0
        /// <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);
        }
Beispiel #25
0
        /// <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);
        }
Beispiel #26
0
        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);
        }
Beispiel #27
0
        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);
        }
Beispiel #28
0
        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);
        }
Beispiel #29
0
        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);
        }
Beispiel #30
0
        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);
        }