Пример #1
0
    public static bool AddNewMukya(Mukya.MukyaRace race, float position)
    {
        string raceString = race.ToString();
        ProfileManager.Instance.Mukyas.Add(new ProfileManager.MukyaData(raceString, 100f, 100f, 100f));

        return AddNewMukya(raceString, 100f, 100f, 100f, position);
    }
Пример #2
0
    public void Idle(Mukya mukya)
    {
        OnMoveDone -= Idle;

        _Animator.Play("idle");

        StartCoroutine(Wait());
    }
Пример #3
0
    public bool AddResident(Mukya mukya)
    {
        if (_Residents.Count < MAX_RESIDENT)
        {
            mukya.None();
            _Residents.Add(mukya);

            return true;
        }

        return false;
    }
Пример #4
0
    public static void ShowMukyaInformation(Mukya mukya)
    {
        if (s_Instance == null) return;

        s_Instance._CurrentMukya = mukya;
        s_Instance.MukyaInformation.SetActive(true);

        string curr_name = "alien" + mukya._Race + "_badge1";
        s_Instance.MukyaMini.SetSprite(curr_name);
    }
Пример #5
0
    public static bool AddNewMukya(Mukya.MukyaRace race)
    {
        if (s_Instance == null) return false;

        return AddNewMukya(race, s_Instance._BuildingCityHall.Position());
    }
Пример #6
0
    // Update is called once per frame
    void Update()
    {
        //Pause
        if (Utilities.IS_PAUSED) return;

        /*
        if (_SelectedMukya != null)
        {
            Debug.Log(_SelectedMukya.Position()
                      + " " + _SelectedMukya._Race.ToString()
                      + " " + _SelectedMukya.Destination());
        }
        */

        bool checkInput = false;

        if (Input.touchCount > 0)
        {
            foreach(Touch t in Input.touches)
            {
                if (!_IsTouched)
                {
                    if (t.phase == TouchPhase.Began)
                    {
                        _TouchOrigin = t.position;
                        _TouchTime = 0f;
                    }
                    else if (t.phase == TouchPhase.Stationary)
                    {
                        if (!_IsTouchedMove)
                        {
                            _TouchTime += Time.deltaTime;
                            if (_TouchTime >= _TouchDetectTime)
                            {
                                _IsTouched = true;
                                checkInput = true;
                                break;
                            }
                        }
                    }
                    else if (t.phase == TouchPhase.Moved)
                    {
                        if (!_IsTouchedMove && Vector2.Distance(_TouchOrigin, t.position) > 10f)
                            _IsTouchedMove = true;
                    }
                    else if (t.phase == TouchPhase.Ended)
                    {
                        if (!_IsTouchedMove)
                            checkInput = true;

                        _IsTouched = false;
                        _IsTouchedMove = false;
                    }
                }
                else
                {
                    if (t.phase == TouchPhase.Ended)
                    {
                        _IsTouched = false;
                        _IsTouchedMove = false;
                    }
                }
            }
        }
        else
        {
            checkInput = Input.GetMouseButtonUp(0) && !_CameraDrag.IsMoving();
        }

        //When released
        if (checkInput)
        {
            //Translate to screen space
            Vector3 pos = _Camera.ScreenToWorldPoint(Input.mousePosition);
            Vector2 pos2D = new Vector2(pos.x, pos.y);

            Diamond touchedDiamond = GetSelectedDiamond(pos2D);
            if (touchedDiamond != null)
            {
                int index = (int)touchedDiamond._Type;
                SetDiamond(index, _PlayerDiamonds[index] + 1);
                UnSpawnDiamond(touchedDiamond);

                //Begin analytics

                List<Parameter> parameters = new List<Parameter>();
                parameters.Add(new Parameter("Feature", "Touching Crystal"));

                Reta.Instance.Record("Game Feature Consumed", parameters);

                //End analytics

                SoundManager.PlaySoundEffectOneShot("touched_crystal");

                return;
            }

            //Touching mukyas?
            Mukya touchedMukya = GetSelectedMukya(pos2D);

            //Check other
            if (touchedMukya == null)
            {
                //Touching building?
                Building touchedBuilding = GetSelectedBuilding(pos);
                if (touchedBuilding != null && HUD.CanIdleClick())
                {
                    //Make mukya go to building if selected before
                    if (_SelectedMukya != null)
                    {
                        //Only if it's these buildings of course
                        if (touchedBuilding._Type == Building.BuildingType.Bar ||
                            touchedBuilding._Type == Building.BuildingType.House ||
                            touchedBuilding._Type == Building.BuildingType.Shop ||
                            touchedBuilding._Type == Building.BuildingType.OuterWorld)
                        {
                            //Cancel if already moving
                            if (_OngoingResidents.ContainsKey(_SelectedMukya))
                            {
                                _SelectedMukya.OnMoveDone -= AddOngoingResident;
                                _OngoingResidents.Remove(_SelectedMukya);
                            }

                            bool moving = _SelectedMukya.Move(touchedBuilding.Position());
                            if (moving)
                            {
                                _SelectedMukya.StopAllCoroutines();
                                _SelectedMukya.OnMoveDone += AddOngoingResident;

                                _OngoingResidents.Add(_SelectedMukya, touchedBuilding);

                                /*
                                Debug.Log(_SelectedMukya.Position()
                                          + " " + _SelectedMukya._Race.ToString()
                                          + " " + touchedBuilding.Position()
                                          + " " + touchedBuilding._Type.ToString());
                                */

                                //Begin analytics

                                List<Parameter> parameters = new List<Parameter>();
                                parameters.Add(new Parameter("Feature", "Moving Resident In"));

                                Reta.Instance.Record("Game Feature Consumed", parameters);

                                //End analytics

                                SoundManager.PlaySoundEffectOneShot("meow2");
                            }
                        }
                        else
                        {
                            //Enable HUD
                            ShowBuildingUI(touchedBuilding);
                        }
                    }
                    else
                    {
                        //Just touching the building, enable HUD
                        ShowBuildingUI(touchedBuilding);
                    }
                }
            }

            //Continue
            _SelectedMukya = touchedMukya;

            if (_SelectedMukya != null)
            {
                HUD.ShowMukyaInformation(_SelectedMukya);

                SoundManager.PlaySoundEffectOneShot("meow");
            }
            else
                HUD.HideMukyaInformation();
        }
    }
Пример #7
0
    IEnumerator RemoveMukyaCoroutine(Mukya mukya)
    {
        yield return new WaitForSeconds(0.1f);

        if (mukya == _SelectedMukya)
        {
            _SelectedMukya = null;
            HUD.HideMukyaInformation();
        }

        _Mukyas.Remove(mukya);
        MainSceneController.SaveGame();

        DestroyObject(mukya.gameObject);
    }
Пример #8
0
    private void AddOngoingResident(Mukya mukya)
    {
        mukya.OnMoveDone -= AddOngoingResident;

        if (mukya == _SelectedMukya)
        {
            _SelectedMukya = null;
            HUD.HideMukyaInformation();
        }

        Building building = (Building)_OngoingResidents[mukya];

        if (building.CanResidenGo())
            building.AddResident(mukya);
        else
            mukya.Idle(mukya);

        _OngoingResidents.Remove(mukya);
    }
Пример #9
0
    public static void RemoveMukya(Mukya mukya)
    {
        if (s_Instance == null) return;

        if (mukya == null)
            return;
        else
            s_Instance.StartCoroutine(s_Instance.RemoveMukyaCoroutine(mukya));
    }