Ejemplo n.º 1
0
    public void ClearBuildingCollect(Building buidling)
    {
        NBuildingInfo info = mBuildingInfoMap[buidling.BuildingID];

        info.number = 0;
        info.building.RefreshView();
    }
Ejemplo n.º 2
0
    void CheckIfCanUnlockOrUpgrade(NDictionary data = null)
    {
        if (hudBinder == null)
        {
            return;
        }
        hudBinder.RemoveHud(HudType.Exmind);
        int configID = 0;

        if (buildingID != 0)     // if can upgrade
        {
            NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(buildingID);
            configID = info.configID + 1;
            if (sanctuaryPackage.GetBulidingLevelByConfigID(configID) >= 20)
            {
                return;
            }
        }
        else
        {
            configID = sanctuaryPackage.GetConfigIDByBuildingType(buildingType);
        }

        if (sanctuaryPackage.IsAbleToUnlockOrUpgrade(configID))
        {
            CanUnlockOrUpgrade = true;
            hudBinder.AddHud(HudType.Exmind);
        }
        else
        {
            CanUnlockOrUpgrade = false;
        }
    }
Ejemplo n.º 3
0
    void ProcessBuildingInfo(InvadeResultInfo info, out string resStr)
    {
        if (info.Id == -1)
        {
            resStr = string.Format("[960000]大门破损不堪,僵尸毫不费力就闯入了庄园![-]");
            return;
        }
        //sanctuaryPackage
        NBuildingInfo buildingInfo = sanctuaryPackage.GetBuildingInfo(info.Id);
        BuildingFunc  func         = sanctuaryPackage.GetBuildingFuncByConfigID(buildingInfo.configID);

        if (func == BuildingFunc.Defence)                       //Gate
        {
            if (info.Blood <= 0)
            {
                resStr = string.Format("[960000]僵尸攻破了大门,开始疯狂破坏![-]");
            }
            else
            {
                resStr = string.Format("[960000]僵尸开始攻击大门![-]");
            }
        }
        else            //Turret
        {
            BUILDING config = sanctuaryPackage.GetBuildingConfigDataByConfigID(buildingInfo.configID);
            resStr = string.Format("{0}击杀了{1}只僵尸", config.BldgName, info.Num);
        }
    }
Ejemplo n.º 4
0
    void OnReceive(NetMsgDef msg)
    {
        TSCReceive receive    = TSCReceive.ParseFrom(msg.mBtsData);
        long       buildingID = receive.BuildingId;
        int        configID   = receive.ConfigId;
        int        num        = receive.Number;

        sanctuaryPackage.Receive(buildingID, receive);
        NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(buildingID);

        if (sanctuaryPackage.GetBuildingFuncByConfigID(info.configID) == BuildingFunc.Craft)
        {
            SendEvent("RefreshCraftPanel");
        }
        NDictionary data = new NDictionary();

        if (configID == 0)   //elec
        {
            string content = string.Format("获得电力 x {0}", num);
            data.Add("content", content);
        }
        else
        {
            ITEM_RES itemConfig = itemPackage.GetItemDataByConfigID(configID);
            string   content    = string.Format("获得{0} x {1}", itemConfig.MinName, num);
            data.Add("content", content);
        }
        //info.number = Mathf.Max(0, info.number - num);
        //info.building.SetCollect(false);
        info.building.RefreshHud();
        FacadeSingleton.Instance.OpenUtilityPanel("UITipsPanel");
        FacadeSingleton.Instance.SendEvent("OpenTips", data);
        FacadeSingleton.Instance.InvokeService("RPCGetResourceInfo", ConstVal.Service_Sanctuary);
    }
Ejemplo n.º 5
0
    public void StartUpgrade(TSCUpgrade upgrade)
    {
        NBuildingInfo info = GetBuildingInfo(upgrade.BuildingId);

        info.upgradeFinishTime = upgrade.FinishTime;
        info.building.RefreshView();
    }
Ejemplo n.º 6
0
    void InitView()
    {
        NBuildingInfo info            = sanctuarytPackage.GetBuildingInfo(selecttionBuilding.BuildingID);
        var           buildingDataMap = ConfigDataStatic.GetConfigDataTable("BUILDING");
        BUILDING      buildingData    = buildingDataMap[info.configID] as BUILDING;
        int           level           = sanctuarytPackage.GetBulidingLevelByConfigID(info.configID);

        titleLabel.text   = string.Format("{0} Lv.{1}", buildingData.BldgName, level);
        contentLable.text = buildingData.BldgInfo;
        //render 3d model
        string prefabName = buildingData.PrefabName;

        if (!string.IsNullOrEmpty(prefabName))
        {
            NDictionary data = new NDictionary();
            prefabName = prefabName.Substring(0, prefabName.IndexOf("."));
            GameObject prefab = Resources.Load <GameObject>("Prefabs/Building/" + prefabName);
            if (prefab != null)
            {
                data.Add("model", prefab);
                modelGo = FacadeSingleton.Instance.InvokeService("OpenSubRenderer", ConstVal.Service_Sanctuary, data) as GameObject;
            }
        }
        //get attribute data
        int count = sanctuarytPackage.GetBuildingAttribute(selecttionBuilding, level);

        tableView.DataCount = count;
        tableView.TableChange();
    }
Ejemplo n.º 7
0
    void InitView()
    {
        NBuildingInfo info           = sanctuaryPackage.GetSelectionBuildingInfo();
        BUILDING      configData     = null;
        BUILDING      nextConfigData = null;

        if (info == null)               //unlock
        {
            Building building = sanctuaryPackage.GetSelectionBuilding();
            int      configID = sanctuaryPackage.GetConfigIDByBuildingType(building.buildingType);
            nextConfigData      = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID);
            titleLabel.text     = string.Format("{0}  升级", nextConfigData.BldgName);
            preLevelLabel.text  = string.Format("Lv.{0}", 0);
            nextLevelLabel.text = string.Format("Lv.{0}", sanctuaryPackage.GetBulidingLevelByConfigID(configID));
        }
        else
        {
            configData          = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID);
            nextConfigData      = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID + 1);
            titleLabel.text     = string.Format("{0}  升级", configData.BldgName);
            preLevelLabel.text  = string.Format("Lv.{0}", sanctuaryPackage.GetBulidingLevelByConfigID(info.configID));
            nextLevelLabel.text = string.Format("Lv.{0}", sanctuaryPackage.GetBulidingLevelByConfigID(info.configID + 1));
        }

        titleLabel.text     = string.Format("{0}  升级", configData.BldgName);
        preLevelLabel.text  = string.Format("Lv.{0}", sanctuaryPackage.GetBulidingLevelByConfigID(info.configID));
        nextLevelLabel.text = string.Format("Lv.{0}", sanctuaryPackage.GetBulidingLevelByConfigID(info.configID + 1));
        //set icon
        preIcon.spriteName  = configData.IconName;
        nextIcon.spriteName = nextConfigData.IconName;
        //show cost
        int level = nextConfigData.BldgLvLim;

        levelLabel.text = string.Format("庄园等级限制: {0}", level);
        int curLevel = userPackage.GetManorLevel();

        if (level > curLevel)
        {
            levelLabel.color = Color.red;
        }
        else
        {
            levelLabel.color = Color.white;
        }
        //levelLabel.text
        ShowCost(nextConfigData);
        //show upgrade effect
        ShowUpgradeEffect(info);
        //set point
        if (info.building.CanUnlockOrUpgrade)
        {
            pointGo.SetActive(true);
        }
        else
        {
            pointGo.SetActive(false);
        }
    }
Ejemplo n.º 8
0
    public void UnlockBuilding(long buildingID, Building building, long finishTime)
    {
        NBuildingInfo info = new NBuildingInfo();

        info.buildingID        = buildingID;
        info.configID          = GetConfigIDByBuildingType(building.buildingType);
        info.building          = building;
        info.upgradeFinishTime = finishTime;
        building.UnlockBuilding(info);
        mBuildingInfoMap.Add(buildingID, info);
    }
Ejemplo n.º 9
0
    public void EndCraft(long buildingID)
    {
        NBuildingInfo info = GetBuildingInfo(buildingID);

        if (info == null)
        {
            Debug.Log(string.Format("buidingID={0} not exist"));
            return;
        }
        info.processFinishTime = 0;
        info.building.RefreshView();
    }
Ejemplo n.º 10
0
    public void SetBuildingCollectable(long buildingID)
    {
        if (!mBuildingInfoMap.ContainsKey(buildingID))
        {
            return;
        }
        NBuildingInfo info = mBuildingInfoMap[buildingID];

        //info.number = info.pronum;
        info.number = (int)info.building.ProNumber;
        info.building.RefreshView();
    }
Ejemplo n.º 11
0
    public void CancelCraft(long buildingID)
    {
        NBuildingInfo info = GetBuildingInfo(buildingID);

        if (info == null)
        {
            Debug.Log(string.Format("buidingID={0} not exist"));
            return;
        }
        info.number            = 0;
        info.processUID        = 0;
        info.processFinishTime = 0;
    }
Ejemplo n.º 12
0
    public void Receive(long buildingID, TSCReceive receive)
    {
        NBuildingInfo info = GetBuildingInfo(buildingID);

        if (info == null)
        {
            Debug.Log(string.Format("buidingID={0} not exist"));
            return;
        }
        info.number = Mathf.Max(0, info.number - receive.Number);
        info.building.RefreshView();
        FacadeSingleton.Instance.SendEvent("RefreshCraftPanel");
    }
Ejemplo n.º 13
0
 public bool GetBuidlingInfoByType(BuildingType type, out NBuildingInfo info)
 {
     info = null;
     foreach (var pair in mBuildingInfoMap)
     {
         if (GetBuildingTypeByConfigID(pair.Value.configID) == type)
         {
             info = pair.Value;
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 14
0
    public int GetStoreHouseCap()
    {
        if (!mBuildingType2IDMap.ContainsKey(BuildingType.StoreHouse))
        {
            Debug.Log("storehouse not exist, there must be something wrong with server");
            return(0);
        }
        NBuildingInfo info       = mBuildingType2IDMap[BuildingType.StoreHouse];
        var           dataMap    = ConfigDataStatic.GetConfigDataTable("CANGKU");
        CANGKU        configData = dataMap[GetBulidingLevelByConfigID(info.configID)] as CANGKU;

        return(configData.CangkuCap);
    }
Ejemplo n.º 15
0
    /// <summary>
    /// buildinginfo is from server
    /// </summary>
    public void AddBuilding(BuildingInfo buildingInfo)
    {
        NBuildingInfo info = new NBuildingInfo(buildingInfo);

        info.building = GetTypeBuilding(GetBuildingTypeByConfigID(buildingInfo.ConfigId));
        if (info.building == null)
        {
            Debug.Log(string.Format("building{0} prefab missing!!!!!!", GetBuildingTypeByConfigID(info.configID)));
            return;
        }
        info.building.SetBuildingID(info.buildingID);
        mBuildingInfoMap[info.buildingID] = info;
        mBuildingType2IDMap[GetBuildingTypeByConfigID(info.configID)] = info;
    }
Ejemplo n.º 16
0
    public void StartCraft(TSCProcess process)
    {
        UserPackage   userPackage = FacadeSingleton.Instance.RetrieveData(ConstVal.Package_User) as UserPackage;
        NBuildingInfo info        = GetBuildingInfo(process.BuildingId);

        if (info == null)
        {
            Debug.Log(string.Format("buidingID={0} not exist"));
            return;
        }
        info.processFinishTime = process.FinishTime;
        info.processUID        = userPackage.UserID;
        info.number            = process.Number;
        info.building.RefreshView();
    }
    void OnUpgrade()
    {
        NBuildingInfo buildingInfo = sanctuaryPackage.GetBuildingInfo(selectBuilding.BuildingID);

        if (sanctuaryPackage.GetBulidingLevelByConfigID(buildingInfo.configID) >= 20)
        {
            NDictionary data = new NDictionary();
            data.Add("title", "升级失败");
            data.Add("content", "等级达到上限");
            data.Add("method", 1);
            FacadeSingleton.Instance.OpenUtilityPanel("UIMsgBoxPanel");
            FacadeSingleton.Instance.SendEvent("OpenMsgBox", data);
            return;
        }
        FacadeSingleton.Instance.BackPanel();
        FacadeSingleton.Instance.OverlayerPanel("UIBuildingUpgradePanel");
    }
Ejemplo n.º 18
0
    void CheckIfCanSpwan(NDictionary data = null)
    {
        NBuildingInfo    info             = null;
        SanctuaryPackage sanctuaryPackage = FacadeSingleton.Instance.RetrieveData(ConstVal.Package_Sanctuary) as SanctuaryPackage;

        if (sanctuaryPackage.GetBuidlingInfoByType(BuildingType.Gate, out info) &&
            (sanctuaryPackage.GetBuidlingInfoByType(BuildingType.Turret0) ||
             sanctuaryPackage.GetBuidlingInfoByType(BuildingType.Turret1)))
        {
            StartSpwaning();
            target = info.building.transform;
        }
        else
        {
            StopSpwaning();
        }
    }
Ejemplo n.º 19
0
    //reload prefab of building
    public void ReloadModel()
    {
        GameObject prefab = null;

        if (mState == BuildingState.Locked)
        {
            prefab = Resources.Load <GameObject>("Prefabs/Building/lock");
        }
        else
        {
            NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(buildingID);
            if (info == null)
            {
                return;
            }
            BUILDING configData = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID);
            string   prefabName = configData.PrefabName;
            prefabName = prefabName.Substring(0, prefabName.IndexOf("."));
            prefab     = Resources.Load <GameObject>("Prefabs/Building/model/" + prefabName);
        }
        if (prefab == null)
        {
            return;
        }
        if (buildingGo != null)
        {
            buildingGo.SendMessage("ClearHud", SendMessageOptions.DontRequireReceiver);
            DestroyImmediate(buildingGo);
        }

        buildingGo = Instantiate(prefab);
        buildingGo.transform.parent        = transform;
        buildingGo.transform.localPosition = Vector3.zero;
        buildingGo.transform.localRotation = Quaternion.identity;
        hudBinder = buildingGo.AddComponent <HudBinder>();
        Transform pos = buildingGo.transform.Find("pos");

        if (pos != null)
        {
            hudBinder.SetTarget(pos.gameObject);
        }

        NEventListener listener = buildingGo.AddComponent <NEventListener>();

        listener.AddClick(OnClick);
    }
Ejemplo n.º 20
0
    void GetBuildingAttributeNew(Building building, int level)
    {
        if (level >= 20)
        {
            return;
        }
        NBuildingInfo info           = GetBuildingInfo(building.BuildingID);
        BuildingFunc  func           = GetBuildingFuncByConfigID(info.configID);
        BUILDING      buildingConfig = GetBuildingConfigDataByConfigID(info.configID);
        string        funcName       = buildingConfig.BldgFuncTableName;
        object        funcConfig     = ConfigDataStatic.GetConfigDataTable(funcName)[level];

        //reflection get properties
        if (func == BuildingFunc.Collect)
        {
        }
    }
Ejemplo n.º 21
0
    void ShowNameBoard(NDictionary args = null)
    {
        NDictionary data = new NDictionary();

        if (buildingID == 0)
        {
            data.Add("id", sanctuaryPackage.GetConfigIDByBuildingType(buildingType));
            data.Add("isunlock", false);
        }
        else
        {
            NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(buildingID);
            data.Add("id", info.configID);
            data.Add("isunlock", true);
        }

        if (hudBinder != null)
        {
            hudBinder.AddHud(HudType.NameBoard, data);
        }
    }
Ejemplo n.º 22
0
 public void SetCollect(bool isCollect)
 {
     if (isCollect)
     {
         NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(buildingID);
         if (info == null)
         {
             return;
         }
         BUILDING    config = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID);
         NDictionary args   = new NDictionary();
         args.Add("id", config.ProId);
         hudBinder.AddHud(HudType.Collect, args);
         mState = BuildingState.Collect;
     }
     else
     {
         hudBinder.RemoveHud(HudType.Collect);
         mState = BuildingState.Idle;
     }
 }
Ejemplo n.º 23
0
    void InitView()
    {
        NBuildingInfo info            = sanctuaryPackage.GetBuildingInfo(selectionBuilding.BuildingID);
        var           buildingDataMap = ConfigDataStatic.GetConfigDataTable("BUILDING");
        BUILDING      buildingData    = buildingDataMap[info.configID] as BUILDING;
        int           level           = sanctuaryPackage.GetBulidingLevelByConfigID(info.configID);
        long          remainTime      = 0;

        //check if is crafting
        isCrafting = false;
        isCollect  = false;

        if (GlobalFunction.GetRemainTime(info.processFinishTime, out remainTime))
        {
            isCrafting = true;
        }
        else if (info.number > 0)
        {
            isCollect = true;
        }

        toConfigID   = buildingData.ProId;
        fromConfigID = buildingData.ConId;
        //item name
        var      itemDataMap = ConfigDataStatic.GetConfigDataTable("ITEM_RES");
        ITEM_RES itemData    = itemDataMap[fromConfigID] as ITEM_RES;

        fromItemName.text     = itemData.MinName;
        fromSprite.spriteName = itemData.IconName;
        ratio                 = buildingData.ConPro;
        itemData              = itemDataMap[toConfigID] as ITEM_RES;
        toItemName.text       = itemData.MinName;
        describeLabel.text    = itemData.Desc;
        toSprite.spriteName   = itemData.IconName;
        descSprite.spriteName = itemData.IconName;
        // set number
        NItemInfo itemInfo = itemPackage.GetItemInfo(fromConfigID);

        craftNum     = 0;
        slider.value = 0f;
        if (itemInfo == null)
        {
            craftMax = 0;
        }
        else
        {
            int toItemMax = (int)Mathf.Floor((float)itemInfo.number / (float)ratio);
            craftMax             = toItemMax * ratio;
            slider.numberOfSteps = (int)Mathf.Ceil((float)craftMax / (float)ratio) + 1;
        }
        //check if is self
        if (info.processUID == userPackage.UserID)
        {
            isSelf = true;
        }
        else
        {
            isSelf = false;
        }

        //text
        title.text = string.Format("{0} Lv.{1}", buildingData.BldgName, level);
        collectButton.gameObject.SetActive(false);
        cancelButton.gameObject.SetActive(false);
        //stop timer
        if (TimerCo != null)
        {
            timeLabel.text = "00:00";
            StopCoroutine(TimerCo);
        }

        if (isCrafting)
        {
            //check if is self
            if (isSelf)
            {
                stateLabel.text = "你正在使用";
                cancelButton.gameObject.SetActive(true);
            }
            else
            {
                stateLabel.text = string.Format("玩家Uid{0}正在使用", info.processUID);
            }

            //set time
            if (remainTime > 0)
            {
                TimerCo = StartCoroutine(Timer(remainTime));
            }
        }
        else if (isCollect)
        {
            if (isSelf)
            {
                stateLabel.text = string.Format("可以领取{0}", info.number);
                collectButton.gameObject.SetActive(true);
            }
            timeLabel.text = "00:00";
        }
        else
        {
            stateLabel.text = "该工厂处于空闲状态";
            collectButton.gameObject.SetActive(false);
            cancelButton.gameObject.SetActive(false);
        }
        UpdateNumView();
    }
Ejemplo n.º 24
0
    /// <summary>
    /// Uggly implement of getting buliding's attribute
    /// return count of list
    /// </summary>
    public int GetBuildingAttribute(Building building, int level)
    {
        BuildingType  type = building.buildingType;
        NBuildingInfo info = GetBuildingInfo(building.BuildingID);
        BuildingFunc  func = GetBuildingFuncByConfigID(info.configID);
        List <BuildingAttributeData> dataList = new List <BuildingAttributeData>();

        switch (type)
        {
        case (BuildingType.Rice):
        {
            var  dataMap = ConfigDataStatic.GetConfigDataTable("DAMI");
            DAMI data    = dataMap[level] as DAMI;
            dataList.Add(new BuildingAttributeData("生长速度", data.DamiSpd));
            dataList.Add(new BuildingAttributeData("单次最高产量", data.DamiCap));
            break;
        }

        case (BuildingType.Veg):
        {
            var    dataMap = ConfigDataStatic.GetConfigDataTable("SHUCAI");
            SHUCAI data    = dataMap[level] as SHUCAI;
            dataList.Add(new BuildingAttributeData("生长速度", data.ShucaiSpd));
            dataList.Add(new BuildingAttributeData("单次最高产量", data.ShucaiCap));
            break;
        }

        case (BuildingType.Fertilizer):
        {
            var    dataMap = ConfigDataStatic.GetConfigDataTable("HUAFEI");
            HUAFEI data    = dataMap[level] as HUAFEI;
            dataList.Add(new BuildingAttributeData("生长速度", data.HuafeiSpd));
            dataList.Add(new BuildingAttributeData("单次最高产量", data.HuafeiCap));
            break;
        }

        case (BuildingType.Fruit):
        {
            var     dataMap = ConfigDataStatic.GetConfigDataTable("SHUIGUO");
            SHUIGUO data    = dataMap[level] as SHUIGUO;
            dataList.Add(new BuildingAttributeData("生长速度", data.ShuiguoSpd));
            dataList.Add(new BuildingAttributeData("单次最高产量", data.ShuiguoCap));
            break;
        }

        case (BuildingType.FeedFactory):
        {
            var    dataMap = ConfigDataStatic.GetConfigDataTable("SILIAO");
            SILIAO data    = dataMap[level] as SILIAO;
            dataList.Add(new BuildingAttributeData("加工速度", data.SiliaoSpd));
            dataList.Add(new BuildingAttributeData("最大加工量", data.SiliaoCap));
            break;
        }

        case (BuildingType.Well):
        {
            var  dataMap = ConfigDataStatic.GetConfigDataTable("JING");
            JING data    = dataMap[level] as JING;
            dataList.Add(new BuildingAttributeData("渗水速度", data.JingSpd));
            dataList.Add(new BuildingAttributeData("容量", data.JingCap));
            break;
        }

        case (BuildingType.WaterCollector):
        {
            var    dataMap = ConfigDataStatic.GetConfigDataTable("LUSHUI");
            LUSHUI data    = dataMap[level] as LUSHUI;
            dataList.Add(new BuildingAttributeData("收集速度", data.LushuiSpd));
            dataList.Add(new BuildingAttributeData("单次最大收集量", data.LushuiCap));
            break;
        }

        case (BuildingType.WaterFactory):
        {
            var           dataMap = ConfigDataStatic.GetConfigDataTable("KUANGQUANSHUI");
            KUANGQUANSHUI data    = dataMap[level] as KUANGQUANSHUI;
            dataList.Add(new BuildingAttributeData("加工速度", data.KuangquanshuiSpd));
            dataList.Add(new BuildingAttributeData("最大加工量", data.KuangquanshuiCap));
            break;
        }

        case (BuildingType.RadioStation):
        {
            var        dataMap = ConfigDataStatic.GetConfigDataTable("WUXIANDIAN");
            WUXIANDIAN data    = dataMap[level] as WUXIANDIAN;
            dataList.Add(new BuildingAttributeData("接受时间(秒)", data.WuxiandianDis));
            break;
        }

        case (BuildingType.Radar):
        {
            var   dataMap = ConfigDataStatic.GetConfigDataTable("LEIDA");
            LEIDA data    = dataMap[level] as LEIDA;
            dataList.Add(new BuildingAttributeData("接受时间(秒)", data.LeidaDis));
            break;
        }

        case (BuildingType.StoreHouse):
        {
            var    dataMap = ConfigDataStatic.GetConfigDataTable("CANGKU");
            CANGKU data    = dataMap[level] as CANGKU;
            dataList.Add(new BuildingAttributeData("仓库容量", data.CangkuCap));
            break;
        }

        case (BuildingType.Battery):
        {
            var       dataMap = ConfigDataStatic.GetConfigDataTable("DIANCHIZU");
            DIANCHIZU data    = dataMap[level] as DIANCHIZU;
            dataList.Add(new BuildingAttributeData("电量储存量", data.DianchizuCap));
            break;
        }

        case (BuildingType.PowerGym):
        {
            var          dataMap = ConfigDataStatic.GetConfigDataTable("JIANSHENFANG");
            JIANSHENFANG data    = dataMap[level] as JIANSHENFANG;
            dataList.Add(new BuildingAttributeData("能量转化率", data.JianshenfangSpd));
            dataList.Add(new BuildingAttributeData("每日转化上限", data.JianshenfangCap));
            break;
        }

        case (BuildingType.ZombiePlant):
        {
            var          dataMap = ConfigDataStatic.GetConfigDataTable("JSFADIANZHAN");
            JSFADIANZHAN data    = dataMap[level] as JSFADIANZHAN;
            dataList.Add(new BuildingAttributeData("能量转化率", data.JsfadianzhanSpd));
            dataList.Add(new BuildingAttributeData("单次最大储电量", data.JsfadianzhanCap));
            break;
        }

        case (BuildingType.PowerPlant):
        {
            var         dataMap = ConfigDataStatic.GetConfigDataTable("TAIYANGNENG");
            TAIYANGNENG data    = dataMap[level] as TAIYANGNENG;
            dataList.Add(new BuildingAttributeData("发电速率", data.TaiyangnengSpd));
            dataList.Add(new BuildingAttributeData("单次最大储电量", data.TaiyangnengCap));
            break;
        }

        case (BuildingType.OilFactory):
        {
            var     dataMap = ConfigDataStatic.GetConfigDataTable("LIANYOU");
            LIANYOU data    = dataMap[level] as LIANYOU;
            dataList.Add(new BuildingAttributeData("炼油速度", data.LianyouSpd));
            dataList.Add(new BuildingAttributeData("最高炼油量", data.LianyouCap));
            break;
        }

        case (BuildingType.SteelFactory):
        {
            var      dataMap = ConfigDataStatic.GetConfigDataTable("LIANGANG");
            LIANGANG data    = dataMap[level] as LIANGANG;
            dataList.Add(new BuildingAttributeData("炼钢速度", data.LiangangSpd));
            dataList.Add(new BuildingAttributeData("最高炼钢量", data.LiangangCap));
            break;
        }

        case (BuildingType.ConcreteFactory):
        {
            var       dataMap = ConfigDataStatic.GetConfigDataTable("HUNNINGTU");
            HUNNINGTU data    = dataMap[level] as HUNNINGTU;
            dataList.Add(new BuildingAttributeData("搅拌速度", data.HunningtuSpd));
            dataList.Add(new BuildingAttributeData("最高搅拌量", data.HunningtuCap));
            break;
        }

        case (BuildingType.PineWood):
        {
            var     dataMap = ConfigDataStatic.GetConfigDataTable("SONGSHU");
            SONGSHU data    = dataMap[level] as SONGSHU;
            dataList.Add(new BuildingAttributeData("生长速度", data.SongshuSpd));
            dataList.Add(new BuildingAttributeData("单次最高产量", data.SongshuCap));
            break;
        }

        case (BuildingType.WoodFactory):
        {
            var          dataMap = ConfigDataStatic.GetConfigDataTable("MUCAIJIAGONG");
            MUCAIJIAGONG data    = dataMap[level] as MUCAIJIAGONG;
            dataList.Add(new BuildingAttributeData("加工速度", data.MucaijiagongSpd));
            dataList.Add(new BuildingAttributeData("最大加工量", data.MucaijiagongCap));
            break;
        }

        case (BuildingType.Gate):
        {
            var   dataMap = ConfigDataStatic.GetConfigDataTable("DAMEN");
            DAMEN data    = dataMap[level] as DAMEN;
            dataList.Add(new BuildingAttributeData("耐久度", data.DamenDura));
            break;
        }
        }
        if (func == BuildingFunc.Collect)
        {
            BuildingAttributeData data = dataList[0];
            //add buff

            //calculate distribution
        }
        attributeDataList = dataList;
        return(attributeDataList.Count);
    }
    void InitView()
    {
        if (selectBuilding == null)
        {
            return;
        }
        HideAllButton();
        NBuildingInfo info     = sanctuaryPackage.GetBuildingInfo(selectBuilding.BuildingID);
        BuildingFunc  funcType = BuildingFunc.Collect;

        if (info != null)
        {
            nameLabel.text = string.Format("{0}  Lv.{1}"
                                           , sanctuaryPackage.GetBuildingNameByType(selectBuilding.buildingType)
                                           , sanctuaryPackage.GetBulidingLevelByConfigID(info.configID));
            funcType = sanctuaryPackage.GetBuildingFuncByConfigID(info.configID);
        }
        else
        {
            nameLabel.text = string.Format("{0}(未解锁)", sanctuaryPackage.GetBuildingNameByType(selectBuilding.buildingType));
        }

        switch (selectBuilding.State)
        {
        case (BuildingState.Locked):
        {
            unlockBtn.gameObject.SetActive(true);
            break;
        }

        case (BuildingState.Idle):
        {
            if (funcType == BuildingFunc.Collect)
            {
                infoBtn.gameObject.SetActive(true);
                upgradeBtn.gameObject.SetActive(true);
                collectBtn.gameObject.SetActive(true);
            }
            else if (funcType == BuildingFunc.Craft)
            {
                infoBtn.gameObject.SetActive(true);
                upgradeBtn.gameObject.SetActive(true);
                craftBtn.gameObject.SetActive(true);
            }
            else
            {
                infoBtn.gameObject.SetActive(true);
                upgradeBtn.gameObject.SetActive(true);
            }
            break;
        }

        case (BuildingState.Upgrade):
        {
            infoBtn.gameObject.SetActive(true);
            break;
        }

        case (BuildingState.Collect):
        {
            //Building in remind state should never invoke this panel
            break;
        }

        case (BuildingState.Craft):
        {
            infoBtn.gameObject.SetActive(true);
            upgradeBtn.gameObject.SetActive(true);
            craftBtn.gameObject.SetActive(true);
            break;
        }
        }
        //set point
        if (selectBuilding.CanUnlockOrUpgrade)
        {
            unlockBtn.transform.Find("point").gameObject.SetActive(true);
            upgradeBtn.transform.Find("point").gameObject.SetActive(true);
        }
        else
        {
            unlockBtn.transform.Find("point").gameObject.SetActive(false);
            upgradeBtn.transform.Find("point").gameObject.SetActive(false);
        }
        grid.Reposition();
    }
Ejemplo n.º 26
0
 void ShowUpgradeEffect(NBuildingInfo info)
 {
     sanctuaryPackage.CalculateBuildingUpgradeEffect(info.building, sanctuaryPackage.GetBulidingLevelByConfigID(info.configID));
     tableView.DataCount = sanctuaryPackage.GetBuildingUpgradeEffect().Count;
     tableView.TableChange();
 }
Ejemplo n.º 27
0
 /// <summary>
 /// If building is unlock, set the info
 /// </summary>
 public void UnlockBuilding(NBuildingInfo info)
 {
     buildingID = info.buildingID;
 }
Ejemplo n.º 28
0
    public void RefreshState()
    {
        NBuildingInfo info       = sanctuaryPackage.GetBuildingInfo(buildingID);
        long          remainTime = 0;

        if (info == null)
        {
            mState = BuildingState.Locked;
            Building building = sanctuaryPackage.GetTypeBuilding(buildingType);
            if (building == null)
            {
                return;
            }
            //if under building's min visible level, hide the building
            if (!sanctuaryPackage.IsBuildingVisible(buildingType))
            {
                building.gameObject.SetActive(false);
            }
            else
            {
                building.gameObject.SetActive(true);
            }
        }
        else
        {
            BuildingFunc func = sanctuaryPackage.GetBuildingFuncByConfigID(info.configID);
            info.building.gameObject.SetActive(true);
            if (info.upgradeFinishTime > 0 && GlobalFunction.GetRemainTime(info.upgradeFinishTime, out remainTime))
            {
                mState = BuildingState.Upgrade;
            }
            else if (info.processUID != 0 && info.number > 0)
            {
                if (GlobalFunction.GetRemainTime(info.processFinishTime, out remainTime))
                {
                    mState = BuildingState.Craft;
                }
                else
                {
                    mState = BuildingState.Collect;
                }
            }
            else
            {
                mState = BuildingState.Idle;
            }
            //store number and update number
            if (func == BuildingFunc.Collect)
            {
                proNumber = info.number;
                BUILDING config = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID);
                //print(string.Format("Buidlin={0}, number={1}", config.BldgName, info.number));
                sanctuaryPackage.GetProAttribute(info.configID, out proSpeed, out proCap);

                EventPackage eventPackage   = FacadeSingleton.Instance.RetrieveData(ConstVal.Package_Event) as EventPackage;
                UserPackage  userPackage    = FacadeSingleton.Instance.RetrieveData(ConstVal.Package_User) as UserPackage;
                BUILDING     buildingConfig = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID);
                string       buildingName   = buildingConfig.BldgFuncTableName;
                buildingName = Char.ToUpper(buildingName[0]) + buildingName.Substring(1).ToLower();
                var eventList = eventPackage.GetCurEventList();
                foreach (var eventInfo in eventList)
                {
                    WORLD_EVENTS eventConfig = eventPackage.GetEventConfigDataByConfigID(eventInfo.configID);
                    if (eventConfig == null)
                    {
                        continue;
                    }
                    Type         type            = Type.GetType("com.nkm.framework.resource.data.WORLD_EVENTS");
                    PropertyInfo propertyInfo    = type.GetProperty(buildingName + "Bldgcap");
                    PropertyInfo hasPropertyInfo = type.GetProperty("Has" + buildingName + "Bldgcap");
                    bool         isHave          = (bool)hasPropertyInfo.GetValue(eventConfig, null);
                    if (isHave)
                    {
                        int effect = (int)propertyInfo.GetValue(eventConfig, null);
                        if (effect != 0)
                        {
                            proSpeed *= (float)effect / 100f;
                        }
                    }
                }
                //add person num
                int personNum = userPackage.GetManorPersonNumber();
                if (personNum == 2)
                {
                    proSpeed *= 1.6f;
                }
                else if (personNum == 3)
                {
                    proSpeed *= 2.2f;
                }
                else if (personNum == 4)
                {
                    proSpeed *= 2.8f;
                }
                if (proTimer != null)
                {
                    StopCoroutine(proTimer);
                }
                proTimer = StartCoroutine(ProduceTimer());
            }
        }
    }
Ejemplo n.º 29
0
    public void RefreshHud()
    {
        if (buildingGo == null || hudBinder == null)
        {
            return;
        }
        if (hudBinder == null)
        {
            return;
        }
        hudBinder.ClearHud();
        NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(buildingID);

        // check if can unlock or upgrade
        CheckIfCanUnlockOrUpgrade();
        // int configID = 0;
        // if(info != null)
        // {
        //     configID = info.configID;
        //     if(sanctuaryPackage.GetBulidingLevelByConfigID(configID) < 20)
        //         if(sanctuaryPackage.IsAbleToUnlockOrUpgrade(configID + 1))
        //             hudBinder.AddHud(HudType.Exmind);
        // }
        // else
        // {
        //     configID = sanctuaryPackage.GetConfigIDByBuildingType(buildingType);
        //     if(sanctuaryPackage.IsAbleToUnlockOrUpgrade(configID))
        //     hudBinder.AddHud(HudType.Exmind);
        // }


        if (info == null)
        {
            return;
        }
        BUILDING     config = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID);
        BuildingFunc func   = sanctuaryPackage.GetBuildingFuncByConfigID(info.configID);

        if (mState == BuildingState.Collect)
        {
            // NDictionary args = new NDictionary();
            // args.Add("id", config.ProId);
            // hudBinder.AddHud(HudType.Collect, args);
        }
        else if (mState == BuildingState.Upgrade)
        {
            NDictionary args = new NDictionary();
            //NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(buildingID);
            args.Add("finishtime", info.upgradeFinishTime);
            hudBinder.AddHud(HudType.CountDown, args);
        }
        if (func == BuildingFunc.Collect)
        {
            NDictionary args      = new NDictionary();
            var         configMap = ConfigDataStatic.GetConfigDataTable("BAR_TIME");
            BAR_TIME    barConfig = configMap[sanctuaryPackage.GetBulidingLevelByConfigID(info.configID)] as BAR_TIME;
            args.Add("interval", (float)barConfig.BarTime / 1000f);
            // float speed = (float)sanctuaryPackage.GetProSpeed(info.configID) / 3600;
            // args.Add("speed", speed);
            // args.Add("num", info.number);
            args.Add("building", this);
            hudBinder.AddHud(HudType.ProduceBar, args);
        }
        //collect hud
        if (mState == BuildingState.Idle)
        {
            if (info.number > 0)
            {
                SetCollect(true);
                mState = BuildingState.Collect;
            }

            if (func == BuildingFunc.Collect)
            {
                if (collectCo != null)
                {
                    StopCoroutine(collectCo);
                }
                collectCo = StartCoroutine(CollectTimer());
            }
        }
    }