Example #1
0
    /// <summary>
    /// Methods occurs when player's health reaches/is zero.
    /// </summary>
    void OnPlayerHealthZero()
    {
        DevLog.Log("Health", "The player health is zero... Changing color... syncing");

        // Change the color of the player to reflect their "dead" state
        GetComponentInChildren <MeshRenderer>().material.color = Color.red;

        // By setting the "isAlive" bool to false, we trigger
        // the SyncVar hook in the CharacterState
        thePlayer.status = CharacterStatus.RESCUE;
    }
Example #2
0
 private void OnProcessTimedEvent(object sender, EventArgs e)
 {
     try
     {
         ProcessProcket();
         ProcessLog();
     }
     catch (Exception ex)
     {
         DevLog.Write(string.Format("[OnProcessTimedEvent] Exception:{0}", ex.ToString()), LOG_LEVEL.ERROR);
     }
 }
Example #3
0
        public void ResponseRegistServer(SFNETPacket packetData)
        {
            try
            {
                var request = JsonEnDecode.Decode <JsonPacketResponseReqistServer>(packetData.GetData());


                DevLog.Write(string.Format("result:{0}, ServerName:{1}, SessionID: {2}", request.Result.ToString(), request.ServerName, packetData.SessionID()), LOG_LEVEL.INFO);
            }
            catch
            {
            }
        }
Example #4
0
        public void Process(SFNETPacket packet)
        {
            var packetID = packet.PacketID();

            if (PacketHandlerMap.ContainsKey(packetID))
            {
                PacketHandlerMap[packetID](packet);
            }
            else
            {
                DevLog.Write(string.Format("[PacketProcess] Invalid PacketID:{0}", packetID), LOG_LEVEL.ERROR);
            }
        }
Example #5
0
        /// <summary>
        /// 로비ID를 기준으로 패킷을 각각의 패킷처리 객체에 할당한다. 멀티스레드로 패킷을 처리하도록 해준다.
        /// </summary>
        void DistributeProcket()
        {
            while (IsPacketDistributeThreadRunning)
            {
                try
                {
                    var packet = ServerNet.GetPacket();
                    if (packet == null)
                    {
                        System.Threading.Thread.Sleep(1);
                        continue;
                    }

                    var sessionID          = packet.SessionID();
                    var packetProcessIndex = 0;

                    if (packet.GetPacketType() == CgsfNET64Lib.SFPACKET_TYPE.DATA)
                    {
                        var user = MainPacketProcess.GetConnectUser(sessionID);
                        if (user != null)
                        {
                            packetProcessIndex = GetPacketProcessIndex(user.LobbyID);
                        }
                    }
                    else
                    {
                        if (packet.GetPacketType() == CgsfNET64Lib.SFPACKET_TYPE.CONNECT)
                        {
                            packet.SetData(sessionID, (ushort)PACKET_ID.SYSTEM_CLIENT_CONNECT, null);
                        }
                        else if (packet.GetPacketType() == CgsfNET64Lib.SFPACKET_TYPE.DISCONNECT)
                        {
                            packet.SetData(sessionID, (ushort)PACKET_ID.SYSTEM_CLIENT_DISCONNECTD, null);
                        }
                    }

                    if (packetProcessIndex == 0)
                    {
                        MainPacketProcess.ProcessPacket(packet);
                    }
                    else
                    {
                        WorkPacketProcessList[packetProcessIndex - 1].InsertPacket(packet);
                    }
                }
                catch (Exception ex)
                {
                    DevLog.Write(ex.ToString(), LOG_LEVEL.ERROR);
                }
            }
        }
Example #6
0
        private void btn_apply_Click(object sender, EventArgs e)
        {
            do
            {
                int fixedVal = 0;
                EditPropertyType editType = (EditPropertyType)Enum.Parse(typeof(EditPropertyType), cmxBufferType.Text, true);

                try
                {
                    fixedVal = Int32.Parse(txtFixed.Text);
                }
                catch (Exception ex)
                {
                    DevLog.d(TAG, ex.ToString());
                    MessageBox.Show("Value format is incorrect!", "Parse error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                String       columnEdited = null;
                DataGridView gridView     = null;
                switch (editType)
                {
                // For sensor
                case EditPropertyType.SensorMaxSendingRate:
                    columnEdited = "SendingRate";
                    gridView     = mGridSensor;
                    break;

                case EditPropertyType.SensorMaxProcessingRate:
                    columnEdited = "ProcessingRate";
                    gridView     = mGridSensor;
                    break;

                // For channel
                case EditPropertyType.ChannelMaxSendingRate:
                    columnEdited = "SendingRate";
                    gridView     = mGridChannel;
                    break;

                default:
                    break;
                }

                if (columnEdited == null || gridView == null)
                {
                    break;
                }

                changeValue(fixedVal, columnEdited, gridView);
            } while (false);
        }
Example #7
0
 /// <summary>
 /// The function used to convert from PN to KWSN
 /// </summary>
 /// <param name="topology">input PN file</param>
 ///
 public KWSNGenerationHelper(string name, EditorTabItem tabItem) : base(name, tabItem)
 {
     mPNDoc = new XmlDocument();
     try
     {
         mPNDoc.Load(tabItem.FileName);
         mLoaded = true;
     }
     catch
     {
         DevLog.e(TAG, String.Format("Error when load PN file ({0})", name));
         MessageBox.Show("Error when reading PN file!");
     }
 }
        private void ProcessProcket()
        {
            var packet = ServerNet.GetPacket();

            if (packet == null)
            {
                return;
            }

            switch (packet.GetPacketType())
            {
            case CgsfNET64Lib.SFPACKET_TYPE.CONNECT:
                if (packet.IsServerConnect())
                {
                    var response = new JsonPacketRequestReqistServer()
                    {
                        ServerName = "GateWayServer"
                    };
                    ServerNet.Send <JsonPacketRequestReqistServer>(packet.SessionID(), PACKET_ID.REQUEST_REGIST_SERVER, response);

                    DevLog.Write(string.Format("[OnConnect Server] SessionID:{0}, ConnectID:{1}", packet.SessionID(), packet.ServerIdentifier()), LOG_LEVEL.INFO);
                }
                else
                {
                    SessionList.Add(packet.SessionID());
                    ConnectCountToGUI(SessionList.Count());
                    DevLog.Write(string.Format("[OnConnect Client] SessionID:{0}", packet.SessionID()), LOG_LEVEL.INFO);
                }
                break;

            case CgsfNET64Lib.SFPACKET_TYPE.DISCONNECT:
                if (packet.IsServerConnect())
                {
                    DevLog.Write(string.Format("[OnDisConnect Server] SessionID:{0}", packet.SessionID()), LOG_LEVEL.INFO);
                }
                else
                {
                    SessionList.Remove(packet.SessionID());
                    HandelrMgr.ClientDisConnect(packet.SessionID());
                    ConnectCountToGUI(SessionList.Count());
                    DevLog.Write(string.Format("[OnDisConnect Client] SessionID:{0}", packet.SessionID()), LOG_LEVEL.INFO);
                }
                break;

            case CgsfNET64Lib.SFPACKET_TYPE.DATA:
                HandelrMgr.Process(packet);
                break;
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            workProcessTimer.Tick    += new EventHandler(OnProcessTimedEvent);
            workProcessTimer.Interval = new TimeSpan(0, 0, 0, 0, 1);
            workProcessTimer.Start();


            var netConfig = new ChatServerLib.ServerNetworkConfig()
            {
                IP             = "127.0.0.1",
                Port           = textBoxPort.Text.ToUInt16(),
                EngineDllName  = "CGSFNet.dll",
                MaxAcceptCount = textBoxMaxUserCount.Text.ToInt32(),
                ThreadCount    = textBoxPacketThreadCount.Text.ToInt32(),
                MaxBufferSize  = textBoxMaxBufferSize.Text.ToInt32(),
                MaxPacketSize  = textBoxMaxPacketSize.Text.ToInt32(),
            };

            var appConfig = new ChatServerLib.ServerAppConfig()
            {
                MaxTotalUserCount  = textBoxMaxUserCount.Text.ToInt32(),
                MaxLobbyCount      = textBoxLobbyCount.Text.ToInt32(),
                MaxLobbyUserCount  = textBoxMaxUserPerLobby.Text.ToInt32(),
                ProcessThreadCount = textBoxPacketThreadCount.Text.ToInt32(),
                DBThreadCount      = textBoxDBThreadCount.Text.ToInt32(),
            };


            var result = ServerLib.InitAndStartNetwork(netConfig, appConfig);

            if (result.Item1 == false)
            {
                DevLog.Write(string.Format("[Init] 네트워크 라이브러리 초기화 및 시작 실패. {0}", result.Item2.ToString()), LOG_LEVEL.ERROR);
                return;
            }

            DevLog.Write(string.Format("[Start] 네트워크 시작"), LOG_LEVEL.INFO);


            var errorCode = ServerLib.CreateSystem(appConfig);

            if (errorCode != CSCommonLib.ERROR_CODE.NONE)
            {
                DevLog.Write(string.Format("[Init] CreateSystem 실패. {0}", errorCode), LOG_LEVEL.ERROR);
                return;
            }

            DevLog.Write(string.Format("[Start] CreateSystem 완료"), LOG_LEVEL.INFO);
        }
Example #10
0
        public void SystemClientConnect(SFNETPacket packet)
        {
            var result = UserManagerRef.AddUser(packet.SessionID());

            InnerMessageQueue.CurrentUserCount(UserManagerRef.GetConnectCount());

            if (result == CSCommonLib.ERROR_CODE.NONE)
            {
                DevLog.Write(string.Format("Client Connect. SessionID: {0}", packet.SessionID()), LOG_LEVEL.INFO);
            }
            else
            {
                DevLog.Write(string.Format("Client Connect. SessionID: {0}, Error:{1}", packet.SessionID(), result.ToString()), LOG_LEVEL.ERROR);
            }
        }
Example #11
0
        public static async Task <List <DBBasic> > GetUserAsyncVer2(int level)
        {
            try
            {
                var collection = Common.GetDBCollection <DBBasic>("Basic");
                var documents  = await collection.Find(x => x.Level >= level).ToListAsync();

                return(documents);
            }
            catch (Exception ex)
            {
                DevLog.Write(ex.Message, LOG_LEVEL.ERROR);
                return(new List <DBBasic>());
            }
        }
Example #12
0
        public static async Task <List <GameUser1> > GetGameUser1(string name)
        {
            try
            {
                var collection = Common.GetDBCollection <GameUser1>("GameUser1");
                var documents  = await collection.Find(x => x.Name == name).ToListAsync();

                return(documents);
            }
            catch (Exception ex)
            {
                DevLog.Write(ex.Message, LOG_LEVEL.ERROR);
                return(new List <GameUser1>());
            }
        }
Example #13
0
        public static async Task <bool> DeleteGameUser2(string name)
        {
            try
            {
                var collection = Common.GetDBCollection <GameUser2>("GameUser2");
                var result     = await collection.DeleteOneAsync(x => x._id == name);

                return(result.DeletedCount > 0 ? true : false);
            }
            catch (Exception ex)
            {
                DevLog.Write(ex.Message, LOG_LEVEL.ERROR);
                return(false);
            }
        }
Example #14
0
    public void TakeDamage(float amount)
    {
        if (!isServer)
        {
            return;
        }

        currentHealth -= amount;
        if (currentHealth <= 0.0f)
        {
            currentHealth = 0.0f;
            RpcOnPlayerDead();
            DevLog.Log("Health", "Player id <" + GetComponent <NetworkIdentity>().netId + "> is dead...");
        }
    }
Example #15
0
        private void button1_Click(object sender, EventArgs e)
        {
            IsStartServerNetwork = true;

            var result = ServerNet.Start(Config.ProtocolID);

            if (result)
            {
                DevLog.Write(string.Format("[Start] 네트워크 시작"), LOG_LEVEL.INFO);
            }
            else
            {
                DevLog.Write(string.Format("[Start] 네트워크 시작 실패"), LOG_LEVEL.ERROR);
            }
        }
Example #16
0
 static IMongoClient GetDBClient(string connectString)
 {
     try
     {
         //connectString
         //mongodb://testID:[email protected]:27017/?maxPoolSize=200&safe=true
         //mongodb://192.168.0.1:27017
         MongoClient cli = new MongoClient(connectString);
         return(cli);
     }
     catch (Exception ex)
     {
         DevLog.Write(ex.Message);
         return(null);
     }
 }
Example #17
0
        public static async Task <List <BsonDocument> > GetGameUser2(string name)
        {
            try
            {
                var collection = Common.GetDBCollection <BsonDocument>("GameUser2");
                var filter     = new BsonDocument("_id", name);
                var documents  = await collection.Find(filter).ToListAsync();

                return(documents);
            }
            catch (Exception ex)
            {
                DevLog.Write(ex.Message, LOG_LEVEL.ERROR);
                return(new List <BsonDocument>());
            }
        }
        private void MainForm_Load(object sender, EventArgs e)
        {
            workProcessTimer.Tick    += new EventHandler(OnProcessTimedEvent);
            workProcessTimer.Interval = new TimeSpan(0, 0, 0, 0, 1);
            workProcessTimer.Start();

            Config = new CgsfNET64Lib.NetworkConfig()
            {
                IP             = Properties.Settings.Default.IP,
                Port           = Properties.Settings.Default.Port,
                EngineDllName  = Properties.Settings.Default.EngineDllName,
                MaxAcceptCount = Properties.Settings.Default.MaxAcceptCount,
                ThreadCount    = Properties.Settings.Default.ThreadCount,
                ProtocolOption = 0,
                ProtocolID     = 0,
                MaxBufferSize  = Properties.Settings.Default.MaxBufferSize,
                MaxPacketSize  = Properties.Settings.Default.MaxPacketSize,
            };


            var result = ServerNet.Init(Config, null, null);

            if (result != CgsfNET64Lib.NET_ERROR_CODE_N.SUCCESS)
            {
                DevLog.Write(string.Format("[Init] 네트워크 라이브러리 초기화 실패. {0}, {1}", result.ToString(), result), LOG_LEVEL.ERROR);
                return;
            }

            IsStartServerNetwork = true;
            if (ServerNet.Start(Config.ProtocolID))
            {
                DevLog.Write(string.Format("[Start] 네트워크 시작"), LOG_LEVEL.INFO);
            }
            else
            {
                IsStartServerNetwork = false;
                DevLog.Write(string.Format("[Start] 네트워크 시작 실패"), LOG_LEVEL.ERROR);
                return;
            }


            HandelrMgr.Create(ServerNet, Config.MaxAcceptCount);


            textBoxServerConfig.AppendText(string.Format("IP:{0}, Port:{1}, EngineDllName:{2} {3}", Config.IP, Config.Port, Config.EngineDllName, Environment.NewLine));
            textBoxServerConfig.AppendText(string.Format("ThreadCount:{0}, MaxBufferSize:{1}, MaxPacketSize:{2} {3}", Config.ThreadCount, Config.MaxBufferSize, Config.MaxPacketSize, Environment.NewLine));
        }
        public async Task <ActionResult> Post(DevLog devlog)
        {
            try
            {
                devlog.FechaCreacion = DateTime.Now;

                context.DevLog.Add(devlog);

                context.SaveChanges();

                return(CreatedAtAction(nameof(Get), new { id = devlog.IdDevLog }, devlog));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
        // 게임서버에 연결하기
        private void button1_Click(object sender, EventArgs e)
        {
            if (IsStartServerNetwork == false)
            {
                DevLog.Write(string.Format("[Connect GameServer] 네트워크가 시작하지 않았습니다"), LOG_LEVEL.ERROR);
                return;
            }

            var setupResult = ServerNet.SetupServerReconnectSys();

            if (setupResult == false)
            {
                DevLog.Write(string.Format("[Connect GameServer] SetupServerReconnectSys 실패"), LOG_LEVEL.ERROR);
                return;
            }

            DevLog.Write(string.Format("[Connect GameServe] 등록 및 연결 시도"), LOG_LEVEL.INFO);
        }
    void OnTriggerExit(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            // If the PLAYER i encounter is in a "RESCUE" state, therefore
            // it means that i can attempt to revive the other person...
            if (playerToRescue != null && playerToRescue.characterState.status == CharacterStatus.RESCUE)
            {
                // DEBUG
                targetId = other.GetComponent <NetworkIdentity>().netId;

                // When PLAYER1 (myself) enters the revive zone, we want to show the revive ui box
                rescueButton.gameObject.SetActive(false);

                DevLog.Log("ReviveTrigger", "Player id <" + myNetId + "> exited vicinity of <" + targetId.Value + ">");
            }
        }
    }
Example #22
0
        public static async Task <List <GameUser2> > GetGameUser2(string name, int age)
        {
            try
            {
                var collection = Common.GetDBCollection <GameUser2>("GameUser2");

                var builder   = Builders <GameUser2> .Filter;
                var filter    = builder.Eq("_id", name) & builder.Gte("Age", age);
                var documents = await collection.Find(filter).ToListAsync();

                return(documents);
            }
            catch (Exception ex)
            {
                DevLog.Write(ex.Message, LOG_LEVEL.ERROR);
                return(new List <GameUser2>());
            }
        }
Example #23
0
        /// <summary>
        /// 패킷 처리
        /// </summary>
        private void ProcessProcket()
        {
            var packet = ServerNet.GetPacket();

            if (packet == null)
            {
                return;
            }

            switch (packet.GetPacketType())
            {
            case CgsfNET64Lib.SFPACKET_TYPE.CONNECT:
                SessionList.Add(packet.SessionID());
                DevLog.Write(string.Format("[OnConnect] Serial:{0}", packet.SessionID()), LOG_LEVEL.INFO);
                break;

            case CgsfNET64Lib.SFPACKET_TYPE.DISCONNECT:
                SessionList.Remove(packet.SessionID());
                DevLog.Write(string.Format("[OnDisConnect] Serial:{0}", packet.SessionID()), LOG_LEVEL.INFO);
                break;

            case CgsfNET64Lib.SFPACKET_TYPE.DATA:
                switch (packet.PacketID())
                {
                case PACKET_ID_ECHO:
                    var resData = JsonEnDecode.Decode <JsonPacketNoticeEcho>(packet.GetData());
                    DevLog.Write(string.Format("[Chat] Serial:{0}, Msg:{1}", packet.SessionID(), resData.Msg), LOG_LEVEL.INFO);

                    var request = new JsonPacketNoticeEcho()
                    {
                        Msg = resData.Msg
                    };
                    var bodyData = JsonEnDecode.Encode <JsonPacketNoticeEcho>(request);
                    ServerNet.SendPacket(packet.SessionID(), PACKET_ID_ECHO, bodyData);
                    break;

                default:
                    DevLog.Write(string.Format("[ProcessProcket] Invalid PacketID:{0}", packet.PacketID()), LOG_LEVEL.ERROR);
                    break;
                }
                break;
            }
        }
Example #24
0
        private void MainForm_Load(object sender, EventArgs e)
        {
            PacketBuffer.Init((8096 * 10), 12, 512);

            IsNetworkThreadRunning = true;
            NetworkReadThread      = new System.Threading.Thread(this.NetworkReadProcess);
            NetworkReadThread.Start();
            NetworkSendThread = new System.Threading.Thread(this.NetworkSendProcess);
            NetworkSendThread.Start();

            dispatcherUITimer          = new System.Windows.Threading.DispatcherTimer();
            dispatcherUITimer.Tick    += new EventHandler(ReadPacketQueueProcess);
            dispatcherUITimer.Interval = new TimeSpan(0, 0, 0, 0, 100);
            dispatcherUITimer.Start();

            btnDisconnect.Enabled = false;

            DevLog.Write("프로그램 시작 !!!", LOG_LEVEL.INFO);
        }
Example #25
0
        public PNGenerationHelper(string name, EditorTabItem tabItem) : base(name, tabItem)
        {
            try
            {
                WSNTabItem wsnTabItem = (WSNTabItem)tabItem;
                mCanvas   = wsnTabItem.getAllCanvas();
                mDocPNRes = wsnTabItem.PNRes;

                // Get extend information
                mExtendInfo = wsnTabItem.mExtendInfo;

                initXML();
                mLoaded = true;
            }
            catch (Exception ex)
            {
                DevLog.d(TAG, "Can not read wsn document");
            }
        }
        public void ProcessPacket(SFNETPacket packet)
        {
            try
            {
                var packetID = packet.PacketID();

                if (PacketHandlerMap.ContainsKey(packetID))
                {
                    PacketHandlerMap[packetID](packet);
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("세션 번호 {0}, PacketID {1}, 받은 데이터 크기: {2}", packet.SessionID(), packetID, packet.GetData().Length);
                }
            }
            catch (Exception ex)
            {
                DevLog.Write(ex.ToString(), LOG_LEVEL.ERROR);
            }
        }
    void CmdRescueButtonOnClick()
    {
        if (playerToRescue != null)
        {
            //DevLog.Log("ReviveTrigger", "Player id <" + myNetId + "> attempting to revive <" + this.playerToRescue.tmpNetworkId + ">");

            try
            {
                // Tell the server to RESCUE the downed player by restoring their health and their character appearance
                playerToRescue.CmdOnPlayerRescue();
            }
            catch (Exception ex)
            {
                string error = ex.Message;
                DevLog.Log("ReviveTrigger", "Exception thrown. Ignoring because player is already revived.\n" + error);
            }

            RpcSetRevivePanelActive(false);
        }
    }
Example #28
0
        public void RequestLogin(SFNETPacket packetData, ConnectUser user)
        {
            try
            {
                var request = JsonEnDecode.Decode <JsonPacketRequestLogin>(packetData.GetData());

                // 이미 등록된 유저인가? serial, ID
                var result = UserManagerRef.AddUser(packetData.SessionID(), request.ID);

                var response = new JsonPacketResponseLogin()
                {
                    Result = result
                };
                ServerNetworkRef.Send <JsonPacketResponseLogin>(packetData.SessionID(), PACKET_ID.RESPONSE_LOGIN, response);

                DevLog.Write(string.Format("[Login] result:{0}, UserID:{1}, SessionID{2}", result.ToString(), request.ID, packetData.SessionID()), LOG_LEVEL.INFO);
            }
            catch
            {
            }
        }
Example #29
0
        public static async Task <List <DBBasic> > GetUserAsyncVer1(int level)
        {
            try
            {
                var collection = Common.GetDBCollection <DBBasic>("Basic");

                // 기본으로는 Find 메소드는 없다. Find는 확장 메소드로 사용하고 싶다면
                //using MongoDB.Driver.Core.Misc;
                //using MongoDB.Driver;
                //을 선언해야 한다.
                var filter    = new BsonDocument("Level", new BsonDocument("$gte", 2));
                var documents = await collection.Find(filter).ToListAsync();

                return(documents);
            }
            catch (Exception ex)
            {
                DevLog.Write(ex.Message, LOG_LEVEL.ERROR);
                return(new List <DBBasic>());
            }
        }
Example #30
0
        public static async Task <int> GetUserLevelAsyncVer1(string userID)
        {
            try
            {
                var collection = Common.GetDBCollection <BsonDocument>("Basic");
                var filter     = new BsonDocument("_id", userID);
                var documents  = await collection.Find(filter).ToListAsync();

                if (documents.Count > 0)
                {
                    return(documents[0]["Level"].AsInt32);
                }

                return(0);
            }
            catch (Exception ex)
            {
                DevLog.Write(ex.Message, LOG_LEVEL.ERROR);
                return(0);
            }
        }
 partial void DeleteDevLog(DevLog instance);
 partial void InsertDevLog(DevLog instance);
 partial void UpdateDevLog(DevLog instance);