Esempio n. 1
0
 public RLTile( TileRegistry reg, Color32 color, char ch, bool isSolid = false )
 {
     color_ = color;
     ch_ = ch;
     isSolid_ = isSolid;
     reg.Add(this);
 }
 public static bool Prefix(ChunkWorld __instance, int[] msg, ref GameObject[,] ___gridSpecialObj)
 {
     if (TileRegistry.GetSingleton().HasEntry(msg[2]))
     {
         TileInfo tile = TileRegistry.GetSingleton().GetEntry(msg[2]);
         int      num  = msg[0];
         int      num2 = msg[1];
         int      num3 = (num + 62) / 4;
         int      num4 = (num2 + 62) / 4;
         int      num5 = msg[2];
         __instance.gridSpecial[num3, num4] = num5;
         if (tile.Type != TileType.INTERACTIVE)
         {
             ___gridSpecialObj[num3, num4] = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("prop/" + num5), new Vector3(num, num2, 0.9f), Quaternion.identity);
         }
         else
         {
             ___gridSpecialObj[num3, num4] = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("npc/npc" + num5), new Vector3(num, num2, 0.9f), Quaternion.identity);
         }
         ___gridSpecialObj[num3, num4].transform.parent = __instance.transform;
         MultiplayerSupport.Invoke(__instance, new object[] { });
         return(false);
     }
     return(true);
 }
Esempio n. 3
0
        public static IEnumerable <CodeInstruction> Transpiler(IEnumerable <CodeInstruction> instructions)
        {
            CodeInstruction[]      codes    = instructions.ToArray();
            List <CodeInstruction> newCodes = new List <CodeInstruction>();

            for (int i = 0; i < 11; i++)
            {
                newCodes.Add(codes[i]);
            }
            for (int i = 11; i < codes.Length; i++)
            {
                newCodes.Add(codes[i]);
                if (codes[i - 11] != null && codes[i - 11].opcode == OpCodes.Ldloc_S &&
                    codes[i - 10] != null && codes[i - 10].opcode == OpCodes.Ldc_I4_S &&
                    codes[i - 9] != null && codes[i - 9].opcode == OpCodes.Bge &&
                    codes[i - 8] != null && codes[i - 8].opcode == OpCodes.Ldloc_S &&
                    codes[i - 7] != null && codes[i - 7].opcode == OpCodes.Ldc_I4_0 &&
                    codes[i - 6] != null && codes[i - 6].opcode == OpCodes.Blt &&
                    codes[i - 5] != null && codes[i - 5].opcode == OpCodes.Ldloc_S &&
                    codes[i - 4] != null && codes[i - 4].opcode == OpCodes.Ldc_I4_S &&
                    codes[i - 3] != null && codes[i - 3].opcode == OpCodes.Bge &&
                    codes[i - 2] != null && codes[i - 2].opcode == OpCodes.Ldloc_S &&
                    codes[i - 1] != null && codes[i - 1].opcode == OpCodes.Ldc_I4_0 &&
                    codes[i] != null && codes[i].opcode == OpCodes.Blt)
                {
                    if (codes.Length > i + 1 && codes[i + 1].opcode == OpCodes.Ldsfld)
                    {
                        newCodes.Add(new CodeInstruction(OpCodes.Ldsfld, codes[i + 1].operand));
                        newCodes.Add(new CodeInstruction(OpCodes.Ldc_I4, TileRegistry.GetSingleton().GetIDStart()));
                        newCodes.Add(new CodeInstruction(OpCodes.Bge, codes[i].operand));
                    }
                }
            }
            return(newCodes);
        }
Esempio n. 4
0
    private void Awake()
    {
        this.registeredStats = new List <RegisteredStat>();

        // General Stats:
        this.leversFlipped      = this.registerStat(new StatisticInt("Levers Flipped", "leversFlipped"), EnumStatisticCategory.GENERAL);
        this.minecartsPlaced    = this.registerStat(new StatisticInt("Minecarts Placed", "minecartsPlaced"), EnumStatisticCategory.GENERAL);
        this.minecartsDestroyed = this.registerStat(new StatisticInt("Minecarts Destroyed", "minecartsDestroyed"), EnumStatisticCategory.GENERAL);

        // Worker Stats:
        this.workersHired = this.registerStat(new StatisticInt("Workers Hired", "workersHired"), EnumStatisticCategory.WORKERS);
        this.workersFired = this.registerStat(new StatisticInt("Workers Fired", "workersFired"), EnumStatisticCategory.WORKERS);

        // Tile Stats:
        TileRegistry reg = Main.instance.tileRegistry;

        for (int i = 0; i < reg.getRegistrySize(); i++)
        {
            CellData cell = reg.getElement(i);
            if (cell != null)
            {
                this.registerStat(new StatisticInt(cell.displayName + " built", cell.name + DOT_TIMES_BUILT), EnumStatisticCategory.TILES);

                if (cell is CellDataMineable)
                {
                    this.registerStat(new StatisticInt(cell.displayName + " mined", cell.name + DOT_TIMES_MINED), EnumStatisticCategory.TILES);
                }

                if (cell.isDestroyable)
                {
                    this.registerStat(new StatisticInt(cell.displayName + " destroyed", cell.name + DOT_TIMES_DESTROYED), EnumStatisticCategory.TILES);
                }
            }
        }
    }
Esempio n. 5
0
 /// <summary>
 /// Adds a sprite to a tilemap at a position, and puts the sprite in a list to animate if it's animated
 /// </summary>
 /// <param name="tilemap"></param>
 /// <param name="pos"></param>
 /// <param name="sprites"></param>
 /// <param name="animated"></param>
 private void AddSprite(Vector2Int pos, String[] sprites, bool animated, bool detail)
 {
     TileRegistry.GetInstance().SetTile(pos, sprites[0], detail);
     if (animated)
     {
         animatedSprites.Add(new AnimatedSprite(pos, sprites, detail));
     }
 }
Esempio n. 6
0
 public static TileRegistry GetInstance()
 {
     if (instance == null)
     {
         instance = new TileRegistry();
     }
     return(instance);
 }
Esempio n. 7
0
 public void DoProgress()
 {
     chopProgress++;
     if (chopProgress == treeToughness)
     {
         Map.GetInstance().SetDetail(treeTile, null);
         TileRegistry.GetInstance().RemoveTree(treeTile);
         isDone = true;
     }
 }
Esempio n. 8
0
 public Walls(TileRegistry reg, Color32 defaultColor)
 {
     plain_ = new RLTile(reg, defaultColor, '█', true);
     doubleVert_ = new RLTile(reg, defaultColor, '║', true);
     doubleHor_ = new RLTile(reg, defaultColor, '═', true);
     doubleTLCorner_ = new RLTile(reg, defaultColor, '╔', true);
     doubleBLCorner_ = new RLTile(reg, defaultColor, '╚', true);
     doubleTRCorner_ = new RLTile(reg, defaultColor, '╗', true);
     doubleBRCorner_ = new RLTile(reg, defaultColor, '╝', true);
 }
        public static bool Prefix(PlayerTrigger __instance, string name, ref int __result)
        {
            int id = TileRegistry.GetIDByPropName(name.Replace("(Clone)", ""));

            if (id >= 0)
            {
                __result = id;
                return(false);
            }
            return(true);
        }
Esempio n. 10
0
        public void TestSetup()
        {
            _eventsFired = EventFlags.None;
            _registry    = new TileRegistry(_service.GraphicsDevice);
            _pool        = new TilePool("pool", _registry, 16, 16);

            Texture2D tex1 = new Texture2D(_service.GraphicsDevice, 16, 16);
            Texture2D tex2 = new Texture2D(_service.GraphicsDevice, 16, 16);

            _tile1 = _pool.GetTile(_pool.AddTile(tex1));
            _tile2 = _pool.GetTile(_pool.AddTile(tex2));
        }
Esempio n. 11
0
 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.GetSingleton(), ref gg[i]);
     }
     return(true);
 }
 public static bool Prefix(PlayerScript __instance, int id, ref IEnumerator __result)
 {
     if (TileRegistry.GetSingleton().HasEntry(id))
     {
         TileInfo tile = TileRegistry.GetSingleton().GetEntry(id);
         IEnumerable <IEnumerator> interactions = tile.Interact();
         if (interactions != null)
         {
             __result = InteractAll(__instance, interactions);
             return(false);
         }
     }
     return(true);
 }
Esempio n. 13
0
 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(PlayerTrigger __instance, int id, ref IEnumerator __result)
 {
     if (TileRegistry.GetSingleton().HasEntry(id))
     {
         TileInfo    tile   = TileRegistry.GetSingleton().GetEntry(id);
         IEnumerator result = tile.Interact();
         if (result != null)
         {
             __result = result;
             return(false);
         }
     }
     return(true);
 }
Esempio n. 15
0
        public static void Register(TileRegistry tileRegistry)
        {
            tileGrass          = new Tile(1).SetTextureName("tiles/grass");
            tileDirt           = new Tile(2).SetTextureName("tiles/dirt");
            tileFlowers        = new Tile(3).SetTextureName("tiles/flowers");
            tileWater          = new TileWater(4);
            tileLargeTest      = new TileLargeTest(5);
            tileNuclearReactor = new TileNuclearPlant(6);

            tileRegistry.Register(tileGrass);
            tileRegistry.Register(tileDirt);
            tileRegistry.Register(tileFlowers);
            tileRegistry.Register(tileWater);
            tileRegistry.Register(tileLargeTest);
            tileRegistry.Register(tileNuclearReactor);
        }
Esempio n. 16
0
        /// <summary> Creates tile. </summary>
        /// <param name="relativeNullPoint">Relative null point.</param>
        /// <param name="mapCenter">Center of map.</param>
        /// <param name="renderMode">Render mode.</param>
        /// <param name="canvas">Map canvas.</param>
        /// <param name="width">Tile width in meters.</param>
        /// <param name="height">Tile height in meters.</param>
        public Tile(GeoCoordinate relativeNullPoint, Vector2d mapCenter, RenderMode renderMode,
                    Canvas canvas, double width, double height)
        {
            RelativeNullPoint = relativeNullPoint;
            MapCenter         = mapCenter;
            RenderMode        = renderMode;
            Canvas            = canvas;

            var geoCenter = GeoProjection.ToGeoCoordinate(relativeNullPoint, mapCenter);

            BoundingBox = BoundingBox.Create(geoCenter, width, height);

            Rectangle = new Rectangle2d(MapCenter.X - width / 2, MapCenter.Y - height / 2, width, height);

            Registry = new TileRegistry(renderMode);
        }
Esempio n. 17
0
 public static bool Prefix(ChunkWorld __instance, ref GameObject[,] ___gridSpecialObj)
 {
     for (int i = 0; i < 64; i++)
     {
         for (int j = 0; j < 64; j++)
         {
             if (__instance.gridSpecial[i, j] > 0)
             {
                 if (___gridSpecialObj[i, j] == null)
                 {
                     if (TileRegistry.GetSingleton().HasEntry(__instance.gridSpecial[i, j]))
                     {
                         TileInfo tile = TileRegistry.GetSingleton().GetEntry(__instance.gridSpecial[i, j]);
                         if (tile.Type == TileType.INTERACTIVE)
                         {
                             ___gridSpecialObj[i, j] = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("npc/npc" + __instance.gridSpecial[i, j]), new Vector3((float)(i * 4 - 62), (float)(j * 4 - 62), 0.9f), Quaternion.identity);
                         }
                         else
                         {
                             ___gridSpecialObj[i, j] = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("prop/" + __instance.gridSpecial[i, j]), new Vector3((float)(i * 4 - 62), (float)(j * 4 - 62), 0.9f), Quaternion.identity);
                         }
                     }
                     else
                     {
                         if (__instance.gridSpecial[i, j] < 2400)
                         {
                             ___gridSpecialObj[i, j] = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("npc/npc" + __instance.gridSpecial[i, j]), new Vector3((float)(i * 4 - 62), (float)(j * 4 - 62), 0.9f), Quaternion.identity);
                         }
                         else
                         {
                             ___gridSpecialObj[i, j] = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("prop/" + __instance.gridSpecial[i, j]), new Vector3((float)(i * 4 - 62), (float)(j * 4 - 62), 0.9f), Quaternion.identity);
                         }
                         if (__instance.gridSpecial[i, j] != 2106 && __instance.gridSpecial[i, j] != 2107 && __instance.gridSpecial[i, j] != 2105)
                         {
                             ___gridSpecialObj[i, j].transform.parent = __instance.transform;
                         }
                     }
                 }
             }
             else if (___gridSpecialObj[i, j])
             {
                 UnityEngine.Object.Destroy(___gridSpecialObj[i, j]);
             }
         }
     }
     return(false);
 }
Esempio n. 18
0
    void OnEnable()
    {
        if (!(worldBehaviour == this || worldBehaviour == null))
        {
            Debug.LogError("'worldBehaviour' assigned to different WorldBehaviour, reassigning...");
        }
        worldBehaviour = this;

        TileRegistry.Initialize();

        foreach (Transform child in transform)
        {
            if (!Application.isPlaying)
            {
                DestroyImmediate(child.gameObject);
            }
            else
            {
                Destroy(child.gameObject);
            }
        }

        World = new World(2);


        if (layerObjects == null)
        {
            layerObjects    = new GameObject[World.Layers.Length];
            layerBehaviours = new LayerBehaviour[World.Layers.Length];
            for (int i = 0; i < World.Layers.Length; i++)
            {
                World.Layers[i] = new Layer(new Vector2i(100, 100));                 //Test code
                layerObjects[i] = new GameObject("Layer " + i, typeof(LayerBehaviour), typeof(MeshFilter), typeof(MeshRenderer));
                layerObjects[i].transform.SetParent(transform);
                layerBehaviours[i]                = layerObjects[i].GetComponent <LayerBehaviour>();
                layerBehaviours[i].World          = World;
                layerBehaviours[i].WorldBehaviour = this;
                layerBehaviours[i].Index          = i;
                layerObjects[i].GetComponent <MeshRenderer>().material = material;
            }
        }
        if (autoloadWorld)
        {
            World.Load(worldPath);
        }
    }
Esempio n. 19
0
        public void TestSetup()
        {
            _eventsFired = EventFlags.None;
            _registry    = new TileRegistry(_service.GraphicsDevice);
            _pool        = new TilePool("pool", _registry, 16, 16);

            _pool.Modified     += (s, e) => { _eventsFired |= EventFlags.Modified; };
            _pool.NameChanged  += (s, e) => { _eventsFired |= EventFlags.NameChanged; };
            _pool.TileAdded    += (s, e) => { _eventsFired |= EventFlags.TileAdded; };
            _pool.TileRemoved  += (s, e) => { _eventsFired |= EventFlags.TileRemoved; };
            _pool.TileModified += (s, e) => { _eventsFired |= EventFlags.TileModified; };

            _pool.CustomProperties.PropertyAdded    += (s, e) => { _eventsFired |= EventFlags.PropertyAdded; };
            _pool.CustomProperties.PropertyRemoved  += (s, e) => { _eventsFired |= EventFlags.PropertyRemoved; };
            _pool.CustomProperties.PropertyModified += (s, e) => { _eventsFired |= EventFlags.PropertyModified; };
            _pool.CustomProperties.PropertyRenamed  += (s, e) => { _eventsFired |= EventFlags.PropertyRenamed; };
        }
Esempio n. 20
0
 private static void InitializeRegistries()
 {
     Log("Initializing Registries");
     GameRegistry.RegisterRegistry(ItemRegistry.GetSingleton());
     GameRegistry.RegisterRegistry(ChipRegistry.GetSingleton());
     GameRegistry.RegisterRegistry(TileRegistry.GetSingleton());
     GameRegistry.RegisterRegistry(EntityRegistry.GetSingleton());
     foreach (GadgetModInfo mod in GadgetMods.ListAllModInfos())
     {
         if (mod.Mod.Enabled)
         {
             foreach (Registry registry in mod.Mod.CreateRegistries())
             {
                 GameRegistry.RegisterRegistry(registry);
             }
         }
     }
     Log("Finished Initializing Registries");
 }
Esempio n. 21
0
 /// <summary>
 /// Update an animated sprite to the next sprite in sequence
 /// </summary>
 /// <param name="sprite"></param>
 private void UpdateSprite(AnimatedSprite sprite)
 {
     if (sprite.playingForward)
     {
         sprite.currSpriteIdx++;
         if (sprite.currSpriteIdx == 3)
         {
             sprite.playingForward = false;
         }
     }
     else
     {
         sprite.currSpriteIdx--;
         if (sprite.currSpriteIdx == 0)
         {
             sprite.playingForward = true;
         }
     }
     TileRegistry.GetInstance().SetTile(sprite.pos, sprite.sprites[sprite.currSpriteIdx], sprite.detail);
 }
Esempio n. 22
0
 private void CreateDetails()
 {
     for (int x = 0; x < tiles.GetLength(0); x++)
     {
         for (int y = 0; y < tiles.GetLength(1); y++)
         {
             Vector2Int         pos            = new Vector2Int(x, y);
             IList <Vector2Int> immediateTiles = new List <Vector2Int>(Utils.GetAdjCoordsArr(pos))
             {
                 pos
             };
             if (SurroundedBy(immediateTiles, IsSandTile))
             {
                 if (Utils.r.Next(100) < 10)
                 {
                     SetDetail(pos, Detail.Palm, false);
                     TileRegistry.GetInstance().SetPalmTile(pos);
                 }
                 else if (Utils.r.Next(100) < 1)
                 {
                     SetDetail(pos, Detail.DessertRock, false);
                     TileRegistry.GetInstance().SetRockBeachTile(pos);
                 }
             }
             else if (SurroundedBy(immediateTiles, IsGrassTile) || SurroundedBy(immediateTiles, IsCliffTile))
             {
                 if (Utils.r.Next(100) < 10)
                 {
                     SetDetail(pos, Detail.Tree, false);
                     TileRegistry.GetInstance().SetTreeTile(pos);
                 }
                 else if (Utils.r.Next(100) < 1)
                 {
                     SetDetail(pos, Detail.Rock, false);
                     TileRegistry.GetInstance().SetRockTile(pos);
                 }
             }
         }
     }
 }
Esempio n. 23
0
        protected override void Initialize()
        {
            IsMouseVisible = true;

            // Tile registry.
            tileRegistry = new TileRegistry();
            Tile.Register(tileRegistry); // register game tiles

            // Generator
            generator = new Generator();
            Generator.RegisterGenerators(generator); // register game generators

            // View registry.
            viewRegistry = new ViewRegistry();
            ViewRegistry.RegisterViews(viewRegistry); // register game views

            // Load blank city
            city       = new City();
            city.world = generator.Generate(city.world, 50, 50, new Random());

            base.Initialize();
        }
Esempio n. 24
0
        public void TestSetup()
        {
            _eventsFired = EventFlags.None;
            _registry = new TileRegistry(_service.GraphicsDevice);
            _pool = new TilePool("pool", _registry, 16, 16);

            Texture2D tex1 = new Texture2D(_service.GraphicsDevice, 16, 16);
            Texture2D tex2 = new Texture2D(_service.GraphicsDevice, 16, 16);

            _tile1 = _pool.GetTile(_pool.AddTile(tex1));
            _tile2 = _pool.GetTile(_pool.AddTile(tex2));
        }
Esempio n. 25
0
 public void DoProgress()
 {
     Map.GetInstance().SetItem(pos, item);
     TileRegistry.GetInstance().SetItem(pos, item);
     isDone = true;
 }
Esempio n. 26
0
        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(null /* WorldRegistry */, 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);
                            }
                            GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), 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.GetSingleton() /* 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.GetSingleton(), ref (args[0] as int[])[0]);
                            GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[1]);
                            GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[2]);
                            GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), 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.GetSingleton(), ref (args[0] as int[])[0]);
                            GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[1]);
                            GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), 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.GetSingleton() /* 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(null /* WorldRegistry */, ref (args[0] as int[])[0]);
                            for (int i = 1; i < (args[0] as int[]).Length; i++)
                            {
                                GadgetNetwork.ConvertIDToHost(TileRegistry.GetSingleton(), 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(null /* WorldRegistry */, 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.GetSingleton() /* 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.GetSingleton() /* 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(null /* WorldRegistry */, 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.GetSingleton() /* 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.GetSingleton() /* 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.GetSingleton() /* 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.GetSingleton() /* 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.GetSingleton(), ref (args[0] as int[])[0]);
                            GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[5]);
                            GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[6]);
                            GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), 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.GetSingleton(), 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.GetSingleton(), ref (args[0] as int[])[0]);
                            GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[5]);
                            GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), ref (args[0] as int[])[6]);
                            GadgetNetwork.ConvertIDToHost(ItemRegistry.GetSingleton(), 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(null /* WorldRegistry */, 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(null /* WorldRegistry */, ref args[0]);
                        }
                    }
                    break;

                case "RefreshWall":
                    if (args.Length == 1)
                    {
                        if (args[0] is int[])
                        {
                            for (int i = 0; i < (args[0] 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.GetSingleton(), ref (args[0] as int[])[i]);
                            }
                        }
                    }
                    break;

                case "RefreshShip":
                    if (args.Length == 2)
                    {
                        if (args[0] is int[] && args[1] is int[])
                        {
                            for (int i = 0; i < (args[0] 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.GetSingleton(), ref (args[0] as int[])[i]);
                            }
                            for (int i = 0; i < (args[1] 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.GetSingleton(), ref (args[1] as int[])[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(null /* WorldRegistry */, ref args[0]);
                        }
                    }
                    break;
                }
            }
            return(true);
        }
Esempio n. 27
0
        public void TestSetup()
        {
            _eventsFired = EventFlags.None;
            _registry = new TileRegistry(_service.GraphicsDevice);
            _pool = new TilePool("pool", _registry, 16, 16);

            _pool.Modified += (s, e) => { _eventsFired |= EventFlags.Modified; };
            _pool.NameChanged += (s, e) => { _eventsFired |= EventFlags.NameChanged; };
            _pool.TileAdded += (s, e) => { _eventsFired |= EventFlags.TileAdded; };
            _pool.TileRemoved += (s, e) => { _eventsFired |= EventFlags.TileRemoved; };
            _pool.TileModified += (s, e) => { _eventsFired |= EventFlags.TileModified; };

            _pool.CustomProperties.PropertyAdded += (s, e) => { _eventsFired |= EventFlags.PropertyAdded; };
            _pool.CustomProperties.PropertyRemoved += (s, e) => { _eventsFired |= EventFlags.PropertyRemoved; };
            _pool.CustomProperties.PropertyModified += (s, e) => { _eventsFired |= EventFlags.PropertyModified; };
            _pool.CustomProperties.PropertyRenamed += (s, e) => { _eventsFired |= EventFlags.PropertyRenamed; };
        }
Esempio n. 28
0
 private void CreateSprite(int spriteNum)
 {
     sprite = new GameObject("Sprite");
     TileRegistry.GetInstance().SetCharSprite(sprite.AddComponent <SpriteRenderer>(), sex, spriteNum);
     sprite.transform.SetParent(Constants.GRID.transform);
 }
Esempio n. 29
0
 public static bool Prefix(ChunkWorld __instance, byte brick, Vector3 corner, Vector3 up, Vector3 right, bool reversed, List <Vector3> verts, List <Vector2> uvs, List <int> tris, int id, int face)
 {
     if (TileRegistry.GetSingleton().HasEntry(id))
     {
         TileInfo tile  = TileRegistry.GetSingleton().GetEntry(id);
         int      count = verts.Count;
         if (tile.Type == TileType.SOLID || tile.Type == TileType.WALL)
         {
             verts.Add(corner);
             verts.Add(corner + up);
             verts.Add(corner + up + right);
             verts.Add(corner + right);
         }
         else
         {
             if (face == 4)
             {
                 verts.Add(corner + new Vector3(0f, 0f, 0.5f));
                 verts.Add(corner + new Vector3(0f, 0f, 0.5f) + up);
                 verts.Add(corner + new Vector3(0f, 0f, 0.5f) + up + right);
                 verts.Add(corner + new Vector3(0f, 0f, 0.5f) + right);
             }
             else if (face == 0 || face == 1)
             {
                 verts.Add(corner + new Vector3(0f, 0f, 0.5f));
                 verts.Add(corner + up + new Vector3(0f, 0f, 0.5f));
                 verts.Add(corner + up + right);
                 verts.Add(corner + right);
             }
             else if (face != 5)
             {
                 verts.Add(corner + new Vector3(0f, 0f, 0.5f));
                 verts.Add(corner + up);
                 verts.Add(corner + up + right);
                 verts.Add(corner + right + new Vector3(0f, 0f, 0.5f));
             }
             else
             {
                 verts.Add(corner);
                 verts.Add(corner + up);
                 verts.Add(corner + up + right);
                 verts.Add(corner + right);
             }
         }
         uvs.Add(new Vector2(tile.Sprite.coords.x, tile.Sprite.coords.y));
         uvs.Add(new Vector2(tile.Sprite.coords.x, tile.Sprite.coords.y + 1));
         uvs.Add(new Vector2(tile.Sprite.coords.x + 1, tile.Sprite.coords.y + 1));
         uvs.Add(new Vector2(tile.Sprite.coords.x + 1, tile.Sprite.coords.y));
         if (reversed)
         {
             tris.Add(count);
             tris.Add(count + 1);
             tris.Add(count + 2);
             tris.Add(count + 2);
             tris.Add(count + 3);
             tris.Add(count);
         }
         else
         {
             tris.Add(count + 1);
             tris.Add(count);
             tris.Add(count + 2);
             tris.Add(count + 3);
             tris.Add(count + 2);
             tris.Add(count);
         }
         return(false);
     }
     return(true);
 }
Esempio n. 30
0
 public void TestSetup()
 {
     _eventsFired = EventFlags.None;
     _registry    = new TileRegistry(_service.GraphicsDevice);
     _pool        = new TilePool("pool", _registry, 16, 16);
 }
Esempio n. 31
0
 public void TestSetup()
 {
     _eventsFired = EventFlags.None;
     _registry = new TileRegistry(_service.GraphicsDevice);
     _pool = new TilePool("pool", _registry, 16, 16);
 }