Beispiel #1
0
        public void Init(Saber parentSaber)
        {
            Logger.Log("Replacing Trail", LogLevel.Debug);

            saber = parentSaber;

            if (gameObject.name != "LeftSaber" && gameObject.name != "RightSaber")
            {
                Logger.Log("Parent not LeftSaber or RightSaber", LogLevel.Warning);
                Destroy(this);
            }

            if (saber == null)
            {
                Logger.Log("Saber not found", LogLevel.Warning);
                Destroy(this);
            }

            SaberWeaponTrail[] trails = Resources.FindObjectsOfTypeAll <SaberWeaponTrail>().ToArray();
            for (int i = 0; i < trails.Length; i++)
            {
                SaberWeaponTrail trail = trails[i];
                ReflectionUtil.SetPrivateField(trail, "_multiplierSaberColor", new Color(0f, 0f, 0f, 0f));
                ReflectionUtil.SetPrivateField(trail as Xft.XWeaponTrail, "_whiteSteps", 0);
            }

            SaberWeaponTrail oldtrail = Resources.FindObjectsOfTypeAll <GameCoreInstaller>()
                                        .FirstOrDefault()?.GetPrivateField <BasicSaberModelController>("_basicSaberModelControllerPrefab")
                                        ?.GetPrivateField <SaberWeaponTrail>("_saberWeaponTrail");

            if (oldtrail != null)
            {
                try
                {
                    Logger.Log(ReflectionUtil.GetPrivateField <Color>(oldtrail, "_multiplierSaberColor").ToString(), LogLevel.Debug);
                    //ReflectionUtil.SetPrivateField(oldtrail, "_multiplierSaberColor", new Color(0f, 0f, 0f, 0f));
                    //        oldColorManager = ReflectionUtil.GetPrivateField<ColorManager>(oldtrail, "_colorManager");
                    oldTrailRendererPrefab = ReflectionUtil.GetPrivateField <XWeaponTrailRenderer>(oldtrail, "_trailRendererPrefab");

                    //oldtrail.Start();
                    //oldtrail.gameObject.SetActive(false);
                }
                catch (Exception ex)
                {
                    Logger.Log($"{ex.Message}\n{ex.StackTrace}", LogLevel.Error);
                    throw;
                }

                trail = gameObject.AddComponent <CustomWeaponTrail>();
                trail.init(oldTrailRendererPrefab, Plugin.colorManager, PointStart, PointEnd, TrailMaterial, TrailColor, Length, MultiplierColor, colorType);
            }
            else
            {
                Logger.Log("Trail not found", LogLevel.Debug);
                Destroy(this);
            }
        }
Beispiel #2
0
        public void Init(Saber saber, ColorManager colorManager)
        {
            Logger.log.Debug($"Replacing Trail for '{saber?.saberType}'");

            if (gameObject.name != "LeftSaber" && gameObject.name != "RightSaber")
            {
                Logger.log.Warn("Parent not LeftSaber or RightSaber");
                Destroy(this);
            }

            if (!saber)
            {
                Logger.log.Warn("Saber not found");
                Destroy(this);
            }

            IEnumerable <SaberWeaponTrail> trails = Resources.FindObjectsOfTypeAll <SaberWeaponTrail>().ToArray();

            foreach (SaberWeaponTrail trail in trails)
            {
                ReflectionUtil.SetPrivateField(trail, "_multiplierSaberColor", new Color(0f, 0f, 0f, 0f));
                ReflectionUtil.SetPrivateField(trail as XWeaponTrail, "_whiteSteps", 0);
            }

            SaberWeaponTrail oldtrail = Resources.FindObjectsOfTypeAll <GameCoreSceneSetup>().FirstOrDefault()
                                        ?.GetPrivateField <BasicSaberModelController>("_basicSaberModelControllerPrefab")
                                        ?.GetPrivateField <SaberWeaponTrail>("_saberWeaponTrail");

            if (oldtrail)
            {
                try
                {
                    //Logger.log.Debug(ReflectionUtil.GetPrivateField<Color>(oldtrail, "_multiplierSaberColor").ToString());
                    oldTrailRendererPrefab = ReflectionUtil.GetPrivateField <XWeaponTrailRenderer>(oldtrail, "_trailRendererPrefab");
                }
                catch (Exception ex)
                {
                    Logger.log.Error(ex);
                    throw;
                }

                trail = gameObject.AddComponent <CustomWeaponTrail>();
                trail.Init(oldTrailRendererPrefab, colorManager, PointStart, PointEnd, TrailMaterial, TrailColor, Length, MultiplierColor, colorType);
            }
            else
            {
                Logger.log.Debug($"Trail not found for '{saber?.saberType}'");
                Destroy(this);
            }
        }
Beispiel #3
0
        private IEnumerator WaitToCheckDefault()
        {
            yield return(new WaitUntil(() => Resources.FindObjectsOfTypeAll <Saber>().Any()));

            var hideOneSaber    = false;
            var hiddenSaberType = Saber.SaberType.SaberA;

            if (BS_Utils.Plugin.LevelData.GameplayCoreSceneSetupData.difficultyBeatmap.parentDifficultyBeatmapSet.beatmapCharacteristic.characteristicNameLocalizationKey.Contains("ONE_SABER"))
            {
                hideOneSaber    = true;
                hiddenSaberType = BS_Utils.Plugin.LevelData.GameplayCoreSceneSetupData.playerSpecificSettings.leftHanded ? Saber.SaberType.SaberB : Saber.SaberType.SaberA;
            }

            var sabers = Resources.FindObjectsOfTypeAll <Saber>();

            Logger.Log("Default Sabers. Not Replacing", LogLevel.Debug);

            foreach (var saber in sabers)
            {
                if (!hideOneSaber)
                {
                    saber.gameObject.SetActive(true);
                }
                else
                {
                    saber.gameObject.SetActive(saber.saberType != hiddenSaberType);
                }

                if (saber.saberType == hiddenSaberType)
                {
                    foreach (var t in saber.transform.GetComponentsInChildren <MeshFilter>())
                    {
                        t.gameObject.SetActive(_saberRoot == null);
                        var filter = t.GetComponentInChildren <MeshFilter>();
                        if (filter)
                        {
                            filter.gameObject.SetActive(_saberRoot == null);//.sharedMesh = null;
                        }
                    }
                }
            }

            var trails = Resources.FindObjectsOfTypeAll <SaberWeaponTrail>().ToArray();

            for (var i = 0; i < trails.Length; i++)
            {
                ReflectionUtil.SetPrivateField(trails[i], "_multiplierSaberColor", new Color(1f, 1f, 1f, 0.251f));
            }
        }
Beispiel #4
0
        public void Init(Saber parentSaber)
        {
            Console.WriteLine("Replacing Trail");

            saber = parentSaber;

            if (gameObject.name != "LeftSaber" && gameObject.name != "RightSaber")
            {
                Console.WriteLine("Parent not LeftSaber or RightSaber");
                Destroy(this);
            }

            if (saber == null)
            {
                Console.WriteLine("Saber not found");
                Destroy(this);
            }

            SaberWeaponTrail oldtrail = Resources.FindObjectsOfTypeAll <GameCoreInstaller>()
                                        .FirstOrDefault()?.GetPrivateField <BasicSaberModelController>("_basicSaberModelControllerPrefab")
                                        ?.GetPrivateField <SaberWeaponTrail>("_saberWeaponTrail");

            if (oldtrail != null)
            {
                try
                {
                    ReflectionUtil.SetPrivateField(oldtrail, "_multiplierSaberColor", new Color(0f, 0f, 0f, 0f));
                    oldColorManager        = ReflectionUtil.GetPrivateField <ColorManager>(oldtrail, "_colorManager");
                    oldTrailRendererPrefab = ReflectionUtil.GetPrivateField <XWeaponTrailRenderer>(oldtrail, "_trailRendererPrefab");
                    oldtrail.gameObject.SetActive(false);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    Console.WriteLine(e.Message);
                    throw;
                }

                trail = gameObject.AddComponent <CustomWeaponTrail>();
                trail.init(oldTrailRendererPrefab, oldColorManager, PointStart, PointEnd, TrailMaterial, TrailColor, Length, MultiplierColor, colorType);
            }
            else
            {
                Console.WriteLine("Trail not found");
                Destroy(this);
            }
        }
Beispiel #5
0
        private void Start()
        {
            Console.WriteLine("Replacing Trail");

            if (gameObject.name != "LeftSaber" && gameObject.name != "RightSaber")
            {
                Console.WriteLine("Parent not LeftSaber or RightSaber");
                Destroy(this);
            }

            GameObject _saber = FindParentWithName(this.gameObject, "Saber");

            if (_saber == null)
            {
                Console.WriteLine("Saber not found");
                Destroy(this);
            }

            trail = _saber.GetComponent <XWeaponTrail>();
            if (trail != null)
            {
                ReflectionUtil.SetPrivateField(trail, "PointStart", PointStart);
                ReflectionUtil.SetPrivateField(trail, "PointEnd", PointEnd);
                ReflectionUtil.SetPrivateField(trail, "MyColor", TrailColor);
                ReflectionUtil.SetPrivateField(trail, "MyMaterial", TrailMaterial);
                ReflectionUtil.SetPrivateField(trail, "MaxFrame", Length);

                XWeaponTrailRenderer trailRenderer = ReflectionUtil.GetPrivateField <XWeaponTrailRenderer>(trail, "_trailRenderer");
                MeshRenderer         meshRenderer  = ReflectionUtil.GetPrivateField <MeshRenderer>(trailRenderer, "_meshRenderer");
                meshRenderer.material = TrailMaterial;

                trail.UpdateHeadElem();
                trail.UpdateVertex();
            }
            else
            {
                Console.WriteLine("Trail not found");
                Destroy(this);
            }
        }
Beispiel #6
0
        void Awake()
        {
            _leftTopLocation  = Vector3.zero;
            _rightTopLocation = Vector3.zero;
            _saberRoot        = null;
            //Reset Trails
            SaberWeaponTrail[] trails = Resources.FindObjectsOfTypeAll <SaberWeaponTrail>().ToArray();
            for (int i = 0; i < trails.Length; i++)
            {
                SaberWeaponTrail trail = trails[i];
                ReflectionUtil.SetPrivateField(trail, "_multiplierSaberColor", new Color(1f, 1f, 1f, 0.251f));
                ReflectionUtil.SetPrivateField(trail as Xft.XWeaponTrail, "_whiteSteps", 4);
            }
            //Logger.Log(Plugin._currentSaberPath, LogLevel.Debug);
            if (Plugin._currentSaberName == "Default Sabers")
            {
                StartCoroutine(WaitToCheckDefault());
                return;
            }

            Logger.Log("Replacing sabers");
            if (CustomSaber == null)
            {
                Logger.Log("Assets Bundle is null", LogLevel.Warning);
                return;
            }

            var saberRoot = CustomSaber.LoadAsset <GameObject>("_customsaber");

            if (saberRoot != null)
            {
                Logger.Log(saberRoot.GetComponent <SaberDescriptor>().SaberName);
                _saberRoot  = Instantiate(saberRoot);
                _rightSaber = _saberRoot.transform.Find("RightSaber").gameObject;
                _leftSaber  = _saberRoot.transform.Find("LeftSaber").gameObject;
            }

            StartCoroutine(WaitForSabers(saberRoot));
        }
        public void RefreshScreen()
        {
            if (_modsTableView == null)
            {
                _modsTableView = new GameObject().AddComponent <TableView>();

                _modsTableView.transform.SetParent(rectTransform, false);

                _modsTableView.dataSource = this;

                try
                {
                    var viewportMask = Instantiate(Resources.FindObjectsOfTypeAll <UnityEngine.UI.Mask>().First(), _modsTableView.transform, false);

                    _modsTableView.GetComponentsInChildren <RectTransform>().First(x => x.name == "Content").transform.SetParent(viewportMask.rectTransform, false);
                }
                catch
                {
                }

                ((RectTransform)_modsTableView.transform).anchorMin        = new Vector2(0f, 0.5f);
                ((RectTransform)_modsTableView.transform).anchorMax        = new Vector2(1f, 0.5f);
                ((RectTransform)_modsTableView.transform).sizeDelta        = new Vector2(0f, 60f);
                ((RectTransform)_modsTableView.transform).anchoredPosition = new Vector2(0f, 0f);

                _modsTableView.didSelectRowEvent += _modsTableView_DidSelectRowEvent;

                ReflectionUtil.SetPrivateField(_modsTableView, "_pageUpButton", _pageUpButton);
                ReflectionUtil.SetPrivateField(_modsTableView, "_pageDownButton", _pageDownButton);

                _modsTableView.ScrollToRow(0, false);
            }
            else
            {
                _modsTableView.ReloadData();
                _modsTableView.ScrollToRow(0, false);
            }
        }
Beispiel #8
0
 public void SetColor(Color newColor)
 {
     TrailColor = newColor;
     ReflectionUtil.SetPrivateField(trail, "MyColor", TrailColor);
 }
Beispiel #9
0
 public void SetMaterial(Material newMat)
 {
     TrailMaterial = newMat;
     ReflectionUtil.SetPrivateField(trail, "MyMaterial", TrailMaterial);
 }
Beispiel #10
0
        private void Start()
        {
            _leftEventManager = _leftSaber.GetComponent <EventManager>();
            if (_leftEventManager == null)
            {
                _leftEventManager = _leftSaber.AddComponent <EventManager>();
            }

            _rightEventManager = _rightSaber.GetComponent <EventManager>();
            if (_rightEventManager == null)
            {
                _rightEventManager = _rightSaber.AddComponent <EventManager>();
            }

            _leftEventManager.OnLevelStart.Invoke();
            _rightEventManager.OnLevelStart.Invoke();
            try
            {
                _scoreController = Resources.FindObjectsOfTypeAll <ScoreController>().FirstOrDefault();
                if (_scoreController == null)
                {
                    Console.WriteLine("SCORE CONTROLLER NULL");
                }
                _saberCollisionManager =
                    Resources.FindObjectsOfTypeAll <ObstacleSaberSparkleEffectManager>().FirstOrDefault();
                if (_saberCollisionManager == null)
                {
                    Console.WriteLine("COLLISION MANAGER NULL");
                }
                _gameEnergyCounter = Resources.FindObjectsOfTypeAll <GameEnergyCounter>().FirstOrDefault();
                if (_gameEnergyCounter == null)
                {
                    Console.WriteLine("energery counter null");
                }
                _beatmapCallback = Resources.FindObjectsOfTypeAll <BeatmapObjectCallbackController>().FirstOrDefault();
                if (_beatmapCallback == null)
                {
                    Console.WriteLine("BEATMAP CALLBACK NULL");
                }

                _gamePauseManager = Resources.FindObjectsOfTypeAll <GamePauseManager>().FirstOrDefault();
                if (_gamePauseManager == null)
                {
                    Console.WriteLine("GamePauseManager Null");
                }

                _scoreController.noteWasCutEvent          += SliceCallBack;
                _scoreController.noteWasMissedEvent       += NoteMissCallBack;
                _scoreController.multiplierDidChangeEvent += MultiplierCallBack;
                _scoreController.comboDidChangeEvent      += ComboChangeEvent;

                _saberCollisionManager.sparkleEffectDidStartEvent += SaberStartCollide;
                _saberCollisionManager.sparkleEffectDidEndEvent   += SaberEndCollide;

                _gameEnergyCounter.gameEnergyDidReach0Event += FailLevelCallBack;

                _beatmapCallback.beatmapEventDidTriggerEvent += LightEventCallBack;
                ReflectionUtil.SetPrivateField(_gamePauseManager, "_gameDidResumeSignal", (Action)OnPauseMenuClosed); //For some reason _gameDidResumeSignal isn't public.
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Console.WriteLine(e.Message);
                throw;
            }
        }
        protected override void DidActivate(bool firstActivation, ActivationType activationType)
        {
            previewparent = Instantiate(new GameObject("preview parent"));
            previewparent.transform.position = new Vector3(2.5f, 1, 0.3f);
            previewparent.transform.Rotate(new Vector3(0, -30, 0));
            _customSaberUI        = CustomSaberUI.Instance;
            _parentViewController = GetComponentInParent <CustomSaberMasterViewController>();
            try
            {
                if (_pageDownButton == null)
                {
                    try
                    {
                        _pageDownButton = _customSaberUI.CreateButton(rectTransform, "PageDownButton");
                        ((RectTransform)_pageDownButton.transform).anchorMin        = new Vector2(0.5f, 0f);
                        ((RectTransform)_pageDownButton.transform).anchorMax        = new Vector2(0.5f, 0f);
                        ((RectTransform)_pageDownButton.transform).anchoredPosition = new Vector2(0f, 10f);
                        _pageDownButton.interactable = true;
                        _pageDownButton.onClick.AddListener(delegate()
                        {
                            _sabersTableView.PageScrollDown();
                        });
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                        throw;
                    }
                }
                if (_pageUpButton == null)
                {
                    try
                    {
                        _pageUpButton = _customSaberUI.CreateButton(rectTransform, "PageUpButton");
                        ((RectTransform)_pageUpButton.transform).anchorMin        = new Vector2(0.5f, 1f);
                        ((RectTransform)_pageUpButton.transform).anchorMax        = new Vector2(0.5f, 1f);
                        ((RectTransform)_pageUpButton.transform).anchoredPosition = new Vector2(0f, -14f);
                        _pageUpButton.interactable = true;
                        _pageUpButton.onClick.AddListener(delegate()
                        {
                            _sabersTableView.PageScrollUp();
                        });
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                        throw;
                    }
                }


                if (_sabersTableView == null)
                {
                    _sabersTableView = new GameObject().AddComponent <TableView>();

                    _sabersTableView.transform.SetParent(rectTransform, false);

                    var viewportMask = Instantiate(Resources.FindObjectsOfTypeAll <Mask>().First(), _sabersTableView.transform, false);
                    viewportMask.transform.DetachChildren();
                    _sabersTableView.GetComponentsInChildren <RectTransform>().First(x => x.name == "Content").transform.SetParent(viewportMask.rectTransform, false);

                    ((RectTransform)_sabersTableView.transform).anchorMin        = new Vector2(0f, 0.5f);
                    ((RectTransform)_sabersTableView.transform).anchorMax        = new Vector2(1f, 0.5f);
                    ((RectTransform)_sabersTableView.transform).sizeDelta        = new Vector2(0f, 60f);
                    ((RectTransform)_sabersTableView.transform).anchoredPosition = new Vector2(0f, 0f);

                    _sabersTableView.didSelectRowEvent += _sabersTableView_DidSelectRowEvent;

                    ReflectionUtil.SetPrivateField(_sabersTableView, "_pageUpButton", _pageUpButton);
                    ReflectionUtil.SetPrivateField(_sabersTableView, "_pageDownButton", _pageDownButton);

                    _sabersTableView.dataSource = this;

                    _sabersTableView.ScrollToRow(0, false);
                }
                else
                {
                    _sabersTableView.ReloadData();
                    _sabersTableView.ScrollToRow(0, false);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }


            _songListTableCellInstance = Resources.FindObjectsOfTypeAll <StandardLevelListTableCell>().First(x => (x.name == "StandardLevelListTableCell"));

            LoadSabers();

            base.DidActivate(true, ActivationType.AddedToHierarchy);
        }