Example #1
0
    void CreateMap()
    {
        GameObject newGo = new GameObject();

        newGo.name = this.mapData.map_id.ToString();

        // 그라운드를 만든다.
        GameObject groundPrefab = PrefabsManager.GetInstance().dicGroundPrefabs[mapData.groundName];

        Instantiate(groundPrefab).transform.parent = newGo.transform;

        // 환경을 배치한다.
        for (int i = 0; i < mapData.listEnvirnment.Count; i++)
        {
            GameObject envirGo = PrefabsManager.GetInstance().dicEnvironmentPrefabs[mapData.listEnvirnment[i].name];
            Vector3    pos     = new Vector3(mapData.listEnvirnment[i].x, mapData.listEnvirnment[i].y, 0);

            Instantiate(envirGo, pos, Quaternion.identity).transform.parent = newGo.transform;
        }


        // 그리드를 생성한다.
        grid.gridWorldSize = new Vector2(mapData.grid_x, mapData.grid_y);
        grid.nodeRadius    = mapData.node_radius;

        grid.CreateGrid();
    }
Example #2
0
    private void Initialize()
    {
        effectPoolTr = new GameObject().transform;
        effectPoolTr.gameObject.name = "EffectPool";
        effectPoolTr.parent          = transform;

        // 프리펩 매니저에 있는 이펙트 프리펩을 가져온다.
        var newDicEffect = PrefabsManager.GetInstance().dicEffectPrefabs;

        // 프리펩들을 돌면서 인스턴스를 생성한다.
        foreach (KeyValuePair <string, GameObject> e in newDicEffect)
        {
            // 같은 이름의 이펙트가 없다면.
            if (!this.dicEffect.ContainsKey(e.Key))
            {
                // 리스트를 생성하고.
                this.dicEffect.Add(e.Key, new Stack <GameObject>());

                // 리스트에 풀을 생성한다.
                for (int i = 0; i < effectCnt; i++)
                {
                    GameObject effect = GameObject.Instantiate(e.Value);
                    effect.transform.parent = effectPoolTr;
                    effect.SetActive(false);

                    this.dicEffect[e.Key].Push(effect);
                }
            }
        }
    }
    void Start()
    {
        stateInformation = new StateInformation();
        interfaceManager = InterfaceManager.GetInstance();
        prefabsManager   = PrefabsManager.GetInstance();
        levelController  = LevelController.instance;
        levelDataManager = LevelDataManager.GetInstance();

        startupModule           = (IStartupModule)StartupModule.GetInstance();
        objectDeletionModule    = (IObjectDeletionModule)ObjectDeletionModule.GetInstance();
        objectPlacementModule   = (IObjectPlacementModule)ObjectPlacementModule.GetInstance();
        objectEditingModule     = (IObjectEditingModule)ObjectEditingModule.GetInstance();
        objectInformationModule = (IObjectInformationModule)ObjectInformationModule.GetInstance();


        GameObject leftMouseButtonObject = Instantiate(mouseButtonPrefab, transform);

        leftMouseButton = leftMouseButtonObject.GetComponent <MouseButton>();
        GameObject rightMouseButtonObject = Instantiate(mouseButtonPrefab, transform);

        rightMouseButton = rightMouseButtonObject.GetComponent <MouseButton>();

        leftMouseButton.Setup(0, mouseButtonLeftPressedTime);
        rightMouseButton.Setup(1, cameraDragTime);

        prefabsManager.AddPrefabs();
        interfaceManager.SetupUI(prefabsManager.GetPrefabTable());

        InitializeLevel(initialLevelWidth, initialLevelHeight);
        SetupLevel();
    }
Example #4
0
    void CreateBase(string baseName)
    {
        // 그라운드 생성.
        GameObject basePrefab = PrefabsManager.GetInstance().dicBasePrefabs[baseName];

        goBase = Instantiate(basePrefab);
    }
Example #5
0
    void CreateGround(MapData data)
    {
        // 그라운드 생성.
        GameObject groundPrefab = PrefabsManager.GetInstance().dicGroundPrefabs[data.groundName];
        var        go           = Instantiate(groundPrefab, new Vector3(0, 0, 0), Quaternion.identity);

        go.transform.parent = mapTr;
    }
Example #6
0
    IEnumerator CreateEffectImpl(string name, Vector2 pos, float size, bool isReverse)
    {
        // 딕셔너리에 키가 있는지 확인한다.
        if (!this.dicEffect.ContainsKey(name))
        {
            yield break;
        }

        // 입력받은 키의 밸류.
        // 즉 스택.
        Stack <GameObject> effects = this.dicEffect[name];

        // 스택이 0이라면.
        // 새로 생성해서 넣어놔야 한다.
        if (effects.Count <= 0)
        {
            for (int i = 0; i < effectCnt; i++)
            {
                // 프리펩은 프리펩 매니저를 통해 가져온다.
                GameObject effect = GameObject.Instantiate(PrefabsManager.GetInstance().dicEffectPrefabs[name]);
                effect.transform.parent = effectPoolTr;
                effect.SetActive(false);

                effects.Push(effect);
            }
        }

        // 이펙트를 하나 꺼내고.
        // 설정한다.
        // 반환할 이펙트
        GameObject newEffect = null;

        newEffect = effects.Pop();

        float newSize = Mathf.Clamp(size * 1.3f, 0.8f, 4f);

        pos.y -= size;
        newEffect.transform.localScale = new Vector3(newSize, newSize, newSize);
        newEffect.transform.position   = pos;

        if (isReverse)
        {
            var trParticle = newEffect.transform.Find("Particle System");

            if (trParticle != null)
            {
                trParticle.localScale = new Vector3(-1, 1, 1);
            }
        }

        newEffect.SetActive(true);

        yield return(new WaitForSeconds(3));

        newEffect.SetActive(false);
        effects.Push(newEffect);
    }
Example #7
0
 private void SpriteInit()
 {
     for (int i = 0; i < panCount; i++)
     {
         this.mapPrefabName.Add(DataManager.GetInstance().dicMapData[this.userMapNum[i]].groundName);
         var groundPrefab = PrefabsManager.GetInstance().dicGroundPrefabs[mapPrefabName[i]];
         var sprite       = groundPrefab.GetComponentInChildren <SpriteRenderer>().sprite;
         this.mapSprite.Add(sprite);
     }
 }
Example #8
0
    /*
     * 필요한 데이터를 로드한다.
     * 필요한 프리펩을 로드한다.
     */

    private void Awake()
    {
        // 데이터 매니저를 생성해 놓는다.
        DataManager.GetInstance();
        PrefabsManager.GetInstance();

        // 사운드 로딩.
        if (YellowBean.SoundManager.Instance != null)
        {
            YellowBean.SoundManager.Instance.Init();
        }
    }
Example #9
0
    void CreateEnvironment(MapData data)
    {
        // 환경 생성.
        for (int i = 0; i < data.listEnvirnment.Count; i++)
        {
            GameObject envirGo = PrefabsManager.GetInstance().dicEnvironmentPrefabs[data.listEnvirnment[i].name];
            Vector3    pos     = new Vector3(data.listEnvirnment[i].x, data.listEnvirnment[i].y, 0);

            var go = Instantiate(envirGo, pos, Quaternion.identity);
            go.transform.parent = mapTr;
        }
    }
    private void CreateArrow()
    {
        // 화살 프리펩을 가져온다.
        GameObject arrowPrefab = PrefabsManager.GetInstance().GetProjectilePrefab(YBEnum.eProjectileType.Arrow);

        // 프리펩을 만든다.
        for (int i = 0; i < arrowCnt; i++)
        {
            GameObject arrowGo = Instantiate(arrowPrefab);
            arrowGo.SetActive(false);
            arrowGo.transform.parent = arrowPoolTr;

            Arrow arrow = arrowGo.GetComponent <Arrow>();

            arrowPool.Push(arrow);
        }
    }
    private void CreateMagic()
    {
        // 매직 프리펩을 가져온다.
        GameObject magicPrefab = PrefabsManager.GetInstance().GetProjectilePrefab(YBEnum.eProjectileType.Magic);

        // 프리펩을 만든다.
        for (int i = 0; i < magicCnt; i++)
        {
            GameObject magicGo = Instantiate(magicPrefab);
            magicGo.SetActive(false);
            magicGo.transform.parent = magicPoolTr;

            Magic magic = magicGo.GetComponent <Magic>();

            magicPool.Push(magic);
        }
    }
    private void CreateStone()
    {
        // 화살 프리펩을 가져온다.
        GameObject stonePrefab = PrefabsManager.GetInstance().GetProjectilePrefab(YBEnum.eProjectileType.Stone);

        // 프리펩을 만든다.
        for (int i = 0; i < stoneCnt; i++)
        {
            GameObject stoneGo = Instantiate(stonePrefab);
            stoneGo.SetActive(false);
            stoneGo.transform.parent = stonePoolTr;

            Stone stone = stoneGo.GetComponent <Stone>();

            stonePool.Push(stone);
        }
    }
Example #13
0
    void CreateMap()
    {
        GameObject newGo = new GameObject();

        newGo.name = this.mapData.map_id.ToString();

        // 그라운드를 만든다.
        GameObject groundPrefab = PrefabsManager.GetInstance().dicGroundPrefabs[mapData.groundName];

        Instantiate(groundPrefab).transform.parent = newGo.transform;

        // 환경을 배치한다.
        for (int i = 0; i < mapData.listEnvirnment.Count; i++)
        {
            GameObject envirGo = PrefabsManager.GetInstance().dicEnvironmentPrefabs[mapData.listEnvirnment[i].name];
            Vector3    pos     = new Vector3(mapData.listEnvirnment[i].x, mapData.listEnvirnment[i].y, 0);

            Instantiate(envirGo, pos, Quaternion.identity).transform.parent = newGo.transform;
        }

        // 초록 베이스
        {
            GameObject basePrefab = PrefabsManager.GetInstance().dicBasePrefabs[mapData.greenBaseName];
            var        go         = Instantiate(basePrefab, new Vector3(0, 0, 100), Quaternion.identity);
        }

        // 노랑 베이스
        {
            GameObject basePrefab = PrefabsManager.GetInstance().dicBasePrefabs[mapData.yellowBaseName];
            var        go         = Instantiate(basePrefab, new Vector3(0, 0, 100), Quaternion.identity);
        }

        // 그리드를 생성한다.
        var grid = GetComponent <YellowBean.Grid>();

        grid.gridWorldSize = new Vector2(mapData.grid_x, mapData.grid_y);
        grid.nodeRadius    = mapData.node_radius;

        grid.CreateGrid();

        // 세이브 버튼을 활성화 한다.
        btnSave.enabled = true;
    }
Example #14
0
    void StoryModeSort()
    {
        // 나머지 버튼을 초기화 한다.
        {
            for (int ii = 0; ii < trStroyContent.childCount; ii++)
            {
                var child = trStroyContent.GetChild(ii);
                child.GetComponent <UIStoryStageItem>().IsSelect = false;
            }
        }

        trStroyContent.GetChild(0).GetComponent <UIStoryStageItem>().IsSelect = true;

        // 1번 스테이지
        var stageData = DataManager.GetInstance().dicStoryStageData[1];

        // 플레이 데이터를 설정한다.
        PlayData.id            = stageData.id;
        PlayData.map_id        = stageData.map_id;
        PlayData.cost          = stageData.cost;
        PlayData.Mode          = PlayData.ePlayMode.Story;
        PlayData.listUnitInfos = stageData.listUnitInfos;

        // Desc를 설정한다.
        txtStoryStageDesc.text = DataManager.GetInstance().dicStoryStageData[PlayData.id].desc;

        // 썸네일
        var    mapData   = DataManager.GetInstance().dicMapData[PlayData.map_id];
        Sprite mapSprite = PrefabsManager.GetInstance().dicGroundPrefabs[mapData.groundName].GetComponentInChildren <SpriteRenderer>().sprite;

        imgStoryThumb.sprite = mapSprite;
        imgStoryThumb.color  = Color.white;

        // 리스트 맨 위로
        trStroyContent.GetComponent <RectTransform>().anchoredPosition3D = Vector3.zero;
    }
Example #15
0
    public Unit CreateUnit(YBEnum.eUnitName unitName, YBEnum.eColorType colorType, Vector2 position)
    {
        // 유닛 프리펩과 모델을 가져온다.
        GameObject unitPrefab  = PrefabsManager.GetInstance().GetUnitPrefab(unitName);
        GameObject modelPrefab = PrefabsManager.GetInstance().GetModelPrefab(unitName, colorType);

        // 유닛을 생성한다.
        GameObject unitGo = Instantiate(unitPrefab, Vector3.zero, Quaternion.identity);

        // 모델을 생성한다.
        // 이름을 모델로 변경한다.
        // 트랜스폼을 조정한다.
        GameObject modelGo = Instantiate(modelPrefab);

        modelGo.name             = "Model";
        modelGo.transform.parent = unitGo.transform;

        // 유닛의 위치를 변경한다.
        unitGo.transform.position = position;

        // 유닛의 태그를 설정한다.
        unitGo.tag = colorType.ToString();

        // 유닛 정보를 초기화 한다.
        Unit unit = unitGo.GetComponent <Unit>();

        if (unit.status == null)
        {
            UnitData data = DataManager.GetInstance().GetUnitData(unitName.ToString());

            // 유닛 데이터를 복사해서 생성한다.
            unit.status = new UnitData(data);
        }

        return(unit);
    }
Example #16
0
 void Start()
 {
     prefabsManager = PrefabsManager.GetInstance();
     levelCreator   = LevelCreator.GetInstance();
 }
Example #17
0
    private void StoryModeInit()
    {
        /* 스테이지 목록을 쭉 불러온다.
         */
        for (int i = 0; i < 20; i++)
        {
            // 스테이지 데이터가 없으면.
            // 넘어간다.
            if (!DataManager.GetInstance().dicStoryStageData.ContainsKey(i + 1))
            {
                continue;
            }

            // 1번 스테이지 부터 20번 스테이지 까지.
            var stageData = DataManager.GetInstance().dicStoryStageData[i + 1];

            // 아이템을 생성한다.
            GameObject go = Instantiate(itemStoryStage);
            go.transform.SetParent(trStroyContent);
            go.transform.localRotation = Quaternion.Euler(Vector3.zero);
            var rt = go.GetComponent <RectTransform>();
            rt.anchoredPosition3D = Vector3.zero;

            // 아이템 정보를 세팅한다.
            var item = go.GetComponent <UIStoryStageItem>();
            item.IsSelect = false;

            // 타이틀을 설정한다.
            string stageTitle = string.Format("STAGE {0}", stageData.id);
            item.txtTitle.text = stageTitle;

            // 별을 기본 -1로 설정한다.
            // 잠금 이미지.
            item.StarCnt = -1;

            // 유저 정보를 기반으로 다시 생성한다.
            if (DataManager.GetInstance().userInfo.arrStageInfo.Length > i)
            {
                var stageInfo = DataManager.GetInstance().userInfo.arrStageInfo[i];

                if (stageInfo.opened)
                {
                    item.StarCnt = stageInfo.starCnt;
                }
            }

            // 버튼을 추가한다.
            var btn = go.GetComponent <Button>();
            btn.onClick.AddListener(() =>
            {
                // 나머지 버튼을 초기화 한다.
                {
                    for (int ii = 0; ii < trStroyContent.childCount; ii++)
                    {
                        var child = trStroyContent.GetChild(ii);
                        child.GetComponent <UIStoryStageItem>().IsSelect = false;
                    }
                }
                btn.GetComponent <UIStoryStageItem>().IsSelect = true;

                // 플레이 데이터를 설정한다.
                PlayData.id            = stageData.id;
                PlayData.map_id        = stageData.map_id;
                PlayData.cost          = stageData.cost;
                PlayData.Mode          = PlayData.ePlayMode.Story;
                PlayData.listUnitInfos = stageData.listUnitInfos;

                // Desc를 설정한다.
                txtStoryStageDesc.text = DataManager.GetInstance().dicStoryStageData[PlayData.id].desc;

                // 썸네일
                var mapData          = DataManager.GetInstance().dicMapData[PlayData.map_id];
                Sprite mapSprite     = PrefabsManager.GetInstance().dicGroundPrefabs[mapData.groundName].GetComponentInChildren <SpriteRenderer>().sprite;
                imgStoryThumb.sprite = mapSprite;
                imgStoryThumb.color  = Color.white;
            });
        }

        // 플레이 버튼을 초기화 한다.
        btnStoryPlay.onClick.AddListener(() =>
        {
            YellowBean.SoundManager.Instance.PlayBgm("Castle Attack", true, 0.2f);
            UnityAnalyticsManager.GetInstance().OnClickButton();
            if (PlayData.id == -1)
            {
                return;
            }

            App.Instance.LoadScene(playScneName);
        });

        btnOption.onClick.AddListener(() =>
        {
            this.option.SetActive(true);
        });

        // 유저 총 별 개수를 표시한다.
        int startCnt = DataManager.GetInstance().GetStarCnt();

        txtTotalStarts.text = startCnt.ToString();
    }
Example #18
0
    void InitializeUI()
    {
        foreach (var e in PrefabsManager.GetInstance().dicUnitPrefabs)
        {
            GameObject unitGo = e.Value;
            Unit       unit   = unitGo.GetComponent <Unit>();

            if (DataManager.GetInstance().HasUnitData(unit.name))
            {
                Toggle toggle = Instantiate(unitSelectTogglePrefab);
                toggle.transform.parent = toggleGroup.transform;
                toggle.group            = toggleGroup;
                toggle.isOn             = false;
                toggle.name             = unit.name;

                toggle.GetComponentInChildren <Text>().text =
                    DataManager.GetInstance().GetUnitData(unit.name).cost.ToString();
                toggles.Add(toggle);
            }
        }

        btnStart.onClick.AddListener(() =>
        {
            if (listUnit == null)
            {
                return;
            }

            foreach (var unit in listUnit)
            {
                unit.onAi = true;
            }
        });

        btnReset.onClick.AddListener(() =>
        {
            if (listUnit == null)
            {
                return;
            }

            foreach (var unit in listUnit)
            {
                Destroy(unit.gameObject);
            }
            listUnit.Clear();
        });

        btnUndo.onClick.AddListener(() =>
        {
            if (listUnit == null)
            {
                return;
            }

            if (listUnit.Count <= 0)
            {
                return;
            }

            Unit unit = listUnit[listUnit.Count - 1];
            Destroy(unit.gameObject);

            listUnit.Remove(unit);
        });
    }
    void GetStagesResponse(string data, int sortType)
    {
        // 디시리얼라이즈 한다.
        var res_getAllStages = JsonConvert.DeserializeObject <Protocol.res_getStages>(data);

        if (res_getAllStages == null)
        {
            Protocol.ResponseError(Protocol.eErrorType.Null);
            return;
        }

        if (res_getAllStages.cmd != 400)
        {
            Protocol.ResponseError(Protocol.eErrorType.getAllStages);
            return;
        }

        for (int i = 0; i < trUserContent.childCount; i++)
        {
            Destroy(trUserContent.GetChild(i).gameObject);
        }
        userModeDesc.Init(-99, null, null, null, null, null);

        sortToggle.Toggle(sortType);

        int cnt = res_getAllStages.arrStageInfo.Length;

        for (int i = 0; i < cnt; i++)
        {
            var stageInfo = res_getAllStages.arrStageInfo[i];

            // 위치를 설정한다.
            var item = Instantiate <UIUserStageItem>(itemUserStage);
            item.transform.SetParent(trUserContent);
            item.transform.localRotation = Quaternion.Euler(Vector3.zero);

            if (i == 0)
            {
                item.IsSelect = true;
            }
            else
            {
                item.IsSelect = false;
            }

            RectTransform rt = item.GetComponent <RectTransform>();
            rt.anchoredPosition3D = Vector3.zero;

            // 정보를 설정한다.
            item.SetUserStage(stageInfo.stage_id, stageInfo.title);

            // 버튼 기능을 추가한다.
            var btn = item.GetComponent <Button>();
            btn.onClick.AddListener(() =>
            {
                // 나머지 버튼을 초기화 한다.
                {
                    for (int ii = 0; ii < trUserContent.childCount; ii++)
                    {
                        var child = trUserContent.GetChild(ii);
                        child.GetComponent <UIUserStageItem>().IsSelect = false;
                    }
                }
                btn.GetComponent <UIUserStageItem>().IsSelect = true;

                // 플레이 데이터를 채운다.
                PlayData.id     = stageInfo.stage_id;
                PlayData.map_id = stageInfo.map_id;
                PlayData.Mode   = PlayData.ePlayMode.User;
                PlayData.cost   = DataManager.GetInstance().dicMapCost[PlayData.map_id].cost;
                PlayData.score  = stageInfo.elapsed_score;

                string desc = string.Format("[{0}][{1}]", PlayData.id, stageInfo.title);

                string name = stageInfo.user_name;
                userModeDesc.Init(
                    sortType,
                    stageInfo.favorite_count.ToString(),
                    stageInfo.clear_count.ToString(),
                    stageInfo.elapsed_score.ToString(),
                    stageInfo.created_at,
                    name);

                // 썸네일
                var mapData      = DataManager.GetInstance().dicMapData[PlayData.map_id];
                Sprite mapSprite =
                    PrefabsManager.GetInstance().dicGroundPrefabs[mapData.groundName].GetComponentInChildren <SpriteRenderer>().sprite;
                imgUserThumb.sprite = mapSprite;
                imgUserThumb.color  = Color.white;
            });
        }

        // 첫번째 스테이지 활성화
        {
            var stageInfo = res_getAllStages.arrStageInfo[0];

            // 플레이 데이터를 채운다.
            PlayData.id     = stageInfo.stage_id;
            PlayData.map_id = stageInfo.map_id;
            PlayData.Mode   = PlayData.ePlayMode.User;
            PlayData.cost   = DataManager.GetInstance().dicMapCost[PlayData.map_id].cost;
            PlayData.score  = stageInfo.elapsed_score;

            string desc = string.Format("[{0}][{1}]", PlayData.id, stageInfo.title);

            userModeDesc.Init(
                sortType,
                stageInfo.favorite_count.ToString(),
                stageInfo.clear_count.ToString(),
                stageInfo.elapsed_score.ToString(),
                stageInfo.created_at,
                stageInfo.user_name);

            // 썸네일
            var    mapData   = DataManager.GetInstance().dicMapData[PlayData.map_id];
            Sprite mapSprite =
                PrefabsManager.GetInstance().dicGroundPrefabs[mapData.groundName].GetComponentInChildren <SpriteRenderer>().sprite;
            imgUserThumb.sprite = mapSprite;
            imgUserThumb.color  = Color.white;

            // 리스트 맨 위로
            trUserContent.GetComponent <RectTransform>().anchoredPosition3D = Vector3.zero;
        }
    }