Пример #1
0
    /// <summary>
    /// 캐릭터 스킨을 설정된 캐릭터 타입에 따라 초기화한다.
    /// </summary>
    /// <param name="characterType">캐릭터 타입</param>
    public void InitCharacter(EPlayerCharacterType characterType)
    {
        switch (characterType)
        {
        case EPlayerCharacterType.archer:
            for (int i = 0; i < warriorCharacters.Length; i++)
            {
                SetArcharSkin(archarSkinNumber);
            }
            break;

        case EPlayerCharacterType.warrior:
            for (int i = 0; i < archarCharacters.Length; i++)
            {
                SetWarriorSkin(warriorSkinNumber);
            }
            break;

        case EPlayerCharacterType.none:
            for (int i = 0; i < warriorCharacters.Length; i++)
            {
                SetArcharSkin(archarSkinNumber);
            }
            break;

        default:
            Debug.Assert(false, "캐릭터 선택이 안됨");
            break;
        }
    }
Пример #2
0
    /// <summary>
    /// 레벨과 캐릭터 타입에 따라 스텟을 설정한다.
    /// </summary>
    /// <param name="characterType">캐릭터 타입</param>
    /// <param name="level">설정 할 레벨(default : 1)</param>
    public void SetCharacterStat(EPlayerCharacterType characterType, int level = 1)
    {
        if (level <= 0) // level이 0 이하이면 1로 바꿈
        {
            level = 1;
        }
        this.level = level;

        if (characterType == EPlayerCharacterType.warrior)     // 전사의 Default 값을 설정
        {
            atk         = 10 + (level * 10);                   // 공격력 설정
            def         = 10 + (level * 10);                   // 방어력 설정
            moveSpeed   = 1;                                   // 이동 속도 설정
            attackSpeed = 1;                                   // 공격 속도 설정
            hp          = 100 + (level * 100);                 // 체력 설정
        }
        else if (characterType == EPlayerCharacterType.archer) // 궁수의 Default 값을 설정
        {
            atk         = 20 + (level * 15);                   // 공격력 설정
            def         = 5 + (level * 10);                    // 방어력 설정
            moveSpeed   = 1;                                   // 이동 속도 설정
            attackSpeed = 1;                                   // 공격 속도 설정
            hp          = 80 + (level * 80);                   // 체력 설정
        }
        else
        {
            Debug.LogWarning("캐릭터의 Default 수치를 설정하지 못했습니다.");
        }
    }
Пример #3
0
    /// <summary>
    /// MainScene이 켜지면 처음 세팅을 해준다.
    /// </summary>
    public void InitSetting()
    {
        defaultCharacterData = new UserData[characterCount];
        Debug.Log("defaultCharacterIndex : " + characterIndex);

        // 캐릭터의 상태가 아무것도 없으면// 현재 캐릭타입 상태가 none일 경우 현재 타입을 Warrior로 변환한다.
        if (EPlayerCharacterType.none == PlayerInformation.userData.characterType)
        {
            currentCharacterType = EPlayerCharacterType.warrior;
            backButton.SetActive(false);
        }
        else
        {
            backButton.SetActive(true);
        }

        // 현재 캐릭터 상태가 archar일 경우 archar가 있는 곳으로 화면을 돌린다
        if (EPlayerCharacterType.archer == PlayerInformation.userData.characterType)
        {
            currentCharacterType = EPlayerCharacterType.archer;
            OnClick_RightCharacterChoiceBtn();
        }
        Debug.Log("chararcterIndex 333 : " + characterIndex);
        StartCoroutine(IInitSetting());
    }
Пример #4
0
    /// <summary>
    /// 캐릭터의 설명 창을 업데이트 한다.
    /// </summary>
    /// <param name="characterType">선택 할 캐릭터 타입</param>
    private void UpdateCharacterDescription(EPlayerCharacterType characterType)
    {
        CharacterData characterData = null;

        // 캐릭터 설명 창 업데이트
        if (characterType == EPlayerCharacterType.warrior)
        {
            characterData         = Resources.Load <CharacterData>(PathOfResources.warriorData);
            characterImage.sprite = Resources.Load <Sprite>(PathOfResources.warriorFaceImage);
        }
        else if (characterType == EPlayerCharacterType.archer)
        {
            characterData         = Resources.Load <CharacterData>(PathOfResources.archarData);
            characterImage.sprite = Resources.Load <Sprite>(PathOfResources.archarFaceImage);
        }
        else
        {
            characterTypeText.text        = "";
            characterDescriptionText.text = "";
        }

        characterTypeText.text        = characterData.characterType;
        characterDescriptionText.text = characterData.characterDescription;

        PlayerInformation.userData.ChangeFaceImage(characterType); // 캐릭터 얼굴 이미지 바꾸기

        // 캐릭터 스텟 창 UI 업데이트
        //Debug.Log("hp : " + PlayerInformation.userData.hp + ", atk: " + PlayerInformation.userData.atk + ", def : " + PlayerInformation.userData.def + ", attack speed : " + PlayerInformation.userData.attackSpeed);
        hpSlider.value          = PlayerInformation.userData.hp / defaulMaxHp;
        attackSlider.value      = PlayerInformation.userData.atk / defaultMaxAtk;
        defenceSlider.value     = PlayerInformation.userData.def / defaultMaxDef;
        attackSpeedSlider.value = PlayerInformation.userData.attackSpeed / defaultMaxAttackSpeed;
    }
Пример #5
0
    /// <summary>
    /// 캐릭터가 존재하는지 체크한다.
    /// </summary>
    /// <param name="name">캐릭터 이름</param>
    /// <param name="characterType">캐릭터 타입</param>
    /// <returns>응답 메세지</returns>
    public IEnumerator ICheckCharacterExist(string name, EPlayerCharacterType characterType)
    {
        Debug.Log("4.3 characterType : " + characterType);
        WWWForm form = new WWWForm();

        form.AddField("Name", name);
        form.AddField("Character_Type", (int)characterType);

        UnityWebRequest www = UnityWebRequest.Post(CHECK_IF_USER_CHARACTER_EXIST_URL, form);

        yield return(www.SendWebRequest());

        if (www.isDone)
        {
            Debug.Log(" download handler : " + www.downloadHandler.text);

            JSONArray jsonArray = (JSONArray)JSON.Parse(www.downloadHandler.text);

            string message = jsonArray[0]["COUNT(User_Name)"];
            if (message == "1") // 1이면 존재한다
            {
                isExistCharacter[(int)characterType - 1] = true;
                Debug.Log("isExist 0 : " + isExistCharacter[0] + ", 1 : " + isExistCharacter[1]);
            }
        }
    }
Пример #6
0
    /// <summary>
    /// 캐릭터 선택 창의 모든 UI를 새롭게 업데이트 한다
    /// </summary>
    private void UpdateUIScreen()
    {
        UpdateButtonImage();                              // 버튼 이미지 업데이트
        currentCharacterType = (EPlayerCharacterType)characterIndex + 1;
        UpdateDefaultCharacterInformation();              // 캐릭터의 기본 정보로 업데이트
        UpdateCharacterDescription(currentCharacterType); // 캐릭터 설명 창 업데이트

        Debug.Log("characterIndex : " + characterIndex + " current character Type : " + currentCharacterType);
        // 캐릭터 타입이 이미 설정 되어 있으면

        Debug.Log("현재 플레이어 상태 :  " + PlayerInformation.userData.characterType + ",픽창 캐릭 상태 : " + currentCharacterType);;
    }
Пример #7
0
 /// <summary>
 /// 파라미테 값에 있는 데이터를 내부에 복사한다.
 /// </summary>
 /// <param name="data">복사할 유저 데이터</param>
 public void CopyData(UserData data)
 {
     name          = data.name;
     id            = data.id;
     exp           = data.exp;
     hp            = data.hp;
     def           = data.def;
     atk           = data.atk;
     moveSpeed     = data.moveSpeed;
     attackSpeed   = data.attackSpeed;
     gold          = data.gold;
     crystal       = data.crystal;
     level         = data.level;
     characterType = data.characterType;
     Stamina       = data.Stamina;
 }
Пример #8
0
    /// <summary>
    /// 캐릭터 얼굴 이미지를 바꾼다.
    /// </summary>
    /// <param name="characterType">바꿀 캐릭터 타입</param>
    public void ChangeFaceImage(EPlayerCharacterType characterType)
    {
        switch (characterType)
        {
        case EPlayerCharacterType.archer:
            characterFaceIcon = Resources.Load <Sprite>(PathOfResources.archarFaceImage);
            break;

        case EPlayerCharacterType.warrior:
            characterFaceIcon = Resources.Load <Sprite>(PathOfResources.warriorFaceImage);
            break;

        case EPlayerCharacterType.none:
            break;

        default:
            Debug.Assert(false);
            break;
        }
    }
Пример #9
0
    /// <summary>
    /// 유저의 캐릭터 데이터를 서버에서 불러와 플레이어 데이터에 저장한다.
    /// </summary>
    /// <param name="name">유저 이름</param>
    /// <param name="characterType">불러올 캐릭터 타입</param>
    /// <returns></returns>
    public IEnumerator ILoadCharacterDataFromServer(string name, EPlayerCharacterType characterType)
    {
        Debug.Log("코루틴 돌아감 ILoadUserDataFromServer");
        WWWForm form = new WWWForm();

        form.AddField("Name", name);
        form.AddField("Character_Type", (int)characterType);

        UnityWebRequest www = UnityWebRequest.Post(LOAD_CHARACTER_DATA, form);

        yield return(www.SendWebRequest());

        if (www.isDone)
        {
            Debug.Log("유저 데이터를 받아옴 : " + www.downloadHandler.text);

            // 서버에서 받아온 데이터를 저장.
            JSONArray json = (JSONArray)JSON.Parse(www.downloadHandler.text);

            PlayerInformation.userData.name = json[0]["User_Name"];
            //if (json[0]["Character_Type"] == EPlayerCharacterType.warrior.ToString())
            //{
            //    PlayerInformation.userData.characterType = EPlayerCharacterType.warrior;
            //}
            //else if (json[0]["Character_Type"] == EPlayerCharacterType.archer.ToString())
            //{
            //    PlayerInformation.userData.characterType = EPlayerCharacterType.archer;
            //}
            PlayerInformation.userData.hp          = json[0]["HP"];
            PlayerInformation.userData.atk         = json[0]["ATK"];
            PlayerInformation.userData.def         = json[0]["DEF"];
            PlayerInformation.userData.moveSpeed   = json[0]["SPD_MOV"];
            PlayerInformation.userData.attackSpeed = json[0]["SPD_ATK"];
            PlayerInformation.userData.gold        = json[0]["Gold"];
            PlayerInformation.userData.crystal     = json[0]["Crystal"];
            PlayerInformation.userData.exp         = json[0]["EXP"];
            PlayerInformation.userData.level       = json[0]["Level"];
            PlayerInformation.userData.Stamina     = json[0]["Stamina"];
        }
    }