Пример #1
0
    InitUI()
    {
        if (btnUndo != null)
        {
            btnUndo.onClick.AddListener(() =>
            {
                int cnt = listUnit.Count;

                if (cnt > 0)
                {
                    var unit = listUnit[cnt - 1];

                    maxCost     += DataManager.GetInstance().GetUnitData(unit.status.name).cost;
                    txtCost.text = maxCost.ToString();

                    listUnit.Remove(unit);
                    Destroy(unit.gameObject);
                }
            });
        }

        if (btnReset != null)
        {
            btnReset.onClick.AddListener(() =>
            {
                foreach (var unit in listUnit)
                {
                    Destroy(unit.gameObject);
                }

                listUnit.Clear();

                maxCost      = PlayData.cost;
                txtCost.text = maxCost.ToString();
            });
        }


        if (btnPause != null)
        {
            btnPause.onClick.AddListener(() =>
            {
                goPause.SetActive(true);
            });
        }


        if (btnPlay != null)
        {
            btnPlay.onClick.AddListener(() =>
            {
                YellowBean.SoundManager.Instance.bgm.enabled = true;
                YellowBean.SoundManager.Instance.PlayBgm("Castle in the sky");
                // 현재 유닛 이름을 저장한다.
                for (int i = 0; i < listUnit.Count; i++)
                {
                    string unitName = listUnit[i].status.name;
                    UnityAnalyticsManager.GetInstance().UseUnit(unitName);
                }

                var arrSR = goBase.GetComponentsInChildren <SpriteRenderer>();

                for (int i = 0; i < arrSR.Length; i++)
                {
                    arrSR[i].DOColor(new Color(0, 0, 0, 0), 1f);
                }

                animBottom.Play("move", () =>
                {
                    animTop.Play("move", () =>
                    {
                        foreach (var unit in listUnit)
                        {
                            yMaxCost += unit.status.cost;

                            StartCoroutine(StartAI(unit));
                        }

                        foreach (var enemy in listEnemies)
                        {
                            gMaxCost += enemy.status.cost;

                            StartCoroutine(StartAI(enemy));
                        }

                        yOldCost = yMaxCost;
                        gOldCost = gMaxCost;

                        playState = ePlayState.Play;
                        startTime = Time.time;
                    });
                });
            });
        }

        for (int i = 0; i < arrUnitToggle.LongLength; i++)
        {
            // 토글을 가져온다.
            var toggleUnit = arrUnitToggle[i];

            // 토글에 맞는 유닛의 데이터를 가져온다.
            var data = DataManager.GetInstance().GetUnitData(toggleUnit.name);

            var txtCost = toggleUnit.GetComponentInChildren <Text>();
            txtCost.text = data.cost.ToString();

            // 토글에 이벤트를 추가한다.
            toggleUnit.onValueChanged.AddListener((on) =>
            {
                if (on)
                {
                    selectedUnitName = toggleUnit.name;
                }
            });
        }

        btnLike.onClick.AddListener(() =>
        {
            DoFavoriteStage();
        });

        btnRestart.onClick.AddListener(() =>
        {
            if (App.Instance != null)
            {
                btnRestart.enabled = false;
                App.Instance.LoadScene(playSceneName);
            }
        });

        btnBackStage.onClick.AddListener(() =>
        {
            if (App.Instance != null)
            {
                btnBackStage.enabled = false;
                App.Instance.LoadScene(modeSelectSceneName);
            }
        });

        btnNextStage.onClick.AddListener(() =>
        {
            int stageID = PlayData.id;
            Debug.Log(stageID);

            if (DataManager.GetInstance().dicStoryStageData.ContainsKey(stageID++))
            {
                var stageData          = DataManager.GetInstance().dicStoryStageData[stageID];
                PlayData.id            = stageData.id;
                PlayData.map_id        = stageData.map_id;
                PlayData.cost          = stageData.cost;
                PlayData.Mode          = PlayData.ePlayMode.Story;
                PlayData.listUnitInfos = stageData.listUnitInfos;

                if (App.Instance != null)
                {
                    App.Instance.LoadScene(playSceneName);
                }
            }
        });

        btnSave.onClick.AddListener(() =>
        {
            if (PlayData.cost - GetCurrentCost(listUnit) > 40f)
            {
                animBall.Rewind();
                var animClip = animBall.clip;

                goBalloon.SetActive(true);

                if (animBallRoutine != null)
                {
                    StopCoroutine(animBallRoutine);
                    animBallRoutine = null;
                }
                animBallRoutine = StartCoroutine(this.WaitForTime(animClip.length, () =>
                {
                    goBalloon.SetActive(false);
                }));

                return;
            }

            ifTitle.text = DataManager.GetInstance().dicMapData[PlayData.map_id].map_name;
            goSave.SetActive(true);
        });

        btnSaveOK.onClick.AddListener(() =>
        {
            DoSave();
        });

        // 콘텐츠 맨 앞.
        rtContent.anchoredPosition3D = Vector3.zero;

        // 애니메이션
        animBottom.Play("start", null);
    }
Пример #2
0
    public void Login(Action onComplete)
    {
        // 토큰이 있으면.
        // 구글 + 서버 접속 완료.
        if (Protocol.token != null)
        {
            onComplete();

            // 로그인에 성곡하면 기본 목록을 보여준다.
            GetStages(-1);

            return;
        }

        // 토큰이 없으면.
        // 서버 접속 실패.
        else
        {
            // GPGS 로그인이 안되어 있다면.
            if (Social.localUser.authenticated == false)
            {
                if (App.Instance != null)
                {
                    App.Instance.ShowLoading();
                }

                this.gpgsManager.Init();

                this.gpgsManager.SignIn((result) =>
                {
                    App.Instance.goLoading.SetActive(false);

                    UnityAnalyticsManager.GetInstance().UserLoginCount();
                    // GPGS 로그인에 성공 했다면.
                    if (result)
                    {
                        this.convertCountry();

                        // req_login 구조체에 채운다.
                        var req_login      = new Protocol.req_login();
                        req_login.cmd      = 900;
                        req_login.id       = Social.localUser.id;
                        req_login.userName = Social.localUser.userName;
                        req_login.country  = this.country;
                        req_login.deviceId = SystemInfo.deviceName;

                        // 시리얼 라이즈
                        var json = JsonConvert.SerializeObject(req_login);

                        // 포스트로 보낸다.
                        if (App.Instance != null)
                        {
                            App.Instance.reqCoroutine =
                                StartCoroutine(Protocol.Post("api/doLogin", json, data => LoginResponse(data, onComplete)));
                        }
                    }

                    // GPGS 로그인에 실패 했다면.
                    else
                    {
                        if (App.Instance != null)
                        {
                            App.Instance.ShowMessage("GPGS SignIn Error");
                        }
                        return;
                    }
                });
            }

            // 로그인이 되어있었다면.
            else
            {
                this.convertCountry();

                // req_login 구조체에 채운다.
                var req_login = new Protocol.req_login();
                req_login.cmd      = 900;
                req_login.id       = Social.localUser.id;
                req_login.userName = Social.localUser.userName;
                req_login.country  = this.country;
                req_login.deviceId = SystemInfo.deviceName;

                // 시리얼 라이즈
                var json = JsonConvert.SerializeObject(req_login);

                // 포스트로 보낸다.
                if (App.Instance != null)
                {
                    App.Instance.reqCoroutine =
                        StartCoroutine(Protocol.Post("api/doLogin", json, data => LoginResponse(data, onComplete)));
                }
            }
        }
    }
Пример #3
0
    void UserModeInit()
    {
        YellowBean.SoundManager.Instance.PlayBgm("Heroes of Legend (no loop)", true, 0.2f);
        userModeDesc.Init(-99, null, null, null, null, null);
        sortToggle.Toggle(-99);

        // 모드 선택 창 => 유저 모드 선택.
        // 로그인을 한다.
        Login(() =>
        {
            Vector2 moveValue = rtUserMode.anchoredPosition;
            rtUI.DOAnchorPos(-moveValue, duration);
        });

        btnOnlineModeBack.onClick.AddListener(() =>
        {
            YellowBean.SoundManager.Instance.PlayBgm("Whistle Fairy", true, 0.5f);
        });

        // 정렬 버튼
        btnLike.onClick.AddListener(() =>
        {
            GetStages((int)YBEnum.eSortType.Like);
        });
        btnClearCnt.onClick.AddListener(() =>
        {
            GetStages((int)YBEnum.eSortType.ClearCnt);
        });
        btnScore.onClick.AddListener(() =>
        {
            GetStages((int)YBEnum.eSortType.Score);
        });
        btnDate.onClick.AddListener(() =>
        {
            GetStages((int)YBEnum.eSortType.Date);
        });

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


        // 맵 만들기
        btnCreateStage.onClick.AddListener(() =>
        {
            UnityAnalyticsManager.GetInstance().OnClickCreateMap();
            PlayData.Init();
            PlayData.Mode = PlayData.ePlayMode.Editor;

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

        btnUserModePlay.onClick.AddListener(() =>
        {
            UnityAnalyticsManager.GetInstance().OnClickButton();
            if (PlayData.id != -1)
            {
                DoPlay(PlayData.id);
            }
        });

        btnRanking.onClick.AddListener(() =>
        {
            GetRank();
            // GetMyRank();

            Vector2 moveValue = rtRanking.anchoredPosition;
            rtUI.DOAnchorPos(-moveValue, duration);
        });
    }
Пример #4
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();
    }