void Awake() { // Create board and player input var boardController = new GameObject("BoardController").AddComponent <BoardController>();//Instantiate(_boardController, Vector3.zero, Quaternion.identity); boardController.Init(_settings); var playerInput = new GameObject("PlayerInput").AddComponent <PlayerInput>(); playerInput.TilesSelected += boardController.CheckSelectedTiles; // Score UI ScoreUIModel model = new ScoreUIModel(); boardController.ScoreChanged += (int score) => { model.Value += score; // End score if (model.Value >= _settings.endScore) { Destroy(playerInput); Instantiate(_endUI); } }; var view = Instantiate <ScoreUI>(_scoreView); _scoreUIController = new ScoreUIController(model, view); }
public override void CounterInit() { // Yeah this is required. // If the Score Counter is all alone on its own Canvas with nothing to accompany them, // I need to give 'em a friend or else they get shy and hide away in the void. _ = CanvasUtility.CreateTextFromSettings(Settings, null); ScoreUIController scoreUIController = coreGameHUD.GetComponentInChildren <ScoreUIController>(); TextMeshProUGUI old = ScoreUIText(ref scoreUIController); GameObject baseGameScore = RelativeScoreGO(ref coreGameHUD); relativeScoreText = baseGameScore.GetComponent <TextMeshProUGUI>(); relativeScoreText.color = Color.white; GameObject baseGameRank = ImmediateRankGO(ref coreGameHUD); rankText = baseGameRank.GetComponent <TextMeshProUGUI>(); rankText.color = Color.white; Canvas currentCanvas = CanvasUtility.GetCanvasFromID(Settings.CanvasID); old.rectTransform.SetParent(currentCanvas.transform, true); baseGameScore.transform.SetParent(old.transform, true); baseGameRank.transform.SetParent(old.transform, true); if (!mainConfig.ItalicText) { old.fontStyle = relativeScoreText.fontStyle = rankText.fontStyle = FontStyles.Normal; Vector3 localPosition = relativeScoreText.rectTransform.localPosition; relativeScoreText.rectTransform.localPosition = new Vector3(0, localPosition.y, localPosition.z); localPosition = rankText.rectTransform.localPosition; rankText.rectTransform.localPosition = new Vector3(0, localPosition.y, localPosition.z); } switch (Settings.Mode) { case ScoreMode.RankOnly: Object.Destroy(baseGameScore.gameObject); break; case ScoreMode.ScoreOnly: Object.Destroy(baseGameRank.gameObject); break; } RectTransform pointsTextTransform = old.rectTransform; HUDCanvas currentSettings = CanvasUtility.GetCanvasSettingsFromID(Settings.CanvasID); Vector2 anchoredPos = CanvasUtility.GetAnchoredPositionFromConfig(Settings) + (offset * (3f / currentSettings.PositionScale)); pointsTextTransform.localPosition = anchoredPos * currentSettings.PositionScale; pointsTextTransform.localPosition = new Vector3(pointsTextTransform.localPosition.x, pointsTextTransform.localPosition.y, 0); pointsTextTransform.localEulerAngles = Vector3.zero; Object.Destroy(coreGameHUD.GetComponentInChildren <ImmediateRankUIPanel>()); relativeScoreAndImmediateRank.relativeScoreOrImmediateRankDidChangeEvent += UpdateText; UpdateText(); }
private void InitClassicMode() { // Yeah this is required. // If the Score Counter is all alone on its own Canvas with nothing to accompany them, // I need to give 'em a friend or else they get shy and hide away in the void. _ = CanvasUtility.CreateTextFromSettings(Settings, null); ScoreUIController scoreUIController = coreGameHUD.GetComponentInChildren <ScoreUIController>(); TextMeshProUGUI old = ScoreUIText(ref scoreUIController); // Setup Score Text GameObject baseGameScore = RelativeScoreGO(ref coreGameHUD); relativeScoreText = baseGameScore.GetComponent <TextMeshProUGUI>(); relativeScoreText.color = Color.white; // Setup Rank Text GameObject baseGameRank = ImmediateRankGO(ref coreGameHUD); rankText = baseGameRank.GetComponent <TextMeshProUGUI>(); rankText.color = Color.white; // Set up parenting Canvas currentCanvas = CanvasUtility.GetCanvasFromID(Settings.CanvasID); old.rectTransform.SetParent(currentCanvas.transform, true); baseGameScore.transform.SetParent(old.transform, true); // Hide score if we're not using it. if (!Configuration.Instance.showScore) { UnityEngine.Object.Destroy(baseGameScore.gameObject); } // Adjust font sizes. // TODO: Pull this from config? relativeScoreText.fontSize = 10; rankText.fontSize = 30; baseGameRank.transform.SetParent(old.transform, true); RectTransform pointsTextTransform = old.rectTransform; HUDCanvas currentSettings = CanvasUtility.GetCanvasSettingsFromID(Settings.CanvasID); Vector2 anchoredPos = CanvasUtility.GetAnchoredPositionFromConfig(Settings) + (offset * (3f / currentSettings.PositionScale)); pointsTextTransform.localPosition = anchoredPos * currentSettings.PositionScale; pointsTextTransform.localPosition = new Vector3(pointsTextTransform.localPosition.x, pointsTextTransform.localPosition.y, 0); pointsTextTransform.localEulerAngles = Vector3.zero; UnityEngine.Object.Destroy(coreGameHUD.GetComponentInChildren <ImmediateRankUIPanel>()); InitPercentageRing(); // Shift text into proper positions rankText.rectTransform.anchoredPosition += rankScoreOffset; relativeScoreText.rectTransform.anchoredPosition += rankScoreOffset; //relativeScoreAndImmediateRank.relativeScoreOrImmediateRankDidChangeEvent += UpdateClassicModeText; UpdateClassicModeText(); }
private String getScore() { ScoreUIController s = Object.FindObjectOfType <ScoreUIController>(); //Logger.Log($"name: {s.name}"); var score = ReflectionUtil.GetValue(s, "m_totalScore"); return(score.ToString()); }
static void Postfix(ScoreUIController __instance) { TextMeshProUGUI text = __instance.getPrivateField <TextMeshProUGUI>("_scoreText"); float ragePct = RageScore.instance.curScore / RageScore.instance.hitCount; text.paragraphSpacing = 10; text.lineSpacing = 10; text.richText = true; text.text = "<line-height=50%>" + text.text + "<br><color=red> " + ragePct.ToString("n3") + "%</color>"; }
public override void CounterInit() { ScoreUIController scoreUIController = coreGameHUD.GetComponentInChildren <ScoreUIController>(); TextMeshProUGUI old = ScoreUIText(ref scoreUIController); GameObject baseGameScore = RelativeScoreGO(ref coreGameHUD); relativeScoreText = baseGameScore.GetComponent <TextMeshProUGUI>(); relativeScoreText.color = Color.white; GameObject baseGameRank = ImmediateRankGO(ref coreGameHUD); rankText = baseGameRank.GetComponent <TextMeshProUGUI>(); rankText.color = Color.white; Canvas currentCanvas = CanvasUtility.GetCanvasFromID(Settings.CanvasID); old.rectTransform.SetParent(currentCanvas.transform, true); baseGameScore.transform.SetParent(old.transform, true); baseGameRank.transform.SetParent(old.transform, true); switch (Settings.Mode) { case ScoreMode.RankOnly: Object.Destroy(baseGameScore.gameObject); break; case ScoreMode.ScoreOnly: Object.Destroy(baseGameRank.gameObject); break; } RectTransform pointsTextTransform = old.rectTransform; HUDCanvas currentSettings = CanvasUtility.GetCanvasSettingsFromID(Settings.CanvasID); float positionScale = currentSettings?.PositionScale ?? 10; Vector2 anchoredPos = (CanvasUtility.GetAnchoredPositionFromConfig(Settings, currentSettings.IsMainCanvas) + offset) * positionScale; Plugin.Logger.Warn(anchoredPos.ToString()); pointsTextTransform.anchoredPosition = anchoredPos; // I dont know why Personal Best has even the SLIGHTEST of influence on the position of Score Counter... but it does? if (!personalBest.Enabled) { pointsTextTransform.anchoredPosition -= new Vector2(0, 25); } pointsTextTransform.localPosition = new Vector3(pointsTextTransform.localPosition.x, pointsTextTransform.localPosition.y, 0); pointsTextTransform.localEulerAngles = Vector3.zero; Object.Destroy(coreGameHUD.GetComponentInChildren <ImmediateRankUIPanel>()); relativeScoreAndImmediateRank.relativeScoreOrImmediateRankDidChangeEvent += UpdateText; UpdateText(); }
private void InitPercentMode() { // Required. We need to get a handle to the game's default score counter and destroy it. _ = CanvasUtility.CreateTextFromSettings(Settings, null); ScoreUIController scoreUIController = coreGameHUD.GetComponentInChildren <ScoreUIController>(); TextMeshProUGUI old = ScoreUIText(ref scoreUIController); GameObject baseGameScore = RelativeScoreGO(ref coreGameHUD); GameObject baseGameRank = ImmediateRankGO(ref coreGameHUD); // Set up parenting Canvas currentCanvas = CanvasUtility.GetCanvasFromID(Settings.CanvasID); old.rectTransform.SetParent(currentCanvas.transform, true); baseGameScore.transform.SetParent(old.transform, true); baseGameRank.transform.SetParent(old.transform, true); // Destroy Score UnityEngine.Object.Destroy(baseGameScore.gameObject); // Destroy Rank UnityEngine.Object.Destroy(baseGameRank.gameObject); if (!Configuration.Instance.showScore) { old.fontSize = 0; } percentMajorText = CanvasUtility.CreateTextFromSettings(Settings); percentMajorText.fontSize = 7; percentMinorText = CanvasUtility.CreateTextFromSettings(Settings); percentMinorText.fontSize = 3; RectTransform pointsTextTransform = old.rectTransform; HUDCanvas currentSettings = CanvasUtility.GetCanvasSettingsFromID(Settings.CanvasID); Vector2 anchoredPos = CanvasUtility.GetAnchoredPositionFromConfig(Settings) + (offset * (3f / currentSettings.PositionScale)); pointsTextTransform.localPosition = anchoredPos * currentSettings.PositionScale; pointsTextTransform.localPosition = new Vector3(pointsTextTransform.localPosition.x, pointsTextTransform.localPosition.y, 0); pointsTextTransform.localEulerAngles = Vector3.zero; UnityEngine.Object.Destroy(coreGameHUD.GetComponentInChildren <ImmediateRankUIPanel>()); InitPercentageRing(); percentMajorText.rectTransform.anchoredPosition += new Vector2(0.0f, 0.7f); percentMinorText.rectTransform.anchoredPosition += new Vector2(0.0f, -3.0f); prevPercentMajor = -1; prevPercentMinor = -1; //relativeScoreAndImmediateRank.relativeScoreOrImmediateRankDidChangeEvent += UpdatePercentModeText; UpdatePercentModeText(); }