Exemple #1
0
            static bool Prefix(TVBenchUnitViewer __instance, ActionType obj)
            {
                if (!enabled || obj != ActionType.ActionRoll)
                {
                    return(true);
                }
                Dbgl($"Handler");

                GameObject tv     = __instance.gameObject;
                TVCtr      tvc    = tv.GetComponentInChildren <TVCtr>(true);
                GameObject screen = typeof(TVCtr).GetField("screen", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(tvc) as GameObject;

                GameObject newObj;

                if (screen.name == "BigScreen")
                {
                    newObj = Singleton <ResMgr> .Instance.LoadSyncByType <GameObject>(AssetType.Home, "HomeItemTV");
                }
                else
                {
                    newObj = Singleton <ResMgr> .Instance.LoadSyncByType <GameObject>(AssetType.Home, "HomeItem_ADBoard");
                }

                MeshRenderer[] newMs = newObj.GetComponentsInChildren <MeshRenderer>();
                MeshRenderer[] tvms  = tv.GetComponentsInChildren <MeshRenderer>();

                Dictionary <string, MeshRenderer> objDic = new Dictionary <string, MeshRenderer>();

                foreach (MeshRenderer m in newMs)
                {
                    //Dbgl($"mesh: {m.name}");
                    objDic.Add(m.name, m);
                }

                for (int i = 0; i < tvms.Length; i++)
                {
                    MeshRenderer m = tvms[i];
                    //Dbgl($"mesh: {m.name}");
                    m.GetComponentInChildren <MeshFilter>().mesh = newMs[i].GetComponentInChildren <MeshFilter>().mesh;
                    m.materials = newMs[i].materials;
                    m.bounds.SetMinMax(newMs[i].bounds.min, newMs[i].bounds.max);
                }


                if (screen.name == "BigScreen")
                {
                    screen.GetComponentInChildren <MeshFilter>().mesh = objDic["Item_TV_b"].GetComponentInChildren <MeshFilter>().mesh;
                    screen.name = "Screen";
                }
                else
                {
                    screen.GetComponentInChildren <MeshFilter>().mesh = objDic["Item_Billboard_2"].GetComponentInChildren <MeshFilter>().mesh;
                    screen.name = "BigScreen";
                }
                return(false);
            }
Exemple #2
0
            static bool Prefix(PhotoFrameCtr __instance, ActionType obj)
            {
                if (!enabled || obj != ActionType.ActionRoll)
                {
                    return(true);
                }

                MeshRenderer[] bbms = __instance.gameObject.GetComponentsInChildren <MeshRenderer>();

                MeshRenderer screenMr = null;

                foreach (MeshRenderer m in bbms)
                {
                    //Dbgl($"mesh: {m.name}");
                    if (m.name == "Item_Billboard_2")
                    {
                        screenMr = m;
                        break;
                    }
                }

                if (screenMr == null)
                {
                    return(true);
                }

                Dbgl($"handling photoframectr");
                TVBenchUnitViewer tvtv   = __instance.gameObject.GetComponentInChildren <TVBenchUnitViewer>();
                TVCtr             tvc    = typeof(TVBenchUnitViewer).GetField("tVCtr", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(tvtv) as TVCtr;
                Action <string>   action = delegate(string fileName)
                {
                    tvc.Play(fileName);
                };
                Transform t = typeof(TVBenchUnitViewer).GetField("camPivort", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(tvtv) as Transform;

                t.position = new Vector3(__instance.transform.position.x, __instance.transform.position.y + 9.2f, __instance.transform.position.z) - t.forward * 8f;
                UIStateMgr.Instance.ChangeStateByType(UIStateMgr.StateType.TVPlayer, false, new object[]
                {
                    t,
                    action,
                    tvc.CurPlay
                });
                return(false);
            }
Exemple #3
0
            static bool Prefix(TVCtr __instance, string fileName, GameObject ___screen, ref VideoPlayer ___videoPlayer)
            {
                if (!enabled)
                {
                    return(true);
                }


                //___screen.transform.localScale = new Vector3(1.6f, 1.4f, 1f);
                //___screen.transform.position = new Vector3(___screen.transform.position.x - 0.08f, ___screen.transform.position.y - 0.32f, ___screen.transform.position.z - 0.21f);
                //___screen.transform.rotation = new Quaternion(___screen.transform.rotation.x + 0.0155f, ___screen.transform.rotation.y,___screen.transform.rotation.z + 0.0155f, ___screen.transform.rotation.w);

                if (__instance.CurPlay == fileName)
                {
                    return(false);
                }
                if (string.IsNullOrEmpty(fileName))
                {
                    __instance.Stop();
                    return(false);
                }

                Dbgl("filename: " + fileName);

                if (videoPaths.ContainsKey(fileName))
                {
                    Dbgl("got file: " + videoPaths[fileName]);
                    try
                    {
                        typeof(TVCtr).GetMethod("PlayUrl", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { videoPaths[fileName] });
                    }
                    catch (Exception ex)
                    {
                        Dbgl("error: " + ex);
                    }
                    return(false);
                }

                return(true);
            }
Exemple #4
0
            static void Postfix(PhotoFrameCtr __instance)
            {
                if (!enabled)
                {
                    return;
                }
                Dbgl($"starting photoframectr");

                MeshRenderer[] bbms = __instance.gameObject.GetComponentsInChildren <MeshRenderer>();

                MeshRenderer screenMr = null;

                foreach (MeshRenderer m in bbms)
                {
                    //Dbgl($"mesh: {m.name}");
                    if (m.name == "Item_Billboard_2")
                    {
                        screenMr = m;
                        break;
                    }
                }

                if (screenMr == null)
                {
                    return;
                }

                GameObject tvt = Singleton <ResMgr> .Instance.LoadSyncByType <GameObject>(AssetType.Home, "HomeItem_TVTable");

                TVBenchUnitViewer tvtv = tvt.GetComponentInChildren <TVBenchUnitViewer>(true);

                /*
                 * CabinetUnit unit = new CabinetUnit(3031001);
                 * unit.PutCabinet(4030001, 1, out ItemObject item);
                 * typeof(TVBenchUnitViewer).GetMethod("SetUnitInternal", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(tvtv, new object[] { unit });
                 * Dbgl($"Set Unit");
                 */

                GameObject tvtr = UnityEngine.Object.Instantiate(tvt, __instance.gameObject.transform);
                //Dbgl($"Instantiated");


                ItemObject item = ItemObject.CreateItem(4030001);

                //Dbgl($"got item {item.ItemBase.Name}");

                GameUtils.ClearChildren(typeof(TVBenchUnitViewer).GetField("placeHolder", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(tvtv) as GameObject, false);
                GameObject tvObject = GameUtils.AddChild(typeof(TVBenchUnitViewer).GetField("placeHolder", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(tvtv) as GameObject, item.ItemBase.DropModelPath, false, AssetType.ItemSystem);
                TVCtr      tvc      = tvObject.GetComponentInChildren <TVCtr>(true);

                //Dbgl($"tvc is null? {tvc == null}");

                typeof(TVBenchUnitViewer).GetField("tVCtr", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(tvtv, tvc);

                MeshRenderer[] tvtms = tvtr.GetComponentsInChildren <MeshRenderer>();

                for (int i = 0; i < tvtms.Length; i++)
                {
                    MeshRenderer m = tvtms[i];
                    m.gameObject.SetActive(false);
                }

                MeshRenderer[] tvms = tvObject.GetComponentsInChildren <MeshRenderer>();

                for (int i = 0; i < tvms.Length; i++)
                {
                    MeshRenderer m = tvms[i];
                    m.gameObject.SetActive(false);
                }

                GameObject screen = typeof(TVCtr).GetField("screen", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(tvc) as GameObject;

                screen.GetComponentInChildren <MeshFilter>().mesh = screenMr.GetComponentInChildren <MeshFilter>().mesh;

                //screen.transform.localScale = new Vector3(32f, 18f, 1f);

                PlayerTargetMultiAction CurPlayerTarget = (PlayerTargetMultiAction)typeof(UnitViewer).GetProperty("CurPlayerTarget", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(__instance, null);

                CurPlayerTarget.SetAction(ActionType.ActionRoll, 103809, ActionTriggerMode.Normal);
            }
Exemple #5
0
            static void Postfix(TVBenchUnitViewer __instance, GameObject ___placeHolder, ref TVCtr ___tVCtr)
            {
                if (!enabled || __instance.GetComponentInParent <PhotoFrameCtr>() == null)
                {
                    return;
                }
                Dbgl($"Fresh Items");
                ItemObject item     = ItemObject.CreateItem(4030001);
                GameObject tvObject = GameUtils.AddChild(___placeHolder, item.ItemBase.DropModelPath, false, AssetType.ItemSystem);

                MeshRenderer[] tvms = tvObject.GetComponentsInChildren <MeshRenderer>();

                for (int i = 0; i < tvms.Length; i++)
                {
                    MeshRenderer m = tvms[i];
                    m.gameObject.SetActive(false);
                }

                ___tVCtr = tvObject.GetComponentInChildren <TVCtr>(true);
                AudioSource audioSource = typeof(TVCtr).GetField("audioSource", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(___tVCtr) as AudioSource;

                audioSource.spatialBlend = settings.Spatiality;
                audioSource.volume       = 1f;
                typeof(TVCtr).GetField("audioSource", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(___tVCtr, audioSource);
                //VideoPlayer videoPlayer = typeof(TVCtr).GetField("videoPlayer", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(___tVCtr) as VideoPlayer;
                //typeof(TVCtr).GetField("videoPlayer", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(___tVCtr, videoPlayer);
                GameObject newObj = Singleton <ResMgr> .Instance.LoadSyncByType <GameObject>(AssetType.Home, "HomeItem_ADBoard");

                GameObject screen = typeof(TVCtr).GetField("screen", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(___tVCtr) as GameObject;

                MeshRenderer[] bbms = newObj.GetComponentsInChildren <MeshRenderer>();

                foreach (MeshRenderer m in bbms)
                {
                    //Dbgl($"mesh: {m.name}");
                    if (m.name == "Item_Billboard_2")
                    {
                        screen.GetComponentInChildren <MeshFilter>().mesh        = m.GetComponentInChildren <MeshFilter>().mesh;
                        screen.GetComponentInChildren <MeshRenderer>().materials = m.materials;
                        //screen.GetComponentInChildren<Transform>().position = m.gameObject.GetComponentInChildren<Transform>().position;
                        break;
                    }
                }

                /*
                 * Component[] components = screen.GetComponents(typeof(Component));
                 * foreach (Component component in components)
                 * {
                 *  Dbgl($"component: {component.ToString()}");
                 * }
                 */
                //Vector3 scale = screen.GetComponentInChildren<MeshFilter>().transform.localScale;
                //screen.GetComponentInChildren<MeshFilter>().transform.localScale = new Vector3(scale.x, 1.6f, scale.z);
                //Dbgl($"local scale: {screen.transform.localScale}");
                //screen.GetComponentInChildren<VideoPlayer>().aspectRatio = VideoAspectRatio.NoScaling;
                Vector3 pos = screen.GetComponentInChildren <MeshFilter>().transform.position;

                screen.transform.position = new Vector3(pos.x, pos.y - 0.84f, pos.z) - screen.GetComponentInChildren <MeshFilter>().transform.forward * 0.02f;
            }