private IEnumerable <WorldObject> GenerateGrass(EventSwitchHandler eventSwitchHandler)
        {
            var list = new List <WorldObject>();

            for (int x = 0; x < 30; x++)
            {
                for (int y = 0; y < 20; y++)
                {
                    var worldObject = new WorldObject($"tile_0_{x}_{y}", eventSwitchHandler);
                    worldObject.AddComponent(new TileGraphic(worldObject, x, y)
                    {
                        AnimationSpeed = 1000,
                        TextureName    = "Tiles/main_tile",
                        TileFrames     = new List <TileFrame>
                        {
                            new TileFrame
                            {
                                TextureXPosition = 16 * rnd.Next(0, 5),
                                TextureYPosition = 0
                            }
                        },
                        ZTilePosition = 0
                    });
                    list.Add(worldObject);
                }
            }
            return(list);
        }
        public IList <WorldObject> LoadTiles(string mapName, EventSwitchHandler eventSwitchHandler)
        {
            var list = new List <WorldObject>();

            list.AddRange(GenerateGrass(eventSwitchHandler));
            list.AddRange(GenerateBushes(eventSwitchHandler));
            return(list);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="T:System.Object"/> class.
 /// </summary>
 public ScreenWorld(IScreenLoader screenLoader, ITileLoader tileLoader, IEntityLoader entityLoader, EventRunner eventRunner) : base(screenLoader)
 {
     this.tileLoader    = tileLoader;
     this.entityLoader  = entityLoader;
     this.eventRunner   = eventRunner;
     worldObjects       = new List <WorldObject>();
     eventSwitchHandler = new EventSwitchHandler();
     eventSwitchHandler.AddEventSwitch(new EventSwitch {
         Id = 1, Name = "Test", On = false
     });
 }
        private IEnumerable <WorldObject> GenerateBushes(EventSwitchHandler eventSwitchHandler)
        {
            var list = new List <WorldObject>();

            for (int x = 0; x < 30; x++)
            {
                for (int y = 0; y < 20; y++)
                {
                    var chance = rnd.Next(0, 100);
                    if (chance < 80 || (x == 8 && y == 8))
                    {
                        continue;
                    }
                    var collisionObject = new WorldObject($"tile_collision_{x}_{y}", eventSwitchHandler);
                    collisionObject.AddComponent(new TileCollision(collisionObject, x, y));
                    list.Add(collisionObject);
                    var type        = rnd.Next(0, 3);
                    var worldObject = new WorldObject($"tile_1_{x}_{y}", eventSwitchHandler);
                    if (type == 0)
                    {
                        worldObject.AddComponent(new TileGraphic(worldObject, x, y)
                        {
                            AnimationSpeed = 200,
                            TextureName    = "Tiles/main_tile",
                            TileFrames     = new List <TileFrame>
                            {
                                new TileFrame
                                {
                                    TextureXPosition = 0,
                                    TextureYPosition = 16
                                },
                                new TileFrame
                                {
                                    TextureXPosition = 16,
                                    TextureYPosition = 16
                                },
                                new TileFrame
                                {
                                    TextureXPosition = 32,
                                    TextureYPosition = 16
                                },
                                new TileFrame
                                {
                                    TextureXPosition = 48,
                                    TextureYPosition = 16
                                }
                            },
                            ZTilePosition = 0
                        });
                    }
                    if (type == 1)
                    {
                        worldObject.AddComponent(new TileGraphic(worldObject, x, y)
                        {
                            AnimationSpeed = 1000,
                            TextureName    = "Tiles/main_tile",
                            TileFrames     = new List <TileFrame>
                            {
                                new TileFrame
                                {
                                    TextureXPosition = 0,
                                    TextureYPosition = 32
                                }
                            },
                            ZTilePosition = 0
                        });
                    }
                    if (type == 2)
                    {
                        worldObject.AddComponent(new TileGraphic(worldObject, x, y)
                        {
                            AnimationSpeed = 1000,
                            TextureName    = "Tiles/main_tile",
                            TileFrames     = new List <TileFrame>
                            {
                                new TileFrame
                                {
                                    TextureXPosition = 16,
                                    TextureYPosition = 32
                                }
                            },
                            ZTilePosition = 0
                        });
                    }
                    list.Add(worldObject);
                }
            }
            return(list);
        }
        public IList <WorldObject> LoadEntities(string mapName, IWorldData worldData, IEventRunner eventRunner, EventSwitchHandler eventSwitchHandler)
        {
            var entityList = new List <WorldObject>();
            var entity     = new WorldObject("player", eventSwitchHandler);

            entity.AddComponent(new Sprite(entity, new SpriteData
            {
                Color         = Color.White,
                Height        = 19,
                Width         = 15,
                TextureName   = "NPC/main_character",
                XTilePosition = 2,
                YTilePosition = 2
            }, new Rectangle(0, 0, 16, 19)));
            entity.AddComponent(new MovementPlayer(entity, 1, new InputKeyboard()));
            entity.AddComponent(new Animation(entity));
            entity.AddComponent(new Collision(entity, worldData));
            entity.AddComponent(new ComponentTest(entity, eventRunner, new InputKeyboard(), eventSwitchHandler));
            //NPC
            var entityNpc = new WorldObject("npc", eventSwitchHandler);

            entityNpc.AddComponent(new Sprite(entityNpc, new SpriteData
            {
                Color         = Color.White,
                Height        = 19,
                Width         = 15,
                TextureName   = "NPC/rock_trainer",
                XTilePosition = 4,
                YTilePosition = 4
            }, new Rectangle(0, 0, 16, 19)));
            entityNpc.AddComponent(new Animation(entityNpc, new AnimationSpinning(16, 20, 400)), 1);
            entityNpc.AddComponent(new Collision(entityNpc, worldData));
            //entityNpc.AddComponent(new EventTriggerEyeContact(entityNpc, eventRunner, new List<IEvent> { new EventEmotion("npc", new EmotionTrainer(eventSwitchHandler)), new EventMovement("npc", new Vector2(8, 8))}, worldData));
            entityNpc.AddComponent(new Movement(entityNpc, 1));
            entityList.Add(entityNpc);
            entityList.Add(entity);
            return(entityList);
        }