Ejemplo n.º 1
0
        public bool CircleCollision(Entity entity, List <Entity> collideEntities)
        {
            if (PhysicsOn)
            {
                CircleCollisionComponent eCircle = ComponentManager.Instance.GetEntityComponent <CircleCollisionComponent>(entity);
                Position2DComponent      ePos    = ComponentManager.Instance.GetEntityComponent <Position2DComponent>(entity);

                foreach (Entity e in collideEntities)
                {
                    CircleCollisionComponent eTarget    = ComponentManager.Instance.GetEntityComponent <CircleCollisionComponent>(e);
                    Position2DComponent      eTargetPos = ComponentManager.Instance.GetEntityComponent <Position2DComponent>(e);

                    if (eTarget != null && eTargetPos != null)
                    {
                        double distSquare           = Math.Pow(ePos.Position.X - eTargetPos.Position.X, 2) + Math.Pow(ePos.Position.Y - eTargetPos.Position.Y, 2);
                        double totalCollisionRadius = Math.Pow(eCircle.Radius + eTarget.Radius, 2);
                        if (distSquare - totalCollisionRadius < 0 && eCircle != eTarget)
                        {
                            return(true);
                        }
                    }
                }
            }
            return(false);
        }
Ejemplo n.º 2
0
        private void AddMenuAndOptions(ECSEngine engine)
        {
            Entity winScreen = EntityFactory.Instance.NewEntityWithTag("LooseScreenImage");

            Render2DComponent   Comp = new Render2DComponent(engine.LoadContent <Texture2D>("youloose"));
            Position2DComponent Pos  = new Position2DComponent(new Vector2(400, 210));

            ComponentManager.Instance.AddComponentToEntity(winScreen, Comp);
            ComponentManager.Instance.AddComponentToEntity(winScreen, Pos);
            SceneManager.Instance.AddEntityToSceneOnLayer("LooseScreen", 0, winScreen);
        }
Ejemplo n.º 3
0
        private void UpdatePos(CollisionComponent c)
        {
            ComponentManager    cm = ComponentManager.Instance;
            Entity              e  = cm.GetEntityOfComponent <CollisionComponent>(c);
            Position2DComponent p  = cm.GetEntityComponent <Position2DComponent>(e);

            if (p != null)
            {
                c.CollisionArea.SetX(p.Position.X);
                c.CollisionArea.SetY(p.Position.Y);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Render a string to the screen
        /// </summary>
        /// <param name="spriteBatch"></param>
        /// <param name="gameTime"></param>
        public void Render(SpriteBatch spriteBatch, GameTime gameTime)
        {
            List <Entity> entities = SceneManager.Instance.GetActiveScene().GetAllEntities();

            foreach (Entity e in entities)
            {
                if (e.Visible)
                {
                    TextRenderComponent t = ComponentManager.Instance.GetEntityComponent <TextRenderComponent>(e);
                    Position2DComponent p = ComponentManager.Instance.GetEntityComponent <Position2DComponent>(e);

                    if (p != null && t != null)
                    {
                        spriteBatch.DrawString(t.Font, t.Text, p.Position, t.TextColor);
                    }
                }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Renders a sprite on the screen
        /// </summary>
        /// <param name="spriteBatch"></param>
        /// <param name="gameTime"></param>
        public void Render(SpriteBatch spriteBatch, GameTime gameTime)
        {
            try
            {
                List <List <Entity> > sceneEntities = SceneManager.Instance.GetActiveScene().GetAllLayers();
                for (int i = 0; i < sceneEntities.Count; ++i)
                {
                    foreach (Entity entity in sceneEntities[i])
                    {
                        if (entity.Visible)
                        {
                            Render2DComponent r = ComponentManager.Instance.GetEntityComponent <Render2DComponent>(entity);
                            if (r != null)
                            {
                                Position2DComponent p = ComponentManager.Instance.GetEntityComponent <Position2DComponent>(entity);
                                AnimationComponent  a = ComponentManager.Instance.GetEntityComponent <AnimationComponent>(entity);

                                if (p != null)
                                {
                                    if (a != null)
                                    {
                                        if (a.visible)
                                        {
                                            r.DestRect = new Rectangle((int)p.Position.X, (int)p.Position.Y, a.SourceRect.Width, a.SourceRect.Height);
                                            spriteBatch.Draw(r.Texture, r.DestRect, a.SourceRect, Color.White);
                                        }
                                    }
                                    else
                                    {
                                        r.DestRect   = new Rectangle((int)p.Position.X, (int)p.Position.Y, r.Width, r.Height);
                                        r.SourceRect = new Rectangle(0, 0, r.Width, r.Height);
                                        spriteBatch.Draw(r.Texture, r.DestRect, r.SourceRect, Color.White);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
Ejemplo n.º 6
0
        private void AddMenuAndOptions(ECSEngine engine)
        {
            Entity MenuBackground = EntityFactory.Instance.NewEntityWithTag("MainMenuBackground");
            Entity SinglePlayer   = EntityFactory.Instance.NewEntityWithTag("MM_SinglePlayerOption");
            Entity Multiplayer    = EntityFactory.Instance.NewEntityWithTag("MM_MultiPlayerOption");
            Entity Exit           = EntityFactory.Instance.NewEntityWithTag("MM_ExitOption");

            Render2DComponent   MenuBgComp = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/MainMenu"));
            Position2DComponent MenuBgPos  = new Position2DComponent(new Vector2(0, 0));

            ComponentManager.Instance.AddComponentToEntity(MenuBackground, MenuBgComp);
            ComponentManager.Instance.AddComponentToEntity(MenuBackground, MenuBgPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MainMenu", 0, MenuBackground);

            Render2DComponent   SinglePlayerOption    = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/SinglePlayerSelected"));
            Position2DComponent SinglePlayerOptionPos = new Position2DComponent(new Vector2(351, 278));

            ComponentManager.Instance.AddComponentToEntity(SinglePlayer, SinglePlayerOption);
            ComponentManager.Instance.AddComponentToEntity(SinglePlayer, SinglePlayerOptionPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MainMenu", 1, SinglePlayer);
            SinglePlayer.Visible = true;

            Render2DComponent   MultiPlayerOption    = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/MultiPlayerSelected"));
            Position2DComponent MultiPlayerOptionPos = new Position2DComponent(new Vector2(371, 395));

            ComponentManager.Instance.AddComponentToEntity(Multiplayer, MultiPlayerOption);
            ComponentManager.Instance.AddComponentToEntity(Multiplayer, MultiPlayerOptionPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MainMenu", 1, Multiplayer);
            Multiplayer.Visible = false;

            Render2DComponent   ExitOption    = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/ExitSelected"));
            Position2DComponent ExitOptionPos = new Position2DComponent(new Vector2(506, 515));

            ComponentManager.Instance.AddComponentToEntity(Exit, ExitOption);
            ComponentManager.Instance.AddComponentToEntity(Exit, ExitOptionPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MainMenu", 1, Exit);
            Exit.Visible = false;
        }
Ejemplo n.º 7
0
        private void AddMenuAndOptions(ECSEngine engine)
        {
            Entity Background = EntityFactory.Instance.NewEntity();
            Entity Join       = EntityFactory.Instance.NewEntityWithTag("MP_Join");
            Entity Host       = EntityFactory.Instance.NewEntityWithTag("MP_Host");
            Entity Back       = EntityFactory.Instance.NewEntityWithTag("MP_Back");

            Render2DComponent   MenuBgComp = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/MultiPlayerMenu"));
            Position2DComponent MenuBgPos  = new Position2DComponent(new Vector2(0, 0));

            ComponentManager.Instance.AddComponentToEntity(Background, MenuBgComp);
            ComponentManager.Instance.AddComponentToEntity(Background, MenuBgPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MultiPlayerMenu", 0, Background);

            Render2DComponent   joinPlayerOption    = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/MPJoinGame"));
            Position2DComponent joinPlayerOptionPos = new Position2DComponent(new Vector2(381, 221));

            ComponentManager.Instance.AddComponentToEntity(Join, joinPlayerOption);
            ComponentManager.Instance.AddComponentToEntity(Join, joinPlayerOptionPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MultiPlayerMenu", 1, Join);
            Join.Visible = true;

            Render2DComponent   hostOption    = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/MPHostGame"));
            Position2DComponent hostOptionPos = new Position2DComponent(new Vector2(367, 376));

            ComponentManager.Instance.AddComponentToEntity(Host, hostOption);
            ComponentManager.Instance.AddComponentToEntity(Host, hostOptionPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MultiPlayerMenu", 1, Host);
            Host.Visible = false;

            Render2DComponent   backOption    = new Render2DComponent(engine.LoadContent <Texture2D>("Menu/back"));
            Position2DComponent backOptionPos = new Position2DComponent(new Vector2(494, 527));

            ComponentManager.Instance.AddComponentToEntity(Back, backOption);
            ComponentManager.Instance.AddComponentToEntity(Back, backOptionPos);
            SceneManager.Instance.AddEntityToSceneOnLayer("MultiPlayerMenu", 1, Back);
            Back.Visible = false;
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Updates a child position relative to its parent
        /// </summary>
        /// <param name="gameTime"></param>
        public void Update(GameTime gameTime)
        {
            List <Entity> entities = ComponentManager.Instance.GetAllEntitiesWithComponentType <ParentComponent>();

            if (entities == null)
            {
                return;
            }

            foreach (Entity e in entities)
            {
                if (e.Updateable)
                {
                    ParentComponent     parent    = ComponentManager.Instance.GetEntityComponent <ParentComponent>(e);
                    Position2DComponent parentPos = ComponentManager.Instance.GetEntityComponent <Position2DComponent>(parent.Parent);
                    Position2DComponent myPos     = ComponentManager.Instance.GetEntityComponent <Position2DComponent>(e);

                    if (parentPos != null && myPos != null)
                    {
                        myPos.Position = new Vector2(parent.OffsetX, parent.OffsetY) + parentPos.Position;
                    }
                }
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Updates an entity's position
        /// </summary>
        /// <param name="gameTime"></param>
        public void Update(GameTime gameTime)
        {
            try
            {
                List <List <Entity> > sceneEntities = SceneManager.Instance.GetActiveScene().GetAllLayers();

                for (int i = 0; i < sceneEntities.Count; ++i)
                {
                    foreach (Entity e in sceneEntities[i])
                    {
                        if (e.Updateable)
                        {
                            Velocity2DComponent v = ComponentManager.Instance.GetEntityComponent <Velocity2DComponent>(e);
                            Position2DComponent p = ComponentManager.Instance.GetEntityComponent <Position2DComponent>(e);
                            //TODO : Readd Collision Maybe ?
                            //RectangleCollisionComponent r = ComponentManager.Instance.GetEntityComponent<RectangleCollisionComponent>(e);

                            /*if (r != null)
                             * {
                             *  int w = r.CollisionRect.Width;
                             *  int h = r.CollisionRect.Height;
                             *  r.CollisionRect = new Rectangle((int)p.Position.X, (int)p.Position.Y, w, h);
                             * }*/

                            if (p != null && v != null)
                            {
                                p.Position += v.Velocity * v.Speed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }