public static void ShowWorldBubble() { EventEngine instance = PersistenSingleton <EventEngine> .Instance; BubbleUI.Flag[] bubbleFlagData = EIcon.GetBubbleFlagData(EIcon.sFIconType); Action <PosObj, Obj, UInt32>[] listener = new Action <PosObj, Obj, UInt32>[] { new Action <PosObj, Obj, UInt32>(EventCollision.BubbleUIListener) }; PosObj controlChar = instance.GetControlChar(); Vector3 uidefaultOffset = BubbleUI.UIDefaultOffset; if (controlChar.go == (UnityEngine.Object)null) { return; } if (EventCollision.IsChocoboFlyingOverForest() || (EIcon.dialogBubble && EIcon.dialogAlternativeKey)) { Singleton <BubbleUI> .Instance.ChangePrimaryKey(Control.Cancel); EIcon.dialogAlternativeKey = false; } else { Singleton <BubbleUI> .Instance.ChangePrimaryKey(Control.Confirm); } EIcon.ShowDelay = Singleton <BubbleUI> .Instance.AnimationDuration; Vector3 transformOffset; EIcon.GetWorldActorOffset(out transformOffset, ref uidefaultOffset); Singleton <BubbleUI> .Instance.Show(controlChar.go.transform, controlChar, (Obj)null, EIcon.WorldCamera, transformOffset, uidefaultOffset, bubbleFlagData, listener); }
private static Boolean CheckQuadPush(PosObj ctrl, Obj quad) { Boolean result = true; if (PersistenSingleton <EventEngine> .Instance.gMode == 1) { Int16 fldMapNo = FF9StateSystem.Common.FF9.fldMapNo; if (fldMapNo != 2108) { if (fldMapNo != 2802) { if (fldMapNo == 2914) { Byte sid = quad.sid; if (sid == 13) { result = false; } } } else if (quad.sid == 24) { result = false; } } else if (quad.sid == 6) { result = EventCollision.IsQuadTalkable(ctrl, quad); } } return(result); }
public static void ShowWorldBubble() { EventEngine instance = PersistenSingleton <EventEngine> .Instance; BubbleUI.Flag[] bubbleFlagData = GetBubbleFlagData(s_FIconType); Action <PosObj, Obj, uint>[] listener = new Action <PosObj, Obj, uint>[1] { EventCollision.BubbleUIListener }; PosObj controlChar = instance.GetControlChar(); Vector3 uiOffset = BubbleUI.UIDefaultOffset; if (controlChar.go == null) { return; } if (EventCollision.IsChocoboFlyingOverForest() || IsDialogBubble && s_dialogAlternativeKey) { Singleton <BubbleUI> .Instance.ChangePrimaryKey(Control.Cancel); s_dialogAlternativeKey = false; } else { Singleton <BubbleUI> .Instance.ChangePrimaryKey(Control.Confirm); } ShowDelay = Singleton <BubbleUI> .Instance.AnimationDuration; Vector3 actorOffset; GetWorldActorOffset(out actorOffset, ref uiOffset); Singleton <BubbleUI> .Instance.Show(controlChar.go.transform, controlChar, null, WorldCamera, actorOffset, uiOffset, bubbleFlagData, listener); }
public static Int32 CollisionAngle(PosObj po, Obj coll) { PosObj posObj = (PosObj)coll; Vector3 b = new Vector3(po.pos[0], po.pos[1], po.pos[2]); Vector3 a = new Vector3(posObj.pos[0], posObj.pos[1], posObj.pos[2]); Vector3 posObjRot = EventCollision.GetPosObjRot(po); Vector3 posObjRot2 = EventCollision.GetPosObjRot(posObj); Vector3 normalized = (a - b).normalized; if (normalized == Vector3.zero) { return(0); } Vector3 eulerAngles = Quaternion.LookRotation(normalized).eulerAngles; Vector3 vector = eulerAngles - posObjRot; vector.x = ((vector.x <= 180f) ? vector.x : (vector.x - 360f)); vector.x = ((vector.x >= -180f) ? vector.x : (vector.x + 360f)); vector.y = ((vector.y <= 180f) ? vector.y : (vector.y - 360f)); vector.y = ((vector.y >= -180f) ? vector.y : (vector.y + 360f)); vector.z = ((vector.z <= 180f) ? vector.z : (vector.z - 360f)); vector.z = ((vector.z >= -180f) ? vector.z : (vector.z + 360f)); Single floatAngle = vector.magnitude - 180f; return(EventEngineUtils.ConvertFloatAngleToFixedPoint(floatAngle)); }
public static Boolean CheckQuadInput(PosObj po) { EventEngine instance = PersistenSingleton <EventEngine> .Instance; UInt32 num = ETb.KeyOn() & (UInt32)((instance.gMode != 1) ? EventInput.Lcircle : (EventInput.Lcircle | 524288u)); if (num > 0u) { Obj obj = instance.TreadQuad(po, 4); if (obj != null && EventCollision.IsQuadTalkable(po, obj)) { if (num == 524288u && instance.Request(obj, 1, 8, false)) { EventCollision.ClearPathFinding(po); EMinigame.SetQuadmistOpponentId(obj); return(true); } if (instance.Request(obj, 1, 3, false)) { EventCollision.ClearPathFinding(po); return(true); } } } return(false); }
private static void FixChocoAccidenlyFly(Dialog dialog) { if (PersistenSingleton <EventEngine> .Instance.gMode == 3 && EventCollision.IsChocoboWalkingInForestArea() && (dialog.TextId == 54 || dialog.TextId == 55 || dialog.TextId == 56 || dialog.TextId == 57 || dialog.TextId == 58 || dialog.TextId == 59 || dialog.TextId == 60 || dialog.TextId == 61 || dialog.TextId == 62)) { PersistenSingleton <UIManager> .Instance.Dialogs.EnableCollider(false); } }
private static Int32 CalculateRadiusFromOvalRatio(PosObj po, PosObj targetPosObj, Int32 radius) { Int32 fixedPointAngle = EventCollision.CollisionAngle(targetPosObj, po); Int32 num = ff9.rcos(fixedPointAngle); Int32 num2 = (num * num >> 4) * (Int32)targetPosObj.ovalRatio + 16777216; radius = Convert.ToInt32((Single)radius * ff9.SquareRoot0((Single)num2)) >> 12; return(radius); }
private void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.layer == golfHoleLayer) { EventHoleCollision?.Invoke(true); } else { EventCollision?.Invoke(); } }
public static void BubbleUIListener(PosObj userObject, Obj collObj, UInt32 key) { if (userObject != null) { if (userObject.cid == 4) { EventCollision.CheckNPCInput(userObject); } else { EventCollision.CheckQuadInput(userObject); } } }
private static Boolean IsQuadTalkable(PosObj ctrl, Obj quad) { if (PersistenSingleton <EventEngine> .Instance.gMode == 1) { Obj obj = (Obj)null; Int32 fldMapNo = (Int32)FF9StateSystem.Common.FF9.fldMapNo; Int32 uid = (Int32)quad.uid; Int32 key = EMinigame.CreateNPCID(fldMapNo, uid); if (EventEngineUtils.QuadTalkableData.ContainsKey(key)) { obj = PersistenSingleton <EventEngine> .Instance.GetObjUID(EventEngineUtils.QuadTalkableData[key]); } if (obj != null) { Int32 num = fldMapNo; Int32 num2; if (num == 2108) { num2 = EventCollision.GetDir((Actor)ctrl); return(num2 > 90 && num2 < 160); } if (num == 2109) { num2 = EventCollision.GetDir((Actor)ctrl); return(num2 > 159 && num2 < 223); } if (num == 2103) { num2 = EventCollision.GetDir((Actor)ctrl); return(num2 > 159 && num2 < 223); } if (num != 2802) { num2 = EventCollision.CollisionAngle(ctrl, obj); return(num2 > -880 && num2 < 880); } Obj objUID = PersistenSingleton <EventEngine> .Instance.GetObjUID(18); Single num3 = 0f; if (PersistenSingleton <EventEngine> .Instance.isPosObj(objUID)) { num3 = -((PosObj)objUID).pos[1]; } num2 = EventCollision.GetDir((Actor)ctrl); return(num2 > 16 && num2 < 112 && num3 > 950f); } } return(true); }
public static Boolean PollCollisionIcon(Obj targetObject) { Boolean result = false; if (EventHUD.CurrentHUD == MinigameHUD.MogTutorial) { return(result); } EventEngine instance = PersistenSingleton <EventEngine> .Instance; if (instance.gMode == 1) { Boolean flag = instance.GetIP((Int32)targetObject.sid, 3, targetObject.ebData) != instance.nil && 1 < targetObject.level; Boolean flag2 = instance.GetIP((Int32)targetObject.sid, 8, targetObject.ebData) != instance.nil && 1 < targetObject.level; if (flag && flag2) { EIcon.PollFIcon(2); result = true; } else if (flag && instance.IsActuallyTalkable(targetObject)) { EIcon.PollFIcon(1); result = true; } } else { Boolean flag = instance.GetIP((Int32)targetObject.sid, 2, targetObject.ebData) != instance.nil && 1 < targetObject.level; if (flag) { if (EMinigame.CheckBeachMinigame() && !EventCollision.IsWorldTrigger()) { EIcon.PollFIcon(4); } else { EIcon.PollFIcon(1); } result = true; } } return(result); }
public static bool PollCollisionIcon(Obj targetObject) { if (EventHUD.CurrentHUD == MinigameHUD.MogTutorial) { return(false); } bool flag1 = false; EventEngine instance = PersistenSingleton <EventEngine> .Instance; if (instance.gMode == 1) { bool flag2 = instance.GetIP(targetObject.sid, 3, targetObject.ebData) != instance.nil && 1 < targetObject.level; bool flag3 = instance.GetIP(targetObject.sid, 8, targetObject.ebData) != instance.nil && 1 < targetObject.level; if (flag2 && flag3) { PollFIcon(2); flag1 = true; } else if (flag2 && instance.IsActuallyTalkable(targetObject)) { PollFIcon(1); flag1 = true; } } else if (instance.GetIP(targetObject.sid, 2, targetObject.ebData) != instance.nil && 1 < targetObject.level) { if (EMinigame.CheckBeachMinigame() && !EventCollision.IsWorldTrigger()) { PollFIcon(4); } else { PollFIcon(1); } flag1 = true; } return(flag1); }
public static Boolean CheckChocoboVirtual() { if (FF9StateSystem.MobilePlatform) { if (PersistenSingleton <EventEngine> .Instance.gMode == 1) { if (EventHUD.CurrentHUD == MinigameHUD.ChocoHot) { return(true); } } else if (PersistenSingleton <EventEngine> .Instance.gMode == 3) { if (EventCollision.IsRidingChocobo() && EventInput.IsPressedDig) { return(true); } EventInput.IsPressedDig = false; } } return(false); }
public static Boolean CheckNPCInput(PosObj po) { EventEngine instance = PersistenSingleton <EventEngine> .Instance; UInt32 num = ETb.KeyOn() & (UInt32)((instance.gMode != 1) ? EventInput.Lcircle : (EventInput.Lcircle | 524288u)); if (num > 0u) { Int32 nil = instance.nil; Single nilFloat = instance.nilFloat; Obj obj = EventCollision.Collision(instance, po, 4, ref nilFloat); if (obj != null && EventCollision.IsNPCTalkable(obj)) { EventCollision.sSysAngle = EventCollision.CollisionAngle(po, obj); if (EventCollision.sSysAngle > -1024 && EventCollision.sSysAngle < 1024) { ((Actor)po).listener = obj.uid; if (num == 524288u) { Boolean flag = instance.Request(obj, 1, 8, false); if (flag) { EventCollision.ClearPathFinding(po); EMinigame.SetQuadmistOpponentId(obj); return(flag); } } Boolean flag2 = instance.Request(obj, 1, 3, false); if (flag2) { EventCollision.ClearPathFinding(po); return(flag2); } } } } return(false); }
private Obj Collision(EventEngine eventEngine, PosObj po, Int32 mode, ref Single distance) { return(EventCollision.Collision(this, po, mode, ref distance)); }
private Obj Collision(EventEngine eventEngine, PosObj po, Int32 mode, ref Single distance) { return(EventCollision.Collision((Original::EventEngine)(System.Object) this, po, mode, ref distance)); }
private Obj Collision(EventEngine eventEngine, PosObj po, int mode, ref float distance) { return(EventCollision.Collision((Original::EventEngine)(object)this, po, mode, ref distance)); }
public static UInt32 ReadInput() { UInt32 num = 0u; if (!EventInput.isProcessingInput) { EventInput.ResetWorldTriggerButton(); return(num); } Int32 fldMapNo = (Int32)FF9StateSystem.Common.FF9.fldMapNo; Int32 gMode = PersistenSingleton <EventEngine> .Instance.gMode; Boolean isKeyboardOrJoystickInput = EventInput.IsKeyboardOrJoystickInput; if (Singleton <BubbleUI> .Instance.IsActive) { if (gMode == 1) { if (fldMapNo == 1420 && EventInput.CheckLadderFlag()) { num = EventInput.ProcessInput(false, false); } else { num = EventInput.ProcessInput(false, true); } } else if (gMode == 3) { if (FF9StateSystem.MobilePlatform) { num = EventInput.ProcessInput(false, isKeyboardOrJoystickInput); EventInput.GetWorldTriggerButton(ref num); } else { num = EventInput.ProcessInput(false, true); } } } else if (EventHUD.CurrentHUD != MinigameHUD.None) { MinigameHUD currentHUD = EventHUD.CurrentHUD; if (currentHUD != MinigameHUD.Chanbara) { if (currentHUD != MinigameHUD.RacingHippaul) { num = EventInput.ProcessInput(false, true); } else { num = EventInput.ProcessInput(false, false); } } else { num = EventInput.ProcessInput(true, true); num &= EventInput.ChanbaraMask; if (FF9StateSystem.MobilePlatform) { if ((num & 8u) > 0u) { EventInput.IsNeedAddStartSignal = true; } else if (EventInput.addStartSignal > 0) { num |= 8u; EventInput.addStartSignal--; EventInput.InputLog("Extra Start"); } } } } else if (fldMapNo == 606) { if (EventHUD.CurrentHUD == MinigameHUD.Telescope) { num = EventInput.ProcessInput(false, true); } } else if (fldMapNo == 2204 && TimerUI.Enable) { num = EventInput.ProcessInput(false, false); } else if (fldMapNo == 1607) { num = EventInput.ProcessInput(false, false); } else if (fldMapNo == 1420) { num = EventInput.ProcessInput(false, true); } else if (fldMapNo == 1422) { num = EventInput.ProcessInput(false, true); } else { Dialog mognetDialog = Singleton <DialogManager> .Instance.GetMognetDialog(); if (mognetDialog != (UnityEngine.Object)null) { if (mognetDialog.IsChoiceReady) { num = EventInput.ProcessInput(false, true); } } else if (FF9StateSystem.MobilePlatform) { num = EventInput.ProcessInput(false, isKeyboardOrJoystickInput); if (isKeyboardOrJoystickInput) { UIManager.Input.ResetTriggerEvent(); } EventInput.GetWorldTriggerButton(ref num); } else { num = EventInput.ProcessInput(false, true); } } num |= EventInput.eventButtonInput; if (EventInput.isDialogConfirm) { num |= EventInput.ConfirmMask; EventInput.isDialogConfirm = false; } if (HonoBehaviorSystem.Instance.IsFastForwardModeActive()) { if (FF9StateSystem.MobilePlatform) { if (fldMapNo == 909 || fldMapNo == 1909) { num = EventInput.FastForwardProcess(gMode, fldMapNo, num); } } else { num = EventInput.FastForwardProcess(gMode, fldMapNo, num); } } num &= ~EventInput.PSXCntlPadMask[0]; if (FF9StateSystem.MobilePlatform && gMode == 3 && EventCollision.IsRidingChocobo()) { if ((num & 524288u) > 0u || (num & 32768u) > 0u) { EventInput.isPressedDig = true; } else if ((num & 16777216u) > 0u || (num & 4096u) > 0u) { EventInput.isPressedDig = false; } else if ((num & EventInput.Lx) > 0u || (num & 16384u) > 0u) { EventInput.isPressedDig = false; } else if ((num & 1u) > 0u || (num & 1u) > 0u) { EventInput.isPressedDig = false; } } if (gMode == 3 && EventEngineUtils.IsMogCalled(PersistenSingleton <EventEngine> .Instance)) { ff9.w_isMogActive = true; } if (gMode == 3 && EMinigame.CheckBeachMinigame() && EventCollision.IsWorldTrigger() && (num & CancelMask) > 0u) { num &= ~CancelMask; EventInput.InputLog("Remove cancel mask for <SQEX> #2893"); } EventInput.eventButtonInput = 0u; EventInput.ResetWorldTriggerButton(); return(num); }
private void CollisionRequest(PosObj po) { EventCollision.CollisionRequest(po); }
public static Obj Collision(EventEngine eventEngine, PosObj po, Int32 mode, ref Single distance) { Obj result = (Obj)null; Single num = Single.MaxValue; Boolean flag = (mode & 4) > 0; Int32 num2 = (Int32)(4 * (Byte)((!flag) ? po.collRad : po.talkRad)); Vector3 a = Vector3.zero; if (eventEngine.gMode != 1) { if (eventEngine.gMode == 3) { WMActor wmActor = ((Actor)po).wmActor; a = wmActor.RealPosition; } for (ObjList objList = eventEngine.GetActiveObjList(); objList != null; objList = objList.next) { Obj obj = objList.obj; if (obj.sid != 5 || eventEngine.gMode == 3) { } Byte b = (Byte)((obj.uid != eventEngine.GetControlUID()) ? 4 : 2); Boolean flag2 = (po.flags & b) > 0; Single num3 = (Single)((!flag && !flag2) ? 0 : 1); Byte b2 = (Byte)((!flag) ? ((Byte)((po.uid != eventEngine.GetControlUID()) ? 4 : 2)) : 8); Single num4 = (Single)(obj.flags & b2); if (obj != po) { Boolean flag3 = num3 <= 0f; Boolean flag4 = num4 <= 0f; if (flag3 || flag4) { flag3 = ((mode & 6) <= 0); flag4 = (eventEngine.GetIP((Int32)obj.sid, (Int32)((!flag) ? 2 : 3), obj.ebData) != eventEngine.nil); if ((flag3 || flag4) && obj.cid == 4) { Actor actor = (Actor)obj; Single num5 = 0f; Int32 num6 = (Int32)(4 * (Byte)((!flag) ? actor.collRad : actor.talkRad)); PosObj posObj = (PosObj)obj; if (posObj.ovalRatio > 0) { num6 = EventCollision.CalculateRadiusFromOvalRatio(po, posObj, num6); } num6 += num2; if ((mode & 6) != 0) { num6 += (Int32)(actor.speed + 60); } if (eventEngine.gMode == 3) { Single num7 = Vector3.Distance(a, actor.wmActor.RealPosition); Single num8 = num7 * 256f; num5 = num8; } if ((Single)num6 > num5 && num > num5) { result = actor; num = num5; } } } } } if (distance > 0f) { distance = num; } return(result); } FieldMapActorController component = po.go.GetComponent <FieldMapActorController>(); if (component == (UnityEngine.Object)null) { return((Obj)null); } return(component.walkMesh.Collision(component, mode, out distance)); }
public static void CollisionRequest(PosObj po) { Boolean flag = false; EventEngine instance = PersistenSingleton <EventEngine> .Instance; Int32 nil = instance.nil; Single nilFloat = instance.nilFloat; Obj obj; if (EventCollision.CheckNPCInput(po)) { if (instance.gMode != 3) { return; } obj = EventCollision.Collision(instance, po, 2, ref nilFloat); } else { obj = EventCollision.Collision(instance, po, 4, ref nilFloat); if (obj != null) { EventCollision.sSysAngle = EventCollision.CollisionAngle(po, obj); if (EventCollision.sSysAngle > -1024 && EventCollision.sSysAngle < 1024) { if (EventCollision.IsNPCTalkable(obj)) { flag = EIcon.PollCollisionIcon(obj); } if (!flag) { obj = EventCollision.Collision(instance, po, 2, ref nilFloat); } } else { obj = EventCollision.Collision(instance, po, 2, ref nilFloat); } } else { obj = EventCollision.Collision(instance, po, 2, ref nilFloat); if (instance.gMode == 3 && obj != null) { WMActor wmActor = ((Actor)po).wmActor; if (wmActor.ControlNo == 0) { flag = EIcon.PollCollisionIcon(obj); } } } } if (obj != null && EventCollision.CheckNPCPush((PosObj)obj)) { instance.Request(obj, 1, 2, false); } if (EventCollision.CheckQuadInput(po)) { return; } obj = instance.TreadQuad(po, 2); if (obj != null) { Boolean flag2 = EventCollision.CheckQuadPush(po, obj) && instance.Request(obj, 1, 2, false); if (flag2) { if (instance.GetIP((Int32)obj.sid, 8, obj.ebData) != instance.nil) { EIcon.PollFIcon(2); } else { Int16 fldMapNo = FF9StateSystem.Common.FF9.fldMapNo; if (fldMapNo == 2108) { if (EventCollision.CheckQuadTalk(po, obj)) { EIcon.PollFIcon(1); } } } } } obj = instance.TreadQuad(po, 4); if (obj != null && EventCollision.CheckQuadTalk(po, obj) && EventCollision.IsQuadTalkable(po, obj)) { EIcon.PollCollisionIcon(obj); } if (instance.gMode == 3 && obj == null) { if (EventCollision.IsChocoboWalkingOrFlyingInForestArea()) { EIcon.PollFIcon(1); } else if (!flag && EMinigame.CheckBeachMinigame()) { EIcon.PollFIcon(3); } } }