Beispiel #1
0
    // create and save a GameDataForm
    public void SaveGameData()
    {
        // find GameData in the scene
        GameDataForm currentGameData = GameObject.Find("GameDataControl").GetComponent <GameData>();

        // set GameData variables according to PublicLevel
        currentGameData.SetGameData(PublicLevel.GetPlayerLevel(), PublicLevel.GetPlayerWin(), PublicLevel.GetCorn(), PublicLevel.friendlyType, PublicLevel.unlockType);
        // save current GameData
        SaveGame(currentGameData, GetFileName());
    }
Beispiel #2
0
    //called from PlayerBase when one of the player died
    public virtual void GameOver(bool isWin)
    {
        // if player destroyed hostile base
        if (isWin && gameOverFlag == false)
        {
            // if incoming boss remains
            if (PublicLevel.GetIsBoss())
            {
                //spawn boss
                spawnControl.SummonBoss();
                PublicLevel.SetIsBoss(false);
            }
            else
            {
                PublicLevel.SetPlayerLevel(PublicLevel.GetStageLevel() + 1);
                spawnControl.DeadAllHostileCreature();
                aiplayer.AIplayerStop();
                winPanel.SetActive(true);
                winPanel.transform.GetChild(0).GetComponent <Text>().text = "Your level is " + PublicLevel.GetPlayerLevel().ToString();
                Debug.Log("player win!");
            }

            for (int i = 0; i < PublicLevel.usingLaneNum; ++i)
            {
                GameObject[] laneObjects = GameObject.FindGameObjectsWithTag("Lane" + i.ToString());
                foreach (GameObject laneObject in laneObjects)
                {
                    if (laneObject.name == "creature0_0Prefab(Clone)" && laneObject.GetComponent <DefaultCreature>().GetSide() == GameControl.Sides.Hostile)
                    {
                        laneObject.GetComponent <DefaultCreature>().Dead();
                    }
                }
            }
            return;
        }
        // if player's base was destroyed
        else if (!isWin && gameOverFlag)
        {
            losePanel.SetActive(true);
        }
        gameOverFlag = true;
        aiplayer.AIplayerStop();
    }
Beispiel #3
0
    private void Start()
    {
        //make buttons to call TargetCreature function which sends upgradeoption[temp] as a parameter.
        for (int i = 0; i < PublicLevel.friendlyTypeCreatureNum; i++)
        {
            upgradeButton[i] = GameObject.Find("UpgradeButton" + (i + 1)).GetComponent <Button>();
            int temp = i; //used temp since just using i makes every buttons to send last i value as a parameter
            upgradeButton[i].GetComponent <Button>().onClick.AddListener(delegate { TargetCreature(upgradeOption[temp]); });
        }

        //make buttons toi call ChangeCreature fucntion
        for (int i = 0; i < PublicLevel.usingCreatureNum; i++)
        {
            locationButton[i] = GameObject.Find("Location" + (i + 1)).GetComponent <Button>();
            int temp = i;
            locationButton[temp].onClick.AddListener(delegate { ChangeCreature(temp); });
        }

        unlockPopup.SetActive(false);
        //UI upgradShop is not shown until upgradeShop is active
        upgradeShop.SetActive(false);

        //Try to find GameDataControl
        gameDataControl = GameObject.Find("GameDataControl");

        //if no gameDataControl exists, instantiate one new gameDataControl
        if (gameDataControl == null)
        {
            gameDataControl      = Instantiate(new GameObject(), transform.position, Quaternion.identity);
            gameDataControl.name = "GameDataControl";
            gameData             = gameDataControl.AddComponent <GameData>();

            loadedData = gameData.LoadGameData();


            //load when StageSelect scene was first loaded. If there's no loadedData, make a default setting for player - level, win, creature type using.
            if (loadedData == null)
            {
                PublicLevel.SetPlayerLevel(1);
                PublicLevel.SetPlayerWin(0);
                PublicLevel.SetCorn(0);
                for (int i = 1; i < 6; i++)
                {
                    PublicLevel.unlockType[i, 0] = true;
                }
                for (int i = 0; i < PublicLevel.friendlyTypeCreatureNum; i++)
                {
                    PublicLevel.friendlyType[i] = new Vector2Int(i, 0);
                }
            }
            else
            {
                PublicLevel.SetPlayerLevel(loadedData.GetPlayerLevel());
                PublicLevel.SetPlayerWin(loadedData.GetPlayerWin());
                PublicLevel.SetCorn(loadedData.GetCorn());

                for (int i = 0; i < PublicLevel.usingCreatureNum; i++)
                {
                    PublicLevel.friendlyType[i] = new Vector2Int(loadedData.GetFriendlyType()[i].x, loadedData.GetFriendlyType()[i].y);
                }

                for (int i = 0; i < PublicLevel.friendlyTypeCreatureNum; i++)
                {
                    for (int k = 0; k < PublicLevel.friendlyTypeUpgradeNum; k++)
                    {
                        PublicLevel.unlockType[i, k] = loadedData.GetUnlockType()[i, k];
                    }
                }
            }

            //fill frienldyCreatureList based on loaded/default friendlyType
            for (int i = 0; i < PublicLevel.friendlyTypeCreatureNum; i++)
            {
                PublicLevel.friendlyCreatureList[i] = PublicLevel.friendlyPrefab[PublicLevel.friendlyType[i].x, PublicLevel.friendlyType[i].y];

                PublicLevel.friendlyImageList[i] = PublicLevel.friendlyImage[PublicLevel.friendlyType[i].x, PublicLevel.friendlyType[i].y];
            }
        }

        cornText.text = PublicLevel.GetCorn().ToString();

        stageButton = GameObject.FindGameObjectsWithTag("StageButton");
        foreach (GameObject stageBtn in stageButton)
        {
            StageButton stageCheck = stageBtn.GetComponent <StageButton>();
            if (stageCheck.GetStageLevel() > PublicLevel.GetPlayerLevel())
            {
                stageBtn.GetComponent <Image>().color         = Color.red;
                stageBtn.GetComponent <Button>().interactable = false;
            }
            else if (stageCheck.GetStageLevel() == PublicLevel.GetPlayerLevel())
            {
                stageBtn.GetComponent <Image>().color = Color.blue;
            }
        }

        //save data
        gameData.SaveGameData();
    }