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); }
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); }