Пример #1
0
    public void WingEquip(int wingid, int action)
    {
        WingData wingData = PlayerDataPool.Instance.MainData.mWingData;

        WingItemData        itemData  = wingData.GetWingItemDataById(wingid);
        WingCommonTableItem commonRes = DataManager.WingCommonTable[wingid] as WingCommonTableItem;
        string modelName    = WingModule.GetModelName(wingid, itemData.level);
        int    wingeffectId = WingModule.GetEffectId(wingid, (int)itemData.level);

        if (action == 0)
        {
            RemoveAttach(AttachMountType.Wing);
            GameDebug.Log("装备翅膀");
            ChangeAttach(AttachMountType.Wing, AssetConfig.WeaponPath + modelName, commonRes.modelSlot);
            if (wingeffectId != -1)
            {
                AddEffect((uint)wingeffectId, null, float.NaN, AttachMountType.Wing);
            }
        }
        else
        {
            GameDebug.Log("卸载翅膀");
            RemoveAttach(AttachMountType.Wing);
        }
    }
Пример #2
0
    public void OnWingSuccess()
    {
        AttachMent attachment = mAttachMents[(int)AttachMountType.Wing];

        if (attachment == null)
        {
            return;
        }

        WingCommonTableItem commonRes = DataManager.WingCommonTable[mWingID] as WingCommonTableItem;

        if (commonRes == null)
        {
            return;
        }
        int effectid = WingModule.GetEffectId(mWingID, (int)mWingLv);

        if (effectid == -1)
        {
            return;
        }

        uint         instid = ParticleUtility.AddEffect2MV(attachment.visual as MeshVisual, effectid, commonRes.modelSlot, SceneManager.Instance.GetCurScene().GetParticleManager());
        ParticleItem pitem  = SceneManager.Instance.GetCurScene().GetParticleManager().GetParticle(instid);

        if (pitem != null)
        {
            pitem.Layer = layermask;
        }
    }
Пример #3
0
        public static Target LoadScopes(this Target target, WingModule module)
        {
            //var attributed = typeof(Target).Assembly.GetTypes()
            var targetType = Type.GetType(target.ClrType);


            var attributed = targetType.GetProperties()
                             //.Where(prop => Attribute.IsDefined(prop, typeof(WingScopeAttribute))).ToList();
                             .Where(t => t.GetCustomAttributes <WingTargetElementAttribute>().Any()).ToList();

            //var namespaced = attributed.Where(t => t.GetCustomAttribute<WingScopeAttribute>(). == module.GetType().Namespace || t.Namespace == typeof(Target).Namespace)
            //                           .ToList();

            ////var namespaced = attributed.Where(t => t.Namespace == module.GetType().Namespace || t.Namespace == typeof(Target).Namespace)
            ////                           .ToList();

            //var enums = namespaced.Where(t => t.IsEnum || (t.IsGenericType && t.GetGenericArguments().First().IsEnum));



            var theScopes = attributed.Where(t => t.PropertyType.IsEnum || (t.PropertyType.IsGenericType && t.PropertyType.GetGenericArguments().First().IsEnum))
                            .Select(prop => new { Type = prop.PropertyType, Attribute = prop.PropertyType.GetGenericArguments().First().GetCustomAttributes <WingScopeAttribute>().FirstOrDefault() })
                            .ToList();

            theScopes.ForEach(v => v.Attribute.CreateScope(target, v.Type.IsGenericType ? v.Type.GetGenericArguments().First() : v.Type));

            return(target);
        }
Пример #4
0
    public void SetupWing(int resid)
    {
        if (!DataManager.WingCommonTable.ContainsKey(resid))
        {
            return;
        }

        WingCommonTableItem wingtable = DataManager.WingCommonTable[resid] as WingCommonTableItem;

        if (wingtable == null)
        {
            GameDebug.LogError("WingTable 没有找到 id = " + resid.ToString());
            return;
        }

        if (resid != mResid)
        {
            if (mWing != null)
            {
                mWing.Destroy();
            }

            mResid = resid;
            mWing  = new MeshVisual();
            WingItemData itemData  = PlayerDataPool.Instance.MainData.mWingData.GetWingItemDataById(mResid);
            string       modleName = WingModule.GetModelName(itemData.id, itemData.level);
            //mWing.CreateWithConfig(AssetConfig.WeaponPath + modleName,
        }
    }
Пример #5
0
        public static Wing FactoryWing(this WingModule module)
        {
            var attr = module.GetType().GetCustomAttribute <WingModuleAttribute>();

            if (attr == null)
            {
                throw new InvalidWingModuleException(string.Format("{0} does not have proper metadata attribute", module.Description));
            }
            return(attr.FactoryWing());
        }
Пример #6
0
 private void Init()
 {
     mNeedInit   = false;
     mWingMoudle = ModuleManager.Instance.FindModule <WingModule>();
     for (int i = 1; i <= mWingMoudle.GetWingPageCount(); ++i)
     {
         CreateWingItem(i);
     }
     winggrid.GetComponent <UIGrid>().repositionNow = true;
     CurPageNum = 1;
     upDownAniHandler();
     mIsDirty = true;
 }
Пример #7
0
    public void ChangeWing(int wingid, uint winglv)
    {
        if (mWingID == wingid && mWingLv == winglv)
        {
            return;
        }
        mWingID = wingid;
        mWingLv = winglv;

        WingCommonTableItem commonRes = DataManager.WingCommonTable[wingid] as WingCommonTableItem;

        if (commonRes == null)
        {
            return;
        }
        string     modelName = WingModule.GetModelName(wingid, winglv);
        MeshVisual visual    = new MeshVisual();

        visual.CreateWithConfig(AssetConfig.WeaponPath + modelName, null, null, false);
        ChangeAttach(AttachMountType.Wing, visual, commonRes.modelSlot);
    }
Пример #8
0
        public static Wing LoadTargets(this Wing wing, WingModule module, ISession session = null)
        {
            //&& typeof(ContentPartRecord).IsAssignableFrom(t)
            var assy = module.GetType().Assembly;

            if (session == null)
            {
                assy.GetTypes()
                .Where(t => t.Namespace == module.GetType().Namespace&&
                       t.GetCustomAttribute <WingTargetAttribute>() != null)
                .Select(t => new { Type = t, Attribute = t.GetCustomAttribute <WingTargetAttribute>() })
                .ToList()
                .ForEach(v => v.Attribute
                         .CreateTarget(wing, v.Attribute.Guid, v.Type, v.Attribute.IsTrendingEnabled, v.Attribute.DisplayOrder)
                         .LoadElements(v.Type));
            }
            else
            {
                var targetTypeAttributes = assy
                                           .GetTypes()
                                           .Where(t => t.GetCustomAttribute <WingTargetAttribute>() != null)
                                           .Select(t => new { Type = t, Attribute = t.GetCustomAttribute <WingTargetAttribute>() })
                                           .ToList();

                foreach (var attribute in targetTypeAttributes)
                {
                    if (session.Query <Target>().Any(t1 => t1.Guid != attribute.Attribute.Guid))
                    {
                        continue;
                    }

                    attribute.Attribute
                    .CreateTarget(wing, attribute.Attribute.Guid, attribute.Type, attribute.Attribute.IsTrendingEnabled, attribute.Attribute.DisplayOrder)
                    .LoadElements(attribute.Type);
                }
            }

            return(wing);
        }
Пример #9
0
    private void OnWingUpdate(EventBase e)
    {
        WingModule module = ModuleManager.Instance.FindModule <WingModule>();
        List <int> list   = module.GetUnlockWing();

        for (int i = 0; i < msMaxWingNum; ++i)
        {
            if (i < list.Count)
            {
                mWingObject[i].SetActive(true);
                WingCommonTableItem commonRes = DataManager.WingCommonTable[list[i]] as WingCommonTableItem;
                if (commonRes != null)
                {
                    ItemTableItem itemRes = ItemManager.GetItemRes(commonRes.costId);
                    if (itemRes != null)
                    {
                        UIAtlasHelper.SetSpriteImage(mWingIcon[i], itemRes.picname);
                        uint wingLevel = module.GetWingLevel(list[i]);
                        if (wingLevel > 0)
                        {
                            mWingLevel[i].gameObject.SetActive(true);
                            mWingLevel[i].text = "Lv " + wingLevel;
                        }
                        else
                        {
                            mWingLevel[i].gameObject.SetActive(false);
                        }
                    }
                }
            }
            else
            {
                mWingObject[i].SetActive(false);
                UIAtlasHelper.SetSpriteImage(mWingIcon[i], null);
            }
        }
    }
Пример #10
0
 public static Target LoadTarget(this WingModule module, Target target)
 {
     target.LoadScopes(module).ReconcileElementScopes();
     return(target);
 }
Пример #11
0
    private void UpdateUI()
    {
        mIsDirty = false;
        jinglianBtn.isEnabled     = !mWingMoudle.IsFullLevel();
        jinglianTxt.applyGradient = jinglianBtn.isEnabled;

        WingCommonTableItem mCommorRes;

        WingItemUI wing_item_ui = mWingItemUIList[CurPageNum - 1];

        if (wing_item_ui == null)
        {
            GameDebug.LogError("获取wing_item_ui失败");
            return;
        }

        IsTryOn            = wing_item_ui.IsTryOn;
        State              = mWingMoudle.GetWingState(CurPageNum);
        wing_item_ui.State = State;
        mCommorRes         = mWingMoudle.GetCommonResByIndex(CurPageNum);
        //GameDebug.Log("state:"+State);
        wingName.text = mCommorRes.wingName;

        if (State == WingState.Locked)
        {
            int  condition;
            bool isActive = mWingMoudle.CheckCondition(ref mCommorRes, out condition);
            wing_item_ui.SetDaChengPicVisable(Convert.ToInt32(condition));
            WingDescriptText.text = mCommorRes.desc;
            jihuotiaojianTxt.text = StringHelper.GetString("wing_condition");
            zhanValue.text        = StringHelper.GetString("wing_no_active");
            for (int i = 0; i < WingDefine.MaxConditonNum; ++i)
            {
                if ((condition & (1 << i)) == 0) //条件没有达成
                {
                    UIAtlasHelper.SetSpriteImage(mConditionUIList[i].biaoji1, "wing0:wing0-nocom", true);
                    UIAtlasHelper.SetSpriteImage(mConditionUIList[i].num1, "wing0:wing0-019");
                }
                else
                {
                    UIAtlasHelper.SetSpriteImage(mConditionUIList[i].biaoji1, "wing0:wing0-003", true);
                    UIAtlasHelper.SetSpriteImage(mConditionUIList[i].num1, "wing0:wing0-011");
                }

                Type tp                = mCommorRes.GetType();
                int  conditionId       = Convert.ToInt32(tp.GetField(("condition" + (i + 1))).GetValue(mCommorRes));
                ConditionTableItem cti = DataManager.ConditionTable[conditionId] as ConditionTableItem;
                if (cti != null)
                {
                    mConditionUIList[i].content1.text = cti.mDesc;
                }
            }

            jihuoAni.gameObject.SetActive(isActive);
            equipWord.text = StringHelper.GetString("wing_equip");
            UIAtlasHelper.SetButtonImage(equipBtn, "common:btn_yellow_4word");
            tip.gameObject.SetActive(true);
            tip.text = StringHelper.GetString("wingtip").Replace("?", mCommorRes.middleLevel.ToString());
        }
        else
        {
            WingItemData       wing_item_data;
            WingLevelTableItem wing_level_res;

            if (!mWingMoudle.GetWingItemData(CurPageNum, out wing_item_data))
            {
                return;
            }
            if (!mWingMoudle.GetWingLevelRes(wing_item_data.id, (int)wing_item_data.level, out wing_level_res))
            {
                return;
            }
            levelnum.text         = "LV" + wing_item_data.level;
            zhanValue.text        = wing_level_res.battleScore.ToString();
            jihuotiaojianTxt.text = StringHelper.GetString("wing_property");
            if (wing_item_data.level < WingDefine.Max_Wing_Level)
            {
                string re             = StringHelper.GetString("nextlevel") + ":";
                var    next_level_res = DataManager.WingLevelTable[wing_item_data.id * 1000 + wing_item_data.level + 1] as WingLevelTableItem;
                if (next_level_res != null)
                {
                    nextLevel.text        = re + GetPropString(next_level_res.propertyType, next_level_res.propertyNum);
                    levelPercent.text     = wing_item_data.process + "/" + next_level_res.costNum;
                    levelProcessbar.value = (float)wing_item_data.process / (float)next_level_res.costNum;
                }
            }
            else
            {
                nextLevel.text        = "";
                levelPercent.text     = "已满级";
                levelProcessbar.value = 1;
            }
            buffDesc.text = wing_level_res.buffDesc;
            string picName = WingModule.GetWingPic(wing_item_data.id, (int)wing_item_data.level);
            if (picName != mWingItemUIList[CurPageNum - 1].mWingSprite.spriteName)
            {
                UIAtlasHelper.SetSpriteImage(mWingItemUIList[CurPageNum - 1].mWingSprite, picName);
            }

            for (int i = 0; i < WingDefine.PropertyNum; i++)
            {
                uint num      = 0;
                uint totalnum = 0;
                switch (i)
                {
                case 0:
                    num      = wing_item_data.life;
                    totalnum = wing_item_data.liftTotal;
                    break;

                case 1:
                    num      = wing_item_data.attack;
                    totalnum = wing_item_data.attackTotal;
                    break;

                case 2:
                    num      = wing_item_data.defence;
                    totalnum = wing_item_data.defenceTotal;
                    break;

                case 3:
                    num      = wing_item_data.critical;
                    totalnum = wing_item_data.criticalTotal;
                    break;

                case 4:
                    num      = wing_item_data.power;
                    totalnum = wing_item_data.powerTotal;
                    break;
                }

                mProps[i].propname.text        = GetPropString(i, num);
                mProps[i].propProcessBar.value = (float)num / (float)totalnum;

                if (mProps[i].propProcessBar.value.Equals(1))
                {
                    UIAtlasHelper.SetSpriteImage(mProps[i].foreGround, "common:process_short_fg1");
                }
                else
                {
                    UIAtlasHelper.SetSpriteImage(mProps[i].foreGround, "common:processbar_short_fg2");
                }
            }

            UIAtlasHelper.SetSpriteImage(stuff, ItemManager.Instance.getItemBmp(mCommorRes.costId));
            stuffname.text = ItemManager.Instance.getItemName(mCommorRes.costId);
            PlayerDataModule pdm = ModuleManager.Instance.FindModule <PlayerDataModule>();
            stuffnum.text = pdm.GetItemNumByID(mCommorRes.costId).ToString();

            if (State == WingState.Wear)
            {
                equipWord.text = StringHelper.GetString("wing_takeoff");
                UIAtlasHelper.SetButtonImage(equipBtn, "common:btn_blue_4word");
            }
            else
            {
                equipWord.text = StringHelper.GetString("wing_equip");
                UIAtlasHelper.SetButtonImage(equipBtn, "common:btn_yellow_4word");
            }
            int level = wing_item_data.level < mCommorRes.middleLevel ? mCommorRes.middleLevel : mCommorRes.hightLevel;
            tip.text = StringHelper.GetString("wingtip").Replace("?", level.ToString());
            tip.gameObject.SetActive(wing_item_data.level < mCommorRes.middleLevel);
        }
        pageBar.CurPageNum = mWingMoudle.GetWingPageCount();
        pageBar.LockPage   = PlayerDataPool.Instance.MainData.mWingData.GetLockIndex();
    }