예제 #1
0
    protected virtual void InitialStatus(int level)
    {
        switch (level)
        {
        case 1:
            maxHeart = heart = Random.Range(6, 8);
            sword    = Random.Range(2, 4);
            shield   = Random.Range(0, 1);
            break;

        case 2:
            maxHeart = heart = Random.Range(8, 12);
            sword    = Random.Range(4, 6);
            shield   = Random.Range(0, 2);
            break;

        case 3:
            maxHeart = heart = Random.Range(10, 15);
            sword    = Random.Range(7, 10);
            shield   = Random.Range(1, 3);
            break;

        case 4:
        default:
            maxHeart = heart = Random.Range(15, 20);
            sword    = Random.Range(8, 12);
            shield   = Random.Range(2, 4);
            break;
        }
        characterType = (CHARACTER_TYPE)Random.Range(0, 3);

        alive = true;
    }
예제 #2
0
    public void setCharacter(CHARACTER_TYPE character)
    {
        Sprite sprite = warriorSprite;
        Color  color  = Color.yellow;

        switch (character)
        {
        case CHARACTER_TYPE.WARRIOR:
            color  = Color.yellow;
            sprite = warriorSprite;
            break;

        case CHARACTER_TYPE.THIEF:
            color  = Color.green;
            sprite = thiefSprite;
            break;

        case CHARACTER_TYPE.MAGE:
            color  = Color.blue;
            sprite = mageSprite;
            break;
        }
        spriteObj.GetComponent <SpriteRenderer>().sprite = sprite;
        var main = particleObj.GetComponent <ParticleSystem>().main;

        main.startColor = color;
    }
예제 #3
0
 public override void init()
 {
     base.init();
     mCharacterType = CHARACTER_TYPE.CT_MAX;
     mName          = null;
     mGUID          = CommonDefine.INVALID_ID;
 }
예제 #4
0
    public Dictionary <CHARACTER_TYPE, DefaultCharacterInfo> loadDefaultCharacterInfo() // SCV파일로된 캐릭터 타입별 디폴트 스텟정보를 로드해 반환
    {
        Debug.Log("캐릭터 디폴트 정보 불러오기");
        if (m_bloadDefulatCharacterInfoState == false)
        {
            Debug.Log("CSV 파일에서 캐릭터 디폴트 정보 불러오기");
            TextAsset text    = Resources.Load <TextAsset>("Data/DefaultCharacterInfo"); // 리소스 로드를 통해 테이블을 로드한다.
            string    content = text.text;                                               // content안에는 1줄로 데이터가 쭉 나열되어 있다.
            string[]  line    = content.Split('\n');                                     // string을 '\n' 기준으로 분리해서 line배열에 넣는다.
            for (int i = 2; i < line.Length - 1; i++)                                    // 0 ~ 1번 라인은 테이블 타입 구분 용도로 사용한다. 2번째 라인부터 라인 갯수만큼 테이블 생성 (마지막NULL 한칸 제외해서 -1라인)
            {
                string[]             column = line[i].Split(',');                        // 열의 정보값을 ','로 구분해 column배열에 넣는다. SCV파일은 ,로 구분되어 있으므로
                DefaultCharacterInfo table  = new DefaultCharacterInfo();                // SCV순서와 구조체 데이터 형식이 일치하여야 함
                CHARACTER_TYPE       key    = CHARACTER_TYPE.NONE;                       // key값이 될 캐릭터 종류
                int index = 0;                                                           // 0번째 열부터 시작

                key               = (CHARACTER_TYPE)int.Parse(column[index++]);          // 첫번째 값을 정수형으로 받은 후 enum으로 전환해 key에 대입
                table.m_iMaxExp   = int.Parse(column[index++]);
                table.m_iMaxExpUp = int.Parse(column[index++]);
                table.m_iMaxHp    = int.Parse(column[index++]);
                table.m_iMaxHpUp  = int.Parse(column[index++]);
                table.m_iStr      = int.Parse(column[index++]);
                table.m_iStrUp    = int.Parse(column[index++]);
                table.m_iDef      = int.Parse(column[index++]);
                table.m_iDefUp    = int.Parse(column[index++]);
                m_dicDefaultCharacterInfo.Add(key, table);
            }
            m_bloadDefulatCharacterInfoState = true;
        }
        Debug.Log("캐릭터 디폴트 정보 불러오기 완료");
        return(m_dicDefaultCharacterInfo);
    }
 public override void init()
 {
     base.init();
     mCharacterType = CHARACTER_TYPE.CT_MAX;
     mName          = "";
     mID            = -1;
 }
예제 #6
0
    static public CharacterFactory createFactory(Type classType, CHARACTER_TYPE type)
    {
        object[]         param   = new object[] { type, classType }; //构造器参数
        CharacterFactory factory = Activator.CreateInstance(typeof(CharacterFactory), param) as CharacterFactory;

        return(factory);
    }
예제 #7
0
    private List <CharPartyData> m_ListEnemyParty = new List <CharPartyData>(); //에너미 파티용 데이터

    public void Init(int iMapIndex, int iBlockIndex, CHARACTER_TYPE eType)
    {
        m_iMapIndex   = iMapIndex; //에너미 인덱스 숫자
        m_iBlockIndex = iBlockIndex;
        m_eType       = eType;

        //파티 데이터만 셋팅
        try
        {
            string Route      = "Excel/MapData/" + m_iMapIndex + "/" + m_iBlockIndex + "_" + eType.ToString();
            var    EnemyTable = EXCEL.ExcelLoad.Read(Route);

            for (int i = 0; i < EnemyTable.Count; i++)
            {
                Route = "Excel/EnemyClass/" + EnemyTable[i][CHARACTER_DATA.CHAR_CLASS_TYPE.ToString()];
                var EnemyClass = EXCEL.ExcelLoad.Read(Route);
                PartyDataSetting(i, EnemyTable, EnemyClass);
            }
            //에너미 데이터 셋팅
            Debug.Log("Enemy Data Setting");
        }
        catch
        {
            Debug.Log("Enemy Data Setting Error");
        }
    }
예제 #8
0
 public void Icon1()
 {
     m_eCharacterType = CHARACTER_TYPE.UNITY;
     m_selectIllustTexture.mainTexture = Resources.Load("Texture/UnityChan0", typeof(Texture2D)) as Texture2D;
     m_selectCharacterNameLabel.text   = "UNITY-CHAN";
     m_selectIntroduceLabel.text       = "클래스 : 격투가\n착용무기 : 너클\n\n빠른 스피드와 접근전에서 강력한 데미지를 주는 근거리 타격 캐릭터이다.";
 }
예제 #9
0
 public void icon2()
 {
     m_eCharacterType = CHARACTER_TYPE.AKAZA;
     m_selectIllustTexture.mainTexture = Resources.Load("Texture/Akaza0", typeof(Texture2D)) as Texture2D;
     m_selectCharacterNameLabel.text   = "AKAZA";
     m_selectIntroduceLabel.text       = "클래스 : 마검사\n착용무기 : 장검\n\n장검과 흑마법을 연계한 이용한 넓은 범위의 공격범위를 가지는 캐릭터이다.";
 }
예제 #10
0
    public Character createCharacter(string name, CHARACTER_TYPE type, int clientID, int guid)
    {
        if (mCharacterList.ContainsKey(name))
        {
            Debug.LogError("error : there is a character named : " + name + "! can not create again!");
            return(null);
        }
        if (type == CHARACTER_TYPE.CT_MYSELF)
        {
            if (mMyself != null)
            {
                Debug.LogError("error : Myself has exist ! can not create again ,name " + name);
                return(null);
            }
        }
        CharacterFactory factory      = mCharacterFactoryManager.getFactory(type);
        Character        newCharacter = factory.createCharacter(name);

        // 如果是玩家自己,则记录下来
        if (type == CHARACTER_TYPE.CT_MYSELF)
        {
            mMyself = newCharacter as CharacterMyself;
        }
        // 将创建的角色挂接到角色管理器下
        newCharacter.setParent(mManagerObject);
        newCharacter.init(clientID, guid);
        addCharacterToList(newCharacter);
        return(newCharacter);
    }
예제 #11
0
    public Dictionary <string, DefaultSkillInfo> loadDefaultSkillInfo(CHARACTER_TYPE characterType)
    {
        if (m_bloadDefulatSkillInfoState == false)                                 // 스킬정보 로드 이력이 없으면 CSV파일에서 불러온다.
        {
            Debug.Log("CSV 디폴트 스킬 정보 불러오기");
            TextAsset textAsset = new TextAsset();
            if (characterType == CHARACTER_TYPE.AKAZA)
            {
                textAsset = Resources.Load <TextAsset>("Data/AkazaSkillInfo");      // 리소스 로드를 통해 테이블을 로드한다.
            }
            //if (characterType == CHARACTER_TYPE.UNITY)
            //    textAsset = Resources.Load<TextAsset>("Data/UnityChanSkillInfo");  // 리소스 로드를 통해 테이블을 로드한다.
            string content = textAsset.text;                                  // 한라인으로 데이터가 나열되어 있다.

            string[] line = content.Split('\n');                              // string을 '\n' 기준으로 분리해서 line배열에 넣는다.
            for (int i = 2; i < line.Length - 1; i++)                         // 0 ~ 1번 라인은 테이블 타입 구분 용도로 사용한다. 2번째 라인부터 라인 갯수만큼 테이블 생성 (마지막NULL 한칸 제외해서 -1라인)
            {
                string[]         column = line[i].Split(',');                 // 열의 정보값을 ','로 구분해 column배열에 넣는다. SCV파일은 ,로 구분되어 있으므로
                DefaultSkillInfo table  = new DefaultSkillInfo();             // SCV순서와 구조체 데이터 형식이 일치하여야 함
                string           key    = null;                               // key값이 될 문자열의 닉네임 보관장소
                int index = 0;                                                // 0번째 열부터 시작

                key = column[index++].Replace("\r", "");                      // 키값(스킬명) 저장
                table.m_strImageName = column[index++].Replace("\r", "");     // 스킬 아이콘 이미지
                table.m_fCoolTime    = float.Parse(column[index++]);          // 쿨타임
                table.m_fDamageRatio = float.Parse(column[index++]);          // 데미지 배율
                table.m_fHoldTime    = float.Parse(column[index++]);          // 공격판정 유지시간
                table.m_iGetLevel    = int.Parse(column[index++]);            // 습득 레벨
                m_dicDefaultSkillInfo.Add(key, table);
            }
            m_bloadDefulatSkillInfoState = true;                                // 상점 정보를 로드한 상태로 변경
        }
        return(m_dicDefaultSkillInfo);                                          // 상점 아이템 정보 반환
    }
예제 #12
0
    public Character createCharacter(string name, CHARACTER_TYPE type, int id)
    {
        if (mCharacterList.ContainsKey(name))
        {
            UnityUtility.logError("error : there is a character named : " + name + "! can not create again!");
            return(null);
        }
        if (type == CHARACTER_TYPE.CT_MYSELF)
        {
            if (mMyself != null)
            {
                Debug.LogError("error : Myself has exist ! can not create again ,name " + name);
                return(null);
            }
        }
        CharacterFactory factory      = mCharacterFactoryManager.getFactory(type);
        Character        newCharacter = factory.createCharacter(name);

        // 如果是玩家自己,则记录下来
        if (type == CHARACTER_TYPE.CT_MYSELF)
        {
            mMyself = newCharacter as CharacterMyself;
        }
        if (newCharacter != null)
        {
            // 将角色挂接到管理器下
            newCharacter.getObject().transform.parent = mManagerObject.transform;
            newCharacter.init(id);
            addCharacterToList(newCharacter);
        }
        return(newCharacter);
    }
예제 #13
0
    // Start is called before the first frame update
    void Start()
    {
        m_dicCreateInfo = DataManager.instance.loadCreateInfo();             // 데이터매니저에서 캐릭터 생성 정보를 받음

        foreach (KeyValuePair <int, CreateInfo> iterator in m_dicCreateInfo) // 반복자를 순회하면서
        {
            int            slotIndex     = iterator.Key;
            string         userName      = iterator.Value.m_strUserName;     // 반복자 내의 정보를 임시변수에 대입
            CHARACTER_TYPE characterType = iterator.Value.m_eCharacterType;  // 캐릭터 타입
            string         characterName = null;                             // 캐릭터 이름

            if (characterType == CHARACTER_TYPE.UNITY)
            {
                characterName = "< UNITY-CHAN >";                                                                                                                                                                    // 캐릭터명
                GameObject character = (GameObject)Instantiate(Resources.Load("Prefabs/UnityChanNormal"), new Vector3(-1.2f + 0.85f * slotIndex, -0.4f, -0.2f), Quaternion.AngleAxis(180.0f, new Vector3(0, 1, 0))); // 180도 회전 생성
                character.transform.localScale = new Vector3(0.6f, 0.6f, 0.6f);                                                                                                                                      // 스케일 0.6으로 변경
            }
            else if (characterType == CHARACTER_TYPE.AKAZA)
            {
                characterName = "< AKAZA >";                                                                                                                                                                     // 캐릭터명
                GameObject character = (GameObject)Instantiate(Resources.Load("Prefabs/AkazaNormal"), new Vector3(-1.2f + 0.85f * slotIndex, -0.4f, -0.2f), Quaternion.AngleAxis(180.0f, new Vector3(0, 1, 0))); // 180도 회전 생성
                character.transform.localScale = new Vector3(0.6f, 0.6f, 0.6f);                                                                                                                                  // 스케일 0.6으로 변경
            }
            m_characterLabel[slotIndex].text = characterName + "\n닉네임 : " + userName;
        }
    }
예제 #14
0
    public CharacterFactory addFactory <T>(CHARACTER_TYPE type) where T : Character
    {
        CharacterFactory factory = CharacterFactory.createFactory(typeof(T), type);

        mFactoryList.Add(factory.getType(), factory);
        return(factory);
    }
예제 #15
0
 public CharacterOther(CHARACTER_TYPE type, string name)
     :
     base(type, name)
 {
     mMatchSpeed    = false;
     mCurSpeedLevel = -1;
 }
예제 #16
0
 public Character(CHARACTER_TYPE type, string name)
     :
     base(name)
 {
     mCharacterType = type;
     mCharacterData = new CharacterData();
 }
예제 #17
0
 public RankingInfo(string userName, int characterType, int score, float clearTime)  // 매게변수 생성자
 {
     m_strUserName    = userName;
     m_eCharacterType = (CHARACTER_TYPE)characterType;
     m_iScore         = score;
     m_fClearTime     = clearTime;
 }
예제 #18
0
        void HeroControllerListChanged(CHARACTER_TYPE characterType, List <AbsCharacterController> controller)
        {
            if (this.characterType != characterType)
            {
                return;
            }

            // if slotID is 2, but list count is 2, there are only slotID 0,1 ,cause the list is sorted By SlotID
            if (controller.Count < this.slotID + 1)
            {
                battleBottomManager.Close();
                return;
            }

            this.characterController = controller [this.slotID];

            var _heroController = (HeroController)characterController;
            List <CommonSkillFormat> _skillData = new List <CommonSkillFormat> ();

            foreach (var skill in _heroController.HeroDataCache.SkillList)
            {
                _skillData.Add(skill);
            }

            CharacterSkill.Init(_skillData);
            CharacterAttribute.Init(this.characterController);
            CharacterAttribute.DataDisplay();
        }
예제 #19
0
 public void EnemyListClear()
 {
     //초기화
     m_ListEnemyParty.Clear();
     m_iMapIndex   = -1; //에너미 인덱스 숫자
     m_iBlockIndex = -1;
     m_eType       = CHARACTER_TYPE.CHAR_NONE;
 }
예제 #20
0
 protected CharacterData mCharacterData;            //玩家数据
 public Character(CHARACTER_TYPE type, string name)
     :
     base(name)
 {
     mCharacterType = type;
     mCharacterData = null;
     // 需要将角色挂接到角色管理器下
 }
예제 #21
0
 public void getCharacterListByType(CHARACTER_TYPE type, ref Dictionary <string, Character> characterList)
 {
     if (!mCharacterTypeList.ContainsKey(type))
     {
         return;
     }
     characterList = mCharacterTypeList[type];
 }
예제 #22
0
 public CharacterFactory getFactory(CHARACTER_TYPE type)
 {
     if (mFactoryList.ContainsKey(type))
     {
         return(mFactoryList[type]);
     }
     return(null);
 }
예제 #23
0
 protected override void HitObj(CHARACTER_TYPE hitType, bool isBullet)
 {
     switch (hitType)
     {
     case CHARACTER_TYPE.PLAYER:
         Die(true);
         break;
     }
 }
예제 #24
0
    public int m_iGold;                                                                                            // 골드

    public void setDynamicCharacterInfo(string userName, int characterType, int level, int exp, int jam, int gold) // 매게변수 세팅
    {
        m_strUserName    = userName;
        m_eCharacterType = (CHARACTER_TYPE)characterType;
        m_iLevel         = level;
        m_iExp           = exp;
        m_iJam           = jam;
        m_iGold          = gold;
    }
예제 #25
0
    public void addCreateInfo(CHARACTER_TYPE characterType, string userName)      // 생성 정보에 새로 생성한 캐릭터정보를 더한다.
    {
        CreateInfo createinfo = new CreateInfo();

        createinfo.m_eCharacterType = characterType;
        createinfo.m_strUserName    = userName;
        m_dicCreateInfo.Add(GameManager.instance.m_iCreateCharacterIndex, createinfo);
        saveCreateInfo();
    }
예제 #26
0
        public void InitFight(HeroDataFormat hero)
        {
            this.Clear();
            var _attribute = (hero.Attributes as HeroAttributeFormat).CloneEx();

            this.SlotID = _attribute.SlotID;
            this.Type   = CHARACTER_TYPE.HERO;
            this.attributeOriginCache = _attribute;
        }
예제 #27
0
 public override void init()
 {
     base.init();
     mCharacterType          = CHARACTER_TYPE.CT_MAX;
     mName                   = "";
     mID                     = -1;
     mModelPath              = "";
     mAnimatorControllerPath = "";
     mCharacterNode          = "";
 }
예제 #28
0
 protected List <SceneMissile> mMissileLockList;     // 锁定玩家的导弹列表
 public CharacterOther(CHARACTER_TYPE type, string name)
     :
     base(type, name)
 {
     mPlayerPack         = new PlayerPack();
     mRibbonTrailStatic  = new RibbonTrailStatic();
     mRibbonTrailDynamic = new RibbonTrailDynamic();
     mStateMachine       = new StateMachine();
     mEnableStatus       = new EnableStatus();
     mSelectAnimation    = new List <string>();
     mMissileLockList    = new List <SceneMissile>();
 }
예제 #29
0
    public void ShowPartyStatus(int iIdnex, CHARACTER_TYPE eType, bool bBattle)
    {
        //파티 원
        CharPartyData Node = null;

        if (bBattle)
        {
            if (eType == CHARACTER_TYPE.CHAR_PLAYER)
            {
                Node = GameManager.instance.PlayerParty[iIdnex];
            }
            else if (eType != CHARACTER_TYPE.CHAR_NONE)
            {
                Node = GameManager.instance.EnemyParty[iIdnex];
            }
        }
        else
        {
            Node = UserInfo.instance.PartyList[iIdnex];
        }

        CLASS eClass = (CLASS)Util.EnumChange <CLASS>(Util.ConvertToString(Node.CharData.ReturnData(CHARACTER_DATA.CHAR_CLASS_TYPE)));

        if (eClass == CLASS.CLASS_WARRIOR)
        {
            m_CharClass.text = "워리어";
        }
        else if (eClass == CLASS.CLASS_THIEF)
        {
            m_CharClass.text = "도적";
        }
        else if (eClass == CLASS.CLASS_ARCHER)
        {
            m_CharClass.text = "궁수";
        }
        else if (eClass == CLASS.CLASS_WIZARD)
        {
            m_CharClass.text = "마법사";
        }

        //스테이터스
        string Max = Util.ConvertToString(Node.CharData.ReturnData(CHARACTER_DATA.CHAR_MAX_HP));

        m_HpLabel.text  = Max;
        m_ATKLabel.text = Util.ConvertToString(Node.CharData.ReturnData(CHARACTER_DATA.CHAR_ATK));

        string[] Split = Util.ConvertToString(Node.CharData.ReturnData(CHARACTER_DATA.CHAR_SPEED)).Split(';');
        m_SteminaLabel.text = Split[0] + " 턴당 " + Split[1] + "스테미너";
        m_LevelLabel.text   = "Lv." + Util.ConvertToString(Node.CharData.ReturnData(CHARACTER_DATA.CHAR_LEVEL));
        m_iIndex            = iIdnex;
        m_NameLable.text    = Util.ConvertToString(Node.CharData.ReturnData(CHARACTER_DATA.CHAR_NAME));
    }
예제 #30
0
 public void createLobbyCharacter(CHARACTER_TYPE characterType)
 {
     if (characterType == CHARACTER_TYPE.UNITY)
     {
         GameObject character = (GameObject)Instantiate(Resources.Load("Prefabs/UnityChanNormal"), new Vector3(-2f, -0.5f, -6.0f), Quaternion.AngleAxis(120.0f, new Vector3(0, 1, 0)));   // 120도 회전 생성
         //character.transform.localScale = new Vector3(0.6f, 0.6f, 0.6f); // 스케일 0.6으로 변경
     }
     else if (characterType == CHARACTER_TYPE.AKAZA)
     {
         GameObject character = (GameObject)Instantiate(Resources.Load("Prefabs/AkazaNormal"), new Vector3(-2f, -0.5f, -6.0f), Quaternion.AngleAxis(120.0f, new Vector3(0, 1, 0))); // 120도 회전 생성
         //character.transform.localScale = new Vector3(0.6f, 0.6f, 0.6f);  // 스케일 0.6으로 변경
     }
 }