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);
        }
Esempio n. 4
0
 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) { }
Esempio n. 9
0
 internal ActionLibrary(LibraryContext context, int id)
 {
     Context = context;
     Id      = id;
 }