Exemplo n.º 1
0
    public void SyncCityBuildingData(BuildingList data)
    {
        {
            var __list2      = data.Data;
            var __listCount2 = __list2.Count;
            for (var __i2 = 0; __i2 < __listCount2; ++__i2)
            {
                var building = __list2[__i2];
                {
                    var buildingData = CityManager.Instance.GetBuildingByAreaId(building.AreaId);
                    if (null == buildingData)
                    {
                        continue;
                    }
                    var oldType = buildingData.TypeId;
                    buildingData.Guid   = building.Guid;
                    buildingData.TypeId = building.TypeId;
                    buildingData.AreaId = building.AreaId;
                    buildingData.State  = building.State;
                    buildingData.Exdata.Clear();
                    buildingData.Exdata.AddRange(building.Exdata);
                    buildingData.PetList.Clear();
                    buildingData.PetList.AddRange(building.PetList);
                    buildingData.Exdata64.Clear();
                    buildingData.Exdata64.AddRange(building.Exdata64);
                    buildingData.PetTime.Clear();
                    buildingData.PetTime.AddRange(building.PetTime);
                    buildingData.OverTime = building.OverTime;
                    EventDispatcher.Instance.DispatchEvent(new UIEvent_CityUpdateBuilding(building.AreaId));

                    //判断是否是升级
                    if (-1 != oldType && -1 != buildingData.TypeId)
                    {
                        var tableOldBuilding = Table.GetBuilding(oldType);
                        var tableBuilding    = Table.GetBuilding(buildingData.TypeId);
                        if (null != tableOldBuilding && null != tableBuilding)
                        {
                            if (tableOldBuilding.Type == tableBuilding.Type)
                            {
                                if (tableBuilding.Level > tableOldBuilding.Level)
                                {
                                    var e          = new CityBuildingLevelupEvent(building.AreaId);
                                    var tbBuilding = Table.GetBuilding(buildingData.TypeId);
                                    e.HomeExp = tbBuilding.GetMainHouseExp;
                                    EventDispatcher.Instance.DispatchEvent(e);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
Exemplo n.º 2
0
    private IEnumerator SendCityOptRequestCoroutine(CityOperationType opt,
                                                    int buildingIdx,
                                                    List <int> param)
    {
        using (new BlockingLayerHelper(0))
        {
            var array = new Int32Array();
            if (null != param)
            {
                {
                    var __list7      = param;
                    var __listCount7 = __list7.Count;
                    for (var __i7 = 0; __i7 < __listCount7; ++__i7)
                    {
                        var value = __list7[__i7];
                        {
                            array.Items.Add(value);
                        }
                    }
                }
            }

            var msg = NetManager.Instance.CityOperationRequest((int)opt, buildingIdx, array);
            yield return(msg.SendAndWaitUntilDone());

            if (msg.State != MessageState.Reply)
            {
                Logger.Debug("SendBuildRequestCoroutine:MessageState.Timeout");
                yield break;
            }

            if (msg.ErrorCode != (int)ErrorCodes.OK)
            {
                var errorCode = (ErrorCodes)msg.ErrorCode;
                switch (errorCode)
                {
                case ErrorCodes.Error_LevelNoEnough:
                {
                    EventDispatcher.Instance.DispatchEvent(new ShowUIHintBoard(200000108));
                }
                break;

                case ErrorCodes.Error_ResNoEnough:
                {
                    EventDispatcher.Instance.DispatchEvent(new ShowUIHintBoard(200002002));
                }
                break;

                case ErrorCodes.Error_BuildCountMax:
                {
                    EventDispatcher.Instance.DispatchEvent(new ShowUIHintBoard(200002801));
                }
                break;

                case ErrorCodes.Error_NeedCityLevelMore:
                {
                    EventDispatcher.Instance.DispatchEvent(new ShowUIHintBoard(200002803));
                }
                break;

                case ErrorCodes.Error_CityCanotBuildMore:
                {
                    EventDispatcher.Instance.DispatchEvent(new ShowUIHintBoard(300113));
                }
                break;

                default:
                    UIManager.Instance.ShowNetError(msg.ErrorCode);
                    break;
                }
                Logger.Debug("SendBuildRequestCoroutine error=[{0}]", msg.ErrorCode);

                EventDispatcher.Instance.DispatchEvent(new UIEvent_CityUpdateBuilding(buildingIdx));

                yield break;
            }
            switch (opt)
            {
            case CityOperationType.BUILD:
            {
                PlatformHelper.Event("city", "Build");
                //EventDispatcher.Instance.DispatchEvent(new ShowUIHintBoard(300108));
            }
            break;

            case CityOperationType.UPGRADE:
            {
                PlatformHelper.Event("city", "Upgrade");
                EventDispatcher.Instance.DispatchEvent(new UIEvent_OnCityBuildingOptEvent(buildingIdx, opt));
                //EventDispatcher.Instance.DispatchEvent(new ShowUIHintBoard(300107));
            }
            break;

            case CityOperationType.DESTROY:
            {
                //EventDispatcher.Instance.DispatchEvent(new ShowUIHintBoard("Destroy Ok"));

                var e          = new CityBuildingLevelupEvent(buildingIdx);
                var tbBuilding = Table.GetBuilding(GetBuildingByAreaId(buildingIdx).TypeId);
                e.HomeExp = Table.GetBuilding(tbBuilding.RemovedBuildID).GetMainHouseExp;
                EventDispatcher.Instance.DispatchEvent(e);
            }
            break;

            case CityOperationType.ASSIGNPET:
            case CityOperationType.ASSIGNPETINDEX:
            {
                EventDispatcher.Instance.DispatchEvent(new UIEvent_CityAssignPetEvent(buildingIdx));
            }
            break;
            }
        }
    }