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)); }
private Boolean NeckRange(Actor actor, ref Int32?ap) { Boolean flag = true; if (((Int32)actor.actf & EventEngine.actLookedTalker) == 0) { Single floatAngle1 = this.eBin.angleAsm(actor.xl - actor.pos[0], actor.zl - actor.pos[2]); Single num = actor.rotAngle[1]; Single floatAngle2 = floatAngle1 - num; if ((Double)floatAngle2 > 180.0) { floatAngle2 -= 360f; } else if ((Double)floatAngle2 < -180.0) { floatAngle2 += 360f; } Int32 fixedPoint = EventEngineUtils.ConvertFloatAngleToFixedPoint(floatAngle2); if (fixedPoint > 2048) { fixedPoint -= 4096; } flag = fixedPoint > -EventEngine.kNeckAngle0 && fixedPoint < (Int32)EventEngine.kNeckAngle0; if (!flag) { actor.actf &= (UInt16) ~EventEngine.actLook; } if (ap.HasValue) { ap = new Int32?(EventEngineUtils.ConvertFloatAngleToFixedPoint(floatAngle1)); } } return(flag); }
private static void GetMoveVector(out Vector3 oVector, Single rotx, Single roty, Single speed) { oVector = RotateVector(new Vector3(0.0f, 0.0f, -speed), rotx, roty); oVector.x = (Single)EventEngineUtils.CastFloatToIntWithChecking(oVector.x); oVector.y = (Single)EventEngineUtils.CastFloatToIntWithChecking(oVector.y); oVector.z = (Single)EventEngineUtils.CastFloatToIntWithChecking(oVector.z); }
private static Int32 GetDir(Actor actor) { Single floatAngle = actor.rotAngle[1]; Int32 num = EventEngineUtils.ConvertFloatAngleToFixedPoint(floatAngle); return(num >> 4 & 255); }
private void ProcessTurn(Actor actor) { if (((Int32)actor.flags & 128) == 0) { return; } Single num = actor.rotAngle.y; if ((Double)num > 180.0) { num -= 360f; } else if ((Double)num < -180.0) { num += 360f; } if ((Double)actor.turnAdd == 32766.0) { Single a = num + actor.trotAdd; if ((Int32)FF9StateSystem.Common.FF9.fldMapNo == 2855 && PersistenSingleton <EventEngine> .Instance.eBin.getVarManually(EBin.SC_COUNTER_SVR) == 9370 && (Int32)actor.model == 273) { if ((Double)a > 180.0) { a -= 360f; } else if ((Double)a < -180.0) { a += 360f; } } if ((Double)a < (Double)actor.turnRot || EventEngineUtils.nearlyEqual(a, actor.turnRot)) { a = actor.turnRot; actor.flags = (Byte)((UInt32)actor.flags & 4294967167U); } actor.rotAngle[1] = a; } else if ((Double)actor.turnAdd == (Double)Int16.MaxValue) { Single a = num + actor.trotAdd; if ((Int32)FF9StateSystem.Common.FF9.fldMapNo == 2855 && PersistenSingleton <EventEngine> .Instance.eBin.getVarManually(EBin.SC_COUNTER_SVR) == 9370 && (Int32)actor.model == 273) { if ((Double)a > 180.0) { a -= 360f; } else if ((Double)a < -180.0) { a += 360f; } } if ((Double)a > (Double)actor.turnRot || EventEngineUtils.nearlyEqual(a, actor.turnRot)) { a = actor.turnRot; actor.flags = (Byte)((UInt32)actor.flags & 4294967167U); } actor.rotAngle[1] = a; } Vector3 eulerAngles = actor.go.transform.localRotation.eulerAngles; }
private bool NeckRange(Actor actor, ref int?ap) { bool flag = true; if (((int)actor.actf & EventEngine.actLookedTalker) == 0) { float floatAngle1 = this.eBin.angleAsm(actor.xl - actor.pos[0], actor.zl - actor.pos[2]); float num = actor.rotAngle[1]; float floatAngle2 = floatAngle1 - num; if ((double)floatAngle2 > 180.0) { floatAngle2 -= 360f; } else if ((double)floatAngle2 < -180.0) { floatAngle2 += 360f; } int fixedPoint = EventEngineUtils.ConvertFloatAngleToFixedPoint(floatAngle2); if (fixedPoint > 2048) { fixedPoint -= 4096; } flag = fixedPoint > (int)-EventEngine.kNeckAngle0 && fixedPoint < (int)EventEngine.kNeckAngle0; if (!flag) { actor.actf &= (ushort)~EventEngine.actLook; } if (ap.HasValue) { ap = new int?(EventEngineUtils.ConvertFloatAngleToFixedPoint(floatAngle1)); } } return(flag); }
public void setByteToBuffer(Int32 startID, Byte value) { if (startID > (Int32)this.buffer.Length - 1) { EventEngineUtils.E_Error("setByteToBuffer: there is no enought data on obj.buffer to set byte"); return; } this.buffer[startID] = (Byte)(value & Byte.MaxValue); }
public void setShortToBuffer(Int32 startID, Int16 value) { if (startID > (Int32)this.buffer.Length - 2) { EventEngineUtils.E_Error("setShortToBuffer: there is no enought data on obj.buffer to set short"); return; } this.buffer[startID + 1] = (Byte)(((Int32)value & 65280) >> 8); this.buffer[startID] = (Byte)(value & 255); }
public Int16 getShortFromBuffer(Int32 startID) { if (startID > (Int32)this.buffer.Length - 2) { EventEngineUtils.E_Error("getShortFromBuffer: there is no enought data on obj.buffer to return short"); return(-1); } Int32 num = (Int32)this.buffer[startID + 1] << 8; num |= (Int32)this.buffer[startID]; return((Int16)num); }
private void SetAnim(Actor p, int anim) { if (anim == (int)p.anim) { return; } p.anim = (ushort)anim; p.animFrame = (byte)0; p.frameDif = (sbyte)0; p.frameN = (byte)EventEngineUtils.GetCharAnimFrame(p.go, anim); p.aspeed = p.aspeed0; }
private void SetAnim(Actor p, Int32 anim) { if (anim == (Int32)p.anim) { return; } p.anim = (UInt16)anim; p.animFrame = (Byte)0; p.frameDif = (SByte)0; p.frameN = (Byte)EventEngineUtils.GetCharAnimFrame(p.go, anim); p.aspeed = p.aspeed0; }
public void setIntToBuffer(Int32 startID, Int32 value) { if (startID >= (Int32)this.buffer.Length - 4) { EventEngineUtils.E_Error("setIntToBuffer: there is no enought data on obj.buffer to set int"); return; } this.buffer[startID + 3] = (Byte)(((Int64)value & (Int64)(-16777216)) >> 24); this.buffer[startID + 2] = (Byte)((value & 16711680) >> 16); this.buffer[startID + 1] = (Byte)((value & 65280) >> 8); this.buffer[startID] = (Byte)(value & 255); }
public Int32 getIntFromBuffer(Int32 startID) { if (startID > (Int32)this.buffer.Length - 4) { EventEngineUtils.E_Error("getIntFromBuffer: there is no enought data on obj.buffer to return int"); return(-1); } Int32 num = (Int32)this.buffer[startID + 3] << 24; num |= (Int32)this.buffer[startID + 2] << 16; num |= (Int32)this.buffer[startID + 1] << 8; return(num | (Int32)this.buffer[startID]); }
public void putvobj(Obj obj, Int32 type, Int32 v) { if (obj == null) { return; } if (type == 2) { Int16 fixedPointAngle = (Int16)(v << 4); ((PosObj)obj).rotAngle[1] = EventEngineUtils.ConvertFixedPointAngleToDegree(fixedPointAngle); } else { this.SetBattleCharData(obj, type, v); } }
private void ExecAnim(Actor p, Int32 anim) { if ((p.animFlag & EventEngine.afExec) != 0 && (p.flags & 128) != 0) { this.FinishTurn(p); } p.anim = (UInt16)anim; p.animFrame = p.inFrame; Byte num1 = (Byte) ~(EventEngine.afDir | EventEngine.afLower | EventEngine.afFreeze); p.animFlag &= num1; Byte num2 = p.inFrame <= p.outFrame ? (Byte)EventEngine.afExec : (Byte)(EventEngine.afExec | EventEngine.afDir); p.animFlag |= num2; p.frameDif = 0; p.frameN = (Byte)EventEngineUtils.GetCharAnimFrame(p.go, anim); p.aspeed = p.aspeed0; if (p.uid != this._context.controlUID) { return; } ++this.gAnimCount; }
public void InitBattleScene() { FF9StateGlobal FF9 = FF9StateSystem.Common.FF9; FF9.charArray.Clear(); this.btlScene = FF9StateSystem.Battle.FF9Battle.btl_scene = new BTL_SCENE(); Debug.Log("battleID = " + FF9StateSystem.Battle.battleMapIndex); Dictionary <String, Int32> source = FF9BattleDB.SceneData; battleSceneName = source.FirstOrDefault(p => p.Value == FF9StateSystem.Battle.battleMapIndex).Key; battleSceneName = battleSceneName.Substring(4); Debug.Log("battleSceneName = " + battleSceneName); this.btlScene.ReadBattleScene(battleSceneName); this.StartCoroutine(PersistenSingleton <FF9TextTool> .Instance.UpdateBattleText(FF9BattleDB.SceneData["BSC_" + battleSceneName])); WMProfiler.Begin("Start Load Text"); String battleModelPath = FF9BattleDB.MapModel["BSC_" + battleSceneName]; FF9StateSystem.Battle.FF9Battle.map.btlBGPtr = ModelFactory.CreateModel("BattleMap/BattleModel/battleMap_all/" + battleModelPath + "/" + battleModelPath, Vector3.zero, Vector3.zero, true); FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum = FF9StateSystem.Battle.isDebug ? FF9StateSystem.Battle.patternIndex : (Byte)this.ChoicePattern(); this.btlSeq = new btlseq(); this.btlSeq.ReadBattleSequence(battleSceneName); BeginInitialize(); battle.InitBattle(); EndInitialize(); if (!FF9StateSystem.Battle.isDebug) { String ebFileName = "EVT_BATTLE_" + battleSceneName; FF9StateBattleMap ff9StateBattleMap = FF9StateSystem.Battle.FF9Battle.map; ff9StateBattleMap.evtPtr = EventEngineUtils.loadEventData(ebFileName, "Battle/"); PersistenSingleton <EventEngine> .Instance.StartEvents(ff9StateBattleMap.evtPtr); PersistenSingleton <EventEngine> .Instance.eTb.InitMessage(); } this.CreateBattleData(FF9); if (battleSceneName == "EF_E006" || battleSceneName == "EF_E007") { BTL_DATA btlData1 = FF9StateSystem.Battle.FF9Battle.btl_data[4]; BTL_DATA btlData2 = FF9StateSystem.Battle.FF9Battle.btl_data[5]; this.GeoBattleAttach(btlData2.gameObject, btlData1.gameObject, 55); btlData2.attachOffset = 100; } FF9StateBattleSystem stateBattleSystem = FF9StateSystem.Battle.FF9Battle; GEOTEXHEADER geotexheader = new GEOTEXHEADER(); geotexheader.ReadBGTextureAnim(battleModelPath); stateBattleSystem.map.btlBGTexAnimPtr = geotexheader; BBGINFO bbginfo = new BBGINFO(); bbginfo.ReadBattleInfo(battleModelPath); FF9StateSystem.Battle.FF9Battle.map.btlBGInfoPtr = bbginfo; btlshadow.ff9battleShadowInit(13); battle.InitBattleMap(); this.seqList = new List <Int32>(); SB2_PATTERN sb2Pattern = this.btlScene.PatAddr[FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum]; Int32[] numArray = new Int32[sb2Pattern.MonCount]; for (Int32 index = 0; index < (Int32)sb2Pattern.MonCount; ++index) { numArray[index] = sb2Pattern.Put[index].TypeNo; } foreach (Int32 num in numArray.Distinct().ToArray()) { for (Int32 index1 = 0; index1 < this.btlSeq.sequenceProperty.Length; ++index1) { SequenceProperty sequenceProperty = this.btlSeq.sequenceProperty[index1]; if (sequenceProperty.Montype == num) { for (Int32 index2 = 0; index2 < sequenceProperty.PlayableSequence.Count; ++index2) { this.seqList.Add(sequenceProperty.PlayableSequence[index2]); } } } } this.btlIDList = FF9StateSystem.Battle.FF9Battle.seq_work_set.AnmOfsList.Distinct().ToArray(); this.battleState = BattleState.PlayerTurn; playerEnterCommand = false; this.playerCastingSkill = false; this.enemyEnterCommand = false; }
public Int32 ProcessEvents() { if ((Int32)FF9StateSystem.Common.FF9.fldMapNo == 303 || (Int32)FF9StateSystem.Common.FF9.fldMapNo == 304) { if (FF9StateSystem.Settings.IsNoEncounter) { PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(53189, 0); PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(52933, 0); PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(52677, 0); } } else if ((Int32)FF9StateSystem.Common.FF9.fldMapNo == 301) { if (FF9StateSystem.Settings.IsNoEncounter) { PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(61381, 0); PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(61125, 0); } } else if ((Int32)FF9StateSystem.Common.FF9.fldMapNo == 302) { if (FF9StateSystem.Settings.IsNoEncounter) { PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(53189, 0); PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(52933, 0); } } else if ((Int32)FF9StateSystem.Common.FF9.fldMapNo == 2921 && FF9StateSystem.Settings.IsNoEncounter) { PersistenSingleton <EventEngine> .Instance.eBin.setVarManually(10461, 10); } Boolean flag = false; Boolean isBattle = this.gMode == 2; this._moveKey = false; for (ObjList objList = this._context.activeObj; objList != null; objList = objList.next) { Obj obj = objList.obj; if ((Int32)obj.cid == 4) { Actor actor = (Actor)obj; FieldMapActorController mapActorController = actor.fieldMapActorController; if ((Int32)obj.uid == (Int32)this._context.controlUID && (Int32)obj.state == (Int32)EventEngine.stateRunning) { if ((Int32)this._context.usercontrol != 0) { if (this.gMode == 1) { //if (!((UnityEngine.Object)mapActorController != (UnityEngine.Object)null)) // ; this._moveKey = FieldMapActorController.ccSMoveKey; } else if (this.gMode == 3) { Single distance = 0.0f; this._moveKey = ff9.w_frameEncountEnable; this.CollisionRequest((PosObj)obj); PosObj posObj = (PosObj)this.Collision(this, actor, 0, ref distance); if (posObj != null && distance <= 0f) { WMActor wmActor = actor.wmActor; WMActor wmActor2 = ((Actor)posObj).wmActor; Vector2 from = new Vector2(wmActor.pos0 - wmActor.lastx, wmActor.pos2 - wmActor.lastz); Vector2 to = new Vector2(wmActor2.pos0 - wmActor.pos0, wmActor2.pos2 - wmActor.pos2); float num2 = Vector2.Angle(from, to); if (num2 >= 0f && num2 <= 90f) { wmActor.transform.position = new Vector3(wmActor.lastx, wmActor.lasty, wmActor.lastz); } } } if (this._moveKey) { this.ResetIdleTimer(0); } } else if ((UnityEngine.Object)mapActorController != (UnityEngine.Object)null) { mapActorController.CopyLastPos(); } } else if ((UnityEngine.Object)mapActorController != (UnityEngine.Object)null) { mapActorController.CopyLastPos(); } if ((Int32)obj.state == (Int32)EventEngine.stateRunning) { if (!isBattle) { this.ProcessAnime((Actor)obj); } //if ((Int32)this._context.usercontrol == 0) // ; } } } if (isBattle) { this.SetupBattleState(); } this._posUsed = false; Int32 num1 = this.eBin.ProcessCode(this._context.activeObj); EventHUD.CheckUIMiniGameForMobile(); if (num1 == 6) { num1 = 0; } else { this.gStopObj = (ObjList)null; } this._aimObj = (PosObj)null; this._eyeObj = (PosObj)null; for (ObjList objList = this._context.activeObj; objList != null; objList = objList.next) { this.SetRenderer(objList.obj, isBattle); } //if (this.gMode != 1) // ; if (isBattle) { for (ObjList objList = this._context.activeObj; objList != null; objList = objList.next) { Obj p = objList.obj; if ((Int32)p.btlchk == 2 && this.Request(p, 3, 5, false)) { p.btlchk = (Byte)1; } } } else { for (ObjList objList = this._context.activeObj; objList != null; objList = objList.next) { Obj obj = objList.obj; Single deltaX = 0.0f; Single deltaY = 0.0f; Single deltaZ = 0.0f; if ((Int32)obj.cid == 4) { Actor actor = (Actor)obj; if (this.gMode == 1) { if ((UnityEngine.Object)obj.go != (UnityEngine.Object)null) { FieldMapActorController component = obj.go.GetComponent <FieldMapActorController>(); if ((UnityEngine.Object)component != (UnityEngine.Object)null) { Int32 num2 = 0; if ((Int32)actor.cid != 4 || (Int32)actor.model == (Int32)UInt16.MaxValue) { num2 = 0; } //else if (component.walkMesh == null) // ; if (((Int32)obj.uid != (Int32)this._context.controlUID || this.sLockTimer >= 0L) && (num2 & 1) != 0) { Single distance = 0.0f; PosObj posObj = this.fieldmap.walkMesh.Collision(actor.fieldMapActorController, 0, out distance); if (posObj != null) { actor.fieldMapActorController.ResetPos(); if (((Int32)posObj.flags & 16) != 0) { this.sLockTimer = 0L; } if ((Int32)obj.uid == (Int32)this._context.controlUID) { this._collTimer = 2; } } } } } if ((Int32)obj.uid == (Int32)this._context.controlUID) { EIcon.ProcessHereIcon((PosObj)actor); if (this.GetUserControl()) { this.CollisionRequest((PosObj)actor); } } } else if (this.gMode == 3) { if (((Int32)actor.actf & EventEngine.actEye) != 0) { Vector3 eyePtr = ff9.w_cameraGetEyePtr(); eyePtr.x = actor.pos[0]; eyePtr.y = actor.pos[1]; eyePtr.z = actor.pos[2]; ff9.w_cameraSetEyePtr(eyePtr); this._eyeObj = (PosObj)actor; } else if (((Int32)actor.actf & EventEngine.actAim) != 0) { Vector3 aimPtr = ff9.w_cameraGetAimPtr(); aimPtr.x = actor.pos[0]; aimPtr.y = actor.pos[1]; aimPtr.z = actor.pos[2]; ff9.w_cameraSetAimPtr(aimPtr); this._aimObj = (PosObj)actor; } } if ((UnityEngine.Object)obj.go != (UnityEngine.Object)null) { if (this.gMode == 3) { WMActor wmActor = ((Actor)obj).wmActor; if ((UnityEngine.Object)wmActor != (UnityEngine.Object)null) { deltaX = (Single)(256.0 * ((Double)wmActor.pos0 - (Double)wmActor.lastx)); deltaY = (Single)(256.0 * ((Double)wmActor.pos1 - (Double)wmActor.lasty)); deltaZ = (Single)(256.0 * ((Double)wmActor.pos2 - (Double)wmActor.lastz)); flag = !EventEngineUtils.nearlyEqual(wmActor.pos0, wmActor.lastx) || !EventEngineUtils.nearlyEqual(wmActor.pos2, wmActor.lastz); //if ((Int32)obj.sid != 5 && (Int32)obj.sid == 11) // ; } } else if (this.gMode == 1) { FieldMapActorController component = obj.go.GetComponent <FieldMapActorController>(); deltaX = component.curPos.x - component.lastPos.x; deltaY = component.curPos.y - component.lastPos.y; deltaZ = component.curPos.z - component.lastPos.z; flag = !EventEngineUtils.nearlyEqual(component.curPos.x, component.lastPos.x) || !EventEngineUtils.nearlyEqual(component.curPos.z, component.lastPos.z); } if ((Int32)actor.follow != (Int32)Byte.MaxValue && (UnityEngine.Object)Singleton <DialogManager> .Instance.GetDialogByWindowID((Int32)actor.follow) == (UnityEngine.Object)null) { actor.follow = Byte.MaxValue; if (EventEngine.sLastTalker == actor) { EventEngine.sTalkTimer = 30; } } if (this.gMode == 1) { this.ProcessTurn(actor); if ((Int32)actor.model != (Int32)UInt16.MaxValue) { this.ProcessNeck(actor); } } if (this.gMode == 3) { this.ProcessTurn(actor); } if (flag) { Int32 num2 = (Int32)actor.animFlag & (EventEngine.afExec | EventEngine.afLower | EventEngine.afFreeze); if (num2 == 0 || num2 == (EventEngine.afExec | EventEngine.afLower)) { actor.animFlag &= (Byte) ~(EventEngine.afExec | EventEngine.afLower); this.SetAnim(actor, (Int32)actor.speed < (Int32)actor.speedth ? (Int32)actor.walk : (Int32)actor.run); } } else if (((Int32)actor.animFlag & (EventEngine.afExec | EventEngine.afFreeze)) == 0 && (this._collTimer == 0 || (Int32)obj.uid != (Int32)this._context.controlUID)) { this.SetAnim(actor, (Int32)actor.idle); } if (flag && (Int32)obj.uid == (Int32)this._context.controlUID && this._moveKey) { Single distance = this.distance(deltaX, deltaY, deltaZ); if (this.gMode == 3) { WMActor wmActor = ((Actor)obj).wmActor; } this._encountTimer += distance; if (!FF9StateSystem.Settings.IsNoEncounter && this.ProcessEncount(actor)) { this._encountReserved = true; } } } } } } if (this._collTimer > 0) { --this._collTimer; } if (EventEngine.sTalkTimer > 0 && --EventEngine.sTalkTimer != 0) { this.ClearLookTalker(); } if (this._encountReserved && !this._posUsed) { this._encountReserved = false; num1 = 3; } if ((num1 == 3 || num1 == 7) && this.gMode == 1) { this.BackupPosObjData(); } if (num1 == 7) { this.sEventContext1.copy(this.sEventContext0); } EMinigame.AllTreasureAchievement(); EMinigame.AllSandyBeachAchievement(); EMinigame.DigUpKupoAchievement(); //this.printActorsInObjList(this.E.activeObj); return(num1); }
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); }
public void InitBattleScene() { FF9StateGlobal ff = FF9StateSystem.Common.FF9; ff.charArray.Clear(); this.btlScene = (FF9StateSystem.Battle.FF9Battle.btl_scene = new BTL_SCENE()); global::Debug.Log("battleID = " + FF9StateSystem.Battle.battleMapIndex); HonoluluBattleMain.battleSceneName = FF9BattleDB.SceneData.FirstOrDefault((KeyValuePair <string, int> x) => x.Value == FF9StateSystem.Battle.battleMapIndex).Key; HonoluluBattleMain.battleSceneName = HonoluluBattleMain.battleSceneName.Substring(4); global::Debug.Log("battleSceneName = " + HonoluluBattleMain.battleSceneName); this.btlScene.ReadBattleScene(HonoluluBattleMain.battleSceneName); base.StartCoroutine(PersistenSingleton <FF9TextTool> .Instance.UpdateBattleText(FF9BattleDB.SceneData["BSC_" + HonoluluBattleMain.battleSceneName])); WMProfiler.Begin("Start Load Text"); string text = FF9BattleDB.MapModel["BSC_" + HonoluluBattleMain.battleSceneName]; string path = "BattleMap/BattleModel/battleMap_all/" + text + "/" + text; FF9StateSystem.Battle.FF9Battle.map.btlBGPtr = ModelFactory.CreateModel(path, Vector3.zero, Vector3.zero, true); checked { if (!FF9StateSystem.Battle.isDebug) { FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum = (byte)this.ChoicePattern(); } else { FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum = FF9StateSystem.Battle.patternIndex; } this.btlSeq = new btlseq(); this.btlSeq.ReadBattleSequence(HonoluluBattleMain.battleSceneName); FF9StateSystem.Battle.FF9Battle.attr = 0; battle.InitBattle(); FF9StateBattleSystem ff9Battle = FF9StateSystem.Battle.FF9Battle; ff9Battle.attr |= 1; if (!FF9StateSystem.Battle.isDebug) { string ebFileName = "EVT_BATTLE_" + HonoluluBattleMain.battleSceneName; FF9StateBattleMap map = FF9StateSystem.Battle.FF9Battle.map; map.evtPtr = EventEngineUtils.loadEventData(ebFileName, EventEngineUtils.ebSubFolderBattle); PersistenSingleton <EventEngine> .Instance.StartEvents(map.evtPtr); PersistenSingleton <EventEngine> .Instance.eTb.InitMessage(); } this.CreateBattleData(ff); if (HonoluluBattleMain.battleSceneName == "EF_E006" || HonoluluBattleMain.battleSceneName == "EF_E007") { BTL_DATA btl_DATA = FF9StateSystem.Battle.FF9Battle.btl_data[4]; BTL_DATA btl_DATA2 = FF9StateSystem.Battle.FF9Battle.btl_data[5]; this.GeoBattleAttach(btl_DATA2.gameObject, btl_DATA.gameObject, 55); btl_DATA2.attachOffset = 100; } FF9StateBattleSystem ff9Battle2 = FF9StateSystem.Battle.FF9Battle; GEOTEXHEADER geotexheader = new GEOTEXHEADER(); geotexheader.ReadBGTextureAnim(text); ff9Battle2.map.btlBGTexAnimPtr = geotexheader; BBGINFO bbginfo = new BBGINFO(); bbginfo.ReadBattleInfo(text); FF9StateSystem.Battle.FF9Battle.map.btlBGInfoPtr = bbginfo; btlshadow.ff9battleShadowInit(13); battle.InitBattleMap(); this.seqList = new List <int> (); SB2_PATTERN sb2_PATTERN = this.btlScene.PatAddr[(int)FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum]; int[] array = new int[(int)sb2_PATTERN.MonCount]; for (int i = 0; i < (int)sb2_PATTERN.MonCount; i++) { array[i] = (int)sb2_PATTERN.Put[i].TypeNo; } array = array.Distinct <int> ().ToArray <int> (); for (int j = 0; j < array.Length; j++) { for (int k = 0; k < this.btlSeq.sequenceProperty.Length; k++) { SequenceProperty sequenceProperty = this.btlSeq.sequenceProperty[k]; if (sequenceProperty.Montype == array[j]) { for (int l = 0; l < sequenceProperty.PlayableSequence.Count; l++) { this.seqList.Add(sequenceProperty.PlayableSequence[l]); } } } } this.btlIDList = FF9StateSystem.Battle.FF9Battle.seq_work_set.AnmOfsList.Distinct <byte> ().ToArray <byte> (); this.battleState = HonoluluBattleMain.BattleState.PlayerTurn; HonoluluBattleMain.playerEnterCommand = false; this.playerCastingSkill = false; this.enemyEnterCommand = false; } }
public int DoCalcOperationExt(int code) { int frameNdx = 0; short triNdx1 = 0; short floorNdx1 = 0; EBin.op_binary opBinary = (EBin.op_binary)code; switch (opBinary) { case EBin.op_binary.B_HAVE_ITEM: int id = this.eBin.getv(); frameNdx = id >= EventEngine.kSItemOfs ? (id >= EventEngine.kCItemOfs ? QuadMistDatabase.MiniGame_GetCardCount(id - EventEngine.kCItemOfs) : (!ff9item.FF9Item_IsExistImportant(id - EventEngine.kSItemOfs) ? 0 : 1)) : ff9item.FF9Item_GetCount(id); break; case EBin.op_binary.B_BAFRAME: this.fieldmap.walkMesh.BGI_animGetFrame((uint)this.eBin.getv(), ref frameNdx); break; case EBin.op_binary.B_FRAME: frameNdx = EventEngineUtils.GetCharAnimFrame(this.gCur.go, this.eBin.getv()); break; case EBin.op_binary.B_SPS: this.eBin.getv(); this.eBin.getv(); break; case EBin.op_binary.B_CURMP: frameNdx = (int)this._ff9.player[this.chr2slot(this.eBin.getv())].cur.mp; break; case EBin.op_binary.B_MAXMP: frameNdx = (int)this._ff9.player[this.chr2slot(this.eBin.getv())].max.mp; break; case EBin.op_binary.B_BGIID: short triNdx2 = -1; BGI.BGI_charGetInfo(this.eBin.getv(), ref triNdx2, ref floorNdx1); frameNdx = (int)triNdx2; break; case EBin.op_binary.B_BGIFLOOR: short floorNdx2 = -1; BGI.BGI_charGetInfo(this.eBin.getv(), ref triNdx1, ref floorNdx2); frameNdx = (int)floorNdx2; break; default: switch (opBinary - 67) { case EBin.op_binary.B_PAD0: case EBin.op_binary.B_PAD1: case EBin.op_binary.B_PAD2: label_9: frameNdx = this.OperatorExtractLet(code); break; case EBin.op_binary.B_POST_PLUS_A: case EBin.op_binary.B_POST_MINUS_A: label_8: frameNdx = this.OperatorExtract1(code); break; default: switch (opBinary - 8) { case EBin.op_binary.B_PAD0: case EBin.op_binary.B_PAD1: case EBin.op_binary.B_PAD2: case EBin.op_binary.B_PAD3: frameNdx = this.OperatorAll1(code); break; case EBin.op_binary.B_PRE_MINUS: goto label_8; default: switch (opBinary - 90) { case EBin.op_binary.B_PAD0: case EBin.op_binary.B_PAD1: case EBin.op_binary.B_PAD2: this.eBin.getv(); break; default: if (opBinary != EBin.op_binary.B_CURHP) { if (opBinary != EBin.op_binary.B_MAXHP) { if (opBinary == EBin.op_binary.B_LET_E) { goto label_9; } else { break; } } else { frameNdx = (int)this._ff9.player[this.chr2slot(this.eBin.getv())].max.hp; break; } } else { frameNdx = (int)this._ff9.player[this.chr2slot(this.eBin.getv())].cur.hp; break; } } break; } break; } break; } return(frameNdx); }
private bool MoveToward_mixed(float x, float y, float z, int flags, PosObj flagsPosObj) { Actor actor = (Actor)this.gCur; if (FF9StateSystem.Common.FF9.fldMapNo == 1823 && actor.sid == 13 && (int)x == -365 && (int)z == -373) { x = -389f; z = -600f; } if (FF9StateSystem.Common.FF9.fldMapNo == 1550 && actor.sid == 15 && (int)x == -1109 && (int)z == -1014) { x = -1155f; z = -1070f; } GameObject go = this.gCur.go; float num = (float)actor.speed; float num2 = 0f; PosObj posObj = (PosObj)null; FieldMapActorController fieldMapActorController = (FieldMapActorController)null; WMActor wmactor = (WMActor)null; float num3 = 0f; float num4 = 0f; float num5 = 0f; Vector3 vector = Vector3.zero; if (this.gMode == 1) { fieldMapActorController = actor.fieldMapActorController; if (fieldMapActorController == (UnityEngine.Object)null) { num3 = actor.pos[0]; num4 = actor.pos[1]; num5 = actor.pos[2]; } else { num3 = fieldMapActorController.curPos.x; num4 = fieldMapActorController.curPos.y; num5 = fieldMapActorController.curPos.z; } vector = actor.rotAngle; } else if (this.gMode == 3) { wmactor = actor.wmActor; num3 = actor.pos[0]; num4 = actor.pos[1]; num5 = actor.pos[2]; } float deltaX = x - num3; float num6 = y - num4; float deltaZ = z - num5; float num7; if (((int)actor.actf & EventEngine.actLockDir) != 0) { num7 = ((this.gMode != 1) ? wmactor.rot1 : vector.y); num7 = EventEngineUtils.ClampAngle(num7); } else { num7 = this.eBin.angleAsm(deltaX, deltaZ); if ((flags & 1) == 0 || flagsPosObj != null) { float num8 = (this.gMode != 1) ? wmactor.rot1 : vector.y; num8 = EventEngineUtils.ClampAngle(num8); float num9 = num7 - num8; if (num9 < -180f) { num9 += 360f; } if (num9 > 180f || EventEngineUtils.nearlyEqual(num9, 180f)) { num9 -= 360f; } if ((FF9StateSystem.Common.FF9.fldMapNo != 307 || this.gCur.sid != 11) && (FF9StateSystem.Common.FF9.fldMapNo != 610 || this.gCur.sid != 3) && EventEngineUtils.nearlyEqual(num9, 0f)) { Actor actor2 = actor; actor2.actf = (ushort)(actor2.actf | (ushort)EventEngine.actLockDir); } int num10 = (int)actor.omega << 3; float num11 = EventEngineUtils.ConvertFixedPointAngleToDegreeWithOutShiftRight((short)num10); if (num9 > 0f) { if (num9 > num11) { num7 = num8 + num11; } } else if (num9 < -num11) { num7 = num8 - num11; } num7 = EventEngineUtils.ClampAngle(num7); if (this.gMode == 1) { vector.y = num7; actor.rotAngle[1] = num7; } else if (this.gMode == 3) { wmactor.rot1 = num7; } } } float num13; if ((flags & 2) != 0 && flagsPosObj == null) { num6 = y - num4; float num12 = this.distance(deltaX, 0f, deltaZ); num13 = this.eBin.angleAsm(-num6, -num12); num13 = EventEngineUtils.ClampAngle(num13); float num8 = actor.rot0; num8 = EventEngineUtils.ClampAngle(num8); float num9 = num13 - num8; if (num9 < -180f) { num9 += 360f; } else if (num9 > 180f || EventEngineUtils.nearlyEqual(num9, 180f)) { num9 -= 360f; } int num10 = (int)actor.omega << 3; float num14 = EventEngineUtils.ConvertFixedPointAngleToDegreeWithOutShiftRight((short)num10); if (num9 > 0f) { if (num9 > num14) { num13 = num8 + num14; } } else if (num9 < -num14) { num13 = num8 - num14; } num13 = EventEngineUtils.ClampAngle(num13); actor.rot0 = num13; } else { num13 = 0f; num6 = 0f; } Vector3 vector2; EventEngine.GetMoveVector(out vector2, num13, num7, (float)actor.speed); if (fieldMapActorController != (UnityEngine.Object)null && fieldMapActorController.name == fieldMapActorController.fieldMap.debugObjName) { Vector3 a = new Vector3(num3, num4, num5); Vector3 vector3 = vector2; Vector3 b = vector3.normalized * 100f * vector3.magnitude; Vector3 b2 = new Vector3(0f, 100f, 0f); Vector3 vector4 = new Vector3(x, y, z); global::Debug.DrawLine(a + b2, a + b + b2, Color.magenta, 2f, true); global::Debug.DrawLine(a + b2, a + Vector3.up * 50f + b2, Color.blue, 2f, true); } Vector3 vector5 = new Vector3(num3, num4, num5) + vector2; if (this.gMode == 1) { fieldMapActorController = actor.fieldMapActorController; if (fieldMapActorController == (UnityEngine.Object)null) { actor.pos[0] = vector5.x; actor.pos[1] = vector5.y; actor.pos[2] = vector5.z; } else { fieldMapActorController.curPos += vector2; fieldMapActorController.SyncPosToTransform(); } } else if (this.gMode == 3) { wmactor.SetPosition(vector5.x, vector5.y, vector5.z); } if (this.gMode == 1 && fieldMapActorController != (UnityEngine.Object)null) { if (fieldMapActorController.originalActor.uid == 2 && FF9StateSystem.Common.FF9.fldMapNo == 1605 && this.eBin.getVarManually(220) == 6622) { fieldMapActorController.originalActor.collRad = 10; } if (fieldMapActorController.originalActor.uid == 18 && FF9StateSystem.Common.FF9.fldMapNo == 575 && this.eBin.getVarManually(220) == 3165) { fieldMapActorController.originalActor.collRad = 34; } posObj = fieldMapActorController.walkMesh.Collision(fieldMapActorController, 0, out num2); if (posObj != null && (num2 < 0f || EventEngineUtils.nearlyEqual(num2, 0f))) { fieldMapActorController.curPos -= vector2; } } else if (this.gMode == 3) { posObj = (PosObj)this.Collision(this, actor, 0, ref num2); if (posObj != null && (num2 < 0f || EventEngineUtils.nearlyEqual(num2, 0f))) { wmactor.SetPosition(num3, num4, num5); } actor.pos[0] = vector5[0]; actor.pos[1] = vector5[1]; actor.pos[2] = vector5[2]; } if (actor.loopCount != 0 && actor.loopCount != 255) { Actor actor3 = actor; actor3.loopCount = (byte)(actor3.loopCount - 1); } bool flag = actor.loopCount != 0; if (flagsPosObj != null) { bool flag2 = posObj != flagsPosObj; bool flag3 = num2 > 0f; flag = (flag2 || flag3); } num2 = this.dist64(deltaX, num6, deltaZ); bool flag4 = num2 > actor.lastdist; if (FF9StateSystem.Common.FF9.fldMapNo == 456 && this.eBin.getVarManually(EBin.SC_COUNTER_SVR) == 2800) { if (actor.sid == 2) { flag4 = (!EventEngineUtils.nearlyEqual(num2, actor.lastdist) && num2 > actor.lastdist); } } else if (FF9StateSystem.Common.FF9.fldMapNo == 455 && this.eBin.getVarManually(EBin.SC_COUNTER_SVR) == 2800) { if (actor.sid == 1) { flag4 = (!EventEngineUtils.nearlyEqual(num2, actor.lastdist) && num2 > actor.lastdist); } } else if (FF9StateSystem.Common.FF9.fldMapNo == 1055 && actor.sid == 11) { flag4 = (!EventEngineUtils.nearlyEqual(num2, actor.lastdist) && num2 > actor.lastdist); } if (num2 < num * num || (((int)actor.actf & EventEngine.actMove) != 0 && flag4)) { if (num2 < num * num && FF9StateSystem.Common.FF9.fldMapNo != 2204 && (FF9StateSystem.Common.FF9.fldMapNo != 2209 || PersistenSingleton <EventEngine> .Instance.eBin.getVarManually(220) != 9850) && this.gMode == 1 && fieldMapActorController != (UnityEngine.Object)null) { fieldMapActorController.curPos.x = x; fieldMapActorController.curPos.z = z; fieldMapActorController.SyncPosToTransform(); } flag = false; } bool flag5 = false; if (FF9StateSystem.Common.FF9.fldMapNo == 901) { if (actor.sid == 1) { flag5 = true; } } else if (FF9StateSystem.Common.FF9.fldMapNo == 1808) { if (actor.sid == 4 || actor.sid == 5) { flag5 = true; } } else if (FF9StateSystem.Common.FF9.fldMapNo == 1810) { if (actor.sid == 5) { flag5 = true; } } else if (FF9StateSystem.Common.FF9.fldMapNo == 456 && this.eBin.getVarManually(EBin.SC_COUNTER_SVR) == 2800) { if (actor.sid == 2) { flag5 = true; } } else if (FF9StateSystem.Common.FF9.fldMapNo == 455 && this.eBin.getVarManually(EBin.SC_COUNTER_SVR) == 2800) { if (actor.sid == 1) { flag5 = true; } } else if (FF9StateSystem.Common.FF9.fldMapNo == 1055 && actor.sid == 11) { flag5 = true; } if (flag5 && flag4 && posObj != null && posObj.uid == this.GetControlUID()) { flag = true; } if (actor.lastdist < (float)EventEngine.kInitialDist && num2 < actor.lastdist) { Actor actor4 = actor; actor4.actf = (ushort)(actor4.actf | (ushort)EventEngine.actMove); } if (FF9StateSystem.Common.FF9.fldMapNo == 571 && actor.sid == 4 && EventEngineUtils.nearlyEqual(x, 887f) && EventEngineUtils.nearlyEqual(z, 1419f) && num2 > actor.lastdist) { fieldMapActorController.curPos.x = 887f; fieldMapActorController.curPos.z = 1419f; fieldMapActorController.SyncPosToTransform(); return(true); } actor.lastdist = num2; if (FF9StateSystem.Common.FF9.fldMapNo == 2954 && actor.sid == 11 && EventEngineUtils.nearlyEqual(num2, 32420f)) { return(false); } if (!flag) { this.clrdist(actor); } if (actor.uid == this._context.controlUID) { this.gAnimCount++; } return(flag); }
private void ff9InitStateFieldMap(Int32 MapNo) { FF9StateFieldMap map = this.FF9Field.loc.map; map.ff9ResetStateFieldMap(); this.FF9Sys.attr &= 4294966512u; this.FF9Field.attr |= 4u; FF9StateFieldSystem ff9Field = FF9StateSystem.Field.FF9Field; this.FF9Field.playerID = 0; map.nextMapNo = (this.FF9.fldMapNo = (Int16)MapNo); for (Int32 i = 1; i >= 0; i--) { for (Int32 j = 3; j >= 0; j--) { FieldMap.FF9FieldAttr.ff9[i, j] = 0; FieldMap.FF9FieldAttr.field[i, j] = 0; } } String text = FF9DBAll.EventDB[MapNo]; map.evtPtr = EventEngineUtils.loadEventData(text, EventEngineUtils.ebSubFolderField); AnimationFactory.LoadAnimationUseInEvent(text); vib.LoadVibData(text); map.mcfPtr = MapConfiguration.LoadMapConfigData(text); GameObject gameObject = GameObject.Find("FieldMap Root"); GameObject gameObject2 = new GameObject("FieldMap"); gameObject2.transform.parent = gameObject.transform; PersistenSingleton<EventEngine>.Instance.fieldmap = gameObject2.AddComponent<FieldMap>(); GameObject gameObject3 = new GameObject("FieldMap SPS"); gameObject3.transform.parent = gameObject.transform; PersistenSingleton<EventEngine>.Instance.fieldSps = gameObject3.AddComponent<FieldSPSSystem>(); PersistenSingleton<EventEngine>.Instance.fieldSps.Init(PersistenSingleton<EventEngine>.Instance.fieldmap); if (MapNo >= 3000 && MapNo <= 3012) { FF9StateSystem.Settings.CallBoosterButtonFuntion(BoosterType.BattleAssistance, false); FF9StateSystem.Settings.CallBoosterButtonFuntion(BoosterType.HighSpeedMode, false); FF9StateSystem.Settings.CallBoosterButtonFuntion(BoosterType.Attack9999, false); FF9StateSystem.Settings.CallBoosterButtonFuntion(BoosterType.NoRandomEncounter, false); PersistenSingleton<UIManager>.Instance.Booster.SetBoosterHudIcon(BoosterType.BattleAssistance, false); PersistenSingleton<UIManager>.Instance.Booster.SetBoosterHudIcon(BoosterType.HighSpeedMode, false); PersistenSingleton<UIManager>.Instance.Booster.SetBoosterHudIcon(BoosterType.Attack9999, false); PersistenSingleton<UIManager>.Instance.Booster.SetBoosterHudIcon(BoosterType.NoRandomEncounter, false); PersistenSingleton<UIManager>.Instance.SetUIPauseEnable(false); PersistenSingleton<UIManager>.Instance.ChangeUIState(UIManager.UIState.PreEnding); } else { PersistenSingleton<UIManager>.Instance.SetUIPauseEnable(true); } AllSoundDispatchPlayer allSoundDispatchPlayer = SoundLib.GetAllSoundDispatchPlayer(); Int32 suspendSongID = allSoundDispatchPlayer.GetSuspendSongID(); Int32 sndEffectResSoundID = allSoundDispatchPlayer.GetSndEffectResSoundID(0); Int32 sndEffectResSoundID2 = allSoundDispatchPlayer.GetSndEffectResSoundID(1); FF9Snd.BGMFieldSongCounter = 0; this.ee.StartEvents(map.evtPtr); FF9StateSystem.Field.SetTwistAD((Int32)this.ee.GetTwistA(), (Int32)this.ee.GetTwistD()); PersistenSingleton<EventEngine>.Instance.eTb.InitMessage(); PersistenSingleton<EventEngine>.Instance.eTb.InitMovieHitPoint(MapNo); this.FF9.npcCount = (Byte)this.ee.GetNumberNPC(); this.fieldmap = GameObject.Find("FieldMap").GetComponent<FieldMap>(); this.ee.updateModelsToBeAdded(); Int32 suspendSongID2 = allSoundDispatchPlayer.GetSuspendSongID(); Int32 sndEffectResSoundID3 = allSoundDispatchPlayer.GetSndEffectResSoundID(0); Int32 sndEffectResSoundID4 = allSoundDispatchPlayer.GetSndEffectResSoundID(1); if (suspendSongID != -1 && suspendSongID2 != -1 && suspendSongID == suspendSongID2) { FF9Snd.ff9fldsnd_song_restore(); } if (FF9Snd.LatestWorldPlayedSong != -1 && FF9Snd.LatestWorldPlayedSong == SoundLib.GetAllSoundDispatchPlayer().GetCurrentMusicId() && FF9Snd.BGMFieldSongCounter == 0) { SoundLib.GetAllSoundDispatchPlayer().FF9SOUND_SONG_STOPCURRENT(); } FF9Snd.LatestWorldPlayedSong = -1; FF9Snd.BGMFieldSongCounter = 0; if ((sndEffectResSoundID != -1 || sndEffectResSoundID2 != -1) && (sndEffectResSoundID3 != -1 || sndEffectResSoundID4 != -1) && sndEffectResSoundID == sndEffectResSoundID3 && sndEffectResSoundID2 == sndEffectResSoundID4) { FF9Snd.ff9fieldSoundRestoreAllResidentSndEffect(); } }
private void ProcessNeck(Actor actor) { Vector3 vector3 = Vector3.zero; int fixedPoint = 0; float single = 0f; float single1 = 0f; PosObj posObj = null; int? nullable = new int?(0); int? nullable1 = null; if ((actor.actf & EventEngine.actNeckTalk) != 0 && EventEngine.sLastTalker != null && EventEngine.sLastTalker != actor && this.dist64(actor.pos[0] - EventEngine.sLastTalker.pos[0], actor.pos[2] - EventEngine.sLastTalker.pos[2], 0f) >= (float)EventEngine.kNeckNear2) { posObj = EventEngine.sLastTalker; Actor actor1 = actor; actor1.actf = (ushort)(actor1.actf | (ushort)EventEngine.actLookTalker); } if (posObj != null || (actor.actf & EventEngine.actNeckT) != 0 && (actor.animFlag & EventEngine.afLower) == 0) { if ((actor.flags & 128) != 0) { Vector3 vector31 = actor.rotAngle; single1 = vector31.y; vector31.y = actor.trot; actor.rotAngle = vector31; } if (posObj == null) { posObj = this.CollisionNeck(actor); } if (posObj != null) { if ((actor.actf & EventEngine.actLook) == 0 && (actor.flags & 128) == 0) { Actor actor2 = actor; actor2.actf = (ushort)(actor2.actf | (ushort)EventEngine.actLook); this.GetDefaultLook(actor, ref vector3, 0); actor.xl = vector3.x; actor.yl = vector3.y; actor.zl = vector3.z; } if ((actor.actf & EventEngine.actLook) != 0 && this.NeckRange(actor, ref nullable1)) { vector3.x = posObj.pos[0]; vector3.y = posObj.pos[1]; vector3.z = posObj.pos[2]; float single2 = vector3.x - actor.pos[0]; float single3 = vector3.z - actor.pos[2]; single = this.eBin.angleAsm(single2, single3); float item = single - actor.rotAngle[1]; if (item > 180f) { item = item - 360f; } else if (item < -180f) { item = item + 360f; } fixedPoint = EventEngineUtils.ConvertFloatAngleToFixedPoint(item); if (fixedPoint > 2048) { fixedPoint = fixedPoint - 4096; } if (fixedPoint > -EventEngine.kNeckAngle && fixedPoint < EventEngine.kNeckAngle) { int num = (int)actor.pos[1]; int num1 = (int)vector3.y; vector3.y = (float)(3 * (((int)actor.pos[1] << 6) - actor.eye * actor.scaley) + ((int)vector3.y << 6) - posObj.eye * posObj.scaley >> 8); this.LookSlow(actor, vector3); } else if (this.NeckTurn(actor, EventEngineUtils.ConvertFloatAngleToFixedPoint(single))) { this.GetDefaultLook(actor, ref vector3, (fixedPoint <= EventEngine.kNeckAngle ? (int)(-EventEngine.kNeckAngle) : (int)EventEngine.kNeckAngle)); this.LookSlow(actor, vector3); } } } else if ((actor.actf & EventEngine.actLook) != 0 && this.NeckRange(actor, ref nullable) && this.NeckTurn(actor, nullable.Value)) { this.NeckReturn(actor); } if ((actor.flags & 128) != 0) { Vector3 vector32 = actor.rotAngle; vector32.y = single1; if (vector32.y < -180f) { vector32.y = vector32.y + 360f; } else if (vector32.y > 180f) { vector32.y = vector32.y - 360f; } actor.rotAngle[1] = vector32.y; } } else if ((actor.actf & EventEngine.actLook) != 0 && this.NeckRange(actor, ref nullable1)) { this.NeckReturn(actor); } if ((actor.actf & EventEngine.actLook) == 0) { this.geoLookReset(actor); } }
private bool MoveToward_mixed(float x, float y, float z, int flags, PosObj flagsPosObj) { Actor actor = (Actor)this.gCur; if ((int)FF9StateSystem.Common.FF9.fldMapNo == 1823 && (int)actor.sid == 13 && ((int)x == -365 && (int)z == -373)) { x = -389f; z = -600f; } if ((int)FF9StateSystem.Common.FF9.fldMapNo == 1550 && (int)actor.sid == 15 && ((int)x == -1109 && (int)z == -1014)) { x = -1155f; z = -1070f; } float num1 = (float)actor.speed; float distance = 0.0f; PosObj posObj = (PosObj)null; FieldMapActorController fieldMapActorController = (FieldMapActorController)null; WMActor wmActor = (WMActor)null; float x1 = 0.0f; float y1 = 0.0f; float z1 = 0.0f; Vector3 vector3_1 = Vector3.zero; if (this.gMode == 1) { fieldMapActorController = actor.fieldMapActorController; if ((UnityEngine.Object)fieldMapActorController == (UnityEngine.Object)null) { x1 = actor.pos[0]; y1 = actor.pos[1]; z1 = actor.pos[2]; } else { x1 = fieldMapActorController.curPos.x; y1 = fieldMapActorController.curPos.y; z1 = fieldMapActorController.curPos.z; } vector3_1 = actor.rotAngle; } else if (this.gMode == 3) { wmActor = actor.wmActor; x1 = actor.pos[0]; y1 = actor.pos[1]; z1 = actor.pos[2]; } float deltaX = x - x1; float num2 = y - y1; float deltaZ = z - z1; float num3; if (((int)actor.actf & EventEngine.actLockDir) != 0) { num3 = EventEngineUtils.ClampAngle(this.gMode != 1 ? wmActor.rot1 : vector3_1.y); } else { num3 = this.eBin.angleAsm(deltaX, deltaZ); if ((flags & 1) == 0 || flagsPosObj != null) { float num4 = EventEngineUtils.ClampAngle(this.gMode != 1 ? wmActor.rot1 : vector3_1.y); float a = num3 - num4; if ((double)a < -180.0) { a += 360f; } if ((double)a > 180.0 || EventEngineUtils.nearlyEqual(a, 180f)) { a -= 360f; } if (((int)FF9StateSystem.Common.FF9.fldMapNo != 307 || (int)this.gCur.sid != 11) && ((int)FF9StateSystem.Common.FF9.fldMapNo != 610 || (int)this.gCur.sid != 3) && EventEngineUtils.nearlyEqual(a, 0.0f)) { actor.actf |= (ushort)EventEngine.actLockDir; } float withOutShiftRight = EventEngineUtils.ConvertFixedPointAngleToDegreeWithOutShiftRight((short)((int)actor.omega << 3)); if ((double)a > 0.0) { if ((double)a > (double)withOutShiftRight) { num3 = num4 + withOutShiftRight; } } else if ((double)a < -(double)withOutShiftRight) { num3 = num4 - withOutShiftRight; } num3 = EventEngineUtils.ClampAngle(num3); if (this.gMode == 1) { vector3_1.y = num3; actor.rotAngle[1] = num3; } else if (this.gMode == 3) { wmActor.rot1 = num3; } } } float deltaY; float rotx; if ((flags & 2) != 0 && flagsPosObj == null) { deltaY = y - y1; float num4 = this.distance(deltaX, 0.0f, deltaZ); float angle = EventEngineUtils.ClampAngle(this.eBin.angleAsm(-deltaY, -num4)); float num5 = EventEngineUtils.ClampAngle(actor.rot0); float a = angle - num5; if ((double)a < -180.0) { a += 360f; } else if ((double)a > 180.0 || EventEngineUtils.nearlyEqual(a, 180f)) { a -= 360f; } float withOutShiftRight = EventEngineUtils.ConvertFixedPointAngleToDegreeWithOutShiftRight((short)((int)actor.omega << 3)); if ((double)a > 0.0) { if ((double)a > (double)withOutShiftRight) { angle = num5 + withOutShiftRight; } } else if ((double)a < -(double)withOutShiftRight) { angle = num5 - withOutShiftRight; } rotx = EventEngineUtils.ClampAngle(angle); actor.rot0 = rotx; } else { rotx = 0.0f; deltaY = 0.0f; } Vector3 oVector; GetMoveVector(out oVector, rotx, num3, (float)actor.speed); if ((UnityEngine.Object)fieldMapActorController != (UnityEngine.Object)null && fieldMapActorController.name == fieldMapActorController.fieldMap.debugObjName) { Vector3 vector3_2 = new Vector3(x1, y1, z1); Vector3 vector3_3 = oVector; Vector3 vector3_4 = vector3_3.normalized * 100f * vector3_3.magnitude; Vector3 vector3_5 = new Vector3(0.0f, 100f, 0.0f); Vector3 vector3_6 = new Vector3(x, y, z); Debug.DrawLine(vector3_2 + vector3_5, vector3_2 + vector3_4 + vector3_5, Color.magenta, 2f, true); Debug.DrawLine(vector3_2 + vector3_5, vector3_2 + Vector3.up * 50f + vector3_5, Color.blue, 2f, true); } Vector3 vector3_7 = new Vector3(x1, y1, z1) + oVector; if (this.gMode == 1) { fieldMapActorController = actor.fieldMapActorController; if ((UnityEngine.Object)fieldMapActorController == (UnityEngine.Object)null) { actor.pos[0] = vector3_7.x; actor.pos[1] = vector3_7.y; actor.pos[2] = vector3_7.z; } else { fieldMapActorController.curPos = fieldMapActorController.curPos + oVector; fieldMapActorController.SyncPosToTransform(); } } else if (this.gMode == 3) { wmActor.SetPosition(vector3_7.x, vector3_7.y, vector3_7.z); } if (this.gMode == 1 && (UnityEngine.Object)fieldMapActorController != (UnityEngine.Object)null) { if ((int)fieldMapActorController.originalActor.uid == 2 && (int)FF9StateSystem.Common.FF9.fldMapNo == 1605 && this.eBin.getVarManually(220) == 6622) { fieldMapActorController.originalActor.collRad = (byte)10; } if ((int)fieldMapActorController.originalActor.uid == 18 && (int)FF9StateSystem.Common.FF9.fldMapNo == 575 && this.eBin.getVarManually(220) == 3165) { fieldMapActorController.originalActor.collRad = (byte)34; } posObj = fieldMapActorController.walkMesh.Collision(fieldMapActorController, 0, out distance); if (posObj != null && ((double)distance < 0.0 || EventEngineUtils.nearlyEqual(distance, 0.0f))) { fieldMapActorController.curPos = fieldMapActorController.curPos - oVector; } } else if (this.gMode == 3) { posObj = (PosObj)this.Collision(this, (PosObj)actor, 0, ref distance); if (posObj != null && ((double)distance < 0.0 || EventEngineUtils.nearlyEqual(distance, 0.0f))) { wmActor.SetPosition(x1, y1, z1); } actor.pos[0] = vector3_7[0]; actor.pos[1] = vector3_7[1]; actor.pos[2] = vector3_7[2]; } if ((int)actor.loopCount != 0 && (int)actor.loopCount != (int)byte.MaxValue) { --actor.loopCount; } bool flag1 = (int)actor.loopCount != 0; if (flagsPosObj != null) { flag1 = posObj != flagsPosObj || (double)distance > 0.0; } float a1 = this.dist64(deltaX, deltaY, deltaZ); if ((double)a1 < (double)num1 * (double)num1 || ((int)actor.actf & EventEngine.actMove) != 0 && (double)a1 > (double)actor.lastdist) { if ((double)a1 < (double)num1 * (double)num1 && (int)FF9StateSystem.Common.FF9.fldMapNo != 2204 && ((int)FF9StateSystem.Common.FF9.fldMapNo != 2209 || PersistenSingleton <EventEngine> .Instance.eBin.getVarManually(220) != 9850) && (this.gMode == 1 && (UnityEngine.Object)fieldMapActorController != (UnityEngine.Object)null)) { fieldMapActorController.curPos.x = x; fieldMapActorController.curPos.z = z; fieldMapActorController.SyncPosToTransform(); } flag1 = false; } bool flag2 = false; if ((int)FF9StateSystem.Common.FF9.fldMapNo == 901) { if ((int)actor.sid == 1) { flag2 = true; } } else if ((int)FF9StateSystem.Common.FF9.fldMapNo == 1808) { if ((int)actor.sid == 4 || (int)actor.sid == 5) { flag2 = true; } } else if ((int)FF9StateSystem.Common.FF9.fldMapNo == 1810 && (int)actor.sid == 5) { flag2 = true; } if (flag2 && (double)a1 > (double)actor.lastdist && (posObj != null && (int)posObj.uid == (int)this.GetControlUID())) { flag1 = true; } if ((double)actor.lastdist < (double)EventEngine.kInitialDist && (double)a1 < (double)actor.lastdist) { actor.actf |= (ushort)EventEngine.actMove; } if ((int)FF9StateSystem.Common.FF9.fldMapNo == 571 && (int)actor.sid == 4 && (EventEngineUtils.nearlyEqual(x, 887f) && EventEngineUtils.nearlyEqual(z, 1419f)) && (double)a1 > (double)actor.lastdist) { fieldMapActorController.curPos.x = 887f; fieldMapActorController.curPos.z = 1419f; fieldMapActorController.SyncPosToTransform(); return(true); } actor.lastdist = a1; if ((int)FF9StateSystem.Common.FF9.fldMapNo == 2954 && (int)actor.sid == 11 && EventEngineUtils.nearlyEqual(a1, 32420f)) { return(false); } if (!flag1) { this.clrdist(actor); } if ((int)actor.uid == (int)this._context.controlUID) { ++this.gAnimCount; } return(flag1); }