コード例 #1
0
    private void Awake()
    {
        DontDestroyOnLoad(this.gameObject);                                     //삭제 되지 않게함

        m_dictionarySkillDataBase = new Dictionary <int, cSkillInformation>();  //Dictionary 인스턴스 할당

        m_textAssetSkillData = (TextAsset)Resources.Load("chakraweapon_skill"); //Resoruces폴더에서 데이터파일 불러들임

        string sSkillData = m_textAssetSkillData.text;                          //텍스트 에셋의 text를 저장

        string[] sSplitSkillData = sSkillData.Split('\n');                      //엔터를 기준으로 나눠서 다시 저장

        List <string> listSkillData = new List <string>();                      //엔터를 기준으로 나눈 텍스를 저장할 리스트 선언

        foreach (string splitData in sSplitSkillData)                           //리스트에 텍스트 저장
        {
            listSkillData.Add(splitData);
        }


        listSkillData.RemoveAt(0);                                              //: 처음과 끝부분 데이터를 지움
        listSkillData.Reverse();                                                //  (처음과 끝에는 아무것도 들어있지 않음)
        listSkillData.RemoveAt(0);                                              //
        listSkillData.Reverse();                                                //:

        List <string[]> listSkillDataArray = new List <string[]>();             // ","로 구분지어서 나눌 문자열 배열형 리스트를 선언

        foreach (string skillData in listSkillData)                             // ","로 구분지어서 나눠서 담음
        {
            string[] skillDataArray = skillData.Split(',');
            listSkillDataArray.Add(skillDataArray);
        }

        foreach (string[] skillDataArray in listSkillDataArray)                 // 여기서부터 스킬에 정보를 할당하고
        {
            cSkillInformation skill = new cSkillInformation();

            skill.m_nIdNumber      = Int32.Parse(skillDataArray[0]);                         //스킬 고유번호
            skill.m_sKoreanName    = skillDataArray[1];                                      //스킬 한글명
            skill.m_sName          = skillDataArray[2];                                      //스킬 영문명
            skill.m_eType          = (Information.eSkillType)Int32.Parse(skillDataArray[3]); //스킬 계열
            skill.m_nChainLevel    = Int32.Parse(skillDataArray[4]);                         //스킬 연계레벨
            skill.m_eElement       = (Information.eElement)Int32.Parse(skillDataArray[5]);   //스킬 원소 속성
            skill.m_nDamageType    = Int32.Parse(skillDataArray[6]);                         //스킬 공격 속성
            skill.m_fDamage        = float.Parse(skillDataArray[7]);                         //스킬 계수
            skill.m_nChakraCost    = Int32.Parse(skillDataArray[8]);                         //스킬 차크라 소모량
            skill.m_sInfo          = skillDataArray[9];                                      //스킬 정보
            skill.m_nOptionNumber  = Int32.Parse(skillDataArray[10]);                        //스킬 옵션번호
            skill.m_sOption_1_Info = skillDataArray[11];                                     //스킬 옵션1 정보
            skill.m_sOption_2_Info = skillDataArray[12];                                     //스킬 옵션2 정보
            skill.m_sOption_3_Info = skillDataArray[13];                                     //스킬 옵션3 정보

            //이미지 경로(작성해야함)
            //skill.m_imageIcon = (Image)Resources.Load(skillDataArray[14]);

            m_dictionarySkillDataBase.Add(skill.m_nIdNumber, skill);                //스킬 고유번호를 키값으로 스킬을 Dictioary에 담는다
        }
    }
コード例 #2
0
    private void InputSkillsForTest()
    {
        m_nCurrentSkillSlotIndex = 1;

        for (int i = 0; i < cSkillDataBase.Instance.m_dictionarySkillDataBase.Count; i++)
        {
            cSkillInformation skill = new cSkillInformation();
            skill = cSkillDataBase.Instance.m_dictionarySkillDataBase[i - 1];
            m_dicSkills.Add(skill.m_nIdNumber, skill);
        }
    }
コード例 #3
0
    private string IsSkillIn(int index, int step, Information.eClick mouse)
    {
        cSkillInformation skill = null;

        switch (index)
        {
        case 1:
            skill = cCharacterInformation.Instance.m_listDicMeleeSkillSlot[step][mouse];
            break;

        case 2:
            skill = cCharacterInformation.Instance.m_listDicRangeSkillSlot[step][mouse];
            break;

        case 3:
            skill = cCharacterInformation.Instance.m_listDicOtherSkillSlot[step][mouse];
            break;
        }

        return(skill.m_sName);
    }
コード例 #4
0
    /// <summary>
    /// 스킬을 플레이어 자신의 슬롯에 장착함
    /// </summary>
    public void SelectSkill()
    {
        //print(m_nSkillIdNumber + " : " + m_eClickedButton.ToString());
        if (m_eClickedButton == Information.eClick.NONE)
        {
            return;
        }

        cSkillInformation skill = cCharacterInformation.Instance.m_dicSkills[m_nSkillIdNumber];

        Information.eSkillType nSkillType = skill.m_eType;
        int nSkillStep = skill.m_nChainLevel;
        List <Dictionary <Information.eClick, cSkillInformation> > listDicSkillTree = null;

        // 스킬트리가 선택되는 부분
        switch (nSkillType)
        {
        case Information.eSkillType.MELEE:
            listDicSkillTree = cCharacterInformation.Instance.m_listDicMeleeSkillSlot;
            break;

        case Information.eSkillType.RANGE:
            listDicSkillTree = cCharacterInformation.Instance.m_listDicRangeSkillSlot;
            break;

        case Information.eSkillType.OTHER:
            listDicSkillTree = cCharacterInformation.Instance.m_listDicOtherSkillSlot;
            break;
        }

        // 선택된 스킬트리에 선택한 스킬 집어넣는 부분
        if (listDicSkillTree == null)
        {
            return;
        }
        listDicSkillTree[nSkillStep][m_eClickedButton] = skill;


        m_eClickedButton = Information.eClick.NONE;
    }
コード例 #5
0
    private cSkillInformation m_cSkillInformation;             //스킬데이터 베이스 얕은복사

    #endregion

    void Awake()
    {
        //스킬데이터 베이스 얕은복사
        m_cSkillInformation = cSkillDataBase.Instance.m_dictionarySkillDataBase[0];
    }
コード例 #6
0
ファイル: cCaster.cs プロジェクト: HongJunYeong/ChakraWeapon
    /// <summary>
    /// 좌, 우클릭을 통한 스킬을 선택 및 시전한다.
    /// </summary>
    public void CastSkill()
    {
        // >> 스킬 선택하는 부분
        cSkillInformation cCurrentSkill = null;

        if (Input.GetMouseButtonDown(0))
        {
            cCurrentSkill = cCharacterInformation.Instance.m_dicCurrentSkillSlot[Information.eClick.L_CLICK];
            cCharacterInformation.Instance.m_eClick = Information.eClick.L_CLICK;
        }
        else if (Input.GetMouseButtonDown(1))
        {
            cCurrentSkill = cCharacterInformation.Instance.m_dicCurrentSkillSlot[Information.eClick.R_CLICK];
            cCharacterInformation.Instance.m_eClick = Information.eClick.R_CLICK;
        }
        // <<
        print(cCurrentSkill.m_sName);

        // >> 스킬 시전 가능여부 검사하는 부분
        if (cCharacterInformation.Instance.m_nChkra < cCurrentSkill.m_nChakraCost)
        {
            Debug.Log("차크라가 부족합니다.");
            return;
        }
        // <<


        // >> 스킬 실제 시전하는 부분
        print(cCurrentSkill.m_nIdNumber + "시전");
        // 콤보가 0이 아닐때, 시전 스킬이 비어있는 경우는 종료되도록
        if (cCurrentSkill.m_nIdNumber == -1)
        {
            switch (cCharacterInformation.Instance.m_nCurrentSkillSlotIndex)
            {
            case 1:
                if (cCharacterInformation.Instance.m_nMeleeSkillComboStep >= 1)
                {
                    return;
                }
                break;

            case 2:
                if (cCharacterInformation.Instance.m_nRangeSkillComboStep >= 1)
                {
                    return;
                }
                break;

            case 3:
                if (cCharacterInformation.Instance.m_nOtherSkillComboStep >= 1)
                {
                    return;
                }
                break;
            }
        }
        else
        {
            m_arraySkill[cCurrentSkill.m_nIdNumber].gameObject.SetActive(true);
        }
        // <<



        // >> 스킬 사용시 공통적으로 변경되는 정보들
        // 일반공격/스킬사용 버튼 중 일반공격 눌렀을 경우
        if (cCurrentSkill.m_nIdNumber == 0 ||
            cCurrentSkill.m_nIdNumber == 15 ||
            cCurrentSkill.m_nIdNumber == 30)
        {
        }
        // 일반공격/스킬사용 버튼 중 스킬사용 눌렀을 경우
        else if (cCurrentSkill.m_nIdNumber == -1)
        {
            switch (cCharacterInformation.Instance.m_dicCurrentSkillSlot[Information.eClick.L_CLICK].m_eType)
            {
            case Information.eSkillType.MELEE:
                cCharacterInformation.Instance.m_nMeleeSkillComboStep += 1;
                break;

            case Information.eSkillType.RANGE:
                cCharacterInformation.Instance.m_nRangeSkillComboStep += 1;
                break;

            case Information.eSkillType.OTHER:
                cCharacterInformation.Instance.m_nOtherSkillComboStep += 1;
                break;
            }
        }
        //그 외
        else
        {
            switch (cCurrentSkill.m_eType)
            {
            case Information.eSkillType.MELEE:
                cCharacterInformation.Instance.m_nMeleeSkillComboStep += 1;
                if (cCharacterInformation.Instance.m_nMeleeSkillComboStep > 3)
                {
                    cCharacterInformation.Instance.m_nMeleeSkillComboStep = 0;
                }
                break;

            case Information.eSkillType.RANGE:
                cCharacterInformation.Instance.m_nRangeSkillComboStep += 1;
                if (cCharacterInformation.Instance.m_nRangeSkillComboStep > 3)
                {
                    cCharacterInformation.Instance.m_nRangeSkillComboStep = 0;
                }
                break;

            case Information.eSkillType.OTHER:
                cCharacterInformation.Instance.m_nOtherSkillComboStep += 1;
                if (cCharacterInformation.Instance.m_nOtherSkillComboStep > 3)
                {
                    cCharacterInformation.Instance.m_nOtherSkillComboStep = 0;
                }
                break;
            }

            // 콤보제한시간 안끝났으면 +1
            if (cCharacterInformation.Instance.m_fComboLimitTime > 0)
            {
                cCharacterInformation.Instance.m_nTotalComboNum += 1;
            }

            // 스킬 쓴 뒤 콤보제한시간 최대치부터 다시 시작
            cCharacterInformation.Instance.m_fComboLimitTime = cCharacterInformation.Instance.m_fMaxComboLimitTime;
        }
        // <<
    }