Пример #1
0
        public override void SendPacket(bool isWait = false, bool reliable = true)
        {
            base.SendPacket(isWait, reliable);
            var packet = new ProtoData.RaidRankingScoreData( );

            packet.score = score;
            Send(OperationCode.ResultRaidRanking, BinSerializer.ConvertPacket(packet));
            Debug.Log("[ResultRaidRankingRequest] Send");
        }
Пример #2
0
        public override void SendPacket(bool reliable, bool isWait = false)
        {
            base.SendPacket(isWait);
            var buildingConfirmData = new ProtoData.BuildingConfirmData( );

            buildingConfirmData.index         = index;
            buildingConfirmData.confirmAction = (int)confirmAction;

            Send(OperationCode.BuildingConfirm, BinSerializer.ConvertPacket(buildingConfirmData));
            Debug.Log("[BuildingConfirmRequest] Send");
        }
Пример #3
0
        public override void SendPacket(bool reliable, bool isWait = false)
        {
            base.SendPacket(isWait);
            var sendChatData = new ProtoData.ChatData( );

            sendChatData.index    = index;
            sendChatData.nickname = nick;
            sendChatData.msg      = msg;

            Send(OperationCode.Chat, BinSerializer.ConvertPacket(sendChatData));
            Debug.Log("[SendChat] Send");
        }
        public static void OnUpdateChat(ClientPeer peer, ProtoData.ChatData ChatData)
        {
            foreach (var client in TheLordServer.Instance.PeerList)
            {
                if (client.Equals(peer))
                {
                    continue;
                }

                EventData data = new EventData((byte)EventCode.UpdateChat);
                data.Parameters = BinSerializer.ConvertPacket(ChatData);
                client.SendEvent(data, new SendParameters( ));
            }
        }
Пример #5
0
        public static void OnUpdateRaidBoss(ClientPeer peer, int index)
        {
            EventData eventData = new EventData((byte)EventCode.UpdateRaidBoss);

            var bossData = TheLordServer.Instance.bossDataList[0];

            if (bossData == null)
            {
                TheLordServer.Log.Info("보스가 없습니다.");
                return;
            }

            var packet = new ProtoData.RaidBossData( );

            packet.index         = bossData.Index;
            packet.hp            = (int)bossData.HP;
            eventData.Parameters = BinSerializer.ConvertPacket(packet);
            peer.SendEvent(eventData, new SendParameters( ));
        }
Пример #6
0
        public static void OnUpdateResource(ClientPeer peer)
        {
            TheLordServer.Log.InfoFormat("[OnUpdateResource] - {0}", peer.RemoteIPAddress);
            if (peer.userAgent.UserData == null || peer.userAgent.UserAssetData == null)
            {
                // 로그인 씬으로
                return;
            }

            EventData data   = new EventData((byte)EventCode.UpdateResource);
            var       packet = new ProtoData.ResourceData( );

            packet.gold     = peer.userAgent.UserAssetData.Gold;
            packet.cash     = peer.userAgent.UserAssetData.Cash;
            packet.index    = peer.userAgent.UserAssetData.Index;
            packet.tier     = peer.userAgent.UserAssetData.Tier;
            data.Parameters = BinSerializer.ConvertPacket(packet);
            peer.SendEvent(data, new SendParameters( ));
        }
        public static void OnUpdateRaidRanking(ClientPeer peer, RaidRankingData myRankingData, RaidRankingData lastHitRankingData, List <RaidRankingData> raidRankingDataList)
        {
            var packet = new ProtoData.RaidRankingData( );

            if (myRankingData != null)
            {
                int ranking = raidRankingDataList.FindIndex(x => x.Equals(myRankingData));
                packet.myRankingData         = RaidRankingData2Proto(myRankingData);
                packet.myRankingData.ranking = ranking + 1;
            }
            if (lastHitRankingData != null)
            {
                int ranking = raidRankingDataList.FindIndex(x => x.Equals(lastHitRankingData));
                packet.lastHitRankingData         = RaidRankingData2Proto(lastHitRankingData);
                packet.lastHitRankingData.ranking = ranking + 1;
            }

            int cnt = 0;

            foreach (var rankingData in raidRankingDataList)
            {
                if (++cnt > 10)
                {
                    break;
                }
                var data = RaidRankingData2Proto(rankingData);
                data.ranking = cnt;
                packet.rankingDataList.Add(data);
            }

            var current = GameUtility.Now( ) - TheLordServer.Instance.bossDataList[0].CreateTime;
            var total   = GameThread.ThreadRaidBoss.bossRemainTime - current;

            packet.tick = total.Ticks;

            EventData eventData = new EventData((byte)EventCode.UpdateRaidRanking);

            eventData.Parameters = BinSerializer.ConvertPacket(packet);
            peer.SendEvent(eventData, new SendParameters( ));
        }
        private void ClickAction_BuildingBuild(ClientPeer peer, ProtoData.BuildingClickData buildingClickData, byte operationCode, SendParameters sendParameters)
        {
            int index = buildingClickData.index;

            if (peer.userAgent.BuildingDataList == null)
            {
                Failed(peer, sendParameters);
                return;
            }

            var buildingData = peer.userAgent.BuildingDataList.Find(x => x.Index == index);
            var response     = new OperationResponse(operationCode);

            var sheet  = TheLordTable.Instance.BuildingTable.BuildingInfoSheet;
            var record = BaseTable.Get(sheet, "index", index);

            int unitCreate = (int)record["spawnCharacter"];

            int cost = (int)record["cost"];

            if (peer.userAgent.UserAssetData.GetGold() < cost)
            {
                // 돈 부족 예외처리
                response.ReturnCode = (short)ReturnCode.Failed;
                response.Parameters = BinSerializer.ConvertPacket(buildingClickData);
            }
            else
            {
                if (buildingData == null)
                {
                    buildingData       = new BuildingData(peer.Id);
                    buildingData.Index = index;
                    buildingData.LV    = 0;
                    buildingData.CharactertData.Index = unitCreate;
                    peer.userAgent.BuildingDataList.Add(buildingData);
                }

                if (!buildingData.WorkTime.Equals(default))
Пример #9
0
        void OnEnterRaidReceived(ClientPeer peer, OperationRequest operationRequest, SendParameters sendParameters)
        {
            OperationResponse response = new OperationResponse((byte)OperationCode.EnterRaid);

            if (TheLordServer.Instance.bossDataList.Count == 0 || TheLordServer.Instance.bossDataList[0].HP <= 0F)
            {
                response.ReturnCode = (short)ReturnCode.Failed;
                peer.SendOperationResponse(response, sendParameters);
                return;
            }
            var raidEnterData = new ProtoData.RaidEnterData( );

            var bossData = TheLordServer.Instance.bossDataList[0];

            raidEnterData.raidBossData       = new ProtoData.RaidBossData( );
            raidEnterData.raidBossData.index = bossData.Index;
            raidEnterData.raidBossData.hp    = (int)bossData.HP;

            foreach (var db in peer.userAgent.BuildingDataList)
            {
                var charactertData = new ProtoData.RaidEnterData.CharacterData( );
                charactertData.index  = db.CharactertData.Index;
                charactertData.amount = db.CharactertData.Amount;
                raidEnterData.characterDataList.Add(charactertData);
            }

            var workScore = MongoHelper.RaidRankingCollection.Get(peer.Id).GetAwaiter( );

            workScore.OnCompleted(() =>
            {
                raidEnterData.totalScore = workScore.GetResult( ).Score;
                response.ReturnCode      = (short)ReturnCode.Success;
                response.Parameters      = BinSerializer.ConvertPacket(raidEnterData);
                peer.SendOperationResponse(response, sendParameters);
            });
        }