Esempio n. 1
0
    public RbyTileset(Rby game, byte id, ByteStream data)
    {
        Game = game;
        Id   = id;

        Bank             = data.u8();
        BlockPointer     = data.u16le();
        GfxPointer       = data.u16le();
        CollisionPointer = data.u16le();
        CounterTiles     = data.Read(3);
        GrassTile        = data.u8();
        data.Seek(1);

        TilePairCollisionsLand  = new List <RbyTilePairCollision>();
        TilePairCollisionsWater = new List <RbyTilePairCollision>();

        LandPermissions = new PermissionSet();
        LandPermissions.AddRange(game.ROM.From((game is Yellow ? 0x01 : 0x00) << 16 | CollisionPointer).Until(0xff));
        WaterPermissions = new PermissionSet();
        WaterPermissions.Add(0x14);
        WaterPermissions.Add(0x32);
        if (id == 14)
        {
            WaterPermissions.Add(0x48);
        }
    }
Esempio n. 2
0
        private PermissionSet CreatePermissions(PermissionSet permissions)
        {
            permissions = permissions.Add(Permissions.Admin);

            foreach (var app in identityOptions.AdminApps.OrEmpty())
            {
                permissions = permissions.Add(Permissions.ForApp(Permissions.AppAdmin, app));
            }

            return(permissions);
        }
        public void PermissionSet()
        {
            string        permissionCSV;
            PermissionSet ps = new PermissionSet();

            ps.Add("permission1");
            ps.Add("permission2");
            ps.Add("permission3");
            permissionCSV = string.Join(",", ps.Permissions);
            var byteArray = ps.ExportPermissions();

            ps.Import(byteArray);
            Assert.Equal(permissionCSV, string.Join(",", ps.Permissions));
        }
Esempio n. 4
0
    public GscTileset(Gsc game, byte id, ReadStream data)
    {
        Game = game;
        Id   = id;
        GFX  = data.u8() << 16 | data.u16le();
        Meta = data.u8() << 16 | data.u16le();
        Coll = data.u8() << 16 | data.u16le();
        Anim = data.u16le();
        data.Seek(2);
        PalMap = data.u16le();

        LandPermissions  = new PermissionSet();
        WaterPermissions = new PermissionSet();
        ReadStream collisionData = game.ROM.From("TileCollisionTable");

        for (int i = 0; i < 256; i++)
        {
            CollisionPermissions perms = (CollisionPermissions)(collisionData.u8() & 0xf);  // Ignore the upper nybble as it only indicates whether the tile can be interacted with.
            if (perms == CollisionPermissions.Land)
            {
                LandPermissions.Add((byte)i);
            }
            else if (perms == CollisionPermissions.Water)
            {
                WaterPermissions.Add((byte)i);
            }
        }
    }
Esempio n. 5
0
    public RbyTileset(Rby game, byte id, ReadStream data)
    {
        Game = game;
        Id   = id;

        Bank             = data.u8();
        BlockPointer     = data.u16le();
        GfxPointer       = data.u16le();
        CollisionPointer = data.u16le();
        CounterTiles     = data.Read(3);
        GrassTile        = data.u8();
        data.Seek(1);

        TilePairCollisionsLand  = new List <int>();
        TilePairCollisionsWater = new List <int>();

        LandPermissions = new PermissionSet();
        LandPermissions.AddRange(game.ROM.From((game.IsYellow ? 0x01 : 0x00) << 16 | CollisionPointer).Until(0xff, false));
        WaterPermissions = new PermissionSet();
        WaterPermissions.Add(0x14);
        WaterPermissions.Add(0x32);
        if (id == 14)
        {
            WaterPermissions.Add(0x48);
        }

        WarpTiles = game.ROM.From(3 << 16 | game.ROM.u16le(game.SYM["WarpTileIDPointers"] + id * 2)).Until(0xff, false);

        ReadStream stream = game.ROM.From("DoorTileIDPointers");

        DoorTiles = new byte[0];
        for (; ;)
        {
            byte   tileset = stream.u8();
            ushort pointer = stream.u16le();
            if (tileset == 0xff)
            {
                break;
            }

            if (tileset == Id)
            {
                DoorTiles = game.ROM.From(6 << 16 | pointer).Until(0x00, false);
            }
        }
    }
Esempio n. 6
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Running csbatchupload...");

            if (args.Length < 2)
            {
                Console.WriteLine("Must specify the root load folder as first parameter");
                Console.WriteLine("Must specify the collection as second parameter");
                Console.WriteLine("Usage: csbatchupload <folder> <collection>");
                Console.WriteLine("Example Usage: csbatchupload ./some/folder mydocs");
                return;
            }

            UploadObserver obs = new UploadObserver();

            Connection conn = new mlclient.Connection();

            conn.configure("192.168.123.4", "8122", "admin", "admin", false);

            DocumentBatchWriter writer = new DocumentBatchWriter(conn);

            writer.addBatchListener(obs);
            CollectionSet colList = new CollectionSet();

            colList.Add(args[1]);
            PermissionSet permList = new PermissionSet();
            Permission    perm     = new Permission("admin", Capability.EXECUTE);

            permList.Add(perm);

            DocumentSet set = new DocumentSet();

            DocumentBatchHelper.addFilesToDocumentSet(args[0], args[0], true, "/csbatchupload/",
                                                      colList, permList, null, set);
            long setSize = set.Count;

            Console.WriteLine("Document Set Size: " + setSize);

            writer.assignDocuments(set);
            writer.send();

            writer.wait();

            //Thread.Sleep(5000); // hack around multi-threading issues


            Console.WriteLine("Exception is nullptr?: " + (null == obs.ex));              // TODO extract exception once STL is supported

            Progress p = writer.getProgress();

            Console.WriteLine("Document set size: " + setSize + ", complete size: " + p.completed);
            Console.WriteLine("Progress: Complete: " + p.completed + ", total: " + p.total + ", pct: " + p.percentageComplete);
            Console.WriteLine("Progress: duration: " + p.duration + ", est remaining duration: "
                              + p.durationEstimateRemaining);
            Console.WriteLine("Progress: Overall rate: " + p.rate);

            Console.WriteLine("batch upload complete");
        }
        public void PermissionSet_ExceedMax()
        {
            PermissionSet ps = new PermissionSet();
            var           exceptionThrown = false;

            try
            {
                for (int i = 1; i <= 101; i++)
                {
                    ps.Add($"permission{i}");
                }
            }
            catch (ArgumentOutOfRangeException)
            {
                exceptionThrown = true;
            }

            Assert.True(exceptionThrown);
        }