void ClickAction_MainBuildingTakeGold(ClientPeer peer, ProtoData.BuildingClickData buildingClickData, SendParameters sendParameters)
        {
            if (peer.userAgent.UserData == null)
            {
                Failed(peer, sendParameters);
                return;
            }

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

            if (null == record)
            {
                Failed(peer, sendParameters);
                return;
            }

            var buildingData = peer.userAgent.BuildingDataList.Find(x => x.Index == index);

            if (buildingData == null)
            {
                Failed(peer, sendParameters);
                return;
            }

            int        increase = buildingData.LV * (int)record["nextLV"];
            BigInteger gold     = new BigInteger(increase * buildingClickData.value);

            peer.userAgent.UserAssetData.AddGold(gold);
        }
Beispiel #2
0
 void ClickAction_CharacterHire(ReturnCode returnCode, ProtoData.BuildingClickData buildingClickData)
 {
     if (ReturnCode.Success == returnCode)
     {
     }
     else
     {
         BasePage.OnMessageBox("돈이 부족합니다.", true, null, "확인");
     }
     TransitionManager.Instance.OnWaitSigh(false);
 }
Beispiel #3
0
        public override void SendPacket(bool reliable, bool isWait = false)
        {
            base.SendPacket(isWait);
            var buildingClickData = new ProtoData.BuildingClickData( );

            buildingClickData.index       = index;
            buildingClickData.clickAction = (int)clickAction;
            buildingClickData.value       = value;

            Send(OperationCode.BuildingClick, BinSerializer.ConvertPacket(buildingClickData));
            Debug.Log("[BuildingClickRequest] Send");
        }
        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))