Beispiel #1
0
    //Simple Coroutine
    IEnumerator BugTimerCoroutine()
    {
        while (true)
        {
            if (SceneManager.GetActiveScene().name == "GameScene")
            {
                timeLeft = CloverDirector.GetInstance().GetBugTime();
                yield return(new WaitForSeconds(1));

                timeLeft--;
                if (timeLeft < 0)
                {
                    CloverDirector.GetInstance().SetBugID(-1);
                }
                UpdateBugTimer((int)CloverDirector.GetInstance().GetBugID());
                CloverDirector.GetInstance().SetBugTime(timeLeft);
                if (CloverDirector.GetInstance().GetBugID() == 3)
                {
                    if (CloverDirector.GetInstance().GetStat("energy") > 0)
                    {
                        CloverDirector.GetInstance().SetStat("energy", -1);
                    }
                    else
                    {
                        CloverDirector.GetInstance().SetStat("water", -1);
                    }
                }
            }
            else
            {
                yield return(null);
            }
        }
    }
    // Load bubble images corresponding to current conditions
    // If aphid is present, load sad bubble.
    // Else if sun and water stats are in 40~60 range, load heart bubble
    // Else if sun&water stats are in 30~70 range, load smile bubble
    void Update()
    {
        if (CloverDirector.GetInstance())
        {
            float sunStat   = CloverDirector.GetInstance().GetStat("sun");
            float waterStat = CloverDirector.GetInstance().GetStat("water");
            int   level     = (int)CloverDirector.GetInstance().GetStat("level");

            rectTransform.anchoredPosition = new Vector2(0, yPositions[level - 1]);

            if (CloverDirector.GetInstance().GetBugID() == 3)
            {
                bubbleImage.color  = new Color(1f, 1f, 1f, 1f);
                bubbleImage.sprite = bubbles[2];
            }
            else if (sunStat <= 60 && sunStat >= 40 && waterStat <= 60 && waterStat >= 40)
            {
                bubbleImage.color  = new Color(1f, 1f, 1f, 1f);
                bubbleImage.sprite = bubbles[0];
            }
            else if (sunStat <= 70 && sunStat >= 30 && waterStat <= 70 && waterStat >= 30)
            {
                bubbleImage.color  = new Color(1f, 1f, 1f, 1f);
                bubbleImage.sprite = bubbles[1];
            }
            else
            {
                bubbleImage.sprite = null;
                bubbleImage.color  = new Color(1f, 1f, 1f, 0f);
            }
        }
    }
Beispiel #3
0
    // update name!
    public async Task UpdateNewNameAsync()
    {
        await Task.Delay(100);

        Debug.Log("update name as " + playerName);
        CloverDirector.GetInstance().SetName(playerName);
        playerName = string.Empty; // clear temporary player name
    }
Beispiel #4
0
 // on ending popup click, reset clover information
 public void OnEndingPopUpResetClick()
 {
     buttonClick = GameObject.Find("ButtonClickSound").GetComponent <AudioSource>();
     buttonClick.Play();
     CloverDirector.GetInstance().Reset();
     CloverDirector.GetInstance().endingPopupOn = false;
     PopUp.GetInstance().ShowPopUp("Ending", false);
 }
Beispiel #5
0
 // on All reset button click, close setting popup and reset clover and collection data
 public void OnAllResetButtonClick()
 {
     buttonClick = GameObject.Find("ButtonClickSound").GetComponent <AudioSource>();
     buttonClick.Play();
     Debug.Log("All Reset button clicked!");
     PopUp.GetInstance().ShowPopUp("GameSettings", false);
     CloverDirector.GetInstance().Reset();
     Collection.GetInstance().Reset();
 }
    async void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape) == true)
        {
            await Task.Run(CloverDirector.GetInstance().SetData);

            Application.Quit();
        }
    }
    public async void OnExitButtonClick()
    {
        buttonClick = GameObject.Find("ButtonClickSound").GetComponent <AudioSource>();
        buttonClick.Play();
        Debug.Log("Exit button click");
        //저장하고 종료하기
        await Task.Run(CloverDirector.GetInstance().SetData);

        Application.Quit();
    }
 // Return singleton CloverDirector
 // Used to access CloverDirector outside of this script
 public static CloverDirector GetInstance()
 {
     if (myCloverDirector == null)
     {
         myCloverDirector = FindObjectOfType <CloverDirector>();
         if (myCloverDirector == null)
         {
             GameObject container = new GameObject("CloverDirector");
             myCloverDirector = container.AddComponent <CloverDirector>();
         }
     }
     return(myCloverDirector);
 }
    async Task LoadGame()
    {
        // Load playerID from PlayerPrefs
        string loadedID = PlayerPrefs.GetString("playerID");

        Debug.Log("load player ID from playerprefs " + loadedID);

        // GameSettings data loading from Azure Server
        GameSettings.GetInstance().playerID = loadedID;
        await Task.Run(GameSettings.GetInstance().GetData);

        Debug.Log("GameSettings Data loading complete.");

        // if successful loading, update current playerID to PlayerPrefs
        loadedID = GameSettings.GetInstance().GetID();
        if (GameSettings.GetInstance().GetGameSetting() != null)
        {
            PlayerPrefs.SetString("playerID", loadedID);
            Debug.Log("set player ID to playerprefs " + loadedID);
        }
        else
        {
            Debug.LogError("Failed to load game, try again later");
        }

        // Clover data loading from Azure Server
        CloverDirector.GetInstance().playerID = loadedID;
        await Task.Run(CloverDirector.GetInstance().GetData);

        Debug.Log("Clover data loading complete.");

        // Collection data loading from Azure Server
        Collection.GetInstance().playerID = loadedID;
        await Task.Run(Collection.GetInstance().GetData);

        if (GameSettings.GetInstance().GetLanguage() != string.Empty)
        {
            Collection.GetInstance().SetScript(); // Set Script from .txt file!
        }
        Debug.Log("Collection Data loading complete.");

        // Change to GameScene
        if (GameSettings.GetInstance().GetLanguage() == string.Empty || CloverDirector.GetInstance().GetName() == string.Empty) // language setting needed!
        {
            SceneManager.LoadScene("PrologueScene");
        }
        else
        {
            SceneManager.LoadScene("GameScene");
        }
    }
    // If clover has enough sun & water stats to generate energy, convert sun & water stats to energy
    // Check if clover can level up
    public void OnEnergyButtonClick()
    {
        buttonClick = GameObject.Find("ButtonClickSound").GetComponent <AudioSource>();
        buttonClick.Play();
        bool canConvert = CloverDirector.GetInstance().GetStat("sun") > energy_convert_ratio && CloverDirector.GetInstance().GetStat("water") > energy_convert_ratio;

        if (canConvert)
        {
            CloverDirector.GetInstance().SetStat("sun", -energy_convert_ratio);
            CloverDirector.GetInstance().SetStat("water", -energy_convert_ratio);
            CloverDirector.GetInstance().SetStat("energy", 5);
            CloverDirector.GetInstance().LevelUp();
        }
    }
Beispiel #11
0
 // If time is left and bugID is not -1, start bug timer
 public void StartBugTimer()
 {
     timeLeft = CloverDirector.GetInstance().GetBugTime();
     if (timeLeft < 0)
     {
         timeLeft = 60;
         CloverDirector.GetInstance().SetBugTime(timeLeft);
     }
     if (CloverDirector.GetInstance().GetBugID() != -1)
     {
         StartCoroutine("BugTimerCoroutine");
     }
     Time.timeScale = 1; //Just making sure that the timeScale is right
 }
    // Check if clover met any of ending conditions
    // If ending conditions are met, load EndingPopUp and reset clover
    public void CheckEnding()
    {
        int ending_number = 0;

        if (GetStat("water") <= 0)
        {
            //thirsty
            print("Died of thirst");
            ending_number = 1;
        }
        else if (GetStat("water") >= 100)
        {
            //drown
            print("Drown");
            ending_number = 2;
        }
        else if (GetStat("sun") <= 0)
        {
            //too cold
            print("Freezed");
            ending_number = 3;
        }
        else if (GetStat("sun") >= 100)
        {
            //too hot
            print("Dried");
            ending_number = 4;
        }
        else if (GetStat("level") == 6)
        {
            //survived successfully
            print("Congratulations!");
            ending_number = 5;
        }

        if (ending_number > 0)
        {
            //            EndingDirector.GetInstance().EndingFunctionOn(false); // random event ending off
            UpdateStats();
            WeatherFunctionOn(false); // weather change off
            CloverDirector.GetInstance().endingPopupOn = true;
            SetBugID(-1);             // bug timer off
            Debug.Log("Ending : " + ending_number);
            PopUp.GetInstance().FindText("Ending").text    = Collection.GetInstance().GetString("info", ending_number);
            PopUp.GetInstance().FindImage("Ending").sprite = Collection.GetInstance().GetImage(ending_number);
            PopUp.GetInstance().ShowPopUp("Ending", true);
            Collection.GetInstance().SetOpened(ending_number);
        }
    }
 // Makes weather coroutine running or stop
 // If functionOn is true, make weather coroutines running
 // Else make weather coroutines stop
 public void WeatherFunctionOn(bool functionOn)
 {
     if (!CloverDirector.GetInstance().weatherRunning&& functionOn)
     {
         StartCoroutine("WeatherChange");
         StartCoroutine("WeatherStatChange");
         CloverDirector.GetInstance().weatherRunning = true;
     }
     else if (CloverDirector.GetInstance().weatherRunning&& !functionOn)
     {
         StopCoroutine("WeatherChange");
         StopCoroutine("WeatherStatChange");
         CloverDirector.GetInstance().weatherRunning = false;
     }
 }
 // If it's GameScene, update UIs and check if any ending condition is met
 // if it's game scene and weather is not running when it should, makes weather running
 void Update()
 {
     if (SceneManager.GetActiveScene().name == "GameScene")
     {
         if (!CloverDirector.GetInstance().endingPopupOn)
         {
             UpdateStats();
         }
         if (!CloverDirector.GetInstance().weatherRunning&& myClover.c_name != string.Empty && !CloverDirector.GetInstance().endingPopupOn)
         {
             WeatherFunctionOn(true);
             CloverDirector.GetInstance().weatherRunning = true;
         }
     }
 }
Beispiel #15
0
 // Get final water gain, update text UI, and change clover stat
 void Start()
 {
     waterGain = GameObject.Find("gainedWater");
     if (MineGameDirector.clear)
     {
         waterGain.GetComponent <Text>().text = (MineGameDirector.water / 5).ToString("F1");
         CloverDirector.GetInstance().SetStat("water", MineGameDirector.water / 5);
         CloverDirector.GetInstance().SetStat("energy", 3);
         print(MineGameDirector.water / 5 + " added to water score.");
     }
     else
     {
         waterGain.GetComponent <Text>().text = (MineGameDirector.water / 5).ToString("F1");
         CloverDirector.GetInstance().SetStat("water", MineGameDirector.water / 5);
         print(MineGameDirector.water / 5 + " added to water score.");
     }
 }
Beispiel #16
0
    // If clover can generate molecules, set random bugID
    // Close bug popup
    public void OnGenerateMoleculeButtonClick()
    {
        buttonClick = GameObject.Find("ButtonClickSound").GetComponent <AudioSource>();
        buttonClick.Play();

        Debug.Log("Generate Molecule Button Click");
        // code for molecule generation
        bool canGenerate = CloverDirector.GetInstance().GetStat("energy") > energy_convert_ratio;

        canGenerate = canGenerate && CloverDirector.GetInstance().GetBugID() == -1;

        if (canGenerate)
        {
            Debug.Log("use energy to generate molecule");
            CloverDirector.GetInstance().SetStat("energy", -energy_convert_ratio);
            int RandomBug = (int)Random.Range(0, 4); // 0~3
            CloverDirector.GetInstance().SetBugID(RandomBug);
        }
        PopUp.GetInstance().ShowPopUp("Bug", false);
    }
    // Change weather in every weatherCycle seconds during player is in GameScene
    IEnumerator WeatherChange()
    {
        while (true)
        {
            if (SceneManager.GetActiveScene().name == "GameScene")
            {
                // Set random weather
                CloverDirector.GetInstance().SetWeather((int)UnityEngine.Random.Range(0, 3));

                // Save changes and load appopriate textures
                LoadWeatherTexture(CloverDirector.GetInstance().GetWeather());
                int weather_ID = CloverDirector.GetInstance().GetWeather();

                yield return(new WaitForSeconds(myClover.weatherCycle));
            }
            else
            {
                yield return(new WaitUntil(() => SceneManager.GetActiveScene().name == "GameScene"));
            }
        }
    }
    // Load background & sun/cloud/rain image according to weather
    // By controlling alpha color of every UI images
    // And if raining, load rain sound
    void LoadWeatherTexture(int weather_ID)
    {
        GameObject sunny   = GameObject.Find("SunnyBackground");
        GameObject sunny2  = GameObject.Find("SunImage");
        GameObject cloudy  = GameObject.Find("CloudyBackground");
        GameObject cloudy2 = GameObject.Find("CloudImage");
        GameObject rainy   = GameObject.Find("RainyBackground");
        GameObject rainy2  = GameObject.Find("RainImage");

        if (weather_ID == 0)
        {
            sunny.GetComponent <Image>().color   = new Color(1f, 1f, 1f, 1f);
            cloudy.GetComponent <Image>().color  = new Color(1f, 1f, 1f, 0f);
            rainy.GetComponent <Image>().color   = new Color(1f, 1f, 1f, 0f);
            sunny2.GetComponent <Image>().color  = new Color(1f, 1f, 1f, 1f);
            cloudy2.GetComponent <Image>().color = new Color(1f, 1f, 1f, 0f);
            rainy2.GetComponent <Image>().color  = new Color(1f, 1f, 1f, 0f);
        }
        else if (weather_ID == 1)
        {
            sunny.GetComponent <Image>().color   = new Color(1f, 1f, 1f, 0f);
            cloudy.GetComponent <Image>().color  = new Color(1f, 1f, 1f, 1f);
            rainy.GetComponent <Image>().color   = new Color(1f, 1f, 1f, 0f);
            sunny2.GetComponent <Image>().color  = new Color(1f, 1f, 1f, 0f);
            cloudy2.GetComponent <Image>().color = new Color(1f, 1f, 1f, 1f);
            rainy2.GetComponent <Image>().color  = new Color(1f, 1f, 1f, 0f);
        }
        else if (weather_ID == 2)
        {
            sunny.GetComponent <Image>().color   = new Color(1f, 1f, 1f, 0f);
            cloudy.GetComponent <Image>().color  = new Color(1f, 1f, 1f, 0f);
            rainy.GetComponent <Image>().color   = new Color(1f, 1f, 1f, 1f);
            sunny2.GetComponent <Image>().color  = new Color(1f, 1f, 1f, 0f);
            cloudy2.GetComponent <Image>().color = new Color(1f, 1f, 1f, 0f);
            rainy2.GetComponent <Image>().color  = new Color(1f, 1f, 1f, 1f);
        }

        LoadRainSound(CloverDirector.GetInstance().GetWeather() == 2);
    }
    // Update text UIs and load clover/weather textures
    // Only works on GameScene
    void UpdateStats()
    {
        if (SceneManager.GetActiveScene().name == "GameScene")
        {
            // Find Text UIs
            Text WaterStatus  = GameObject.Find("WaterStatus").GetComponent <Text>();
            Text SunStatus    = GameObject.Find("SunStatus").GetComponent <Text>();
            Text EnergyStatus = GameObject.Find("EnergyStatus").GetComponent <Text>();
            Text Level        = GameObject.Find("Level").GetComponent <Text>();
            Text Name         = GameObject.Find("Name").GetComponent <Text>();

            // Update Text UIs
            WaterStatus.GetComponent <Text>().text  = CloverDirector.GetInstance().GetStat("water").ToString("F1");
            SunStatus.GetComponent <Text>().text    = CloverDirector.GetInstance().GetStat("sun").ToString("F1");
            EnergyStatus.GetComponent <Text>().text = CloverDirector.GetInstance().GetStat("energy").ToString("F1");
            Level.GetComponent <Text>().text        = "LV." + CloverDirector.GetInstance().GetStat("level").ToString("F0");
            Name.GetComponent <Text>().text         = CloverDirector.GetInstance().GetName();

            // Load clover & weather textures
            LoadCloverTexture(myClover.c_level);
            LoadWeatherTexture(myClover.c_weather_ID);
        }
    }
    // Makes CloverDirector DontDestroyOnLoad
    async void Awake()
    {
        if (SceneManager.GetActiveScene().name == "GameScene")
        {
            // If clover doesn't have name on GameScene, make NamePopUp
            if (myClover.c_name == string.Empty)
            {
                Debug.Log("name is null");
                await PopUp.GetInstance().ShowNamePopUp();
            }
        }
        CloverDirector.GetInstance().weatherRunning = false; // Initialize weatherRunning variable

        //DontDestroyOnLoad
        if (myCloverDirector == null)
        {
            DontDestroyOnLoad(gameObject);
            myCloverDirector = this;
        }
        else if (myCloverDirector != this)
        {
            Destroy(gameObject);
        }
    }
Beispiel #21
0
    public Sprite[] bugs;  // Sprite arrays for bugs

    void Start()
    {
        StartBugTimer();
        UpdateBugTimer((int)CloverDirector.GetInstance().GetBugID());
    }
    // Generate random ending event
    void RandomEnding()
    {
        // Probability of random ending(unit : %)
        int chickenProbability = 10;
        int rabbitProbability  = 10;
        int horseProbability   = 10;
        int mowerProbability   = 10;
        int tornadoProbability = 10;
        int aphidProbability   = 10;
        int boyProbability     = 10;

        float[] endingProbabilities = new float[7];
        endingProbabilities[0] = chickenProbability;
        endingProbabilities[1] = endingProbabilities[0] + rabbitProbability;
        endingProbabilities[2] = endingProbabilities[1] + horseProbability;
        endingProbabilities[3] = endingProbabilities[2] + mowerProbability;
        endingProbabilities[4] = endingProbabilities[3] + tornadoProbability;
        endingProbabilities[5] = endingProbabilities[4] + aphidProbability;
        endingProbabilities[6] = endingProbabilities[5] + boyProbability;

        int ending        = (int)Random.Range(0, 100);
        int ending_number = 0;

        if (ending < endingProbabilities[0])
        {
            print("Chicken Ending");
            ending_number = 6;
        }
        else if (ending < endingProbabilities[1])
        {
            print("Rabbit Ending");
            ending_number = 7;
        }
        else if (ending < endingProbabilities[2])
        {
            print("Horse Ending");
            ending_number = 8;
        }
        else if (ending < endingProbabilities[3])
        {
            print("Lawn mower Ending");
            ending_number = 9;
        }
        else if (ending < endingProbabilities[4])
        {
            print("Tornado Ending");
            ending_number = 10;
        }
        else if (ending < endingProbabilities[5] && CloverDirector.GetInstance().GetBugID() == 3)
        {
            print("Aphid Ending");
            ending_number = 11;
        }
        else if (ending < endingProbabilities[6])
        {
            print("Boy Ending");
            ending_number = 12;
        }

        if (ending_number > 0)
        {
            EndingFunctionOn(false);                               // random event ending off
            CloverDirector.GetInstance().endingPopupOn = true;
            CloverDirector.GetInstance().WeatherFunctionOn(false); // weather change off
            CloverDirector.GetInstance().SetBugID(-1);             // bug timer off
            Debug.Log("Ending : " + ending_number);
            PopUp.GetInstance().FindText("Ending").text    = Collection.GetInstance().GetString("info", ending_number);
            PopUp.GetInstance().FindImage("Ending").sprite = Collection.GetInstance().GetImage(ending_number);
            PopUp.GetInstance().ShowPopUp("Ending", true);
            Collection.GetInstance().SetOpened(ending_number);
        }
    }