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; } }
private static void ApplySettingsChanges(ClassicStageInfo self, StageInfo stageInfo) { StageSettings settings = GetStageSettings(self); StageSettingsActions?.Invoke(settings, stageInfo); SetStageSettings(self, settings); }
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); }
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); } } }
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)); }
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); }
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()); }
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"; // 中心が分かるように目印付けとく }
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); }
// Use this for initialization void Awake() { stageSettingsObject = GameObject.Find("GlobalStageSetter"); stageSettings = stageSettingsObject.GetComponent <StageSettings>(); currentStageText = gameObject.transform.GetComponent <Text>(); }
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(); }
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; } } } } } } }
public void UpdateName() { var street = StageSettings.GetStreetNumber(transform.position); gameObject.name = string.Format("x{0:D3}_z{1:D3}", street.x, street.z); }