internal static void GenerateSpriteSheet() { GadgetCoreAPI.spriteSheetSize = MathUtils.SmallestPerfectSquare(GadgetCoreAPI.spriteSheetSprites.Count + 16); int spritesOnAxis = (int)Mathf.Sqrt(GadgetCoreAPI.spriteSheetSize); int spritesOnFirstFourRows = spritesOnAxis - 4; int spriteSheetDimensions = spritesOnAxis * 32; GadgetCoreAPI.spriteSheet = new Texture2D(spriteSheetDimensions, spriteSheetDimensions, InstanceTracker.GameScript.TileManager.GetComponent <ChunkWorld>().Texture.format, false, false) { filterMode = FilterMode.Point }; for (int i = 0; i < GadgetCoreAPI.spriteSheetSprites.Count; i++) { Vector2 coords; if (i < spritesOnFirstFourRows * 4) { coords = new Vector2(4 + (i % spritesOnFirstFourRows), i / spritesOnFirstFourRows); } else { coords = new Vector2((i - (spritesOnFirstFourRows * 4)) % spritesOnAxis, 4 + ((i - (spritesOnFirstFourRows * 4)) / spritesOnAxis)); } GadgetCoreAPI.spriteSheetSprites[i].coords = coords; GadgetUtils.SafeCopyTexture(GadgetCoreAPI.spriteSheetSprites[i].tex, 0, 0, 0, 0, 32, 32, GadgetCoreAPI.spriteSheet, 0, 0, (int)coords.x * 32, (int)coords.y * 32); } }
internal void RPCCreateMarketStand(int itemID, Vector3 pos, int cost, bool isBuild, bool isCredits, bool isTrophies, NetworkViewID viewID) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { StartCoroutine(GadgetUtils.WaitAndInvoke(typeof(RPCHooks).GetMethod("RPCCreateMarketStand", BindingFlags.NonPublic | BindingFlags.Instance), GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, this, itemID, pos, cost, isBuild, isCredits, isTrophies, viewID)); return; } ItemInfo item = ItemRegistry.Singleton[ItemRegistry.Singleton.ConvertIDToLocal(itemID)]; GameObject shopStand = Instantiate(SceneInjector.BuildStand, SceneInjector.BuildStand.transform.parent); NetworkView view = shopStand.GetComponent <NetworkView>(); if (view == null) { view = shopStand.AddComponent <NetworkView>(); } view.viewID = viewID; shopStand.transform.localPosition = new Vector3(pos.x, pos.y, SceneInjector.BuildStand.transform.position.z); shopStand.name = isBuild ? "buildStand" : "kylockeStand"; KylockeStand standScript = shopStand.GetComponent <KylockeStand>(); standScript.isTrophies = isTrophies; standScript.isCredits = isCredits; standScript.isBuild = isBuild; standScript.itemID = item.ID; standScript.cost = cost; standScript.currency.GetComponent <MeshRenderer>().material = isBuild ? isCredits ? isTrophies ? GadgetCoreAPI.GetItemMaterial(59) : GadgetCoreAPI.GetItemMaterial(52) : GadgetCoreAPI.GetItemMaterial(57) : GadgetCoreAPI.GetItemMaterial(51); standScript.icon.GetComponent <MeshRenderer>().material = item.Mat; standScript.txtName[0].text = item.GetName(); standScript.txtName[1].text = standScript.txtName[0].text; standScript.txtCost[0].text = string.Empty + standScript.cost; standScript.txtCost[1].text = standScript.txtCost[0].text; }
public static bool Prefix(NetworkView __instance, string name, RPCMode mode, ref object[] args) { if (Assembly.GetCallingAssembly().Equals(typeof(GameScript).Assembly)) { switch (name) { case "Set": if (args.Length == 3) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(true); } GadgetNetwork.ConvertIDToHost(PlanetRegistry.Singleton, ref args[0]); } } else if (args.Length == 1) { if (args[0] is int[] arr && arr.Length == 2) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(true); } ItemStandScript itemStandScript = __instance.GetComponent <ItemStandScript>(); if (itemStandScript == null || !itemStandScript.isChipStand) { args[0] = new int[] { GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, arr[0]), arr[1], }; } else { args[0] = new int[] { GadgetNetwork.ConvertIDToHost(ChipRegistry.Singleton, arr[0]), arr[1], }; } } else if (args[0] is Package2 pack2) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(true); } GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton /* ProjectileRegistry */, ref pack2.id); } } break;
public static bool Prefix(Projectile __instance, int dmg, ref int id, Vector3 dir) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { __instance.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, dmg, id, dir)); return(false); } GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton /* ProjectileRegistry */, ref id); return(true); }
public static bool Prefix(SpawnerScript __instance, ref int[] s) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { __instance.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, s)); return(false); } GadgetNetwork.ConvertIDToLocal(PlanetRegistry.Singleton, ref s[0]); return(true); }
public static bool Prefix(ItemStandScript __instance, ref int[] p) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { __instance.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, p)); return(false); } GadgetNetwork.ConvertIDToLocal(__instance.isChipStand ? (Registry)ChipRegistry.Singleton : ItemRegistry.Singleton, ref p[0]); return(true); }
public static bool Prefix(PortalAppearance __instance, ref int b, int h, int num) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { __instance.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, b, h, num)); return(false); } GadgetNetwork.ConvertIDToLocal(PlanetRegistry.Singleton, ref b); return(true); }
public static bool Prefix(Chunk __instance, ref int a) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { __instance.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, a)); return(false); } GadgetNetwork.ConvertIDToLocal(null /* WorldRegistry */, ref a); return(true); }
public static bool Prefix(ItemScript __instance, ref int id) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { __instance.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, id)); return(false); } GadgetNetwork.ConvertIDToLocal(ChipRegistry.GetSingleton(), ref id); return(true); }
public static bool Prefix(DroidManager __instance, ref int[] d) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { __instance.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, d)); return(false); } GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref d[0]); GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref d[1]); GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref d[2]); return(true); }
public static void Prefix(GameScript __instance) { InstanceTracker.GameScript = __instance; GadgetCore.GenerateSpriteSheet(); GadgetUtils.SafeCopyTexture(__instance.TileManager.GetComponent <ChunkWorld>().Texture, 0, 0, 0, 0, 128, 128, GadgetCoreAPI.spriteSheet, 0, 0, 0, 0); __instance.TileManager.GetComponent <ChunkWorld>().Texture = GadgetCoreAPI.spriteSheet; __instance.WallManager.GetComponent <ChunkWorld>().Texture = GadgetCoreAPI.spriteSheet; foreach (GadgetModInfo mod in GadgetMods.ListAllModInfos()) { __instance.gameObject.AddComponent <GadgetModHookScript>().Mod = mod; } }
public static bool Prefix(ChunkWorld __instance, ref int[] gg) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { __instance.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, gg)); return(false); } for (int i = 0; i < gg.Length; i++) { GadgetNetwork.ConvertIDToLocal(TileRegistry.Singleton, ref gg[i]); } return(true); }
public static bool Prefix(GameScript __instance, ref int[] st, Vector3 pos) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { __instance.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, st, pos)); return(false); } GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref st[0]); GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref st[5]); GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref st[6]); GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref st[7]); return(true); }
public static bool Prefix(SpawnerScript __instance, ref int[] s) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { __instance.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, s)); return(false); } GadgetNetwork.ConvertIDToLocal(null /* WorldRegistry */, ref s[0]); for (int i = 1; i < s.Length; i++) { GadgetNetwork.ConvertIDToLocal(TileRegistry.GetSingleton(), ref s[i]); } return(true); }
public static bool Prefix(PlayerAppearance __instance, ref int[] ei, int a, bool dead) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { __instance.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, ei, a, dead)); return(false); } GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref ei[0]); GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref ei[1]); GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref ei[2]); GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref ei[3]); GadgetNetwork.ConvertIDToLocal(null /* RaceRegistry */, ref ei[4]); GadgetNetwork.ConvertIDToLocal(null /* UniformRegistry */, ref ei[6]); GadgetNetwork.ConvertIDToLocal(null /* AugmentRegistry */, ref ei[7]); return(true); }
public static bool Prefix(NetworkView __instance, string name, RPCMode mode, ref object[] args) { if (Assembly.GetCallingAssembly().Equals(typeof(GameScript).Assembly)) { switch (name) { case "Set": if (args.Length == 3) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(PlanetRegistry.Singleton, ref args[0]); } } else if (args.Length == 1) { if (args[0] is int[] && (args[0] as int[]).Length == 2) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } ItemStandScript itemStandScript = __instance.GetComponent <ItemStandScript>(); if (itemStandScript == null || !itemStandScript.isChipStand) { GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[0]); } else { GadgetNetwork.ConvertIDToHost(ChipRegistry.Singleton, ref (args[0] as int[])[0]); } } else if (args[0] is Package2) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton /* ProjectileRegistry */, ref (args[0] as Package2).id); } } break; case "UA": if (args.Length == 3) { if (args[0] is int[] && (args[0] as int[]).Length == 8) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[0]); GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[1]); GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[2]); GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[3]); GadgetNetwork.ConvertIDToHost(null /* RaceRegistry */, ref (args[0] as int[])[4]); GadgetNetwork.ConvertIDToHost(null /* UniformRegistry */, ref (args[0] as int[])[6]); GadgetNetwork.ConvertIDToHost(null /* AugmentRegistry */, ref (args[0] as int[])[7]); } } else if (args.Length == 1) { if (args[0] is int[] && (args[0] as int[]).Length == 3) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[0]); GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[1]); GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[2]); } } break; case "ShootProjectile": if (args.Length == 3) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton /* ProjectileRegistry */, ref args[0]); } } break; case "CreateWorld": if (args.Length == 1) { if (args[0] is int[] && (args[0] as int[]).Length > 1) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(PlanetRegistry.Singleton, ref (args[0] as int[])[0]); for (int i = 1; i < (args[0] as int[]).Length; i++) { GadgetNetwork.ConvertIDToHost(TileRegistry.Singleton, ref (args[0] as int[])[i]); } } } break; case "CreateTown": if (args.Length == 1) { if (args[0] is int[] && (args[0] as int[]).Length == 2) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(PlanetRegistry.Singleton, ref (args[0] as int[])[0]); } } break; case "SpawnProjectile": if (args.Length == 4) { if (args[1] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton /* ProjectileRegistry */, ref args[1]); } } break; case "SetNetworked": if (args.Length == 3) { if (args[1] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton /* ProjectileRegistry */, ref args[1]); } } break; case "SetName": if (args.Length == 1) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(PlanetRegistry.Singleton, ref args[0]); } } break; case "Staff": if (args.Length == 3) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton /* ProjectileRegistry */, ref args[0]); } } break; case "ShootSpecial": if (args.Length == 3) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton /* ProjectileRegistry */, ref args[0]); } } break; case "ShootProjectile2": if (args.Length == 4) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton /* ProjectileRegistry */, ref args[0]); } } break; case "NetworkedProjectile": if (args.Length == 4) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton /* ProjectileRegistry */, ref args[0]); } } break; case "Init": if (args.Length == 1) { if (args[0] is int[] && (args[0] as int[]).Length >= 11) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[0]); GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[5]); GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[6]); GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[7]); } } break; case "Chip": if (args.Length == 1) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ChipRegistry.Singleton, ref args[0]); } } break; case "SpawnItem": if (args.Length == 2) { if (args[0] is int[] && (args[0] as int[]).Length >= 11) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[0]); GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[5]); GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[6]); GadgetNetwork.ConvertIDToHost(ItemRegistry.Singleton, ref (args[0] as int[])[7]); } } break; case "ChangePortal": if (args.Length == 2) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(PlanetRegistry.Singleton, ref args[0]); } } break; case "ChangePortal2": if (args.Length == 2) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(PlanetRegistry.Singleton, ref args[0]); } } break; case "RefreshWall": if (args.Length == 1) { if (args[0] is int[] arr) { for (int i = 0; i < arr.Length; i++) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(TileRegistry.Singleton, ref arr[i]); } } } break; case "RefreshShip": if (args.Length == 2) { if (args[0] is int[] arr1 && args[1] is int[] arr2) { for (int i = 0; i < arr1.Length; i++) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(TileRegistry.Singleton, ref arr1[i]); } for (int i = 0; i < (arr2 as int[]).Length; i++) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(TileRegistry.Singleton, ref arr2[i]); } } } break; case "SetMaterial": if (args.Length == 1) { if (args[0] is int) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { InstanceTracker.GameScript.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, name, mode, args)); return(false); } GadgetNetwork.ConvertIDToHost(PlanetRegistry.Singleton, ref args[0]); } } break; } } return(true); }