Beispiel #1
0
    protected override void OnRequest(request_skill_op request, object userdata)
    {
        if (userdata is SkillEquipActionParam)
        {
            SkillEquipActionParam param = userdata as SkillEquipActionParam;
            request.op_type = (int)SKILL_OP_TYPE.SKILL_OP_EQUIP;

            skill_equip_info info = new skill_equip_info();
            for (int i = 0; i < param.EquipIdx.Length; ++i)
            {
                info.equip_id.Add(param.EquipIdx[i]);
            }
            request.equip_info = info;
        }
        if (userdata is SkillLevelActionParam)
        {
            SkillLevelActionParam param = userdata as SkillLevelActionParam;
            request.op_type = (int)SKILL_OP_TYPE.SKILL_OP_LEVEL;

            for (int i = 0; i < param.SkillIdxs.Count; ++i)
            {
                request.skill_idx.Add(param.SkillIdxs[i]);
            }

            for (int i = 0; i < param.DefaultEquips.Count; ++i)
            {
                request.default_equip_idx.Add(param.DefaultEquips[i]);
            }
        }
        if (userdata is SkillWeaponSkillParam)
        {
            request.op_type = (int)SKILL_OP_TYPE.SKILL_OP_UNLOCK_WEAPON_SKILL;
        }
    }
Beispiel #2
0
    /// <summary>
    /// 装备/切换技能;
    /// idx : 技能槽索引[1,4];
    /// skillId : 技能Id;
    /// </summary>
    public void EquipSkill(int idx, int skillId)
    {
        PlayerData pd = PlayerDataPool.Instance.MainData;

        if (pd == null)
        {
            Debug.LogError("MainData is Null");
            return;
        }

        if (idx < 1 || idx > SkillMaxCountDefine.MAX_EQUIP_SKILL_NUM)
        {
            Debug.LogError("技能槽索引值无效");
            return;
        }

        if (IsSlotLocked(idx))
        {
            Debug.LogError("技能槽还没有解锁,装备技能失败");
            return;
        }

        PlayerSkillData skillData = pd.skillData;

        idx -= 1;
        //要装备的技能在技能槽中存在且在技能槽中的位置不变,不做操作;
        if (skillData.skills[idx] == skillId)
        {
            return;
        }

        int[] skillIds = new int[4];
        skillIds = skillData.skills;

        int slotIdx = -1;

        if (!GetSlotIdxBySkillID(skillId, ref slotIdx))
        {
            skillIds[idx] = skillId;
        }
        //如果要装备的技能在技能槽中存在,在技能槽的位置改变,那么互换该技能原来位置和现在的技能槽的位置;
        else
        {
            int temp = skillData.skills[idx];

            skillIds[idx]     = skillId;
            skillIds[slotIdx] = temp;
        }

        SkillEquipActionParam param = new SkillEquipActionParam();

        param.EquipIdx = skillIds;
        Net.Instance.DoAction((int)MESSAGE_ID.ID_MSG_SKILL, param);

        #region
        //int slotIdx = -1;
        ////记录哪个位置的技能槽发生改变;
        //ArrayList changeIdx = new ArrayList();
        ////记录哪个位置的技能发生改变;
        //ArrayList changeSkillIdx = new ArrayList();
        ////要装备的技能在技能槽中不存在,直接替换为该技能;
        //if(!GetSlotIdxBySkillID(skillId , ref slotIdx))
        //{
        //    changeSkillIdx.Clear();
        //    changeSkillIdx.Add(skillId);
        //    changeSkillIdx.Add(skillData.skills[idx]);

        //    skillData.skills[idx] = skillId;

        //    changeIdx.Clear();
        //    changeIdx.Add(idx);

        //}
        ////如果要装备的技能在技能槽中存在,在技能槽的位置改变,那么互换该技能原来位置和现在的技能槽的位置;
        //else
        //{
        //    int temp = skillData.skills[idx];

        //    skillData.skills[idx] = skillId;
        //    skillData.skills[slotIdx] = temp;

        //    changeIdx.Clear();
        //    changeIdx.Add(idx);
        //    changeIdx.Add(slotIdx);

        //    changeSkillIdx.Clear();
        //    changeSkillIdx.Add(temp);
        //    changeSkillIdx.Add(skillId);
        //}

        //SkillUIEvent se = new SkillUIEvent(SkillUIEvent.SKILL_SLOT_CHANGE);
        //se.msg = changeIdx;//记录的slotIdx有效范围[0...3]
        //EventSystem.Instance.PushEvent(se);

        //SkillUIEvent se1 = new SkillUIEvent(SkillUIEvent.SKILL_LIST_CHANGE);
        //se1.msg = changeSkillIdx;
        //EventSystem.Instance.PushEvent(se1);
        #endregion
    }