Example #1
0
    /**
     * @brief 유닛을 생성함 (서버에서 클라로 정보를 보낼때 호출됨)
     * @param posX 생성할 X 위치
     * @param posY 생성할 Y 위치
     * @param index 유닛 코드
     * @param uniqueNumber 생성자
     * @param byX 생성을 지시한 X 위치
     * @param byY 생성을 지시한 Y 위치
     */
    public void CreateUnit(int posX, int posY, int index, int uniqueNumber, int byX, int byY)
    {
        GameObject Child = Instantiate(unitobj[index - 300], GameMng.I._hextile.GetCell(posX, posY).transform) as GameObject;

        Child.transform.parent = transform.parent;
        GameMng.I._hextile.GetCell(posX, posY)._unitObj = Child.GetComponent <Unit>();
        GameMng.I._hextile.GetCell(posX, posY)._code    = GameMng.I._hextile.GetCell(posX, posY)._unitObj._code;
        GameMng.I._hextile.GetCell(posX, posY)._unitObj._uniqueNumber = uniqueNumber;
        Debug.Log(GameMng.I._hextile.GetCell(byX, byY)._builtObj);
        GameMng.I._hextile.GetCell(byX, byY)._builtObj._bActAccess = false;
        GameMng.I._hextile.GetCell(posX, posY)._unitObj.SaveX      = byX;
        GameMng.I._hextile.GetCell(posX, posY)._unitObj.SaveY      = byY;

        GameMng.I.addActMessage(string.Format("{0}님이 일꾼을 생성하고 있습니다.", GameMng.I.getUserName(uniqueNumber)), posX, posY);

        GameMng.I.addLogMessage(GameMng.I.getUserName(uniqueNumber), "일꾼을 생성하고 있습니다.");

        if (GameMng.I._hextile.GetCell(byX, byY)._builtObj._code == (int)BUILT.MILLITARY_BASE)
        {
            MillitaryBase SaveData = GameMng.I._hextile.GetCell(byX, byY)._builtObj.GetComponent <MillitaryBase>();
            SaveData.CreatingUnitobj = GameMng.I._hextile.GetCell(posX, posY)._unitObj.gameObject;
            SaveData.GetComponent <MillitaryBase>().CreatingUnitX = posX;
            SaveData.GetComponent <MillitaryBase>().CreatingUnitY = posY;
        }
    }
Example #2
0
    /**
     * @brief 유닛을 생성함 (클라 전용)
     * @param cost 사용된 코스트
     * @param index 유닛 코드
     */
    public void CreateUnit(int cost, int index)
    {
        GameMng.I.mouseRaycast(true);                       //캐릭터 정보와 타일 정보를 알아와야해서 false에서 true로 변경
        if (GameMng.I.targetTile._builtObj == null && GameMng.I.targetTile._code < (int)TILE.CAN_MOVE && GameMng.I.targetTile._unitObj == null && Vector2.Distance(GameMng.I.selectedTile.transform.localPosition, GameMng.I.targetTile.transform.localPosition) <= 1.5f)
        {
            if (GameMng.I._gold >= cost)
            {
                GameMng.I.minGold(cost);
                if (index != (int)UNIT.FOREST_WORKER && index != (int)UNIT.SEA_WORKER && index != (int)UNIT.DESERT_WORKER)      // 일꾼 유닛들을 제외하고 유닛 생성중일때 해당 건물 행동 불가 상태 적용
                {
                    GameMng.I.selectedTile._builtObj._bActAccess = false;
                }

                GameMng.I.selectedTile._builtObj._anim.SetTrigger("isMaking");

                GameObject Child = Instantiate(unitobj[index - 300], GameMng.I.targetTile.transform) as GameObject;                 // enum 값 - 300
                Child.transform.parent                      = transform.parent;
                GameMng.I.targetTile._unitObj               = Child.GetComponent <Unit>();
                GameMng.I.targetTile._unitObj.SaveX         = GameMng.I.selectedTile.PosX;   // 생성하는 유닛에게 있는 위치 저장 변수에 해당 건물 위치값을 저장해줌
                GameMng.I.targetTile._unitObj.SaveY         = GameMng.I.selectedTile.PosZ;
                GameMng.I.targetTile._unitObj.PosX          = GameMng.I.targetTile.PosX;     // 생성하는 유닛에게 있는 본인위치 저장 변수에 유닛이 생성된 타일 위치값을 저장해줌
                GameMng.I.targetTile._unitObj.PosZ          = GameMng.I.targetTile.PosZ;
                GameMng.I.targetTile._code                  = index;
                GameMng.I.targetTile._unitObj._uniqueNumber = NetworkMng.getInstance.uniqueNumber;


                if (GameMng.I.selectedTile._code == (int)BUILT.MILLITARY_BASE)                  // 군사기지에서 유닛 생성 시
                {
                    MillitaryBase SaveUnitData = GameMng.I.selectedTile._builtObj.GetComponent <MillitaryBase>();
                    SaveUnitData.CreatingUnitobj = GameMng.I.targetTile._unitObj.gameObject;
                    SaveUnitData.CreatingUnitX   = GameMng.I.targetTile.PosX;
                    SaveUnitData.CreatingUnitY   = GameMng.I.targetTile.PosZ;
                }

                act = ACTIVITY.NONE;

                NetworkMng.getInstance.SendMsg(string.Format("CREATE_UNIT:{0}:{1}:{2}:{3}:{4}:{5}", GameMng.I.targetTile.PosX, GameMng.I.targetTile.PosZ, index, NetworkMng.getInstance.uniqueNumber, GameMng.I.selectedTile.PosX, GameMng.I.selectedTile.PosZ));

                GameMng.I.addLogMessage(NetworkMng.getInstance.nickName, "유닛을 생성하고 있습니다");

                GameMng.I.cleanActList();
                GameMng.I._range.rangeTileReset();
                GameMng.I.cleanSelected();

                NetworkMng.getInstance.SendMsg("TURN");
            }
        }
        else                                     // 범위가 아닌 다른 곳을 누름
        {
            act = ACTIVITY.NONE;
            GameMng.I.selectedTile = GameMng.I.targetTile;
            GameMng.I.targetTile   = null;
            GameMng.I._range.rangeTileReset();
        }
    }
Example #3
0
    /**
     * @brief 유닛을 생성함 (서버에서 클라로 정보를 보낼때 호출됨)
     * @param posX 생성할 X 위치
     * @param posY 생성할 Y 위치
     * @param index 유닛 코드
     * @param uniqueNumber 생성자
     * @param byX 생성을 지시한 X 위치
     * @param byY 생성을 지시한 Y 위치
     */
    public void CreateUnit(int posX, int posY, int index, int uniqueNumber, int byX, int byY)
    {
        GameObject Child = Instantiate(unitobj[index - 300], GameMng.I._hextile.GetCell(posX, posY).transform) as GameObject;

        Child.transform.parent = transform.parent;
        GameMng.I._hextile.GetCell(posX, posY)._unitObj = Child.GetComponent <Unit>();
        GameMng.I._hextile.GetCell(posX, posY)._code    = GameMng.I._hextile.GetCell(posX, posY)._unitObj._code;
        GameMng.I._hextile.GetCell(posX, posY)._unitObj._uniqueNumber = uniqueNumber;
        GameMng.I._hextile.GetCell(byX, byY)._builtObj._bActAccess    = false;
        GameMng.I._hextile.GetCell(posX, posY)._unitObj.SaveX         = byX;
        GameMng.I._hextile.GetCell(posX, posY)._unitObj.SaveY         = byY;

        if (GameMng.I._hextile.GetCell(byX, byY)._builtObj._code == (int)BUILT.MILLITARY_BASE)
        {
            MillitaryBase SaveData = GameMng.I._hextile.GetCell(byX, byY)._builtObj.GetComponent <MillitaryBase>();
            SaveData.CreatingUnitobj = GameMng.I._hextile.GetCell(posX, posY)._unitObj.gameObject;
            SaveData.GetComponent <MillitaryBase>().CreatingUnitX = posX;
            SaveData.GetComponent <MillitaryBase>().CreatingUnitY = posY;
        }
    }
Example #4
0
    /**
     * @brief 어떤 행동인지 체크
     * @param activity 행동 코드
     * @param actButton 행동 버튼
     * @param actName 행동 이름
     * @param actDesc 행동 설명
     * @param costText 행동 비용
     */
    public void checkActivity(ACTIVITY activity, UnityEngine.UI.Button actButton, UnityEngine.UI.Text actName, UnityEngine.UI.Text actDesc, UnityEngine.UI.Image Frame, UnityEngine.UI.Text costText, UnityEngine.UI.Image costImg)
    {
        switch (activity)
        {
        case ACTIVITY.MOVE:
            actName.text     = "이동";
            actDesc.text     = "한 턴 소요";
            costText.enabled = false;
            costImg.enabled  = false;
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _range.AttackrangeTileReset(); _UnitGM.Move(); });
            canUseActivity(actButton, Frame, 0);
            break;

        case ACTIVITY.BUILD_MINE:
            actName.text     = "광산";
            actDesc.text     = "한 턴 소요";
            costText.enabled = true;
            costImg.enabled  = true;
            costText.text    = MINE_COST.ToString();
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _UnitGM.buildMine(); });
            canUseActivity(actButton, Frame, MINE_COST);
            break;

        case ACTIVITY.BUILD_FARM:
            actName.text     = "농장";
            actDesc.text     = "한 턴 소요";
            costText.enabled = true;
            costImg.enabled  = true;
            costText.text    = FARM_COST.ToString();
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _UnitGM.buildFarm(); });
            canUseActivity(actButton, Frame, FARM_COST);
            break;

        case ACTIVITY.BUILD_ATTACK_BUILDING:
            actName.text     = "터렛";
            actDesc.text     = "두 턴 소요";
            costText.enabled = true;
            costImg.enabled  = true;
            costText.text    = TURRET_COST.ToString();
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _UnitGM.buildAttackBuilding(); });
            canUseActivity(actButton, Frame, TURRET_COST);
            break;

        case ACTIVITY.BUILD_MILLITARY_BASE:
            actName.text     = "군사 기지";
            actDesc.text     = "두 턴 소요";
            costText.enabled = true;
            costImg.enabled  = true;
            costText.text    = MILITARYBASE_COST.ToString();
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _UnitGM.buildMillitaryBaseBuilding(); });
            canUseActivity(actButton, Frame, MILITARYBASE_COST);
            break;

        case ACTIVITY.BUILD_SHIELD_BUILDING:
            actName.text = "방어 건물";
            actDesc.text = "두 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _UnitGM.buildShieldBuilding(); });
            break;

        case ACTIVITY.BUILD_UPGRADE_BUILDING:
            actName.text = "강화 건물";
            actDesc.text = "세 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _UnitGM.buildUpgradeBuilding(); });
            break;

        case ACTIVITY.WORKER_UNIT_CREATE:
            actName.text     = "일꾼 생성";
            costText.enabled = true;
            costImg.enabled  = true;
            costText.text    = WORKER_COST.ToString();
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; Castle.CreateUnitBtn(); });
            canUseActivity(actButton, Frame, WORKER_COST);
            break;

        case ACTIVITY.DESTROY_BUILT:
            actName.text     = "건물 파괴";
            costText.enabled = false;
            costImg.enabled  = false;
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; _BuiltGM.DestroyBuilt(); });
            canUseActivity(actButton, Frame, 0);
            break;

        case ACTIVITY.ATTACK:
            actName.text     = "공격";
            actDesc.text     = "두 턴 소요";
            costText.enabled = false;
            costImg.enabled  = false;
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _range.rangeTileReset(); _UnitGM.unitAttacking(); });
            canUseActivity(actButton, Frame, 0);
            break;

        case ACTIVITY.SOLDIER_0_UNIT_CREATE:
            actName.text     = "전사1 생성";
            actDesc.text     = "두 턴 소요";
            costText.enabled = true;
            costImg.enabled  = true;
            costText.text    = SOLDIER_0_COST.ToString();
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; MillitaryBase.CreateAttackFirstUnitBtn(); });
            canUseActivity(actButton, Frame, SOLDIER_0_COST);
            break;

        case ACTIVITY.SOLDIER_1_UNIT_CREATE:
            actName.text     = "전사2 생성";
            actDesc.text     = "두 턴 소요";
            costText.enabled = true;
            costImg.enabled  = true;
            costText.text    = SOLDIER_1_COST.ToString();
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; MillitaryBase.CreateAttackSecondUnitBtn(); });
            canUseActivity(actButton, Frame, SOLDIER_1_COST);
            break;

        case ACTIVITY.SOLDIER_2_UNIT_CREATE:
            actName.text     = "전사3 생성";
            actDesc.text     = "두 턴 소요";
            costText.enabled = true;
            costImg.enabled  = true;
            costText.text    = SOLDIER_2_COST.ToString();
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; MillitaryBase.CreateAttackThirdUnitBtn(); });
            canUseActivity(actButton, Frame, SOLDIER_2_COST);
            break;

        case ACTIVITY.WITCH_0_UNIT_CREATE:
            actName.text     = "마법사1 생성";
            actDesc.text     = "두 턴 소요";
            costText.enabled = true;
            costImg.enabled  = true;
            costText.text    = WITCH_0_COST.ToString();
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; MillitaryBase.CreateAttackFourthUnitBtn(); });
            canUseActivity(actButton, Frame, WITCH_0_COST);
            break;

        case ACTIVITY.WITCH_1_UNIT_CREATE:
            actName.text     = "마법사2 생성";
            actDesc.text     = "두 턴 소요";
            costText.enabled = true;
            costImg.enabled  = true;
            costText.text    = WITCH_1_COST.ToString();
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; MillitaryBase.CreateAttackFifthUnitBtn(); });
            canUseActivity(actButton, Frame, WITCH_1_COST);
            break;

        default:
            break;
        }
    }
Example #5
0
    /**
     * @brief 어떤 행동인지 체크
     * @param activity 행동 코드
     * @param actButton 행동 버튼
     * @param actName 행동 이름
     * @param actDesc 행동 설명
     */
    public void checkActivity(ACTIVITY activity, UnityEngine.UI.Button actButton, UnityEngine.UI.Text actName, UnityEngine.UI.Text actDesc, UnityEngine.UI.Image Frame)
    {
        switch (activity)
        {
        case ACTIVITY.MOVE:
            actName.text = "이동";
            actDesc.text = "한 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _range.AttackrangeTileReset(); _UnitGM.Move(); });
            canUseActivity(actButton, Frame, 0);
            break;

        case ACTIVITY.BUILD_MINE:
            actName.text = "광산";
            actDesc.text = "한 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _UnitGM.buildMine(); });
            canUseActivity(actButton, Frame, Mine.cost);
            break;

        case ACTIVITY.BUILD_FARM:
            actName.text = "농장";
            actDesc.text = "한 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _UnitGM.buildFarm(); });
            canUseActivity(actButton, Frame, Farm.cost);
            break;

        case ACTIVITY.BUILD_ATTACK_BUILDING:
            actName.text = "터렛";
            actDesc.text = "두 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _UnitGM.buildAttackBuilding(); });
            canUseActivity(actButton, Frame, Turret.cost);
            break;

        case ACTIVITY.BUILD_MILLITARY_BASE:
            actName.text = "군사 기지";
            actDesc.text = "두 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _UnitGM.buildMillitaryBaseBuilding(); });
            canUseActivity(actButton, Frame, MillitaryBase.cost);
            break;

        case ACTIVITY.BUILD_SHIELD_BUILDING:
            actName.text = "방어 건물";
            actDesc.text = "두 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _UnitGM.buildShieldBuilding(); });
            break;

        case ACTIVITY.BUILD_UPGRADE_BUILDING:
            actName.text = "강화 건물";
            actDesc.text = "세 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _UnitGM.buildUpgradeBuilding(); });
            break;

        case ACTIVITY.WORKER_UNIT_CREATE:
            actName.text = "일꾼 생성";
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; Castle.CreateUnitBtn(); });
            canUseActivity(actButton, Frame, Forest_Worker.cost);
            break;

        case ACTIVITY.DESTROY_BUILT:
            actName.text = "건물 파괴";
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; _BuiltGM.DestroyBuilt(); });
            canUseActivity(actButton, Frame, 0);
            break;

        case ACTIVITY.ATTACK:
            actName.text = "공격";
            actDesc.text = "두 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _range.rangeTileReset(); _UnitGM.unitAttacking(); });
            canUseActivity(actButton, Frame, 0);
            break;

        case ACTIVITY.SOLDIER_0_UNIT_CREATE:
            actName.text = "전사1 생성";
            actDesc.text = "두 턴 소요";
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; MillitaryBase.CreateAttackFirstUnitBtn(); });
            canUseActivity(actButton, Frame, Forest_Soldier_0.cost);
            break;

        case ACTIVITY.SOLDIER_1_UNIT_CREATE:
            actName.text = "전사2 생성";
            actDesc.text = "두 턴 소요";
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; MillitaryBase.CreateAttackSecondUnitBtn(); });
            canUseActivity(actButton, Frame, Forest_Soldier_1.cost);
            break;

        case ACTIVITY.SOLDIER_2_UNIT_CREATE:
            actName.text = "전사3 생성";
            actDesc.text = "두 턴 소요";
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; MillitaryBase.CreateAttackThirdUnitBtn(); });
            canUseActivity(actButton, Frame, Forest_Soldier_2.cost);
            break;

        case ACTIVITY.WITCH_0_UNIT_CREATE:
            actName.text = "마법사1 생성";
            actDesc.text = "두 턴 소요";
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; MillitaryBase.CreateAttackFourthUnitBtn(); });
            canUseActivity(actButton, Frame, Forest_Witch_0.cost);
            break;

        case ACTIVITY.WITCH_1_UNIT_CREATE:
            actName.text = "마법사2 생성";
            actDesc.text = "두 턴 소요";
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; MillitaryBase.CreateAttackFifthUnitBtn(); });
            canUseActivity(actButton, Frame, Forest_Witch_1.cost);
            break;

        default:
            break;
        }
    }
Example #6
0
    /**
     * @brief 어떤 행동인지 체크
     * @param activity 행동 코드
     * @param actButton 행동 버튼
     * @param actName 행동 이름
     * @param actDesc 행동 설명
     */
    public void checkActivity(ACTIVITY activity, UnityEngine.UI.Button actButton, UnityEngine.UI.Text actName, UnityEngine.UI.Text actDesc)
    {
        switch (activity)
        {
        case ACTIVITY.MOVE:
            actName.text = "이동";
            actDesc.text = "한 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _range.AttackrangeTileReset(); Unit.Move(); });
            break;

        case ACTIVITY.BUILD_MINE:
            actName.text = "광산";
            actDesc.text = "한 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; Unit.buildMine(); });
            break;

        case ACTIVITY.BUILD_FARM:
            actName.text = "농장";
            actDesc.text = "한 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; Unit.buildFarm(); });
            break;

        case ACTIVITY.BUILD_ATTACK_BUILDING:
            actName.text = "터렛";
            actDesc.text = "두 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; Unit.buildAttackBuilding(); });
            break;

        case ACTIVITY.BUILD_MILLITARY_BASE:
            actName.text = "군사 기지";
            actDesc.text = "두 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; Unit.buildMillitaryBaseBuilding(); });
            break;

        case ACTIVITY.BUILD_SHIELD_BUILDING:
            actName.text = "방어 건물";
            actDesc.text = "두 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; Unit.buildShieldBuilding(); });
            break;

        case ACTIVITY.BUILD_UPGRADE_BUILDING:
            actName.text = "강화 건물";
            actDesc.text = "세 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; Unit.buildUpgradeBuilding(); });
            break;

        case ACTIVITY.WORKER_UNIT_CREATE:
            actName.text = "일꾼 생성";
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; Castle.CreateUnitBtn(); });
            break;

        case ACTIVITY.DESTROY_BUILT:
            actName.text = "건물 파괴";
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; _BuiltGM.DestroyBuilt(); });
            break;

        case ACTIVITY.ATTACK:                                                                   // 임시입니다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            actName.text = "공격";
            actDesc.text = "두 턴 소요";
            actButton.onClick.AddListener(delegate { _UnitGM.act = activity; _range.rangeTileReset(); Unit.unitAttacking(); });
            break;

        case ACTIVITY.ATTACK_UNIT_CREATE:
            actName.text = "병력 생성";
            actDesc.text = "두 턴 소요";
            actButton.onClick.AddListener(delegate { _BuiltGM.act = activity; MillitaryBase.CreateAttackUnitBtn(); });
            break;

        default:
            break;
        }
    }