public void FUN_3754() { RSEG_DB rVar1; int iVar2; DAT_A8 = null; DAT_B0 = vCollider.reader.ReadInt32(24) + 0x5000; DAT_B4 = vCollider.reader.ReadInt32(12) - 0x5000; rVar1 = LevelManager.instance.FUN_518DC(screen, -1); DAT_B8 = rVar1; DAT_C0 = 1; iVar2 = rVar1.FUN_51334(screen); DAT_C4 = iVar2 << 16; if (tags != 0) { DAT_BC = 3814; flags |= 0x80; } physics2.X = 0; flags |= 0x100; physics2.Y = 0; physics2.Z = 0; DAT_A0 = new Vector3Int(0x10, 0x20, 0x40); GameManager.instance.FUN_30334(GameManager.instance.worldObjs, 20, this); }
public void FUN_3934(JUNC_DB param1) { RSEG_DB piVar1; int iVar2; piVar1 = param1.DAT_1C[0]; DAT_B8 = piVar1; iVar2 = piVar1.DAT_00[0] == param1 ? 1 : 0; DAT_C0 = iVar2; DAT_C4 = (iVar2 == 0 ? 1 : 0) << 28; }
public static void ImportRSEG(MenuCommand menuCommand) { string file = EditorUtility.OpenFilePanel("Open rseg file to load asset", previousOpen, ""); previousOpen = Path.GetDirectoryName(file); string name = Path.GetFileNameWithoutExtension(file); int index = (byte)name[name.Length - 1] - 0x30; RSEG_DB rseg = menuCommand.context as RSEG_DB; while (true) { if (!rseg.LoadDB(file)) { break; } index++; file = previousOpen + "\\RSEG" + index.ToString().PadLeft(4, '0'); GameObject obj = new GameObject("RSEG" + index.ToString().PadLeft(2, '0')); rseg = obj.AddComponent <RSEG_DB>(); } }
public int DAT_94; //0x94 //FUN_24CC (HARBOR.DLL) public override uint UpdateW(int arg1, int arg2) { sbyte sVar1; VigObject oVar2; int iVar3; RSEG_DB unaff_s3; CraneLarge ppcVar4; int iVar6; RSEG_DB rVar6; long lVar6; VigObject oVar6; ConfigContainer ccVar6; RSEG_DB piVar7; JUNC_DB jVar8; int iVar9; JUNC_DB jVar9; Vector3Int local_50; Vector3Int local_40; Vector3Int local_38; Vector3Int local_30; switch (arg1) { case 0: break; case 1: rVar6 = LevelManager.instance.FUN_518DC(screen, id - 100); DAT_88 = rVar6; DAT_90 = 1; iVar9 = rVar6.FUN_51334(screen); DAT_94 = iVar9 << 16; DAT_8C = 6103; flags |= 0x88; return(0); case 2: iVar6 = 120; if (id == 117) { iVar6 = 121; } ppcVar4 = (CraneLarge)GameManager.instance.FUN_318D0(iVar6); if (ppcVar4.GetType().IsSubclassOf(typeof(VigObject))) { ppcVar4.UpdateW(21, null); } FUN_30B78(); return(0); case 4: iVar6 = 120; if (id == 117) { iVar6 = 121; } ppcVar4 = (CraneLarge)GameManager.instance.FUN_318D0(iVar6); if (!ppcVar4.GetType().IsSubclassOf(typeof(VigObject))) { return(0); } ppcVar4.UpdateW(21, null); return(0); default: return(0); case 8: FUN_32B90((uint)arg2); return(0); case 9: if (arg2 != 0) { GameManager.instance.FUN_309A0(this); return(0); } return(0); } switch (((byte)tags - 1) * 0x1000000 >> 24) { case 0: case 8: iVar9 = DAT_8C + 33; goto LAB_261C; case 1: case 4: if (DAT_84 == null) { goto case 12; } if (DAT_84.tags == 0) { goto case 5; } if (DAT_90 == 0) { iVar9 = DAT_94; } else { iVar9 = 0x10000000 - DAT_94; } if (iVar9 < 0) { iVar9 += 0xffff; } iVar9 = (iVar9 >> 16) * 4577; if (iVar9 < 0) { iVar9 += 4095; } goto LAB_2694; case 2: case 5: if (DAT_84 == null || DAT_84.tags == 0) { goto case 12; } break; case 6: case 7: if (DAT_90 == 0) { iVar9 = DAT_94; } else { iVar9 = 0x10000000 - DAT_94; } if (iVar9 < 0) { iVar9 += 0xffff; } iVar9 = (iVar9 >> 16) * 4577; if (iVar9 < 0) { iVar9 += 4095; } LAB_2694: iVar3 = 305; if (305 < iVar9 >> 12) { iVar3 = iVar9 >> 12; } DAT_8C = iVar3; break; case 11: iVar9 = DAT_8C + 3; goto LAB_261C; case 12: iVar9 = DAT_8C + 33; LAB_261C: iVar3 = 6103; if (iVar9 < 6103) { iVar3 = iVar9; } DAT_8C = iVar3; break; } iVar9 = DAT_94; iVar6 = vTransform.position.y; if (iVar9 < 0) { iVar9 += 0xffff; } DAT_88.FUN_285E4(iVar9 >> 16, ref vTransform.position, out local_50); vTransform.position.y = iVar6; local_38 = new Vector3Int(); iVar6 = FUN_2CFBC(vTransform.position, ref local_38); vTransform.position.y = iVar6; if (DAT_90 == 0) { local_50.x = -local_50.x; local_50.z = -local_50.z; } local_50.y = -(local_50.x * local_38.x + local_50.z * local_38.z) / local_38.y; lVar6 = Utilities.VectorNormal2(local_50, out local_30); iVar9 = (int)Utilities.SquareRoot(lVar6); if (DAT_90 == 0) { iVar3 = DAT_8C * -0x10000; } else { iVar3 = DAT_8C << 16; } DAT_94 += iVar3 / iVar9; local_40 = Utilities.FUN_2A1E0(local_38, local_30); vTransform.rotation.V00 = (short)-local_40.x; vTransform.rotation.V10 = (short)-local_40.y; vTransform.rotation.V20 = (short)-local_40.z; vTransform.rotation.V01 = (short)-local_38.x; vTransform.rotation.V11 = (short)-local_38.y; vTransform.rotation.V22 = (short)-local_38.z; vTransform.rotation.V02 = (short)local_30.x; vTransform.rotation.V12 = (short)local_30.y; vTransform.rotation.V22 = (short)local_30.z; if ((uint)DAT_94 < 0x10000001) { return(0); } piVar7 = DAT_88; jVar8 = piVar7.DAT_00[DAT_90]; iVar3 = 0; unaff_s3 = null; //not in the original code if (jVar8.DAT_11 != 0) { do { unaff_s3 = jVar8.DAT_1C[iVar3]; if (unaff_s3 != piVar7 && unaff_s3.DAT_08 == piVar7.DAT_08) { break; } iVar3++; } while (iVar3 < jVar8.DAT_11); } DAT_88 = unaff_s3; jVar9 = unaff_s3.DAT_00[0]; DAT_90 = jVar9 == jVar8 ? 1 : 0; DAT_94 = ((jVar9 == jVar8 ? 1 : 0) == 0 ? 1 : 0) << 28; if ((jVar8.DAT_10 & 0x40) == 0) { return(0); } sVar1 = (sbyte)jVar8.DAT_12; tags = sVar1; switch (sVar1) { case 1: FUN_30BA8(); GameManager.instance.FUN_30CB0(this, 600); iVar6 = 120; if (id == 117) { iVar6 = 121; } ppcVar4 = (CraneLarge)GameManager.instance.FUN_318D0(iVar6); if (ppcVar4.GetType().IsSubclassOf(typeof(VigObject))) { ppcVar4.UpdateW(21, this); } break; case 2: iVar6 = 49; goto LAB_29EC; case 3: case 6: if (DAT_84 != null) { if (DAT_84.tags != 0) { DAT_8C = 0; return(0); } return(0); } break; case 4: if (DAT_80 == null) { ccVar6 = FUN_2C5F4(0x8000); oVar2 = Barge.FUN_1F64(); DAT_80 = oVar2; Utilities.FUN_2CB04(this, ccVar6, oVar2); Utilities.ParentChildren(this, this); return(0); } return(0); case 5: iVar6 = 50; LAB_29EC: oVar6 = GameManager.instance.FUN_318D0(iVar6); DAT_84 = oVar6; break; case 9: FUN_30BA8(); GameManager.instance.FUN_30CB0(this, 180); return(0); case 10: if (DAT_80 == null) { return(0); } oVar6 = DAT_80.FUN_2CCBC(); GameManager.instance.FUN_307CC(oVar6); DAT_80 = null; break; } return(0); }
public int FUN_3AD0() { int iVar1; long lVar1; RSEG_DB piVar2; int iVar3; TrainEngine oVar3; JUNC_DB jVar3; TrainEngine piVar4; RSEG_DB rVar4; RSEG_DB piVar5; int iVar6; JUNC_DB jVar6; int iVar7; if (DAT_B8 == null) { if (vCollider != null) { vCollider.reader.Seek(4, SeekOrigin.Current); FUN_2B4F8(vCollider.reader); vCollider.reader.Seek(-4, SeekOrigin.Current); return(0); } GameManager.instance.FUN_309A0(this); return(0); } lVar1 = FUN_3964(); oVar3 = DAT_A8; if (oVar3 == null) { if (tags < 2) { iVar3 = DAT_BC - 14; DAT_BC = iVar3; if (iVar3 < 0) { piVar4 = this; do { piVar4.tags = 0; piVar4.FUN_30BA8(); GameManager.instance.FUN_1DE78(DAT_18); DAT_18 = 0; piVar4 = piVar4.DAT_AC; } while (piVar4 != null); } } iVar3 = (int)Utilities.SquareRoot(lVar1); iVar6 = DAT_C4; if (DAT_C0 != 0) { iVar7 = DAT_BC << 16; goto LAB_3CBC; } } else { if ((oVar3.flags & 2) == 0) { iVar6 = oVar3.vTransform.rotation.V02 * oVar3.DAT_B4; if (iVar6 < 0) { iVar6 += 4095; } iVar7 = oVar3.vTransform.rotation.V22 * oVar3.DAT_B4; if (iVar7 < 0) { iVar7 += 4095; } iVar3 = vTransform.rotation.V02 * ((oVar3.vTransform.position.x + (iVar6 >> 12)) - vTransform.position.x) + vTransform.rotation.V22 * ((oVar3.vTransform.position.z + (iVar7 >> 12)) - vTransform.position.z) + DAT_B0 * -0x1000; iVar7 = 0; if (0 < iVar3) { iVar7 = iVar3; } iVar3 = iVar7; if (iVar7 < 0) { iVar3 = iVar7 + 4095; } DAT_BC = iVar3 >> 12; iVar3 = (int)Utilities.SquareRoot(lVar1); iVar6 = DAT_C4; if (DAT_C0 == 0) { iVar7 *= -16; } else { iVar7 <<= 4; } goto LAB_3CBC; } iVar3 = (int)Utilities.SquareRoot(lVar1); iVar6 = DAT_C4; if (DAT_C0 != 0) { iVar7 = DAT_BC << 16; goto LAB_3CBC; } } iVar7 = DAT_BC * -0x10000; LAB_3CBC: DAT_C4 = iVar6 + iVar7 / iVar3; oVar3 = DAT_AC; if (oVar3 != null && (oVar3.flags & 2) != 0) { iVar6 = oVar3.DAT_C8 + DAT_BC; oVar3.DAT_C8 = iVar6; if (oVar3.DAT_B0 - DAT_B4 < iVar6) { oVar3.flags &= 0xffffffdd; oVar3.FUN_30B78(); } } iVar1 = 0; if (0x10000000 < (uint)DAT_C4) { piVar2 = DAT_B8; jVar3 = piVar2.DAT_00[DAT_C0]; rVar4 = null; if (jVar3.DAT_11 == 1) { FUN_30BA8(); DAT_C8 = 0; flags |= 0x22; if (DAT_AC == null) { FUN_3A00(); } iVar1 = -1; } else { if (jVar3.DAT_11 == 2) { rVar4 = jVar3.DAT_1C[0]; if (rVar4 == piVar2) { rVar4 = jVar3.DAT_1C[1]; } if (rVar4.DAT_08 == 0xffff) { FUN_38FC(); iVar3 = vTransform.rotation.V02 * DAT_BC; rVar4 = null; flags &= 0xfffffeff; if (iVar3 < 0) { iVar3 += 31; } physics1.X = iVar3 >> 5; physics1.Y = 0; iVar3 = vTransform.rotation.V22 * DAT_BC; if (iVar3 < 0) { iVar3 += 31; } physics1.Z = iVar3 >> 5; GameManager.instance.FUN_30CB0(this, 300); } else { DAT_C0 = rVar4.DAT_00[0] == jVar3 ? 1 : 0; } } else { iVar7 = 0; jVar6 = jVar3; piVar5 = rVar4; if (jVar3.DAT_11 != 0) { do { rVar4 = jVar3.DAT_1C[iVar7]; if (rVar4 != piVar2 && DAT_C0 == (rVar4.DAT_00[0] == jVar3 ? 1 : 0)) { piVar5 = rVar4; if ((rVar4.DAT_08 != piVar2.DAT_08 ? 1 : 0) == SteelMil.instance.DAT_4618[jVar3.DAT_12]) { break; } } rVar4 = piVar5; iVar7++; piVar5 = rVar4; } while (iVar7 < jVar3.DAT_11); } if (DAT_A8 != null && DAT_A8.DAT_B8 != rVar4) { FUN_38FC(); } } DAT_B8 = rVar4; DAT_C4 = (DAT_C0 == 0 ? 1 : 0) << 28; if (rVar4 != null) { if (tags != 2) { return(1); } if (rVar4.DAT_00[DAT_C0].DAT_11 != 1) { return(1); } if (rVar4.DAT_00[DAT_C0].DAT_12 != 0) { return(1); } //FUN_326B0 tags = 1; } iVar1 = 1; } } return(iVar1); }
public RSEG_DB DAT_80_2; //0x80 //FUN_2814 (NUCLEAR.DLL) public override uint UpdateW(int arg1, int arg2) { long lVar2; RSEG_DB rVar2; int iVar3; uint uVar3; ushort uVar4; int iVar5; VigObject oVar5; RSEG_DB piVar6; VigObject ppcVar7; int iVar9; VigObject oVar9; JUNC_DB jVar9; switch (arg1) { case 0: iVar9 = physics1.Z; if (iVar9 < 0) { iVar9 += 0xffff; } lVar2 = DAT_80_2.FUN_5105C(iVar9 >> 16, physics1.Y != 0, ref vTransform); iVar9 = (int)Utilities.SquareRoot(lVar2); if (physics1.Y == 0) { iVar5 = physics1.W * -0x10000; } else { iVar5 = physics1.W << 16; } iVar3 = physics1.Z + iVar5 / iVar9; physics1.Z = iVar3; if ((uint)iVar3 < 0x10000001) { return(0); } jVar9 = DAT_80_2.DAT_00[physics1.Y]; if (jVar9.DAT_11 != 1) { piVar6 = jVar9.DAT_1C[jVar9.DAT_1C[0] == DAT_80_2 ? 1 : 0]; DAT_80_2 = piVar6; iVar3 = piVar6.DAT_00[0] == jVar9 ? 1 : 0; physics1.Y = iVar3; physics1.Z = -(iVar3 == 0 ? 1 : 0) & 0x10000000; return(0); } goto LAB_2BD8; case 2: uVar3 = GameManager.FUN_2AC5C(); oVar9 = GameManager.instance.FUN_318D0((int)(uVar3 & 1) + 49); screen = oVar9.screen; flags &= 0xffffffdd; Dictionary <int, Type> dict = new Dictionary <int, Type>(); dict.Add(921, typeof(ForkLift2)); dict.Add(919, typeof(ForkLift2)); dict.Add(913, typeof(ForkLift2)); FUN_2C124(25, dict); Utilities.ParentChildren(this, this); FUN_30B78(); goto case 1; case 1: rVar2 = LevelManager.instance.FUN_518DC(screen, 16); DAT_80_2 = rVar2; iVar9 = rVar2.FUN_51334(screen); ppcVar7 = child2; physics1.Z = iVar9 << 16; physics1.Y = 1; physics1.W = 4577; maxHalfHealth = 50; maxFullHealth = 50; flags |= 0x188; while (ppcVar7 != null) { if (3 < ppcVar7.id) { ((ForkLift2)ppcVar7).state = _FORKLIFT2_TYPE.Type1; } ppcVar7 = ppcVar7.child; } break; default: break; case 8: uVar4 = maxHalfHealth; oVar9 = null; if (uVar4 < arg2) { oVar5 = child2; maxHalfHealth = maxFullHealth; while (oVar5 != null) { if (3 < oVar5.id && (oVar9 == null || oVar5.id < oVar9.id)) { oVar9 = oVar5; } oVar5 = oVar5.child; } if (oVar9 != null) { oVar9.FUN_2CD04(); oVar9.FUN_305FC(); oVar9.FUN_4DC94(); return(0); } FUN_4DC94(); return(0); } maxHalfHealth = (ushort)(uVar4 - arg2); break; case 9: if (arg2 == 0) { return(0); } LAB_2BD8: flags |= 0x22; FUN_30BA8(); GameManager.instance.FUN_30CB0(this, 300); return(0); } return(0); }
public int DAT_8C; //0x8C //FUN_1FA0 (HARBOR.DLL) public override uint UpdateW(int arg1, int arg2) { sbyte sVar1; sbyte sVar2; int iVar3; JUNC_DB jVar3; int iVar4; RSEG_DB piVar5; VigObject oVar6; DrawBridge ppcVar7; uint uVar8; long lVar8; RSEG_DB rVar8; ConfigContainer ccVar8; CraneLarge ppcVar8; int iVar9; JUNC_DB jVar9; Vector3Int local_38; Vector3Int local_28; switch (arg1) { case 0: sVar2 = tags; if (sVar2 == 2) { iVar3 = DAT_84_2 + 19; iVar9 = 4577; if (iVar3 < 4577) { iVar9 = iVar3; } DAT_84_2 = iVar9; } else { if (sVar2 < 3) { if (sVar2 == 1) { if (DAT_88 == 0) { iVar9 = DAT_8C; } else { iVar9 = 0x10000000 - DAT_8C; } if (iVar9 < 0) { iVar9 += 0xffff; } iVar9 = (iVar9 >> 16) * 4577; if (iVar9 < 0) { iVar9 += 0xffff; } iVar3 = 305; if (305 < iVar9 >> 12) { iVar3 = iVar9 >> 12; } DAT_84_2 = iVar3; } } else { if (sVar2 == 4) { if (DAT_88 == 0) { iVar9 = DAT_8C; } else { iVar9 = 0x10000000 - DAT_8C; } if (iVar9 < 0) { iVar9 += 0xffff; } iVar9 = (iVar9 >> 16) * 4577; if (iVar9 < 0) { iVar9 += 0xffff; } iVar3 = 305; if (305 < iVar9 >> 12) { iVar3 = iVar9 >> 12; } DAT_84_2 = iVar3; } else if (sVar2 == 5) { iVar3 = DAT_84_2 + 19; iVar9 = 4577; if (iVar3 < 4577) { iVar9 = iVar3; } DAT_84_2 = iVar9; } } } iVar9 = DAT_8C; if (iVar9 < 0) { iVar9 += 0xffff; } DAT_80_2.FUN_285E4(iVar9 >> 16, ref vTransform.position, out local_38); vTransform.position.y = GameManager.instance.DAT_DB0; if (DAT_88 == 0) { local_38.x = -local_38.x; local_38.z = -local_38.z; } lVar8 = Utilities.VectorNormal2(local_38, out local_28); vTransform.rotation.V22 = (short)local_28.z; vTransform.rotation.V00 = (short)local_28.z; vTransform.rotation.V02 = (short)local_28.x; vTransform.rotation.V20 = (short)-local_28.x; iVar9 = (int)Utilities.SquareRoot(lVar8); if (DAT_88 == 0) { iVar3 = DAT_84_2 * -0x10000; } else { iVar3 = DAT_84_2 << 16; } iVar4 = DAT_8C + iVar3 / iVar9; DAT_8C = iVar4; if ((uint)iVar4 < 0x10000001) { goto LAB_2244; } jVar9 = DAT_80_2.DAT_00[DAT_88]; piVar5 = jVar9.DAT_1C[0]; if (piVar5 == DAT_80_2) { piVar5 = jVar9.DAT_1C[1]; } DAT_80_2 = piVar5; jVar3 = piVar5.DAT_00[0]; DAT_88 = jVar3 == jVar9 ? 1 : 0; DAT_8C = -((jVar3 == jVar9 ? 1 : 0) == 0 ? 1 : 0) & 0x10000000; if ((jVar9.DAT_10 & 0x40) == 0) { goto LAB_2244; } sVar1 = (sbyte)jVar9.DAT_12; tags = sVar1; switch (sVar1) { case 2: uVar8 = 120; goto LAB_2284; case 3: ppcVar7 = (DrawBridge)GameManager.instance.FUN_318D0(50); if (ppcVar7.GetType().IsSubclassOf(typeof(VigObject))) { ppcVar7.UpdateW(10, 0); } break; case 5: uVar8 = 121; LAB_2284: ppcVar8 = (CraneLarge)GameManager.instance.FUN_318D0((int)uVar8); if (ppcVar8.GetType().IsSubclassOf(typeof(VigObject))) { ppcVar8.UpdateW(20, this); } FUN_30BA8(); break; } LAB_2244: uVar8 = 0; if (arg2 != 0) { uVar8 = GameManager.instance.FUN_1E7A8(vTransform.position); GameManager.instance.FUN_1E2C8(DAT_18, uVar8); uVar8 = 0; } break; case 1: rVar8 = LevelManager.instance.FUN_518DC(screen, 16); DAT_80_2 = rVar8; DAT_88 = 1; iVar9 = rVar8.FUN_51334(screen); DAT_8C = iVar9 << 16; DAT_84_2 = 6103; flags |= 0x180; ccVar8 = FUN_2C5F4(0x8000); oVar6 = FUN_1F64(); Utilities.FUN_2CA94(this, ccVar8, oVar6); ccVar8 = FUN_2C5F4(0x8002); oVar6 = FUN_1F64(); Utilities.FUN_2CA94(this, ccVar8, oVar6); Utilities.ParentChildren(this, this); sVar2 = (sbyte)GameManager.instance.FUN_1DD9C(); DAT_18 = sVar2; GameManager.instance.FUN_1E098(sVar2, vData.sndList, 3, 0, true); uVar8 = 0; break; case 2: uVar8 = 121; if (tags == 2) { ppcVar7 = (DrawBridge)GameManager.instance.FUN_318D0(49); if (ppcVar7.GetType().IsSubclassOf(typeof(VigObject))) { ppcVar7.UpdateW(10, 0); } uVar8 = 120; } ppcVar8 = (CraneLarge)GameManager.instance.FUN_318D0((int)uVar8); if (ppcVar8.GetType().IsSubclassOf(typeof(VigObject))) { ppcVar8.UpdateW(20, null); } FUN_30B78(); uVar8 = 0; break; default: uVar8 = 0; break; case 4: GameManager.instance.FUN_1DE78(DAT_18); ppcVar8 = (CraneLarge)GameManager.instance.FUN_318D0(120); if (ppcVar8.GetType().IsSubclassOf(typeof(VigObject))) { ppcVar8.UpdateW(20, null); } ppcVar8 = (CraneLarge)GameManager.instance.FUN_318D0(121); if (ppcVar8.GetType().IsSubclassOf(typeof(VigObject))) { ppcVar8.UpdateW(20, null); } goto default; case 8: FUN_32B90((uint)arg2); uVar8 = 0; break; case 9: uVar8 = 0; if (arg2 != 0) { GameManager.instance.FUN_309A0(this); uVar8 = 0xffffffff; } break; } return(uVar8); }