public void InstanceVars() { var context = new LibraryContext(new GameLibraryInitializer()); Game.Init(); var inst = new GameInstance(context.Resources); var dups = context.InstanceVariables.Intersect(context.BuiltInVariables).ToArray(); Assert.IsFalse(dups.Any(), "Duplicate instance and global variable: {0}", string.Join(",", dups)); foreach (var name in context.InstanceVariables) { Assert.IsNotNull( inst.GetType().GetMember( name, MemberTypes.Property | MemberTypes.Field, BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy).SingleOrDefault(), "Instance variable {0} is not defined in the object!", name ); } // Todo: Filter by an attribute var members = inst.GetType().GetMembers(BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy) .Where(m => (m.MemberType & (MemberTypes.Field | MemberTypes.Property)) != (MemberTypes)0 && !m.GetCustomAttributes(typeof(NoGmlExportAttribute), false).Any()); foreach (var m in members) { Assert.IsTrue(context.InstanceVariables.Any(v => v == m.Name), "Instance variable {0} not defined in LibraryContext or not marked with an attribute!", m.Name); } }
public ResourceContext(LibraryContext context) { Context = context; Managers = new Dictionary<Type, IDictionary>(); Sprites = new IndexedResourceManager<Sprite>(this); Scripts = new IndexedResourceManager<Script>(this); Objects = new IndexedResourceManager<Object>(this); Rooms = new IndexedResourceManager<Room>(this); Instances = new IndexedResourceManager<Instance>(this, 100001); Constants = new Dictionary<string, Value>(); }
public void TestCreateLibraryContext() { var context = new LibraryContext(); Assert.IsNotNull(context.Resources); Assert.AreSame(context, context.Resources.Context); context.Resources.Sprites.Define("sprite0", 1); Assert.IsNotNull(context.Resources.Sprites[0]); Assert.IsTrue(context.Resources.Sprites[0].Name == "sprite0"); var sprite1 = context.Resources.Sprites.Define(null, 0); Assert.AreEqual("sprite1", sprite1.Name); }
internal ActionLibrary(LibraryContext context, int id) { Context = context; Id = id; }
public DefaultInstanceFactory(LibraryContext context) { Context = context; }
public override IInstanceFactory CreateInstanceFactory(LibraryContext context) { return new GameInstanceFactory(context); }
public abstract IInstanceFactory CreateInstanceFactory(LibraryContext context);
public GameInstanceFactory(LibraryContext context) : base(context) { }
internal ActionLibrary(LibraryContext context, int id) { Context = context; Id = id; }