示例#1
0
 private static GameComponent __factory2(ComponentManager Manager, Vector3 Position, Blackboard Data)
 {
     Weather.CreateForecast(Manager.World.Time.CurrentDate, Manager.World.ChunkManager.Bounds, Manager.World, 3);
     Weather.CreateStorm(MathFunctions.RandVector3Cube() * 10, MathFunctions.Rand(0.05f, 1.0f), Manager.World);
     return(new Cloud(Manager, 0.1f, 50, 40, Position));
 }
示例#2
0
 public static void Initialize()
 {
     RegisterEntity("Crate", (position, data) => new Crate(position));
     RegisterEntity("Balloon", (position, data) => CreateBalloon(position + new Vector3(0, 1000, 0), position, PlayState.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, null, PlayState.PlayerFaction));
     RegisterEntity("Work Pile", (position, data) => new WorkPile(position));
     RegisterEntity("Pine Tree", (position, data) => new Tree(position, "pine", ResourceLibrary.ResourceType.PineCone, data.GetData("Scale", 1.0f)));
     RegisterEntity("Snow Pine Tree", (position, data) => new Tree(position, "snowpine", ResourceLibrary.ResourceType.PineCone, data.GetData("Scale", 1.0f)));
     RegisterEntity("Palm Tree", (position, data) => new Tree(position, "palm", ResourceLibrary.ResourceType.Coconut, data.GetData("Scale", 1.0f)));
     RegisterEntity("Cactus", (position, data) => new Cactus(position, "cactus", data.GetData("Scale", 1.0f)));
     RegisterEntity("Berry Bush", (position, data) => new Bush(position, "berrybush", data.GetData("Scale", 1.0f)));
     RegisterEntity("Bird", (position, data) => new Bird(ContentPaths.Entities.Animals.Birds.GetRandomBird(), position, PlayState.ComponentManager, PlayState.ChunkManager, GameState.Game.GraphicsDevice, GameState.Game.Content, "Bird"));
     RegisterEntity("Bat", (position, data) => new Bat(position));
     RegisterEntity("Scorpion", (position, data) => new Scorpion(ContentPaths.Entities.Animals.Scorpion.scorption_animation, position, PlayState.ComponentManager, PlayState.ChunkManager, GameState.Game.GraphicsDevice, GameState.Game.Content, "Scorpion"));
     RegisterEntity("Spider", (position, data) => new Spider(ContentPaths.Entities.Animals.Spider.spider_animation, position));
     RegisterEntity("Frog", (position, data) => new Frog(ContentPaths.Entities.Animals.Frog.frog0_animation, position, PlayState.ComponentManager, PlayState.ChunkManager, GameState.Game.GraphicsDevice, GameState.Game.Content, "Frog"));
     RegisterEntity("Tree Frog", (position, data) => new Frog(ContentPaths.Entities.Animals.Frog.frog1_animation, position, PlayState.ComponentManager, PlayState.ChunkManager, GameState.Game.GraphicsDevice, GameState.Game.Content, "Frog"));
     RegisterEntity("Brown Rabbit", (position, data) => new Rabbit(ContentPaths.Entities.Animals.Rabbit.rabbit0_animation, position, PlayState.ComponentManager, PlayState.ChunkManager, GameState.Game.GraphicsDevice, GameState.Game.Content, "Brown Rabbit"));
     RegisterEntity("White Rabbit", (position, data) => new Rabbit(ContentPaths.Entities.Animals.Rabbit.rabbit1_animation, position, PlayState.ComponentManager, PlayState.ChunkManager, GameState.Game.GraphicsDevice, GameState.Game.Content, "White Rabbit"));
     RegisterEntity("Deer", (position, data) => new Deer(ContentPaths.Entities.Animals.Deer.deer, position, PlayState.ComponentManager, PlayState.ChunkManager, GameState.Game.GraphicsDevice, GameState.Game.Content, "Deer"));
     RegisterEntity("Dwarf", (position, data) => GenerateDwarf(position, PlayState.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, PlayState.ChunkManager, PlayState.Camera, PlayState.PlayerFaction, PlayState.PlanService, "Player", JobLibrary.Classes[JobLibrary.JobType.Worker], 0));
     //RegisterEntity("TestDwarf", (position, data) => GenerateTestDwarf(position));
     //RegisterEntity("TestGoblin", (position, data) => GenerateTestGoblin(position));
     //RegisterEntity("TestSkeleton", (position, data) => GenerateTestSeketon(position));
     //RegisterEntity("TestMoleman", (position, data) => GenerateTestMoleman(position));
     RegisterEntity("AxeDwarf", (position, data) => GenerateDwarf(position, PlayState.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, PlayState.ChunkManager, PlayState.Camera, PlayState.PlayerFaction, PlayState.PlanService, "Player", JobLibrary.Classes[JobLibrary.JobType.AxeDwarf], 0));
     RegisterEntity("CraftsDwarf", (position, data) => GenerateDwarf(position, PlayState.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, PlayState.ChunkManager, PlayState.Camera, PlayState.PlayerFaction, PlayState.PlanService, "Player", JobLibrary.Classes[JobLibrary.JobType.CraftsDwarf], 0));
     RegisterEntity("Wizard", (position, data) => GenerateDwarf(position, PlayState.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, PlayState.ChunkManager, PlayState.Camera, PlayState.PlayerFaction, PlayState.PlanService, "Player", JobLibrary.Classes[JobLibrary.JobType.Wizard], 0));
     RegisterEntity("MusketDwarf", (position, data) => GenerateDwarf(position, PlayState.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, PlayState.ChunkManager, PlayState.Camera, PlayState.PlayerFaction, PlayState.PlanService, "Player", JobLibrary.Classes[JobLibrary.JobType.MusketDwarf], 0));
     RegisterEntity("Moleman", (position, data) => GenerateMoleman(position, PlayState.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, PlayState.ChunkManager, PlayState.Camera, PlayState.ComponentManager.Factions.Factions["Molemen"], PlayState.PlanService, "Molemen"));
     RegisterEntity("Goblin", (position, data) => GenerateGoblin(position, PlayState.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, PlayState.ChunkManager, PlayState.Camera, PlayState.ComponentManager.Factions.Factions["Goblins"], PlayState.PlanService, "Goblins"));
     RegisterEntity("Skeleton", (position, data) => GenerateSkeleton(position, PlayState.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, PlayState.ChunkManager, PlayState.Camera, PlayState.ComponentManager.Factions.Factions["Undead"], PlayState.PlanService, "Undead"));
     RegisterEntity("Necromancer", (position, data) => GenerateNecromancer(position, PlayState.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, PlayState.ChunkManager, PlayState.Camera, PlayState.ComponentManager.Factions.Factions["Undead"], PlayState.PlanService, "Undead"));
     RegisterEntity("Bed", (position, data) => new Bed(position));
     RegisterEntity("Barrel", (position, data) => new Barrel(position));
     RegisterEntity("Bear Trap", (position, data) => new BearTrap(position));
     RegisterEntity("Lamp", (position, data) => new Lamp(position));
     RegisterEntity("Table", (position, data) => new Table(position));
     RegisterEntity("Chair", (position, data) => new Chair(position));
     RegisterEntity("Flag", (position, data) => new Flag(position));
     RegisterEntity("Mushroom", (position, data) => new Mushroom(position, ContentPaths.Entities.Plants.mushroom, ResourceLibrary.ResourceType.Mushroom, 2, false));
     RegisterEntity("Cave Mushroom", (position, data) => new Mushroom(position, ContentPaths.Entities.Plants.cavemushroom, ResourceLibrary.ResourceType.CaveMushroom, 4, true));
     RegisterEntity("Wheat", (position, data) => new Wheat(position));
     RegisterEntity("Kitchen Table", (position, data) => new Table(position, new SpriteSheet(ContentPaths.Entities.Furniture.interior_furniture, 32), new Point(0, 7))
     {
         Tags = new List <string>()
         {
             "Cutting Board"
         }
     });
     RegisterEntity("Books", (position, data) => new Table(position, new SpriteSheet(ContentPaths.Entities.Furniture.interior_furniture, 32), new Point(0, 4))
     {
         Tags = new List <string>()
         {
             "Research"
         }, Battery = new Table.ManaBattery()
         {
             Charge = 0.0f, MaxCharge = 100.0f
         }
     });
     RegisterEntity("Potions", (position, data) => new Table(position, new SpriteSheet(ContentPaths.Entities.Furniture.interior_furniture, 32), new Point(1, 4))
     {
         Tags = new List <string>()
         {
             "Research"
         }, Battery = new Table.ManaBattery()
         {
             Charge = 0.0f, MaxCharge = 100.0f
         }
     });
     RegisterEntity("Anvil", (position, data) => new Anvil(position));
     RegisterEntity("Forge", (position, data) => new Forge(position));
     RegisterEntity("Elf", (position, data) => GenerateElf(position, PlayState.ComponentManager.Factions.Factions["Elf"], "Elf"));
     RegisterEntity("Demon", (position, data) => GenerateDemon(position, PlayState.ComponentManager.Factions.Factions["Demon"], "Demon"));
     RegisterEntity("Arrow", (position, data) => new ArrowProjectile(position, data.GetData("Velocity", Vector3.Up * 10 + MathFunctions.RandVector3Box(-10, 10, 0, 0, -10, 10)), data.GetData <Body>("Target", null)));
     RegisterEntity("Bullet", (position, data) => new BulletProjectile(position, data.GetData("Velocity", Vector3.Up * 10 + MathFunctions.RandVector3Box(-10, 10, 0, 0, -10, 10)), data.GetData <Body>("Target", null)));
     RegisterEntity("Web", (position, data) => new WebProjectile(position, data.GetData("Velocity", Vector3.Up * 10 + MathFunctions.RandVector3Box(-10, 10, 0, 0, -10, 10)), data.GetData <Body>("Target", null)));
     RegisterEntity("Fireball", (position, data) => new FireballProjectile(position, data.GetData("Velocity", Vector3.Up * 10 + MathFunctions.RandVector3Box(-10, 10, 0, 0, -10, 10)), data.GetData <Body>("Target", null)));
     RegisterEntity("Fairy", (position, data) => new Fairy("Player", position));
     RegisterEntity("Target", (position, data) => new Target(position));
     RegisterEntity("Stove", (position, data) => new Stove(position));
     RegisterEntity("Strawman", (position, data) =>
     {
         float value = (float)PlayState.Random.NextDouble();
         return(value < 0.33
             ? (Body)(new Strawman(position))
             : (value < 0.66 ? (Body)(new WeightRack(position)) : (Body)(new PunchingBag(position))));
     });
     RegisterEntity("Bookshelf", (position, data) => new Bookshelf(position));
     RegisterEntity("Wooden Door", (position, data) => new Door(position, PlayState.PlayerFaction, new SpriteSheet(ContentPaths.Entities.Furniture.interior_furniture, 32, 32), new Point(3, 1), 50));
     RegisterEntity("Metal Door", (position, data) => new Door(position, PlayState.PlayerFaction, new SpriteSheet(ContentPaths.Entities.Furniture.interior_furniture, 32, 32), new Point(1, 8), 100));
     RegisterEntity("Stone Door", (position, data) => new Door(position, PlayState.PlayerFaction, new SpriteSheet(ContentPaths.Entities.Furniture.interior_furniture, 32, 32), new Point(0, 8), 75));
     RegisterEntity("Wooden Ladder", (position, data) => new Ladder(position, new SpriteSheet(ContentPaths.Entities.Furniture.interior_furniture, 32, 32), new Point(2, 0)));
     RegisterEntity("Stone Ladder", (position, data) => new Ladder(position, new SpriteSheet(ContentPaths.Entities.Furniture.interior_furniture, 32, 32), new Point(2, 8)));
     RegisterEntity("Metal Ladder", (position, data) => new Ladder(position, new SpriteSheet(ContentPaths.Entities.Furniture.interior_furniture, 32, 32), new Point(3, 8)));
     RegisterEntity("RandTrinket", (position, data) => CreateRandomTrinket(position));
     RegisterEntity("RandFood", (position, data) => CreateRandomFood(position));
     RegisterEntity("Turret", (position, data) => new TurretTrap(position, PlayState.PlayerFaction));
     RegisterEntity("Snow Cloud", (position, data) => new Weather.Cloud(0.1f, 50, 40, position)
     {
         TypeofStorm = Weather.StormType.SnowStorm
     });
     RegisterEntity("Rain Cloud", (position, data) => new Weather.Cloud(0.1f, 50, 40, position)
     {
         TypeofStorm = Weather.StormType.RainStorm
     });
     RegisterEntity("Storm", (position, data) =>
     {
         Weather.CreateForecast(3);
         Weather.CreateStorm(MathFunctions.RandVector3Cube() * 10, MathFunctions.Rand(0.05f, 1.0f));
         return(new Weather.Cloud(0.1f, 50, 40, position));
     });
 }
示例#3
0
        public static void Initialize(WorldManager world)
        {
            World = world;
            RegisterEntity("Crate", (position, data) => new Crate(world.ComponentManager, position));
            RegisterEntity("Balloon", (position, data) => CreateBalloon(position + new Vector3(0, 1000, 0), position, world.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, null, world.PlayerFaction));
            RegisterEntity("Work Pile", (position, data) => new WorkPile(world.ComponentManager, position));

            RegisterEntity("Haunted Tree", (position, data) => new Tree("Haunted Tree", world.ComponentManager, position, "eviltree", ResourceLibrary.ResourceType.EvilSeed, data.GetData("Scale", 1.0f), "eviltreesprout"));
            RegisterEntity("Haunted Tree Sprout", (position, data) => new Seedling(world.ComponentManager, "Haunted Tree", position, "eviltreesprout", 12));

            RegisterEntity("Pine Tree", (position, data) => new Tree("Pine Tree", world.ComponentManager, position, "pine", ResourceLibrary.ResourceType.PineCone, data.GetData("Scale", 1.0f), "pinesprout"));
            RegisterEntity("Pine Tree Sprout", (position, data) => new Seedling(world.ComponentManager, "Pine Tree", position, "pinesprout", 12));
            RegisterEntity("Snow Pine Tree", (position, data) => new Tree("Pine Tree", world.ComponentManager, position, "snowpine", ResourceLibrary.ResourceType.PineCone, data.GetData("Scale", 1.0f), "pinesprout"));
            RegisterEntity("Snow Pine Tree Sprout", (position, data) => new Seedling(world.ComponentManager, "Snow Pine Tree", position, "pinesprout", 12));

            RegisterEntity("Candycane", (position, data) => new Tree("Candycane", world.ComponentManager, position, "candycane", ResourceLibrary.ResourceType.Peppermint, data.GetData("Scale", 1.0f), "candycanesprout", false));
            RegisterEntity("Candycane Sprout", (position, data) => new Seedling(world.ComponentManager, "Candycane", position, "candycanesprout", 12));

            RegisterEntity("Palm Tree", (position, data) => new Tree("Palm Tree", world.ComponentManager, position, "palm", ResourceLibrary.ResourceType.Coconut, data.GetData("Scale", 1.0f), "palmsprout"));
            RegisterEntity("Palm Tree Sprout", (position, data) => new Seedling(world.ComponentManager, "Palm Tree", position, "palmsprout", 12));

            RegisterEntity("Apple Tree", (position, data) => new Tree("Apple Tree", world.ComponentManager, position, "appletree", ResourceLibrary.ResourceType.Apple, data.GetData("Scale", 1.0f), "appletreesprout"));
            RegisterEntity("Apple Tree Sprout", (position, data) => new Seedling(world.ComponentManager, "Apple Tree", position, "appletreesprout", 12));

            RegisterEntity("Cactus", (position, data) => new Cactus(world.ComponentManager, position, "cactus", data.GetData("Scale", 1.0f)));
            RegisterEntity("Cactus Sprout", (position, data) => new Seedling(world.ComponentManager, "Cactus", position, "cactussprout", 12));

            RegisterEntity("Pumpkin", (position, data) => new Pumpkin(world.ComponentManager, position, "pumpkinvine", data.GetData("Scale", 1.0f)));
            RegisterEntity("Pumpkin Sprout", (position, data) => new Seedling(world.ComponentManager, "Pumpkin", position, "pumpkinvinesprout", 12));

            RegisterEntity("Berry Bush", (position, data) => new Bush(world.ComponentManager, position, "berrybush", data.GetData("Scale", 1.0f)));
            RegisterEntity("Berry Bush Sprout", (position, data) => new Seedling(world.ComponentManager, "Berry Bush", position, "berrybushsprout", 12));

            RegisterEntity("Bird", (position, data) => new Bird(ContentPaths.Entities.Animals.Birds.GetRandomBird(), position, world.ComponentManager, "Bird"));
            RegisterEntity("Bat", (position, data) => new Bat(world.ComponentManager, position));
            RegisterEntity("Scorpion", (position, data) => new Scorpion(ContentPaths.Entities.Animals.Scorpion.scorption_animation, position, world.ComponentManager, "Scorpion"));
            RegisterEntity("Spider", (position, data) => new Spider(world.ComponentManager, ContentPaths.Entities.Animals.Spider.spider_animation, position));
            RegisterEntity("Frog", (position, data) => new Frog(ContentPaths.Entities.Animals.Frog.frog0_animation, position, world.ComponentManager, "Frog"));
            RegisterEntity("Tree Frog", (position, data) => new Frog(ContentPaths.Entities.Animals.Frog.frog1_animation, position, world.ComponentManager, "Frog"));
            RegisterEntity("Brown Rabbit", (position, data) => new Rabbit(ContentPaths.Entities.Animals.Rabbit.rabbit0_animation, position, world.ComponentManager, "Brown Rabbit"));
            RegisterEntity("White Rabbit", (position, data) => new Rabbit(ContentPaths.Entities.Animals.Rabbit.rabbit1_animation, position, world.ComponentManager, "White Rabbit"));
            RegisterEntity("Deer", (position, data) => new Deer(ContentPaths.Entities.Animals.Deer.deer, position, world.ComponentManager, "Deer"));
            RegisterEntity("Dwarf", (position, data) => GenerateDwarf(position, world.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, world.ChunkManager, world.Camera, world.PlayerFaction, world.PlanService, "Player", JobLibrary.Classes[JobLibrary.JobType.Worker], 0));
            //RegisterEntity("TestDwarf", (position, data) => GenerateTestDwarf(position));
            //RegisterEntity("TestGoblin", (position, data) => GenerateTestGoblin(position));
            //RegisterEntity("TestSkeleton", (position, data) => GenerateTestSeketon(position));
            //RegisterEntity("TestMoleman", (position, data) => GenerateTestMoleman(position));
            RegisterEntity("AxeDwarf", (position, data) => GenerateDwarf(position, world.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, world.ChunkManager, world.Camera, world.PlayerFaction, world.PlanService, "Player", JobLibrary.Classes[JobLibrary.JobType.AxeDwarf], 0));
            RegisterEntity("CraftsDwarf", (position, data) => GenerateDwarf(position, world.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, world.ChunkManager, world.Camera, world.PlayerFaction, world.PlanService, "Player", JobLibrary.Classes[JobLibrary.JobType.CraftsDwarf], 0));
            RegisterEntity("Wizard", (position, data) => GenerateDwarf(position, world.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, world.ChunkManager, world.Camera, world.PlayerFaction, world.PlanService, "Player", JobLibrary.Classes[JobLibrary.JobType.Wizard], 0));
            RegisterEntity("MusketDwarf", (position, data) => GenerateDwarf(position, world.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, world.ChunkManager, world.Camera, world.PlayerFaction, world.PlanService, "Player", JobLibrary.Classes[JobLibrary.JobType.MusketDwarf], 0));
            RegisterEntity("Moleman", (position, data) => GenerateMoleman(position, world.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, world.ChunkManager, world.Camera, World.Factions.Factions["Molemen"], world.PlanService, "Molemen"));
            RegisterEntity("Goblin", (position, data) => GenerateGoblin(position, world.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, world.ChunkManager, world.Camera, World.Factions.Factions["Goblins"], world.PlanService, "Goblins"));
            RegisterEntity("Skeleton", (position, data) => GenerateSkeleton(position, world.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, world.ChunkManager, world.Camera, World.Factions.Factions["Undead"], world.PlanService, "Undead"));
            RegisterEntity("Necromancer", (position, data) => GenerateNecromancer(position, world.ComponentManager, GameState.Game.Content, GameState.Game.GraphicsDevice, world.ChunkManager, world.Camera, World.Factions.Factions["Undead"], world.PlanService, "Undead"));
            RegisterEntity("Bed", (position, data) => new Bed(world.ComponentManager, position));
            RegisterEntity("Barrel", (position, data) => new Barrel(world.ComponentManager, position));
            RegisterEntity("Bear Trap", (position, data) => new BearTrap(world.ComponentManager, position));
            RegisterEntity("Lamp", (position, data) => new Lamp(world.ComponentManager, position));
            RegisterEntity("Table", (position, data) => new Table(world.ComponentManager, position));
            RegisterEntity("Chair", (position, data) => new Chair(world.ComponentManager, position));
            RegisterEntity("Flag", (position, data) => new Flag(world.ComponentManager, position, world.PlayerCompany.Information));

            RegisterEntity("Mushroom", (position, data) => new Mushroom(world.ComponentManager, position, ContentPaths.Entities.Plants.mushroom, ResourceLibrary.ResourceType.Mushroom, 2, false, "mushroomsprout"));
            RegisterEntity("Mushroom Sprout", (position, data) => new Seedling(world.ComponentManager, "Mushroom", position, "mushroomsprout", 12));

            RegisterEntity("Cave Mushroom", (position, data) => new Mushroom(world.ComponentManager, position, ContentPaths.Entities.Plants.caveshroom, ResourceLibrary.ResourceType.CaveMushroom, 4, true, "caveshroomsprout"));
            RegisterEntity("Cave Mushroom Sprout", (position, data) => new Seedling(world.ComponentManager, "Cave Mushroom", position, "caveshroomsprout", 12));

            RegisterEntity("Wheat", (position, data) => new Wheat(world.ComponentManager, position));
            RegisterEntity("Wheat Sprout", (position, data) => new Seedling(world.ComponentManager, "Wheat", position, "wheatsprout", 12));


            RegisterEntity("Kitchen Table", (position, data) => new Table(world.ComponentManager, position, new SpriteSheet(ContentPaths.Entities.Furniture.interior_furniture, 32), new Point(0, 7))
            {
                Tags = new List <string>()
                {
                    "Cutting Board"
                }
            });
            RegisterEntity("Books", (position, data) => new Table(world.ComponentManager, position, new SpriteSheet(ContentPaths.Entities.Furniture.interior_furniture, 32), new Point(0, 4))
            {
                Tags = new List <string>()
                {
                    "Research"
                }, Battery = new Table.ManaBattery()
                {
                    Charge = 0.0f, MaxCharge = 100.0f
                }
            });
            RegisterEntity("Potions", (position, data) => new Table(world.ComponentManager, position, new SpriteSheet(ContentPaths.Entities.Furniture.interior_furniture, 32), new Point(1, 4))
            {
                Tags = new List <string>()
                {
                    "Research"
                }, Battery = new Table.ManaBattery()
                {
                    Charge = 0.0f, MaxCharge = 100.0f
                }
            });
            RegisterEntity("Anvil", (position, data) => new Anvil(world.ComponentManager, position));
            RegisterEntity("Forge", (position, data) => new Forge(world.ComponentManager, position));
            RegisterEntity("Elf", (position, data) => GenerateElf(world, position, World.Factions.Factions["Elf"], "Elf"));
            RegisterEntity("Demon", (position, data) => GenerateDemon(world, position, World.Factions.Factions["Demon"], "Demon"));
            RegisterEntity("Arrow", (position, data) => new ArrowProjectile(world.ComponentManager, position, data.GetData("Velocity", Vector3.Up * 10 + MathFunctions.RandVector3Box(-10, 10, 0, 0, -10, 10)), data.GetData <Body>("Target", null)));
            RegisterEntity("Bullet", (position, data) => new BulletProjectile(world.ComponentManager, position, data.GetData("Velocity", Vector3.Up * 10 + MathFunctions.RandVector3Box(-10, 10, 0, 0, -10, 10)), data.GetData <Body>("Target", null)));
            RegisterEntity("Web", (position, data) => new WebProjectile(world.ComponentManager, position, data.GetData("Velocity", Vector3.Up * 10 + MathFunctions.RandVector3Box(-10, 10, 0, 0, -10, 10)), data.GetData <Body>("Target", null)));
            RegisterEntity("Fireball", (position, data) => new FireballProjectile(world.ComponentManager, position, data.GetData("Velocity", Vector3.Up * 10 + MathFunctions.RandVector3Box(-10, 10, 0, 0, -10, 10)), data.GetData <Body>("Target", null)));
            RegisterEntity("Fairy", (position, data) => new Fairy(world.ComponentManager, "Player", position));
            RegisterEntity("Target", (position, data) => new Target(world.ComponentManager, position));
            RegisterEntity("Stove", (position, data) => new Stove(world.ComponentManager, position));
            RegisterEntity("Strawman", (position, data) =>
            {
                float value = (float)MathFunctions.Random.NextDouble();
                return(value < 0.33
                    ? (Body)(new Strawman(world.ComponentManager, position))
                    : (value < 0.66 ? (Body)(new WeightRack(world.ComponentManager, position)) : (Body)(new PunchingBag(world.ComponentManager, position))));
            });
            RegisterEntity("Snake", (position, data) =>
                           new Snake(false,
                                     position, world.ComponentManager, "Snake").Physics);
            RegisterEntity("Necrosnake", (position, data) =>
            {
                var snek = new Snake(true,
                                     position, world.ComponentManager, "Snake");
                snek.Attacks[0].DiseaseToSpread = "Necrorot";
                return(snek.Physics);
            });
            RegisterEntity("Bookshelf", (position, data) => new Bookshelf(world.ComponentManager, position)
            {
                Tags = new List <string>()
                {
                    "Research"
                }
            });
            RegisterEntity("Door", (position, data) => new Door(world.ComponentManager, position, World.PlayerFaction, data.GetData <List <ResourceAmount> >("Resources", new List <ResourceAmount>()
            {
                new ResourceAmount(ResourceLibrary.ResourceType.Wood)
            })));
            RegisterEntity("Ladder", (position, data) => new Ladder(world.ComponentManager, position, data.GetData <List <ResourceAmount> >("Resources", new List <ResourceAmount>()
            {
                new ResourceAmount(ResourceLibrary.ResourceType.Wood)
            })));
            RegisterEntity("RandTrinket", (position, data) => CreateRandomTrinket(world, position));
            RegisterEntity("RandFood", (position, data) => CreateRandomFood(world, position));
            RegisterEntity("Turret", (position, data) => new TurretTrap(world.ComponentManager, position, world.PlayerFaction));
            RegisterEntity("Snow Cloud", (position, data) => new Cloud(world.ComponentManager, 0.1f, 50, 40, position)
            {
                TypeofStorm = StormType.SnowStorm
            });
            RegisterEntity("Rain Cloud", (position, data) => new Cloud(world.ComponentManager, 0.1f, 50, 40, position)
            {
                TypeofStorm = StormType.RainStorm
            });
            RegisterEntity("Storm", (position, data) =>
            {
                Weather.CreateForecast(world.Time.CurrentDate, world.ChunkManager.Bounds, world, 3);
                Weather.CreateStorm(MathFunctions.RandVector3Cube() * 10, MathFunctions.Rand(0.05f, 1.0f), world);
                return(new Cloud(world.ComponentManager, 0.1f, 50, 40, position));
            });
            RegisterEntity("Chicken", (position, data) => new Chicken(position, world.ComponentManager, "Chicken", "Chicken"));
            RegisterEntity("Turkey", (position, data) => new Chicken(position, world.ComponentManager, "Turkey", "Turkey"));
            RegisterEntity("Penguin", (position, data) => new Chicken(position, world.ComponentManager, "Penguin", "Penguin"));
            RegisterEntity("MudGolem", (position, data) => new MudGolem(new CreatureStats(new MudGolemClass(), 0), "dirt_particle", "Carnivore", world.PlanService, World.Factions.Factions["Carnivore"], world.ComponentManager, "Mud Golem", position));
            RegisterEntity("SnowGolem", (position, data) => new MudGolem(new CreatureStats(new SnowGolemClass(), 0), "snow_particle", "Carnivore", world.PlanService, World.Factions.Factions["Carnivore"], world.ComponentManager, "Snow Golem", position));
            RegisterEntity("Mud", (position, data) => new MudProjectile(world.ComponentManager, position, data.GetData("Velocity", Vector3.Up * 10 + MathFunctions.RandVector3Box(-10, 10, 0, 0, -10, 10)), data.GetData <Body>("Target", null)));
            RegisterEntity("Snowball", (position, data) => new SnowballProjectile(world.ComponentManager, position, data.GetData("Velocity", Vector3.Up * 10 + MathFunctions.RandVector3Box(-10, 10, 0, 0, -10, 10)), data.GetData <Body>("Target", null)));
            RegisterEntity("Grave", (position, data) => new Grave(world.ComponentManager, position));
            RegisterEntity("Coins", (position, data) => new CoinPileFixture(world.ComponentManager, position));
        }