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); } }
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)); }
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); } } }
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); } } }
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); }