Exemplo n.º 1
0
        private static void SetStageSettings(ClassicStageInfo self, StageSettings set)
        {
            self.sceneDirectorInteractibleCredits = set.SceneDirectorInteractableCredits;
            self.sceneDirectorMonsterCredits      = set.SceneDirectorMonsterCredits;
            var keys    = set.BonusCreditObjects.Keys.ToArray();
            var bonuses = new ClassicStageInfo.BonusInteractibleCreditObject[keys.Length];

            for (int i = 0; i < keys.Length; i++)
            {
                bonuses[i] = new ClassicStageInfo.BonusInteractibleCreditObject {
                    objectThatGrantsPointsIfEnabled = keys[i],
                    points = set.BonusCreditObjects[keys[i]]
                };
            }
            self.bonusInteractibleCreditObjects = bonuses;
            var interCats = self.GetFieldValue <DirectorCardCategorySelection>("interactableCategories");

            for (int i = 0; i < interCats.categories.Length; i++)
            {
                var cat = interCats.categories[i];
                InteractableCategory intCat = GetInteractableCategory(cat.name);
                cat.selectionWeight     = set.InteractableCategoryWeights[intCat];
                interCats.categories[i] = cat;
            }
            var monstCats = self.GetFieldValue <DirectorCardCategorySelection>("monsterCategories");

            for (int i = 0; i < monstCats.categories.Length; i++)
            {
                var             cat    = monstCats.categories[i];
                MonsterCategory monCat = GetMonsterCategory(cat.name);
                cat.selectionWeight     = set.MonsterCategoryWeights[monCat];
                monstCats.categories[i] = cat;
            }
        }
Exemplo n.º 2
0
        private static void ApplySettingsChanges(ClassicStageInfo self, StageInfo stageInfo)
        {
            StageSettings settings = GetStageSettings(self);

            StageSettingsActions?.Invoke(settings, stageInfo);
            SetStageSettings(self, settings);
        }
Exemplo n.º 3
0
        private static StageSettings GetStageSettings(ClassicStageInfo self)
        {
            var set = new StageSettings {
                SceneDirectorInteractableCredits = self.sceneDirectorInteractibleCredits,
                SceneDirectorMonsterCredits      = self.sceneDirectorMonsterCredits,
                BonusCreditObjects = new Dictionary <GameObject, int>()
            };

            foreach (var bonusObj in self.bonusInteractibleCreditObjects)
            {
                set.BonusCreditObjects[bonusObj.objectThatGrantsPointsIfEnabled] = bonusObj.points;
            }
            set.InteractableCategoryWeights = new Dictionary <InteractableCategory, float>();
            var interCats = self.GetFieldValue <DirectorCardCategorySelection>("interactableCategories");

            foreach (var cat in interCats.categories)
            {
                set.InteractableCategoryWeights[GetInteractableCategory(cat.name)] = cat.selectionWeight;
            }
            set.MonsterCategoryWeights = new Dictionary <MonsterCategory, float>();
            var monstCats = self.GetFieldValue <DirectorCardCategorySelection>("monsterCategories");

            foreach (var cat in monstCats.categories)
            {
                set.MonsterCategoryWeights[GetMonsterCategory(cat.name)] = cat.selectionWeight;
            }
            return(set);
        }
Exemplo n.º 4
0
    void Construct()
    {
        Clear();
        current = StageSettings.GetStreetNumber(runCharacter.Position);

        int halfX = StageSettings.tileX / 2;
        int halfZ = StageSettings.tileZ / 2;

        for (int i = -halfX; i <= halfX; ++i)
        {
            for (int j = -halfZ; j <= halfZ; ++j)
            {
                bool isCenter = (i == 0 && j == 0);
                var  s        = current;
                s.x = current.x + i;
                s.z = current.z + j;
                var prefab = (isCenter) ? stagePrefabs[0] : SelectStagePartsPrefab();
                var g      = GenerateStageParts(prefab, s.x, s.z);
                if (isCenter)
                {
                    g.gameObject.name += "_c";                           // 中心が分かるように目印付けとく
                }
                stageParts.Add(s, g);
            }
        }
    }
Exemplo n.º 5
0
    private void Awake()
    {
        Instance      = this;
        _sceneChanger = this.GetComponent <SceneChanger>();

        _fruitManager    = this.GetComponent <FruitManager>();
        _uiManager       = this.GetComponent <UiManager>();
        _soundManager    = this.GetComponent <SoundManager>();
        _gameModeManager = this.GetComponent <GameModeManager>();

        _dots   = new List <Dot>();
        _ghosts = new List <Ghost>();

        /* Will select the stage settings relative to current Stage */
        if (Stage < settings.SequenceOfStageSettings.Length)
        {
            _stageSettings = settings.SequenceOfStageSettings[Stage];
        }
        else
        {
            int lastIndex = settings.SequenceOfStageSettings.Length - 1;
            _stageSettings = settings.SequenceOfStageSettings[lastIndex];
        }

        _gameModeManager.settings      = settings;
        _gameModeManager.stageSettings = _stageSettings;

        /* Will get the fruit to update on GUI */
        Fruit fruit = _fruitManager.GetFruitByType(_stageSettings.fruitType);

        _uiManager.FruitOnGUI(fruit.GetSprite());
        _uiManager.LifesOnGUI(Life);
        _uiManager.ScoreOnGUI(Score);
        _uiManager.HighScoreOnGUI(PlayerPrefs.GetInt(settings.HighScoreKeyPlayerPrefs, 0));
    }
Exemplo n.º 6
0
        private static StageSettings GetStageSettings(ClassicStageInfo self)
        {
            StageSettings set = new StageSettings
            {
                sceneDirectorInteractableCredits = self.sceneDirectorInteractibleCredits,
                sceneDirectorMonsterCredits      = self.sceneDirectorMonsterCredits
            };

            set.bonusCreditObjects = new Dictionary <GameObject, int>();
            for (int i = 0; i < self.bonusInteractibleCreditObjects.Length; i++)
            {
                var bonusObj = self.bonusInteractibleCreditObjects[i];
                set.bonusCreditObjects[bonusObj.objectThatGrantsPointsIfEnabled] = bonusObj.points;
            }

            set.interactableCategoryWeights = new Dictionary <InteractableCategory, float>();
            var interCats = self.GetFieldValue <DirectorCardCategorySelection>("interactableCategories");

            for (int i = 0; i < interCats.categories.Length; i++)
            {
                var cat = interCats.categories[i];
                set.interactableCategoryWeights[GetInteractableCategory(cat.name)] = cat.selectionWeight;
            }

            set.monsterCategoryWeights = new Dictionary <MonsterCategory, float>();
            var monstCats = self.GetFieldValue <DirectorCardCategorySelection>("monsterCategories");

            for (int i = 0; i < monstCats.categories.Length; i++)
            {
                var cat = monstCats.categories[i];
                set.monsterCategoryWeights[GetMonsterCategory(cat.name)] = cat.selectionWeight;
            }

            return(set);
        }
Exemplo n.º 7
0
    private void Awake()
    {
        imageStartingCoordinates = gameObject.transform.position;
        globalStageSetter        = GameObject.Find("GlobalStageSetter");
        stageSettings            = globalStageSetter.GetComponent <StageSettings>();

        heartObjects       = GameObject.Find("NumberOfHearts");
        playerHealthScript = heartObjects.GetComponent <PlayerHealth>();
    }
        /*private void SceneDirector_Awake(On.RoR2.SceneDirector.orig_Awake orig, SceneDirector self)
         * {
         *  var InventoryCount = GetPlayersItemCount(catalogIndex);
         *  Debug.Log("ChestFriend: Entered Hook", self);
         *  if (InventoryCount > 0)
         *  {
         *      var ResultMult = 1 + DirectorCreditMult + DirectorCreditMultStack * (InventoryCount - 1);
         *      Debug.Log("ChestFriend: Credits "+self.interactableCredit.ToString()+" multiplied by "+ ((int)ResultMult).ToString(), self);
         *      self.interactableCredit *= (int)ResultMult;
         *  }
         *  orig(self);
         * }*/

        /*
         * private void SceneDirector_Start(On.RoR2.SceneDirector.orig_Start orig, SceneDirector self)
         * {
         *  var InventoryCount = GetPlayersItemCount(catalogIndex);
         *  Debug.Log("ChestFriend: Entered Hook", self);
         *  if (InventoryCount > 0)
         *  {
         *      var ResultMult = 1 + DirectorCreditMult + DirectorCreditMultStack * (InventoryCount - 1);
         *      Debug.Log("ChestFriend: Credits " + self.interactableCredit.ToString() + " multiplied by " + ((int)ResultMult).ToString(), self);
         *      self.interactableCredit *= (int)ResultMult;
         *  }
         *  orig(self);
         * } */
        private void MultiplyCredits(StageSettings stageSettings, StageInfo stageInfo)
        {
            var InventoryCount = GetPlayersItemCount(catalogIndex);
            var ResultMult     = 1 + DirectorCreditMult + DirectorCreditMultStack * (InventoryCount - 1);
            var OldValue       = stageSettings.SceneDirectorInteractableCredits;

            stageSettings.SceneDirectorInteractableCredits *= (int)ResultMult;
            var newValue = stageSettings.SceneDirectorInteractableCredits;

            Debug.Log("ChestFriend: " + OldValue.ToString() + "->" + newValue.ToString());
        }
Exemplo n.º 9
0
    public void Shift(Vector3 offset)
    {
        var parts = new List <StageParts>(stageParts.Values);        // copy

        stageParts.Clear();
        foreach (var p in parts)
        {
            p.Position += offset;
            p.UpdateName();
            stageParts.Add(StageSettings.GetStreetNumber(p.Position), p);
        }
        current = StageSettings.GetStreetNumber(runCharacter.Position);
        stageParts[current].gameObject.name += "_c";         // 中心が分かるように目印付けとく
    }
Exemplo n.º 10
0
    void LateUpdate()
    {
        if (runCharacter == null)
        {
            return;
        }

        var street = StageSettings.GetStreetNumber(runCharacter.Position);

        if (street.x == current.x && street.z == current.z)
        {
            return;
        }

        Vector3 oldBase = stageParts[current].Position;

        if (Mathf.Abs(street.x - current.x) <= 1 && Mathf.Abs(street.z - current.z) <= 1)
        {
            stageParts[current].UpdateName();             // 名前をリセットしとく

            UpdatePartsLine(street.x, current.x, StageSettings.tileX,
                            (succ, index) => new StreetNumber(current.x - succ, current.z + index),
                            (succ, index) => new StreetNumber(street.x + succ, current.z + index));
            current.x = street.x;

            UpdatePartsLine(street.z, current.z, StageSettings.tileZ,
                            (succ, index) => new StreetNumber(current.x + index, current.z - succ),
                            (succ, index) => new StreetNumber(current.x + index, street.z + succ));
            current.z = street.z;

            stageParts[current].gameObject.name += "_c";             // 中心が分かるように目印付けとく
        }
        else
        {
            // ワープしたときなどの隣接部分の移動で対応できない場合
            // まるっと作り直す
            Construct();
        }

        FieldRoot.Instance.ChangeBase(oldBase, stageParts[current].Position);
    }
Exemplo n.º 11
0
 // Use this for initialization
 void Awake()
 {
     stageSettingsObject = GameObject.Find("GlobalStageSetter");
     stageSettings       = stageSettingsObject.GetComponent <StageSettings>();
     currentStageText    = gameObject.transform.GetComponent <Text>();
 }
Exemplo n.º 12
0
    void Awake()
    {
        int           totalFactories        = 0;
        GameObject    tileFactoryModel      = null;
        RectTransform rectTrans             = null;
        GameObject    stageSettingObject    = null;
        StageSettings stageSettingComponent = null;

        lifeImagesPerRow     = (lifeImagesPerRow < 1) ? 1 : lifeImagesPerRow;
        totalLives           = (totalLives < 1) ? 1 : totalLives;
        stageClearAlphaSpeed = (stageClearAlphaSpeed <= 0f) ? 1f : stageClearAlphaSpeed;
        stageClearTextSpeed  = (stageClearTextSpeed <= 0f) ? 1f : stageClearTextSpeed;

        /*halmeida - I will extract references to every TileFactory component of the models, so that I
         * can consult them quickly later.*/
        tileFactoryModelComponents = null;
        if (tileFactoryModels != null)
        {
            totalFactories             = tileFactoryModels.Length;
            tileFactoryModelComponents = new TileFactory[totalFactories];
            for (int i = 0; i < totalFactories; i++)
            {
                tileFactoryModel = tileFactoryModels[i];
                if (tileFactoryModel != null)
                {
                    tileFactoryModelComponents[i] = tileFactoryModel.GetComponent <TileFactory>();
                }
                else
                {
                    tileFactoryModelComponents[i] = null;
                }
            }
        }
        stageSettingComponents = null;
        if (stageSettingObjects != null)
        {
            for (int i = 0; i < stageSettingObjects.Length; i++)
            {
                stageSettingObject = stageSettingObjects[i];
                if (stageSettingObject != null)
                {
                    stageSettingComponent = stageSettingObject.GetComponent <StageSettings>();
                    if (stageSettingComponent != null)
                    {
                        UsefulFunctions.IncreaseArray <StageSettings>(ref stageSettingComponents, stageSettingComponent);
                    }
                }
            }
        }
        stageObject             = null;
        stageComponent          = null;
        stageIndex              = -1;
        tileFactoryObject       = null;
        tileFactoryComponent    = null;
        cameraComponent         = null;
        cameraOriginalOrthoSize = 0f;
        if (cameraObject != null)
        {
            cameraComponent = cameraObject.GetComponent <Camera>();
            if (cameraComponent != null)
            {
                cameraOriginalOrthoSize = cameraComponent.orthographicSize;
            }
        }
        canvasRectTrans = null;
        if (canvasObject != null)
        {
            canvasRectTrans = canvasObject.GetComponent <RectTransform>();
        }
        itemDatabaseObject = null;
        itemDatabase       = null;
        if (itemDatabaseModel != null)
        {
            itemDatabaseObject = Instantiate(itemDatabaseModel, Vector3.zero, Quaternion.identity) as GameObject;
            itemDatabase       = itemDatabaseObject.GetComponent <ItemDatabase>();
            if (itemDatabase == null)
            {
                Destroy(itemDatabaseObject);
                itemDatabaseObject = null;
            }
        }
        inputManagerObject = null;
        inputManager       = null;
        if (inputManagerModel != null)
        {
            inputManagerObject = Instantiate(inputManagerModel, Vector3.zero, Quaternion.identity) as GameObject;
            inputManager       = inputManagerObject.GetComponent <InputManager>();
            if (inputManager == null)
            {
                Destroy(inputManagerObject);
                inputManagerObject = null;
            }
        }
        scoreTitleObject = null;
        scoreValueObject = null;
        scoreValueText   = null;
        totalScore       = 0;
        lifeImageWidth   = 0f;
        lifeImageHeight  = 0f;
        if (lifeImageModel != null)
        {
            rectTrans = lifeImageModel.GetComponent <RectTransform>();
            if (rectTrans != null)
            {
                lifeImageWidth  = rectTrans.rect.width;
                lifeImageHeight = rectTrans.rect.height;
            }
            else
            {
                lifeImageModel = null;
            }
        }
        lifeImageObjects      = null;
        spareLives            = totalLives - 1;
        endingObject          = null;
        creditsObject         = null;
        stageClearImageObject = null;
        stageClearImage       = null;
        stageClearTextObject  = null;
        stageClearTextTrans   = null;
        clearTextStartX       = 0f;
        clearTextEndX         = 0f;
        stageCleared          = false;
        stageClearedElapsed   = 0f;
        CreateUIElements();
        stageIndex = 0;
        LoadStage();
    }
Exemplo n.º 13
0
    private void LoadStage()
    {
        string        stageFileName      = null;
        int           requestedFactoryID = TileFactory.UNDEFINED_FACTORY_ID;
        TileFactory   modelComponent     = null;
        int           modelIndex         = -1;
        Vector2       stageDimensions    = Vector2.zero;
        Vector3       cameraPosition     = Vector3.zero;
        float         halfStageHeight    = 0f;
        float         newOrthoSize       = 0f;
        StageSettings stageSettings      = null;

        if (stageIndex < 0)
        {
            return;
        }
        if (stageObject == null)
        {
            stageObject = new GameObject("Stage");
            stageObject.transform.SetParent(gameObject.transform, false);
            stageObject.transform.rotation      = Quaternion.identity;
            stageObject.transform.localScale    = Vector3.one;
            stageObject.transform.localPosition = Vector3.zero;
            stageComponent = stageObject.AddComponent <StageController>();
            stageComponent.SetGameController(this);
            stageComponent.SetItemDatabase(itemDatabase);
            stageComponent.SetPlayerModel(playerModel);
            stageComponent.SetEnemyModels(enemyModels);
        }
        else
        {
            if (stageComponent != null)
            {
                stageComponent.Reset();
            }
        }
        if (tileFactoryComponent != null)
        {
            tileFactoryComponent.Clear();
            tileFactoryComponent = null;
        }
        if (tileFactoryObject != null)
        {
            Destroy(tileFactoryObject);
            tileFactoryObject = null;
        }
        /*halmeida - get the file name and the model of the tile factory that the stage wants to use.*/
        if (stageSettingComponents != null)
        {
            if (stageSettingComponents.Length > stageIndex)
            {
                stageSettings = stageSettingComponents[stageIndex];
                /*halmeida - since the array is previously verified, the element is surely not null.*/
                stageFileName      = stageSettings.fileName;
                requestedFactoryID = stageSettings.tileFactoryID;
                if (tileFactoryModelComponents != null)
                {
                    for (int i = 0; i < tileFactoryModelComponents.Length; i++)
                    {
                        modelComponent = tileFactoryModelComponents[i];
                        if (modelComponent != null)
                        {
                            if (modelComponent.factoryID == requestedFactoryID)
                            {
                                modelIndex = i;
                                break;
                            }
                        }
                    }
                }
            }
            else
            {
                /*halmeida - player reached the end of the game.*/
                if (stageComponent != null)
                {
                    stageComponent.Clear();
                    stageComponent = null;
                }
                Destroy(stageObject);
                stageObject = null;
                DisplayEnding();
            }
        }
        if ((stageFileName != null) && (modelIndex > -1))
        {
            tileFactoryObject = Instantiate(tileFactoryModels[modelIndex], Vector3.zero, Quaternion.identity) as GameObject;
            if (tileFactoryObject != null)
            {
                tileFactoryComponent = tileFactoryObject.GetComponent <TileFactory>();
                if ((tileFactoryComponent != null) && (stageComponent != null))
                {
                    if (inputManager != null)
                    {
                        inputManager.SetStageController(stageComponent);
                    }
                    stageComponent.SetTileFactory(tileFactoryComponent);
                    stageComponent.SetEnemyStateDurations(stageSettings.durationFragileGhost, stageSettings.durationRecoveringGhost);
                    if (stageComponent.LoadFromResourcesFile("Stages/" + stageFileName))
                    {
                        if (cameraObject != null)
                        {
                            stageDimensions  = stageComponent.GetStructureDimensions();
                            halfStageHeight  = stageDimensions.y / 2f;
                            cameraPosition   = cameraObject.transform.position;
                            cameraPosition.x = stageDimensions.x / 2f;
                            cameraPosition.y = -halfStageHeight;
                            cameraObject.transform.position = cameraPosition;
                            if (cameraComponent != null)
                            {
                                newOrthoSize = (halfStageHeight > cameraOriginalOrthoSize) ? halfStageHeight : cameraOriginalOrthoSize;
                                cameraComponent.orthographicSize = newOrthoSize;
                            }
                        }
                    }
                }
            }
        }
    }
Exemplo n.º 14
0
    public void UpdateName()
    {
        var street = StageSettings.GetStreetNumber(transform.position);

        gameObject.name = string.Format("x{0:D3}_z{1:D3}", street.x, street.z);
    }