コード例 #1
0
    static void Save_scene()
    {
        GameObject camera   = GameObject.Find("Main Camera");
        GameObject obj      = GameObject.FindWithTag("CompositionObject");
        GameObject light    = GameObject.Find("Directional Light");
        GameObject cylinder = GameObject.Find("Cylinder");

        SceneDataManager SDM  = new SceneDataManager();
        String           json = SDM.GetJSON(camera, obj, light, cylinder);
        //Debug.Log(json);

        // if false, overwrite
        bool   append   = false;
        string filePath = "sceneData.json";

        string     fullPath = Path.GetFullPath(filePath);
        TextWriter writer   = null;

        Debug.Log(String.Format("Saving in {0}", fullPath));

        try
        {
            writer = new StreamWriter(fullPath, append);
            writer.Write(json);
        }
        finally
        {
            if (writer != null)
            {
                writer.Close();
            }
        }
    }
コード例 #2
0
 void Awake()
 {
     m_instance         = this;
     m_dynamicBlockCell = new Dictionary <int, BlockCell[]>();
     m_triggerAreaInfos = new Dictionary <uint, TriggerAreaInfo[]>();
     Load();
 }
コード例 #3
0
ファイル: SceneLoader.cs プロジェクト: facybenbook/Cosmica
    public void LoadNextLevel()
    {
        fadeOut();
        SceneDataManager manager   = FindObjectOfType <SceneDataManager>();
        string           nextLevel = FormatLevelName(manager, true);

        Debug.Log("Loading next level: " + nextLevel);
        StartCoroutine(LoadAfterDelay(transitionDelay, nextLevel));
    }
コード例 #4
0
ファイル: SceneLoader.cs プロジェクト: facybenbook/Cosmica
    public void ReloadLastLevel()
    {
        fadeOut();
        SceneDataManager manager   = FindObjectOfType <SceneDataManager>();
        string           lastLevel = FormatLevelName(manager, false);

        Debug.Log("Loading last level: " + lastLevel);
        StartCoroutine(LoadAfterDelay(transitionDelay, lastLevel));
    }
コード例 #5
0
ファイル: SceneLoader.cs プロジェクト: facybenbook/Cosmica
 private string FormatLevelName(SceneDataManager manager, bool loadNextLevel)
 {
     if (loadNextLevel)
     {
         return("Level" + manager.currSceneZone.ToString() + "_" + (System.Convert.ToInt32(manager.currSceneLevel) + 1).ToString());
     }
     else
     {
         return("Level" + manager.currSceneZone.ToString() + "_" + manager.currSceneLevel.ToString());
     }
 }
コード例 #6
0
 private void Awake()
 {
     if (Instance == null)
     {
         Instance = this;
         DontDestroyOnLoad(this.gameObject);
     }
     else
     {
         Destroy(gameObject);
     }
 }
コード例 #7
0
    private void LoadData()
    {
        string jsonString = KeyChain.GetString(_sceneDataID);

        if (string.IsNullOrEmpty(jsonString))
        {
            return;
        }

        SceneData loadedData = JsonUtility.FromJson <SceneData>(jsonString);

        SceneDataManager.ReplaceSceneData(loadedData);
    }
コード例 #8
0
    public void SaveColor()
    {
        int r = ConvertStringToInt(this.rValue.text);
        int g = ConvertStringToInt(this.gValue.text);
        int b = ConvertStringToInt(this.bValue.text);

        r = Mathf.Clamp(r, 0, 255);
        g = Mathf.Clamp(g, 0, 255);
        b = Mathf.Clamp(b, 0, 255);

        Color finalColor = new Color(r / _maxColorValue, g / _maxColorValue, b / _maxColorValue);

        SceneDataManager.UpdateBackgroundColor(finalColor);
    }
コード例 #9
0
 void Awake()
 {
     if (uniqueDataManager != null)
     {
         if (uniqueDataManager != this)
         {
             Destroy(gameObject);
         }
     }
     else
     {
         uniqueDataManager = this;
         DontDestroyOnLoad(this.gameObject);
     }
 }
コード例 #10
0
ファイル: SceneData.cs プロジェクト: facybenbook/Cosmica
    void Start()
    {
        manager = FindObjectOfType <SceneDataManager>();
        // TODO: fix up crude code and magic numbers. Levelx_y
        string sceneName = SceneManager.GetActiveScene().name;

        currSceneZone = sceneName[5].ToString();
        if (sceneName.Length > 8)
        {
            currSceneLevel = sceneName[7].ToString() + sceneName[8].ToString();
        }
        else
        {
            currSceneLevel = sceneName[7].ToString();
        }
        Debug.Log("SCENEDATA: zone " + currSceneZone + " level " + currSceneLevel);
        manager.currSceneZone  = currSceneZone;    // TODO: These should maybe be moved to the WriteToManager() function
        manager.currSceneLevel = currSceneLevel;
        headerText.text        = "Zone " + currSceneZone.ToString() + " Level " + currSceneLevel.ToString();
        SetLevelRewards();
    }
コード例 #11
0
    void Start()
    {
        manager = FindObjectOfType <SceneDataManager>();
        manager.PrintManagerData();
        if (manager != null)    // TODO: a lot of duplicated code here
        {
            if (manager.levelPassed)
            {
                title.text = "Mission Success";
                string successText = "You passed zone " + manager.currSceneZone.ToString() + " level " + manager.currSceneLevel.ToString();
                outcomeText.text  = successText;
                outcomeText.color = successColour;
            }
            else
            {
                title.text = "Critical Mission Failure";
                string failureText = "You failed zone " + manager.currSceneZone.ToString() + " level " + manager.currSceneLevel.ToString();
                outcomeText.text  = failureText;
                outcomeText.color = failureColour;
                nextLevelButton.GetComponent <Image>().color    = greyedOutColour;
                nextLevelButton.GetComponent <Button>().enabled = false;
            }
            string statsText = manager.controlAttained.ToString() + "%" +
                               "\n+" + manager.controlBonus.ToString() +
                               "\n" + manager.timeTaken.ToString() +
                               "\n+" + manager.timeBonus.ToString() +
                               "\n" + manager.energySpent.ToString() +
                               "\n-" + manager.energyPenalty.ToString() +
                               "\n" + manager.levelScore.ToString();
            outcomeStats.text = statsText;
            // Write to the scores panel
            int zone  = int.Parse(manager.currSceneZone);
            int level = int.Parse(manager.currSceneLevel);
            // Set new high score if greater than last high score
            int lastHighScore = PlayerData.GetHighScore(zone, level);
            int levelScore    = manager.levelScore;
            if (levelScore > lastHighScore)
            {
                PlayerData.SetHighScore(zone, level, levelScore);
                lastHighScore = levelScore;
            }
            string scoresText = levelScore.ToString() +
                                "\n" + lastHighScore.ToString();
            scoreValuesText.text = scoresText;
            // Write to the rewards panel AND add them to PlayerData
            int earnedCredit = manager.baseCreditReward + Mathf.FloorToInt(levelScore * manager.creditToScoreRatio);
            if (!manager.levelPassed)
            {
                earnedCredit = 0;  // Player gets no reward if they have failed the level
            }
            string unlockedShipName = "";
            if (manager.unlockedShip != null)
            {
                unlockedShipName    = manager.unlockedShip.defenderUnit.defenderName;
                unlockedShip.sprite = manager.unlockedShip.defenderUnit.GetComponent <SpriteRenderer>().sprite;
                unlockedShip.color  = unlockShipColour;
            }
            rewardValuesText.text = "+" + earnedCredit.ToString() + " credits" +
                                    "\n" + unlockedShipName;

            FindObjectOfType <CreditsManager>().AddCredit(earnedCredit);
        }
    }
コード例 #12
0
    private IEnumerator EndLevel(bool levelPassed)
    {
        Animator levelCompleteUIAnimator = levelCompleteUI.GetComponent <Animator>();
        Animator selectionBarUIAnimator  = selectionBarUI.GetComponent <Animator>();
        Animator statusBarAnimator       = gameObject.GetComponent <Animator>();
        Animator headerCanvasAnimator    = headerCanvas.GetComponent <Animator>();

        if (levelPassed)
        {
            levelCompletionText.text = levelWinText;
            PlaySFX(levelSuccessSFX);
            // Call end of level functions
            Defender[] defenders = FindObjectsOfType <Defender>();
            foreach (Defender defender in defenders)
            {
                defender.PlayVictoryAnimation();
                defender.defenderUnit.StopShooting();
            }
            Enemy[] enemies = FindObjectsOfType <Enemy>();
            foreach (Enemy enemy in enemies)
            {
                enemy.PlayDefeatAnimation();
                enemy.enemyUnit.StopShooting();
            }
            EnemySpawner[] spawners = FindObjectsOfType <EnemySpawner>();
            foreach (EnemySpawner spawner in spawners)
            {
                spawner.ForceStopSpawning();
            }
            Projectile[] projectiles = FindObjectsOfType <Projectile>();
            foreach (Projectile projectile in projectiles)
            {
                projectile.Dissolve();
            }
            if (sceneData != null)
            {
                sceneData.UnlockNextLevel();
            }
        }
        else
        {
            levelCompletionText.text = levelFailText;
            PlaySFX(levelFailSFX);
        }
        // Triggering level end animations: levelCompleted is a parameter for the animator controller state machine. Setting it to true triggers any animations meant for level completion
        levelCompleteUIAnimator.SetBool("levelCompleted", true);
        selectionBarUIAnimator.SetBool("levelCompleted", true);
        statusBarAnimator.SetBool("levelCompleted", true);
        headerCanvasAnimator.SetBool("levelCompleted", true);
        yield return(new WaitForSeconds(timeBeforeTransition));

        // Update the final score the player achieved and the time taken in the SceneData object
        // TODO: Repetitive code
        if (sceneData != null)
        {
            sceneData.SetScore(DetermineFinalScore(levelPassed));
            sceneData.SetTimeTaken(elapsedTime);
            sceneData.SetControlAttained(Mathf.FloorToInt(control));
            sceneData.SetLevelPassed(levelPassed);
            sceneData.SetEnergySpent(energySpent);
            sceneData.WriteToManager();
            SceneDataManager manager = FindObjectOfType <SceneDataManager>();
            if (manager != null)
            {
                manager.PrintManagerData();
            }
        }
        // Finally transition to the outcome scene
        if (sceneData != null)
        {
            LoadScene(levelOutcomeSceneName);
        }
        else      // THE ONLY CASE WHERE SCENEDATA IS NULL IS IN THE TUTORIAL SCENE
        {
            LoadScene("_Start");
        }
    }
コード例 #13
0
 void OnDestroy()
 {
     m_instance = null;
 }