Ejemplo n.º 1
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.º 2
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.º 3
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());
            }
        }
    }
Ejemplo n.º 4
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());
            }
        }
    }
    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.º 6
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);
    }