Example #1
0
        static void updateCommand()
        {
            while (true)
            {
                string command = Console.ReadLine();
                if (command != null)
                {
                    if (command == "breakpoint")
                    {
                        breakPoint = true;
                        SystemMessage.Receive(null, null);
                    }
                    if (command == "user")
                    {
                        string toPrint = ". ... --- {==== USERS ====} --- ... .\n";
                        foreach (var user in SystemMessage.users.Values)
                        {
                            toPrint += $"--- \t{user.login} ---\n";
                            toPrint += $"nick:\t{user.nickname}\n";
                            toPrint += $"guid:\t{user.guid}\n";
                            toPrint += $"email:\t{user.email}\n";
                            toPrint += $"pass:\t{user.password}\n";
                            toPrint += $"conID:\t{user.currConnectionId}\n";
                        }
                        Console.WriteLine(toPrint);
                    }
                    if (command == "connection")
                    {
                        string toPrint = ". ... --- {==== CONNECTION ====} --- ... .\n";
                        foreach (var user in Server.Connections)
                        {
                            toPrint += $"--- \t{user.RemoteEndPoint.ToString()} ---\n";
                        }
                        Console.WriteLine(toPrint);
                    }
                    if (command.StartsWith("createroom"))
                    {
                        int numberOfRoom = 1;
                        if (int.TryParse(command.Replace("createroom", "").Replace(" ", ""), out numberOfRoom))
                        {
                            ;
                        }

                        for (int i = 0; i < numberOfRoom; i++)
                        {
                            var room = GameRoom.Create(new GameRoomOption()
                            {
                                description = "hello",
                            });

                            room.guid = Guid.NewGuid().ToString();

                            room.creatorName = "kek";

                            room.ipAdress = Dns.GetHostAddresses("127.0.0.1").First().ToString();
                            room.port     = RoomManager.AvailablePort();

                            SystemMessage.rooms.Add(room);
                            RoomManager.AddRoom(room, room.port);
                        }
                    }
                }
            }
        }
Example #2
0
        static void Main(string[] args)
        {
            var config = new NetPeerConfiguration(ApplicationID)
            {
                ReceiveBufferSize = 1310710,
                SendBufferSize    = 1310710,
                Port = 7641
            };

            config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
            config.EnableMessageType(NetIncomingMessageType.WarningMessage);

            Server = new NetServer(config);
            Server.Start();
            Console.WriteLine(Server.Port);

            var thread = new Thread(updateCommand);

            thread.Start();

            currentIP = SystemMessage.GetIP();
            SetConsoleCtrlHandler(new HandlerRoutine(OnProcessExit), true);

            VerifyUsers();

            /*SystemMessage.users["MyAccount"] = new GameUser()
             * {
             *  login = "******",
             *  nickname = "MyAccount",
             *  password = "******",
             *  currentPlayerIndex = 0,
             *  guid = Guid.NewGuid().ToString(),
             *  ownedPlayers = new Dictionary<int, GamePlayer>
             *  {
             *      { 0, new GamePlayer()
             *          {
             *              MightyName = "TheMightyOne",
             *              Inventory = new ItemData[]
             *              {
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *              },
             *              armyEntitiesInfo = new Dictionary<string, PataponPhotonShared.Entity.EntityData>()
             *              {
             *                  { "id01", new PataponPhotonShared.Entity.EntityData() },
             *                  { "id02", new PataponPhotonShared.Entity.EntityData() },
             *                  { "id03", new PataponPhotonShared.Entity.EntityData() },
             *                  { "id04", new PataponPhotonShared.Entity.EntityData() },
             *                  { "id05", new PataponPhotonShared.Entity.EntityData() },
             *                  { "id06", new PataponPhotonShared.Entity.EntityData() },
             *              },
             *              armyScheme = new PataponPhotonShared.Schemes.ArmyScheme("helloworld")
             *          }
             *      }
             *  },
             *  SavesData = new Dictionary<int, SaveData>()
             *  {
             *      { 0, new SaveData(0, "TheMightyOne", "Recover the catapult", new DateTime(2016, 12, 4), "MyAccount") },
             *  }
             * };
             *
             * SystemMessage.users["TheLegend27"] = new GameUser()
             * {
             *  login = "******",
             *  nickname = "John Cena",
             *  password = "******",
             *  currentPlayerIndex = 0,
             *  guid = Guid.NewGuid().ToString(),
             *  ownedPlayers = new Dictionary<int, GamePlayer>
             *  {
             *      { 0, new GamePlayer()
             *          {
             *              MightyName = "John Cena The Mighty",
             *              Inventory = new ItemData[]
             *              {
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *              },
             *              armyEntitiesInfo = new Dictionary<string, PataponPhotonShared.Entity.EntityData>()
             *              {
             *                  { "id01", new PataponPhotonShared.Entity.EntityData() },
             *                  { "id02", new PataponPhotonShared.Entity.EntityData() },
             *                  { "id03", new PataponPhotonShared.Entity.EntityData() },
             *                  { "id04", new PataponPhotonShared.Entity.EntityData() },
             *                  { "id05", new PataponPhotonShared.Entity.EntityData() },
             *                  { "id06", new PataponPhotonShared.Entity.EntityData() },
             *              },
             *              armyScheme = new PataponPhotonShared.Schemes.ArmyScheme("helloworld")
             *          }
             *      },
             *      { 1, new GamePlayer()
             *          {
             *              MightyName = "Game Of War",
             *              Inventory = new ItemData[]
             *              {
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *                  new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),new ItemData(),
             *              },
             *              armyEntitiesInfo = new Dictionary<string, PataponPhotonShared.Entity.EntityData>()
             *              {
             *                  { "id01", new PataponPhotonShared.Entity.EntityData() },
             *                  { "id02", new PataponPhotonShared.Entity.EntityData() },
             *                  { "id03", new PataponPhotonShared.Entity.EntityData() },
             *                  { "id04", new PataponPhotonShared.Entity.EntityData() },
             *                  { "id05", new PataponPhotonShared.Entity.EntityData() },
             *                  { "id06", new PataponPhotonShared.Entity.EntityData() },
             *              },
             *              armyScheme = new PataponPhotonShared.Schemes.ArmyScheme("helloworld")
             *          }
             *      }
             *  },
             *  SavesData = new Dictionary<int, SaveData>()
             *  {
             *      { 0, new SaveData(0, "John Cena The Mighty", "Meden captured!", new DateTime(2016, 12, 4), "TheLegend27") },
             *      { 1, new SaveData(1, "Game Of War", "TheLegend27 kicked my ass out of the heaven.", new DateTime(2016, 12, 4), "TheLegend27") },
             *  }
             * };
             *
             * OnProcessExit(CtrlTypes.CTRL_CLOSE_EVENT);
             */
            while (true)
            {
                NetIncomingMessage message;
                if ((message = Server.ReadMessage()) != null)
                {
                    Console.WriteLine("message r!");
                    switch (message.MessageType)
                    {
                    case NetIncomingMessageType.WarningMessage:
                    {
                        Console.WriteLine("WA !!! : " + message.ReadString());
                        break;
                    }

                    case NetIncomingMessageType.ConnectionApproval:
                    {
                        string connectionType = message.ReadString();

                        if (connectionType == "CONNECT")
                        {
                            string requestType = "CLIENT";
                            message.ReadString(out requestType);
                            Console.WriteLine(requestType);
                            if (requestType == "CLIENT")
                            {
                                message.SenderConnection.Tag = new object[] { requestType };
                                message.SenderConnection.Approve();
                            }
                            else if (requestType == "GAMEROOM")
                            {
                                GameRoom room = null;
                                var      ip   = message.SenderConnection.RemoteEndPoint.Address.ToString();

                                /*if (message.SenderConnection.RemoteEndPoint.ToString()
                                 *  .StartsWith("127.0.0.1"))
                                 * {
                                 *  ip = "127.0.0.1";
                                 * }*/

                                room = SystemMessage.rooms
                                       .Where(r => message.SenderConnection.RemoteEndPoint.ToString() == $"{ip}:{r.port}")
                                       .FirstOrDefault();
                                message.SenderConnection.Tag = new object[] { requestType, room };

                                message.SenderConnection.Approve();
                            }
                            else
                            {
                                message.SenderConnection.Deny("Incorrect Request Type");
                            }
                        }
                        else
                        {
                            message.SenderConnection.Deny("Incorrect Header");
                        }
                        break;
                    }

                    case NetIncomingMessageType.Data:
                    {
                        // handle custom messages
                        var header = "";
                        //message.ReadByte();
                        //message.ReadInt64();
                        if (message.ReadString(out header) && header == "HEADER")
                        {
                            string headerType = message.ReadString();
                            switch (headerType)
                            {
                            case Constants.MESSAGETYPE.SYSTEM:
                            {
                                var systemType = message.ReadString();
                                SystemMessage.Receive(message, systemType);
                                break;
                            }

                            case Constants.MESSAGETYPE.OUTGAME:
                            {
                                var systemType = message.ReadString();
                                OutGameMessage.Receive(message, systemType);
                                break;
                            }
                            }
                        }
                        break;
                    }



                    case NetIncomingMessageType.StatusChanged:
                        // handle connection status messages
                        Console.WriteLine(message.SenderConnection.Status);
                        switch (message.SenderConnection.Status)
                        {
                        case NetConnectionStatus.Connected:
                        {
                            if (message.SenderConnection.Tag is object[] &&
                                ((object[])message.SenderConnection.Tag)[0] is string)
                            {
                                if ((string)((object[])message.SenderConnection.Tag)[0] == "GAMEROOM")
                                {
                                    object[] fullTag = (object[])message.SenderConnection.Tag;

                                    var room = (GameRoom)fullTag[1];
                                    room.hasLoaded = true;

                                    var sendMsg = Server.CreateMessage("HEADER");
                                    sendMsg.Write(Constants.MESSAGETYPE.OUTGAME);
                                    sendMsg.Write(Constants.OUTGAME.EVENT_ON_RECEIVEROOMINFO);

                                    sendMsg.Write(room.guid);
                                    var objSerialized = room.originalOption.Serialize();
                                    sendMsg.Write(objSerialized.Count());
                                    sendMsg.Write(objSerialized);
                                    sendMsg.Write(room.creatorName);
                                    sendMsg.Write((int)room.gameType);

                                    Server.SendMessage(sendMsg, message.SenderConnection, NetDeliveryMethod.ReliableOrdered);
                                }
                            }
                            break;
                        }

                        case NetConnectionStatus.Disconnected:
                        {
                            if (message.SenderConnection.Tag is object[] &&
                                ((object[])message.SenderConnection.Tag)[0] is string)
                            {
                                if ((string)((object[])message.SenderConnection.Tag)[0] == "GAMEROOM")
                                {
                                    var gameRoom = (GameRoom)((object[])message.SenderConnection.Tag)[1];
                                    if (gameRoom != null)
                                    {
                                        if (SystemMessage.rooms.Contains(gameRoom))
                                        {
                                            SystemMessage.rooms.Remove(gameRoom);
                                        }
                                    }
                                }
                            }

                            break;
                        }
                        }
                        break;

                    case NetIncomingMessageType.DebugMessage:
                        // handle debug messages
                        // (only received when compiled in DEBUG mode)
                        Console.WriteLine(message.ReadString());
                        break;

                    /* .. */
                    default:
                        Console.WriteLine("unhandled message with type: "
                                          + message.MessageType);
                        break;
                    }
                }
            }
        }