public override void CounterInit() { modifiersModel = SCGameplayModsModel(ref scoreController); IDifficultyBeatmap beatmap = data.difficultyBeatmap; int maxRawScore = ScoreModel.MaxRawScoreForNumberOfNotes(noteCountProcessor.NoteCount); maxPossibleScore = ScoreModel.GetModifiedScoreForGameplayModifiersScoreMultiplier(maxRawScore, modifiersModel.GetTotalMultiplier(data.gameplayModifiers)); stats = playerDataModel.playerData.GetPlayerLevelStatsData(beatmap); highScore = stats.highScore; if (scoreConfig.Enabled && Settings.UnderScore) { HUDCanvas scoreCanvas = CanvasUtility.GetCanvasSettingsFromID(scoreConfig.CanvasID); counter = CanvasUtility.CreateTextFromSettings(scoreConfig, SCORE_COUNTER_OFFSET * (3f / scoreCanvas.PositionScale)); } else { counter = CanvasUtility.CreateTextFromSettings(Settings); } counter.alignment = TextAlignmentOptions.Top; counter.fontSize = Settings.TextSize; pbRatio = (float)highScore / maxPossibleScore; SetPersonalBest((float)highScore / maxPossibleScore); ScoreUpdated(0); }
public void RegisterNewCanvas(HUDCanvas canvasSettings, int id) { Canvas canvas = CreateCanvasWithConfig(canvasSettings); CanvasIDToCanvas.Add(id, canvas); CanvasToSettings.Add(canvas, canvasSettings); }
public Canvas CreateCanvasWithConfig(HUDCanvas canvasSettings) { GameObject CanvasGameObject = new GameObject($"Counters+ | {canvasSettings.Name} Canvas"); Vector3 CanvasPos = canvasSettings.Position; Vector3 CanvasRot = canvasSettings.Rotation; float CanvasSize = canvasSettings.Size; Canvas canvas = CanvasGameObject.AddComponent <Canvas>(); canvas.renderMode = RenderMode.WorldSpace; CanvasGameObject.transform.localScale = Vector3.one / CanvasSize; CanvasGameObject.transform.position = CanvasPos; CanvasGameObject.transform.rotation = Quaternion.Euler(CanvasRot); // Inherit canvas properties from the Energy Bar to ignore the shockwave effect. // However, a caveat as that, when viewing through walls, UI elements will not appear. if (canvasSettings.IgnoreShockwaveEffect && energyCanvas != null) { canvas.overrideSorting = energyCanvas.overrideSorting; canvas.sortingLayerID = energyCanvas.sortingLayerID; canvas.sortingLayerName = energyCanvas.sortingLayerName; canvas.sortingOrder = energyCanvas.sortingOrder; canvas.gameObject.layer = energyCanvas.gameObject.layer; } return(canvas); }
void Start() { //BUGFIX: Set the sprite sorting order GetComponentsInChildren <SpriterDotNetBehaviour>()[0].SortingLayer = "Player"; //get the HUD hud = Object.FindObjectOfType <HUDCanvas>(); DamageValue = 1; HealthValue = 4; //get and disable the damagers damagerControllers = GetComponentsInChildren <DamagerController>(); foreach (DamagerController dmgr in damagerControllers) { dmgr.gameObject.SetActive(false); dmgr.PushOnTriggerEnter((Collider2D collider) => { if (collider.gameObject.tag == "Monster" && collider.gameObject.GetComponent <Creatures.ICreature>().HealthValue > 0) { collider.gameObject.GetComponent <Creatures.ICreature>().HealthValue -= DamageValue; hud.SparkLevel++; //bounce on attack Vector2 normal = collider.bounds.ClosestPoint(transform.position) - transform.position; normal.Normalize(); if (normal.y < 0f) { jumping = true; } } }); } }
private void Awake() { HUDCanvas = transform.Find("HUDCanvas"); BuildPanel = HUDCanvas.Find("BuildPanel").GetComponent <BuildPanel>(); GameInfoPanel = HUDCanvas.transform.Find("GameInfoPanel").GetComponent <GameInfoPanel>(); SelectedInfoPanel = HUDCanvas.transform.Find("SelectedInfoPanel").GetComponent <SelectedInfoPanel>(); }
public override void CounterInit() { IDifficultyBeatmap beatmap = data.difficultyBeatmap; maxPossibleScore = ScoreModel.ComputeMaxMultipliedScoreForBeatmap(beatmapData); stats = playerDataModel.playerData.GetPlayerLevelStatsData(beatmap); highScore = stats.highScore; if (scoreConfig.Enabled && Settings.UnderScore) { HUDCanvas scoreCanvas = CanvasUtility.GetCanvasSettingsFromID(scoreConfig.CanvasID); counter = CanvasUtility.CreateTextFromSettings(scoreConfig, SCORE_COUNTER_OFFSET * (3f / scoreCanvas.PositionScale)); } else { counter = CanvasUtility.CreateTextFromSettings(Settings); } counter.alignment = TextAlignmentOptions.Top; counter.fontSize = Settings.TextSize; pbRatio = (float)highScore / maxPossibleScore; SetPersonalBest(pbRatio); ScoreUpdated(0); }
protected void AddCustomCounter(CustomCounter customCounter, Type counterType) { ConfigModel settings; if ((settings = Container.TryResolveId <ConfigModel>(customCounter.Name)) != null) { HUDCanvas canvasSettings = GrabCanvasForCounter(settings); if (!settings.Enabled || (!canvasSettings.IgnoreNoTextAndHUDOption && dataModel.playerData.playerSpecificSettings.noTextsAndHuds)) { return; } Plugin.Logger.Debug($"Loading counter {customCounter.Name}..."); if (counterType.BaseType == typeof(MonoBehaviour)) { Container.BindInterfacesAndSelfTo(counterType).FromNewComponentOnRoot().AsSingle().NonLazy(); } else { Container.BindInterfacesAndSelfTo(counterType).AsSingle().NonLazy(); } } }
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 void InitPercentageRing() { if (Configuration.Instance.showPercentageRing) { // Create ring var canvas = CanvasUtility.GetCanvasFromID(Settings.CanvasID); if (canvas != null) { HUDCanvas currentSettings = CanvasUtility.GetCanvasSettingsFromID(Settings.CanvasID); Vector2 ringAnchoredPos = CanvasUtility.GetAnchoredPositionFromConfig(Settings) * currentSettings.PositionScale; ImageView backgroundImage = CreateRing(canvas); backgroundImage.rectTransform.anchoredPosition = ringAnchoredPos; backgroundImage.CrossFadeAlpha(0.05f, 1f, false); backgroundImage.transform.localScale = ringSize / 10; backgroundImage.type = Image.Type.Simple; progressRing = CreateRing(canvas); progressRing.rectTransform.anchoredPosition = ringAnchoredPos; progressRing.transform.localScale = ringSize / 10; } //relativeScoreAndImmediateRank.relativeScoreOrImmediateRankDidChangeEvent += UpdateRing; UpdateRing(); } }
// GameController initialization void initGameController() { gameController = this; hudCanvas = HUDObject.GetComponent <HUDCanvas> (); hudCanvas.init(); actionsMenuObject.GetComponent <ActionsMenu> ().init(); gameObject.GetComponent <ShowMenu> ().setShowMenu(); }
public override void InstallBindings() { MainConfigModel mainConfig = Plugin.MainConfig; hudConfig = Container.Resolve <HUDConfigModel>(); dataModel = Container.Resolve <PlayerDataModel>(); if (!mainConfig.Enabled) { return; } /// LOADING IMPORTANT SHIT LIKE CANVASES AND STUFF /// Container.Bind <CanvasUtility>().AsSingle(); Container.Bind <NoteCountProcessor>().To <GenericNoteCountProcessor>().AsSingle(); /// LOADING COUNTERS /// Plugin.Logger.Notice("Loading counters..."); AddCounter <MissedConfigModel, MissedCounter>(); AddCounter <NoteConfigModel, NotesCounter>(); if (mainConfig.ProgressConfig.Mode != ProgressMode.BaseGame) { AddCounter <ProgressConfigModel, ProgressCounter>(); } else { AddCounter <ProgressConfigModel, ProgressBaseGameCounter>(); } AddCounter <ScoreConfigModel, ScoreCounter>(); AddCounter <CutConfigModel, CutCounter>(); AddCounter <FailConfigModel, FailCounter>(); AddCounter <NotesLeftConfigModel, NotesLeftCounter>(); AddCounter <SpeedConfigModel, SpeedCounter>(); AddCounter <SpinometerConfigModel, Spinometer>(); AddCounter <PBConfigModel, PBCounter>((settings) => { ScoreConfigModel scoreConfig = Container.Resolve <ScoreConfigModel>(); HUDCanvas canvasSettings = scoreConfig.CanvasID == -1 ? hudConfig.MainCanvasSettings : hudConfig.OtherCanvasSettings[scoreConfig.CanvasID]; return(scoreConfig.Enabled && settings.UnderScore && (dataModel.playerData.playerSpecificSettings.noTextsAndHuds ? canvasSettings.IgnoreNoTextAndHUDOption : true)); }); foreach (Custom.CustomCounter customCounter in Plugin.LoadedCustomCounters.Values) { AddCustomCounter(customCounter, customCounter.CounterType); } /// LOADING BROADCASTERS WITH BROADCAST IN-GAME EVENTS TO COUNTERS AND STUFF /// Container.BindInterfacesAndSelfTo <CounterEventBroadcaster>().AsSingle().NonLazy(); Container.BindInterfacesAndSelfTo <NoteEventBroadcaster>().AsSingle().NonLazy(); Container.BindInterfacesAndSelfTo <ScoreEventBroadcaster>().AsSingle().NonLazy(); Plugin.Logger.Notice("Counters loaded!"); }
public void StartClick(BaseEventData data) { MenuCanvas.SetActive(false); HUDCanvas.SetActive(true); Player.SetActive(true); Generator.SetActive(true); Score = 0; Player.GetComponent<Player>().Prepare(); StartCoroutine("CountDown"); }
public override void InstallBindings() { MainConfigModel mainConfig = Plugin.MainConfig; if (!mainConfig.Enabled) { return; } /// LOADING IMPORTANT SHIT LIKE CANVASES AND STUFF /// Container.Bind <CanvasUtility>().AsSingle(); Container.Bind <NoteCountProcessor>().To <GenericNoteCountProcessor>().AsSingle(); /// LOADING COUNTERS /// Plugin.Logger.Notice("Loading counters..."); AddCounter <MissedConfigModel, MissedCounter>(); AddCounter <NoteConfigModel, NotesCounter>(); if (mainConfig.ProgressConfig.Mode != ProgressMode.BaseGame) { AddCounter <ProgressConfigModel, ProgressCounter>(); } else { AddCounter <ProgressConfigModel, ProgressBaseGameCounter>(); } AddCounter <ScoreConfigModel, ScoreCounter>(); AddCounter <CutConfigModel, CutCounter>(); AddCounter <FailConfigModel, FailCounter>(); AddCounter <NotesLeftConfigModel, NotesLeftCounter>(); AddCounter <SpeedConfigModel, SpeedCounter>(); AddCounter <SpinometerConfigModel, Spinometer>(); AddCounter <PBConfigModel, PBCounter>((settings) => { ScoreConfigModel scoreConfig = Container.Resolve <ScoreConfigModel>(); HUDCanvas canvasSettings = GrabCanvasForCounter(scoreConfig); return(scoreConfig.Enabled && settings.UnderScore && (dataModel.playerData.playerSpecificSettings.noTextsAndHuds ? canvasSettings.IgnoreNoTextAndHUDOption : true)); }); InstallCustomCounters(); if (mainConfig.AprilFoolsTomfoolery && mainConfig.IsAprilFools) { Container.BindInterfacesAndSelfTo <AprilFools>().AsSingle().NonLazy(); } /// LOADING BROADCASTERS WITH BROADCAST IN-GAME EVENTS TO COUNTERS AND STUFF /// Container.BindInterfacesAndSelfTo <CounterEventBroadcaster>().AsSingle().NonLazy(); Container.BindInterfacesAndSelfTo <NoteEventBroadcaster>().AsSingle().NonLazy(); Container.BindInterfacesAndSelfTo <ScoreEventBroadcaster>().AsSingle().NonLazy(); }
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(); }
public void ExitToMenuClick() { Time.timeScale = 1; DestroyObjects(); PausePanel.SetActive(false); MenuCanvas.SetActive(true); HUDCanvas.SetActive(false); LostPanel.SetActive(false); Player.SetActive(false); Generator.SetActive(false); }
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(); }
protected void GenerateBasicText(string labelText, out TMP_Text count) { TMP_Text label = CanvasUtility.CreateTextFromSettings(Settings); label.fontSize = 3; label.text = labelText; HUDCanvas canvas = CanvasUtility.GetCanvasSettingsFromID(Settings.CanvasID); count = CanvasUtility.CreateTextFromSettings(Settings, new Vector3(0, -0.4f * (10 / canvas.PositionScale), 0)); count.text = "0"; count.fontSize = 4; }
protected void RefreshData() { data.data.Clear(); for (int i = -1; i < hudConfig.OtherCanvasSettings.Count; i++) { HUDCanvas settings = canvasUtility.GetCanvasSettingsFromID(i); int countersUsingCanvas = flowCoordinator.Value.AllConfigModels.Count(x => x.CanvasID == i); var info = new CustomListTableData.CustomCellInfo( settings?.Name ?? "Unknown", $"<i>{countersUsingCanvas} counter(s) use this Canvas.</i>", Texture2D.blackTexture); data.data.Add(info); } data.tableView.ReloadData(); }
private void CreateNewCanvas(string name) { HUDCanvas settings = new HUDCanvas(); if (string.IsNullOrEmpty(name) || string.IsNullOrWhiteSpace(name)) { name = "New Canvas"; } settings.Name = name; canvasUtility.RegisterNewCanvas(settings, hudConfig.OtherCanvasSettings.Count); hudConfig.OtherCanvasSettings.Add(settings); mainConfig.HUDConfig = hudConfig; RefreshData(); }
public void ReceiveConnectionDetails(NetworkPlayer Player, NetworkViewID ViewID, Vector3 Position, Quaternion Rotation) { if (!Network.isClient) { return; } LocalPlayer = mSpawnHelper.CreateLocalPlayer(Player, ViewID, Position, Rotation); mNetworkview.RPC("ReceiveNewPlayer", RPCMode.Others, Player, ViewID, Position, Rotation); pHUD = GameObject.FindGameObjectWithTag("PlayerHUD").GetComponent <HUDCanvas>(); ServerDetails.AddConnection(Player, LocalPlayer); mNetworkview.RPC("GetOtherPlayers", RPCMode.Server); LastPosition = LocalPlayer.GetComponent <PlayerMovement>().GetPosition(); mNetworkview.RPC("PlayerAlive", RPCMode.Server, Player); }
private void Start() { ScoreText = GameObject.Find("ScoreText").GetComponent<Text>(); FinalScoreText = GameObject.Find("FinalScoreText").GetComponent<Text>(); HighScoreText = GameObject.Find("HighScoreText").GetComponent<Text>(); CountDownText = GameObject.Find("CountDownText").GetComponent<Text>(); Objects = GameObject.Find("Objects"); LostPanel = GameObject.Find("Lost"); Player = GameObject.Find("Player"); Player.SetActive(false); LostPanel.SetActive(false); HUDCanvas.SetActive(false); CountDownText.gameObject.SetActive(false); HighScore = PlayerPrefs.GetInt("HighScore", 0); Play = false; }
public void ApplyCanvasForEditing(int id) { canvasID = id; HUDCanvas settings = canvasUtility.GetCanvasSettingsFromID(canvasID); if (currentlyEditing != null) { currentlyEditing.OnCanvasSettingsChanged -= CurrentlyEditing_OnCanvasSettingsChanged; currentlyEditing.OnCanvasSettingsApply -= CurrentlyEditing_OnCanvasSettingsApply; } ClearScreen(); BSMLParser.instance.Parse(SettingsBase, gameObject, settings); currentlyEditing = settings; currentlyEditing.OnCanvasSettingsChanged += CurrentlyEditing_OnCanvasSettingsChanged; currentlyEditing.OnCanvasSettingsApply += CurrentlyEditing_OnCanvasSettingsApply; }
private void ReparentCanvas(Canvas canvas) { Canvas currentCanvas = CanvasUtility.GetCanvasFromID(Settings.CanvasID); HUDCanvas currentSettings = CanvasUtility.GetCanvasSettingsFromCanvas(currentCanvas); float positionScale = currentSettings?.PositionScale ?? 10; Vector2 anchoredPos = CanvasUtility.GetAnchoredPositionFromConfig(Settings) * positionScale; canvas.transform.SetParent(currentCanvas.transform, true); RectTransform canvasRect = canvas.transform as RectTransform; canvasRect.anchoredPosition = anchoredPos; canvasRect.localPosition = new Vector3(canvasRect.localPosition.x, canvasRect.localPosition.y, 0); canvasRect.localEulerAngles = Vector3.zero; PostReparent(); }
public void RefreshAllCanvases(HUDConfigModel hudConfig, GameplayCoreSceneSetupData data = null, CoreGameHUDController coreGameHUD = null) { CanvasIDToCanvas.Clear(); CanvasToSettings.Clear(); CanvasIDToCanvas.Add(-1, CreateCanvasWithConfig(hudConfig.MainCanvasSettings)); CanvasToSettings.Add(CanvasIDToCanvas[-1], hudConfig.MainCanvasSettings); if (coreGameHUD != null && hudConfig.MainCanvasSettings.ParentedToBaseGameHUD) { Transform parent = coreGameHUD.transform; if (HUDType == GameplayCoreHUDInstaller.HudType.Flying) { parent = coreGameHUD.transform.GetChild(0); } SoftParent softParent = CanvasIDToCanvas[-1].gameObject.AddComponent <SoftParent>(); softParent.AssignParent(parent); // Base Game HUD is rotated backwards, so we have to reflect our vector to match. Vector3 posOofset = Vector3.Reflect(hudConfig.MainCanvasSettings.Position, Vector3.back); // yknow what, f**k it, its posOofset now. Quaternion rotOofset = Quaternion.Euler(Vector3.Reflect(hudConfig.MainCanvasSettings.Rotation, Vector3.back)); if (HUDType == GameplayCoreHUDInstaller.HudType.Flying) // Special case for Main HUD w/360 environments { posOofset = parent.up; rotOofset = Quaternion.identity; } softParent.AssignOffsets(posOofset, rotOofset); } for (int i = 0; i < hudConfig.OtherCanvasSettings.Count; i++) { HUDCanvas canvasSettings = hudConfig.OtherCanvasSettings[i]; RegisterNewCanvas(canvasSettings, i); if (coreGameHUD != null && hudConfig.OtherCanvasSettings[i].ParentedToBaseGameHUD) { Transform parent = coreGameHUD.transform; if (HUDType == GameplayCoreHUDInstaller.HudType.Flying) { parent = coreGameHUD.transform.GetChild(0); } SoftParent softParent = CanvasIDToCanvas[i].gameObject.AddComponent <SoftParent>(); softParent.AssignParent(parent); } } }
public override void CounterInit() { Canvas canvas = coreGameHUDController.GetComponentInChildren <SongProgressUIController>(true).GetComponent <Canvas>(); canvas.gameObject.SetActive(true); Canvas currentCanvas = CanvasUtility.GetCanvasFromID(Settings.CanvasID); HUDCanvas currentSettings = CanvasUtility.GetCanvasSettingsFromCanvas(currentCanvas); float positionScale = currentSettings?.PositionScale ?? 10; Vector2 anchoredPos = (CanvasUtility.GetAnchoredPositionFromConfig(Settings, currentSettings.IsMainCanvas) + offset) * positionScale; canvas.transform.SetParent(currentCanvas.transform, true); RectTransform canvasRect = canvas.transform as RectTransform; canvasRect.anchoredPosition = anchoredPos; canvasRect.localPosition = new Vector3(canvasRect.localPosition.x, canvasRect.localPosition.y, 0); canvasRect.localEulerAngles = Vector3.zero; }
private void AddCustomCounter(Custom.CustomCounter customCounter, Type counterType) { ConfigModel settings = Container.TryResolveId <ConfigModel>(customCounter.Name); HUDCanvas canvasSettings = settings.CanvasID == -1 ? hudConfig.MainCanvasSettings : hudConfig.OtherCanvasSettings[settings.CanvasID]; if (!settings.Enabled || (!canvasSettings.IgnoreNoTextAndHUDOption && dataModel.playerData.playerSpecificSettings.noTextsAndHuds)) { return; } Plugin.Logger.Debug($"Loading counter {customCounter.Name}..."); if (counterType.BaseType == typeof(MonoBehaviour)) { Container.BindInterfacesAndSelfTo(counterType).FromNewComponentOnRoot().AsSingle().NonLazy(); } else { Container.BindInterfacesAndSelfTo(counterType).AsSingle().NonLazy(); } }
private void AddCounter <T, R>(Func <T, bool> additionalReasonToSpawn) where T : ConfigModel where R : ICounter { T settings = Container.Resolve <T>(); HUDCanvas canvasSettings = settings.CanvasID == -1 ? hudConfig.MainCanvasSettings : hudConfig.OtherCanvasSettings[settings.CanvasID]; if (!settings.Enabled || (!canvasSettings.IgnoreNoTextAndHUDOption && dataModel.playerData.playerSpecificSettings.noTextsAndHuds && !additionalReasonToSpawn(settings))) { return; } Plugin.Logger.Debug($"Loading counter {settings.DisplayName}..."); if (typeof(R).BaseType == typeof(MonoBehaviour)) { Container.BindInterfacesAndSelfTo <R>().FromNewComponentOnRoot().AsSingle().NonLazy(); } else { Container.BindInterfacesAndSelfTo <R>().AsSingle().NonLazy(); } }
public void ApplyCanvasForEditing(int id) { if (id != canvasID) { hudList.Value.RefreshData(); } canvasID = id; HUDCanvas settings = canvasUtility.GetCanvasSettingsFromID(canvasID); if (currentlyEditing != null) { currentlyEditing.OnCanvasSettingsChanged -= CurrentlyEditing_OnCanvasSettingsChanged; currentlyEditing.OnCanvasSettingsApply -= CurrentlyEditing_OnCanvasSettingsApply; } ClearScreen(); var param = BSMLParser.instance.Parse(SettingsBase, gameObject, settings); currentlyEditing = settings; currentlyEditing.OnCanvasSettingsChanged += CurrentlyEditing_OnCanvasSettingsChanged; currentlyEditing.OnCanvasSettingsApply += CurrentlyEditing_OnCanvasSettingsApply; StringSetting nameFieldSetting = param.GetObjectsWithTag("name-field").First().GetComponent <StringSetting>(); nameFieldSetting.interactable = !(currentlyEditing?.IsMainCanvas ?? true); }
public void ReceiveConnectionDetails(NetworkPlayer Player, NetworkViewID ViewID, Vector3 Position, Quaternion Rotation) { if (!Network.isClient) return; LocalPlayer = mSpawnHelper.CreateLocalPlayer(Player, ViewID, Position, Rotation); mNetworkview.RPC("ReceiveNewPlayer", RPCMode.Others, Player, ViewID, Position, Rotation); pHUD = GameObject.FindGameObjectWithTag("PlayerHUD").GetComponent<HUDCanvas>(); ServerDetails.AddConnection(Player, LocalPlayer); mNetworkview.RPC("GetOtherPlayers", RPCMode.Server); LastPosition = LocalPlayer.GetComponent<PlayerMovement>().GetPosition(); mNetworkview.RPC("PlayerAlive", RPCMode.Server, Player); }
public void CloseInventor() { inventoryCanvas.SetActive(false); HUDCanvas.SetActive(true); }