示例#1
0
        public static void Create(ECS.Scene scene,
                                  ECS.ComponentList <Components.Transform> transforms,
                                  ECS.ComponentList <Components.Body> bodies,
                                  ECS.ComponentList <Components.Behavior> behaviors,
                                  ECS.ComponentList <Components.Avatar> avatars)
        {
            ushort pos;

            ECS.Entity e = scene.NewEntity();

            pos = scene.AttachComponent <Components.Transform>(e, transforms);
            transforms.data[pos].position.X = 400;
            transforms.data[pos].position.Y = 400;

            pos = scene.AttachComponent <Components.Body>(e, bodies);
            bodies.data[pos].velocity.X = 0;
            bodies.data[pos].velocity.Y = 0;

            pos = scene.AttachComponent <Components.Behavior>(e, behaviors);
            behaviors.data[pos].isPlayerControlled = true;

            pos = scene.AttachComponent <Components.Avatar>(e, avatars);
            avatars.data[pos].animations = new Dictionary <string, Components.Animation>();

            Components.Animation parado  = new Components.Animation(scene, "vivo_idle", 32, 32, new int[] { 140, 140 }, true);
            Components.Animation andando = new Components.Animation(scene, "vivo_walk", 32, 32, new int[] { 140, 140 }, true);
            avatars.data[pos].animations.Add("parado", parado);
            avatars.data[pos].animations.Add("andando", andando);
            avatars.data[pos].currentAnimation = parado;
        }
示例#2
0
        public static void Create(ECS.Scene scene,
                                  ECS.ComponentList <Components.Transform> transforms,
                                  ECS.ComponentList <Components.Body> bodies,
                                  ECS.ComponentList <Components.Behavior> behaviors,
                                  ECS.ComponentList <Components.Avatar> avatars,
                                  Random random, int W, int H)
        {
            ushort pos;

            ECS.Entity e = scene.NewEntity();

            pos = scene.AttachComponent <Components.Transform>(e, transforms);
            transforms.data[pos].position.X = (float)random.NextDouble() * W;
            transforms.data[pos].position.Y = (float)random.NextDouble() * H;

            pos = scene.AttachComponent <Components.Body>(e, bodies);
            bodies.data[pos].velocity.X = 0;
            bodies.data[pos].velocity.Y = 0;

            pos = scene.AttachComponent <Components.Behavior>(e, behaviors);
            behaviors.data[pos].isPlayerControlled = false;

            pos = scene.AttachComponent <Components.Avatar>(e, avatars);
            avatars.data[pos].animations = new Dictionary <string, Components.Animation>();

            Components.Animation andando = new Components.Animation(scene, "bolinha", 32, 32, new int[] { 500, 300, 200, 100, 100, 100, 100, 100, 100, 100, 100, 200, 300 }, true);
            Components.Animation parada  = new Components.Animation(scene, "bolinha", 32, 32, new int[] { 1 }, false);
            avatars.data[pos].animations.Add("parada", parada);
            avatars.data[pos].animations.Add("andando", andando);
            avatars.data[pos].currentAnimation = andando;
        }
示例#3
0
        public TestScene(TopLevel.Game1 g, SpriteBatch sb) : base(g, sb)
        {
            transforms = RegisterComponentList <Components.Transform>();
            bodies     = RegisterComponentList <Components.Body>();
            behaviors  = RegisterComponentList <Components.Behavior>();
            avatars    = RegisterComponentList <Components.Avatar>();

            behavior = new Systems.Behavior(
                behaviors,
                bodies, componentListIndices[typeof(Components.Body)],
                avatars, componentListIndices[typeof(Components.Avatar)]);
            physics = new Systems.Physics(
                transforms, componentListIndices[typeof(Components.Transform)],
                bodies, componentListIndices[typeof(Components.Body)]);
            renderer = new Systems.Renderer(
                avatars,
                transforms, componentListIndices[typeof(Components.Transform)]);

            Prefabs.Vivo.Create(this, transforms, bodies, behaviors, avatars);
            Random random = new Random();

            for (ushort i = 0; i < 500; i++)
            {
                if (random.NextDouble() > 0.5)
                {
                    Prefabs.Kirk.Create(this, transforms, bodies, behaviors, avatars, random, W, H);
                }
                else
                {
                    Prefabs.Bolinha.Create(this, transforms, bodies, behaviors, avatars, random, W, H);
                }
            }
        }
示例#4
0
        public Renderer(ECS.ComponentList <Components.Avatar> a,
                        ECS.ComponentList <Components.Transform> t, int tPos)
        {
            transforms = t;
            avatars    = a;

            transformsPos = tPos;
        }
示例#5
0
        public Physics(ECS.ComponentList <Components.Transform> t, int tPos,
                       ECS.ComponentList <Components.Body> b, int bPos)
        {
            transforms = t;
            bodies     = b;

            transformsPos = tPos;
            bodiesPos     = bPos;
        }
示例#6
0
        public ECS.ComponentList <T> RegisterComponentList <T>()
        {
            ECS.ComponentList <T> list = new ECS.ComponentList <T>();

            componentListIndices.Add(typeof(T), numComponents);
            numComponents++;

            return(list);
        }
示例#7
0
        public Behavior(ECS.ComponentList <Components.Behavior> beh,
                        ECS.ComponentList <Components.Body> bod, int bPos,
                        ECS.ComponentList <Components.Avatar> ava, int aPos)
        {
            behaviors = beh;
            bodies    = bod;
            avatars   = ava;

            bodiesPos  = bPos;
            avatarsPos = aPos;
        }