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