public void Initialize() { Physics.Orientation = Physics.OrientMode.RotateY; CreateSprite(Stats.CurrentClass, Manager); HasMeat = false; HasBones = false; Physics.AddChild(new EnemySensor(Manager, "EnemySensor", Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero)); Physics.AddChild(new CreatureAI(Manager, "Elf AI", Sensors, PlanService)); Attacks = new List <Attack>() { new Attack(Stats.CurrentClass.Attacks[0]) }; Physics.AddChild(new Inventory(Manager, "Inventory", Physics.BoundingBox.Extents(), Physics.LocalBoundingBoxOffset)); Physics.AddChild(Shadow.Create(0.75f, Manager)); Physics.Tags.Add("Elf"); Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 5, SoundToPlay = ContentPaths.Audio.Oscar.sfx_ic_elf_death }); Physics.AddChild(new Flammable(Manager, "Flames")); NoiseMaker.Noises["Hurt"] = new List <string> { ContentPaths.Audio.Oscar.sfx_ic_elf_hurt_1, ContentPaths.Audio.Oscar.sfx_ic_elf_hurt_2, }; Physics.AddChild(new MinimapIcon(Manager, new NamedImageFrame(ContentPaths.GUI.map_icons, 16, 1, 1))); Stats.FullName = TextGenerator.GenerateRandom("$elfname"); //Stats.LastName = TextGenerator.GenerateRandom("$elffamily"); Stats.Size = 4; AI.Movement.CanClimbWalls = true; AI.Movement.SetCost(MoveType.ClimbWalls, 50.0f); AI.Movement.SetSpeed(MoveType.ClimbWalls, 0.15f); AI.Movement.SetCan(MoveType.Dig, true); Species = "Elf"; }
public override void CreateCosmeticChildren(ComponentManager manager) { CreateSprite(ContentPaths.Entities.Demon.demon_animations, manager, 0.15f); Physics.AddChild(Shadow.Create(0.75f, manager)); Physics.AddChild(new MinimapIcon(Manager, new NamedImageFrame(ContentPaths.GUI.map_icons, 16, 3, 1))).SetFlag(Flag.ShouldSerialize, false); NoiseMaker = new NoiseMaker(); NoiseMaker.Noises["Hurt"] = new List <string> { ContentPaths.Audio.Oscar.sfx_ic_demon_hurt_1, ContentPaths.Audio.Oscar.sfx_ic_demon_hurt_2, }; NoiseMaker.Noises["Chew"] = new List <string> { ContentPaths.Audio.chew }; NoiseMaker.Noises["Jump"] = new List <string> { ContentPaths.Audio.Oscar.sfx_ic_demon_angered, }; NoiseMaker.Noises["Flap"] = new List <string> { ContentPaths.Audio.Oscar.sfx_ic_demon_flap_wings_1, ContentPaths.Audio.Oscar.sfx_ic_demon_flap_wings_2, ContentPaths.Audio.Oscar.sfx_ic_demon_flap_wings_3, }; NoiseMaker.Noises["Chirp"] = new List <string> { ContentPaths.Audio.Oscar.sfx_ic_demon_mumble_1, ContentPaths.Audio.Oscar.sfx_ic_demon_mumble_2, ContentPaths.Audio.Oscar.sfx_ic_demon_mumble_3, ContentPaths.Audio.Oscar.sfx_ic_demon_mumble_4, ContentPaths.Audio.Oscar.sfx_ic_demon_mumble_5, ContentPaths.Audio.Oscar.sfx_ic_demon_mumble_6, ContentPaths.Audio.Oscar.sfx_ic_demon_pleased, }; Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 5, SoundToPlay = ContentPaths.Audio.Oscar.sfx_ic_demon_death }).SetFlag(Flag.ShouldSerialize, false); base.CreateCosmeticChildren(manager); }
public void Initialize(SpriteSheet spriteSheet) { Physics.Orientation = Physics.OrientMode.RotateY; SpriteAssets = spriteSheet; CreateSprite(ContentPaths.Entities.Animals.Deer.animations, Manager); // Add sensor Physics.AddChild(new EnemySensor(Manager, "EnemySensor", Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero)); // Add AI Physics.AddChild(new PacingCreatureAI(Manager, "Deer AI", Sensors)); Attacks = new List<Attack>{new Attack("None", 0.0f, 0.0f, 0.0f, ContentPaths.Audio.Oscar.sfx_oc_deer_attack, ContentPaths.Effects.hit)}; Physics.AddChild(new Inventory(Manager, "Inventory", Physics.BoundingBox.Extents(), Physics.LocalBoundingBoxOffset)); // Shadow Physics.AddChild(Shadow.Create(0.75f, Manager)); // The bird will emit a shower of blood when it dies Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1, BoxTriggerTimes = 10, SoundToPlay = ContentPaths.Audio.Oscar.sfx_oc_deer_hurt_1 }); NoiseMaker.Noises["Hurt"] = new List<string>() { ContentPaths.Audio.Oscar.sfx_oc_deer_hurt_1 }; NoiseMaker.Noises["Chirp"] = new List<string>() { ContentPaths.Audio.Oscar.sfx_oc_deer_neutral_1, ContentPaths.Audio.Oscar.sfx_oc_deer_neutral_2 }; // The bird is flammable, and can die when exposed to fire. Physics.AddChild(new Flammable(Manager, "Flames")); // Tag the physics component with some information // that can be used later Physics.Tags.Add("Deer"); Physics.Tags.Add("Animal"); Physics.Tags.Add("DomesticAnimal"); Stats.FullName = TextGenerator.GenerateRandom("$firstname"); Stats.CurrentClass = new EmployeeClass() { Name = "Deer", Levels = new List<EmployeeClass.Level>() { new EmployeeClass.Level() { Index = 0, Name = "Deer"} } }; Species = "Deer"; CanReproduce = true; BabyType = "Deer"; }
public override void CreateCosmeticChildren(ComponentManager Manager) { var tex = new SpriteSheet(ContentPaths.Entities.Balloon.Sprites.balloon); var balloonSprite = AddChild(new SimpleSprite(Manager, "BALLOON", Matrix.Identity, tex, Point.Zero)) as SimpleSprite; balloonSprite.OrientationType = SimpleSprite.OrientMode.Spherical; balloonSprite.SetFlag(Flag.ShouldSerialize, false); balloonSprite.AutoSetWorldSize(); Matrix shadowTransform = Matrix.CreateRotationX((float)Math.PI * 0.5f); AddChild(Shadow.Create(1.0f, Manager)); AddChild(new MinimapIcon(Manager, new NamedImageFrame(ContentPaths.GUI.map_icons, 16, 2, 0))).SetFlag(Flag.ShouldSerialize, false); }
public static Shadow Create(float scale, ComponentManager Manager) { Matrix shadowTransform = Matrix.CreateRotationX((float)Math.PI * 0.5f); shadowTransform.Translation = new Vector3(0.0f, -0.5f, 0.0f); var shadow = new Shadow(Manager, "Shadow", shadowTransform, new SpriteSheet(ContentPaths.Effects.shadowcircle)) { GlobalScale = scale }; shadow.SetFlag(Flag.ShouldSerialize, false); return(shadow); }
public override void CreateCosmeticChildren(ComponentManager manager) { var spriteSheet = new SpriteSheet(SpriteAsset, 48, 48); var sprite = new CharacterSprite(manager, "Sprite", Matrix.CreateTranslation(0, 0.35f, 0)); var anims = Library.LoadNewLayeredAnimationFormat("Entities\\Animals\\Slimes\\slime-animations.json"); foreach (var anim in anims) { anim.Value.SpriteSheet = spriteSheet; } sprite.SetAnimations(anims); Physics.AddChild(sprite); sprite.SetFlag(Flag.ShouldSerialize, false); Physics.AddChild(Shadow.Create(0.3f, manager)); NoiseMaker = new NoiseMaker(); NoiseMaker.Noises.Add("chirp", new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_bird_neutral_1, ContentPaths.Audio.Oscar.sfx_oc_bird_neutral_2 }); NoiseMaker.Noises["Hurt"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_bird_hurt }; NoiseMaker.Noises["Lay Egg"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_bird_lay_egg }; Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1, SoundToPlay = ContentPaths.Audio.Oscar.sfx_oc_bird_hurt }).SetFlag(Flag.ShouldSerialize, false); base.CreateCosmeticChildren(manager); }
public override void CreateCosmeticChildren(ComponentManager manager) { CreateSprite(ContentPaths.Entities.Troll.troll_animation, manager, 0.15f); Physics.AddChild(Shadow.Create(0.75f, manager)); Physics.AddChild(new MinimapIcon(Manager, new NamedImageFrame(ContentPaths.GUI.map_icons, 16, 1, 3))).SetFlag(Flag.ShouldSerialize, false); NoiseMaker = new NoiseMaker(); NoiseMaker.Noises["Hurt"] = new List <string> { ContentPaths.Audio.Oscar.sfx_ic_goblin_angered, }; Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 3, SoundToPlay = ContentPaths.Audio.Oscar.sfx_ic_demon_hurt_1, }).SetFlag(Flag.ShouldSerialize, false); base.CreateCosmeticChildren(manager); }
public override void CreateCosmeticChildren(ComponentManager manager) { CreateSprite(ContentPaths.Entities.Animals.Bat.bat_animations, manager, 0.0f); Physics.AddChild(Shadow.Create(0.3f, manager)); NoiseMaker = new NoiseMaker(); NoiseMaker.Noises["Hurt"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_bat_hurt_1 }; NoiseMaker.Noises["Chirp"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_bat_neutral_1, ContentPaths.Audio.Oscar.sfx_oc_bat_neutral_2 }; Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1 }).SetFlag(Flag.ShouldSerialize, false); base.CreateCosmeticChildren(manager); }
public override void CreateCosmeticChildren(ComponentManager manager) { CreateSprite(ContentPaths.Entities.Skeleton.necro_animations, manager, 0.15f); Physics.AddChild(Shadow.Create(0.75f, manager)); Physics.AddChild(new MinimapIcon(Manager, new NamedImageFrame(ContentPaths.GUI.map_icons, 16, 2, 1))).SetFlag(Flag.ShouldSerialize, false); NoiseMaker = new NoiseMaker(); NoiseMaker.Noises["Hurt"] = new List <string> { ContentPaths.Audio.Oscar.sfx_ic_necromancer_angered, ContentPaths.Audio.skel1, ContentPaths.Audio.skel2 }; Physics.AddChild(new ParticleTrigger("sand_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 5, SoundToPlay = ContentPaths.Audio.Oscar.sfx_ic_necromancer_angered }).SetFlag(Flag.ShouldSerialize, false); base.CreateCosmeticChildren(manager); }
public static Shadow Create(float scale, ComponentManager Manager) { Matrix shadowTransform = Matrix.CreateRotationX((float)Math.PI * 0.5f); shadowTransform.Translation = new Vector3(0.0f, -0.5f, 0.0f); var shadow = new Shadow(Manager, "Shadow", shadowTransform, new SpriteSheet(ContentPaths.Effects.shadowcircle)) { GlobalScale = scale }; shadow.SetFlag(Flag.ShouldSerialize, false); List <Point> shP = new List <Point> { new Point(0, 0) }; var anim = new Animation(ContentPaths.Effects.shadowcircle, 32, 32, 0); shadow.AddAnimation(anim); anim.Play(); shadow.SetCurrentAnimation(anim.Name); return(shadow); }
/// <summary> /// Initialize function creates all the required components for the bat. /// </summary> public void Initialize() { // When true, causes the bird to face the direction its moving in Physics.Orientation = Physics.OrientMode.RotateY; CreateSprite(ContentPaths.Entities.Animals.Bat.bat_animations, Manager, 0.0f); // Used to sense hostile creatures Physics.AddChild(new EnemySensor(Manager, "EnemySensor", Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero)); // Controls the behavior of the creature Physics.AddChild(new BatAI(Manager, "Bat AI", Sensors, PlanService)); AI.Movement.CanFly = true; AI.Movement.CanSwim = false; AI.Movement.CanClimb = false; AI.Movement.CanWalk = false; // The bird can peck at its enemies (0.1 damage) Attacks = new List <Attack> { new Attack("Bite", 0.01f, 2.0f, 1.0f, ContentPaths.Audio.Oscar.sfx_oc_bat_attack_1, ContentPaths.Effects.bite) { TriggerMode = Attack.AttackTrigger.Animation, TriggerFrame = 1, Mode = Attack.AttackMode.Dogfight, DiseaseToSpread = "Rabies" } }; // The bird can hold one item at a time in its inventory Physics.AddChild(new Inventory(Manager, "Inventory", Physics.BoundingBox.Extents(), Physics.LocalBoundingBoxOffset)); Physics.AddChild(Shadow.Create(0.25f, Manager)); // The bird will emit a shower of blood when it dies Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1 }); // The bird is flammable, and can die when exposed to fire. Physics.AddChild(new Flammable(Manager, "Flames")); // Tag the physics component with some information // that can be used later Physics.Tags.Add("Bat"); Physics.Tags.Add("Animal"); Stats.FullName = TextGenerator.GenerateRandom("$firstname") + " the bat"; Stats.CurrentClass = new EmployeeClass() { Name = "Bat", Levels = new List <EmployeeClass.Level>() { new EmployeeClass.Level() { Index = 0, Name = "Bat" } }, }; NoiseMaker.Noises["Hurt"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_bat_hurt_1 }; NoiseMaker.Noises["Chirp"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_bat_neutral_1, ContentPaths.Audio.Oscar.sfx_oc_bat_neutral_2 }; Species = "Bat"; CanReproduce = true; BabyType = "Bat"; }
/// <summary> /// Initialize function creates all the required components for the bird. /// </summary> /// <param name="spriteSheet">The sprite sheet to use for the bird</param> public void Initialize(SpriteSheet spriteSheet) { // When true, causes the bird to face the direction its moving in Physics.Orientation = Physics.OrientMode.RotateY; // The dimensions of each frame in the sprite sheet (in pixels), as given by the readme const int frameWidth = 24; const int frameHeight = 16; // Create the sprite component for the bird. Sprite = new CharacterSprite (Graphics, Manager, "Bird Sprite", Physics, Matrix.CreateTranslation(0, 0.25f, 0) ); // Flying animation (rows 4 5 6 and 7) Sprite.AddAnimation(CharacterMode.Flying, OrientedAnimation.Orientation.Forward, spriteSheet, // animation will play at 15 FPS 15.0f, frameWidth, frameHeight, // animation begins at row 4 4, // It consists of columns 0, 1 and 2 looped forever 0, 1, 2); Sprite.AddAnimation(CharacterMode.Flying, OrientedAnimation.Orientation.Left, spriteSheet, 15.0f, frameWidth, frameHeight, 5, 0, 1, 2); Sprite.AddAnimation(CharacterMode.Flying, OrientedAnimation.Orientation.Right, spriteSheet, 15.0f, frameWidth, frameHeight, 6, 0, 1, 2); Sprite.AddAnimation(CharacterMode.Flying, OrientedAnimation.Orientation.Backward, spriteSheet, 15.0f, frameWidth, frameHeight, 7, 0, 1, 2); // Hopping animation (rows 0 1 2 and 3) Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Forward, spriteSheet, 5.0f, frameWidth, frameHeight, 0, 0, 1); Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Left, spriteSheet, 5.0f, frameWidth, frameHeight, 1, 0, 1); Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Right, spriteSheet, 5.0f, frameWidth, frameHeight, 2, 0, 1); Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Backward, spriteSheet, 5.0f, frameWidth, frameHeight, 3, 0, 1); // Idle animation (rows 0 1 2 and 3) Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Forward, spriteSheet, 5.0f, frameWidth, frameHeight, 0, 0); Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Left, spriteSheet, 5.0f, frameWidth, frameHeight, 1, 0); Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Right, spriteSheet, 5.0f, frameWidth, frameHeight, 2, 0); Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Backward, spriteSheet, 5.0f, frameWidth, frameHeight, 3, 0); // Used to grab other components Hands = new Grabber("hands", Physics, Matrix.Identity, new Vector3(0.1f, 0.1f, 0.1f), Vector3.Zero); // Used to sense hostile creatures Sensors = new EnemySensor(Manager, "EnemySensor", Physics, Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero); // Controls the behavior of the creature AI = new BirdAI(this, "Bird AI", Sensors, PlanService); // The bird can peck at its enemies (0.1 damage) Attacks = new List<Attack>{new Attack("Peck", 0.1f, 2.0f, 1.0f, ContentPaths.Audio.pick, ContentPaths.Effects.flash)}; // The bird can hold one item at a time in its inventory Inventory = new Inventory("Inventory", Physics) { Resources = new ResourceContainer { MaxResources = 1 } }; // The shadow is rotated 90 degrees along X, and is 0.25 blocks beneath the creature Matrix shadowTransform = Matrix.CreateRotationX((float)Math.PI * 0.5f); shadowTransform.Translation = new Vector3(0.0f, -0.25f, 0.0f); shadowTransform *= Matrix.CreateScale(0.75f); SpriteSheet shadowTexture = new SpriteSheet(ContentPaths.Effects.shadowcircle); Shadow = new Shadow(Manager, "Shadow", Physics, shadowTransform, shadowTexture); // We set up the shadow's animation so that it's just a static black circle // TODO: Make the shadow set this up automatically List<Point> shP = new List<Point> { new Point(0, 0) }; Animation shadowAnimation = new Animation(Graphics, new SpriteSheet(ContentPaths.Effects.shadowcircle), "sh", 32, 32, shP, false, Color.Black, 1, 0.7f, 0.7f, false); Shadow.AddAnimation(shadowAnimation); shadowAnimation.Play(); Shadow.SetCurrentAnimation("sh"); // The bird will emit a shower of blood when it dies DeathParticleTrigger = new ParticleTrigger("blood_particle", Manager, "Death Gibs", Physics, Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1 }; // The bird is flammable, and can die when exposed to fire. Flames = new Flammable(Manager, "Flames", Physics, this); // Tag the physics component with some information // that can be used later Physics.Tags.Add("Bird"); Physics.Tags.Add("Animal"); NoiseMaker.Noises.Add("chirp", new List<string>(){ContentPaths.Audio.bird}); Stats.FullName = TextGenerator.GenerateRandom("$firstname") + " the bird"; Stats.CurrentClass = new EmployeeClass() { Name = "Bird", Levels = new List<EmployeeClass.Level>() { new EmployeeClass.Level() { Index = 0, Name = "Bird" } } }; }
/// <summary> /// Initialize function creates all the required components for the bird. /// </summary> /// <param name="sprites">The sprite sheet to use for the bird</param> public void Initialize(string sprites) { SpriteAsset = sprites; HasBones = false; // When true, causes the bird to face the direction its moving in Physics.Orientation = Physics.OrientMode.RotateY; CreateSprite(sprites, Manager); // Used to grab other components Hands = Physics.AddChild(new Grabber("hands", Manager, Matrix.Identity, new Vector3(0.2f, 0.2f, 0.2f), Vector3.Zero)) as Grabber; // Used to sense hostile creatures Sensors = Physics.AddChild(new EnemySensor(Manager, "EnemySensor", Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero)) as EnemySensor; // Controls the behavior of the creature AI = Physics.AddChild(new PacingCreatureAI(Manager, "Spider AI", Sensors, PlanService)) as CreatureAI; // The bird can peck at its enemies (0.1 damage) Attacks = new List <Attack> { new Attack("Sting", 0.01f, 1.0f, 3.0f, SoundSource.Create(ContentPaths.Audio.Oscar.sfx_oc_giant_spider_attack_1, ContentPaths.Audio.Oscar.sfx_oc_giant_spider_attack_2), ContentPaths.Effects.bite), new Attack("Web", 0.0f, 1.0f, 5.0f, SoundSource.Create(ContentPaths.Audio.Oscar.sfx_oc_giant_spider_attack_1, ContentPaths.Audio.Oscar.sfx_oc_giant_spider_attack_2), ContentPaths.Effects.claw) { Mode = Attack.AttackMode.Ranged, LaunchSpeed = 10, ProjectileType = "Web" } }; // The bird can hold one item at a time in its inventory Inventory = Physics.AddChild(new Inventory(Manager, "Inventory", Physics.BoundingBox.Extents(), Physics.LocalBoundingBoxOffset)) as Inventory; Physics.AddChild(Shadow.Create(0.25f, Manager)); // The bird will emit a shower of blood when it dies Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1 }); // The bird is flammable, and can die when exposed to fire. Physics.AddChild(new Flammable(Manager, "Flames")); // Tag the physics component with some information // that can be used later Physics.Tags.Add("Spider"); Physics.Tags.Add("Animal"); Stats.FullName = TextGenerator.GenerateRandom("$firstname") + " the Spider"; Stats.CurrentClass = new EmployeeClass() { Name = "Spider", Levels = new List <EmployeeClass.Level>() { new EmployeeClass.Level() { Index = 0, Name = "Spider" } } }; NoiseMaker.Noises["Hurt"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_giant_spider_hurt_1 }; NoiseMaker.Noises["Chirp"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_giant_spider_neutral_1, ContentPaths.Audio.Oscar.sfx_oc_giant_spider_neutral_2 }; AI.Movement.CanClimbWalls = true; AI.Movement.CanSwim = false; Species = "Spider"; CanReproduce = true; BabyType = "Spider"; }
public void Initialize(EmployeeClass dwarfClass) { Gender = Mating.RandomGender(); Physics.Orientation = Physics.OrientMode.RotateY; CreateSprite(dwarfClass, Manager); Hands = Physics.AddChild(new Grabber("hands", Manager, Matrix.Identity, new Vector3(0.1f, 0.1f, 0.1f), Vector3.Zero)) as Grabber; Sensors = Physics.AddChild(new EnemySensor(Manager, "EnemySensor", Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero)) as EnemySensor; AI = Physics.AddChild(new CreatureAI(Manager, "Dwarf AI", Sensors, PlanService)) as CreatureAI; Attacks = new List <Attack>() { new Attack(Stats.CurrentClass.Attacks[0]) }; Inventory = Physics.AddChild(new Inventory(Manager, "Inventory", Physics.BoundingBox.Extents(), Physics.BoundingBoxPos)) as Inventory; Physics.Tags.Add("Dwarf"); Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1, BoxTriggerTimes = 10, SoundToPlay = ContentPaths.Entities.Dwarf.Audio.dwarfhurt1, }); Physics.AddChild(new Flammable(Manager, "Flames")); Physics.AddChild(Shadow.Create(0.75f, Manager)); NoiseMaker.Noises["Hurt"] = new List <string> { ContentPaths.Audio.Oscar.sfx_ic_dwarf_hurt_1, ContentPaths.Audio.Oscar.sfx_ic_dwarf_hurt_2, }; NoiseMaker.Noises["Ok"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_ok_1, ContentPaths.Audio.Oscar.sfx_ic_dwarf_ok_2, ContentPaths.Audio.Oscar.sfx_ic_dwarf_ok_3 }; NoiseMaker.Noises["Die"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_death }; NoiseMaker.Noises["Pleased"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_pleased }; NoiseMaker.Noises["Tantrum"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_tantrum_1, ContentPaths.Audio.Oscar.sfx_ic_dwarf_tantrum_2, ContentPaths.Audio.Oscar.sfx_ic_dwarf_tantrum_3, }; NoiseMaker.Noises["Jump"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_jump }; NoiseMaker.Noises["Climb"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_climb_1, ContentPaths.Audio.Oscar.sfx_ic_dwarf_climb_2, ContentPaths.Audio.Oscar.sfx_ic_dwarf_climb_3 }; MinimapIcon minimapIcon = Physics.AddChild(new MinimapIcon(Manager, new NamedImageFrame(ContentPaths.GUI.map_icons, 16, 0, 0))) as MinimapIcon; Stats.FullName = TextGenerator.GenerateRandom("$firstname", " ", "$lastname"); Stats.Size = 5; Stats.CanSleep = true; Stats.CanEat = true; AI.Movement.CanClimbWalls = true; AI.Movement.SetCost(MoveType.ClimbWalls, 50.0f); AI.Movement.SetSpeed(MoveType.ClimbWalls, 0.15f); AI.TriggersMourning = true; AI.Biography = Applicant.GenerateBiography(AI.Stats.FullName, Gender); Species = "Dwarf"; }
public Creature(Vector3 pos, CreatureDef def, string creatureClass, int creatureLevel, string faction) : this(new CreatureStats(EmployeeClass.Classes[creatureClass], creatureLevel), faction, PlayState.PlanService, PlayState.ComponentManager.Factions.Factions[faction], new Physics(def.Name, PlayState.ComponentManager.RootComponent, Matrix.CreateTranslation(pos), def.Size, new Vector3(0, -def.Size.Y * 0.5f, 0), def.Mass, 1.0f, 0.999f, 0.999f, Vector3.UnitY * -10, Physics.OrientMode.RotateY), PlayState.ChunkManager, GameState.Game.GraphicsDevice, GameState.Game.Content, def.Name) { HasMeat = true; HasBones = true; EmployeeClass employeeClass = EmployeeClass.Classes[creatureClass]; Physics.Orientation = Physics.OrientMode.RotateY; Sprite = new CharacterSprite(Graphics, Manager, "Sprite", Physics, Matrix.CreateTranslation(def.SpriteOffset)); foreach (Animation animation in employeeClass.Animations) { Sprite.AddAnimation(animation.Clone()); } Hands = new Grabber("hands", Physics, Matrix.Identity, new Vector3(0.1f, 0.1f, 0.1f), Vector3.Zero); Sensors = new EnemySensor(Manager, "EnemySensor", Physics, Matrix.Identity, def.SenseRange, Vector3.Zero); AI = new CreatureAI(this, "AI", Sensors, PlanService); Attacks = new List <Attack>(); foreach (Attack attack in employeeClass.Attacks) { Attacks.Add(new Attack(attack)); } Inventory = new Inventory("Inventory", Physics) { Resources = new ResourceContainer { MaxResources = def.InventorySize } }; if (def.HasShadow) { Matrix shadowTransform = Matrix.CreateRotationX((float)Math.PI * 0.5f); shadowTransform.Translation = new Vector3(0.0f, -0.5f, 0.0f); Shadow = new Shadow(Manager, "Shadow", Physics, shadowTransform, new SpriteSheet(ContentPaths.Effects.shadowcircle)) { GlobalScale = def.ShadowScale }; List <Point> shP = new List <Point> { new Point(0, 0) }; Animation shadowAnimation = new Animation(Graphics, new SpriteSheet(ContentPaths.Effects.shadowcircle), "sh", 32, 32, shP, false, Color.Black, 1, 0.7f, 0.7f, false); Shadow.AddAnimation(shadowAnimation); shadowAnimation.Play(); Shadow.SetCurrentAnimation("sh"); } Physics.Tags.AddRange(def.Tags); DeathParticleTrigger = new ParticleTrigger(def.BloodParticle, Manager, "Death Gibs", Physics, Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1, BoxTriggerTimes = 10, SoundToPlay = ContentPaths.Entities.Dwarf.Audio.dwarfhurt1, }; if (def.IsFlammable) { Flames = new Flammable(Manager, "Flames", Physics, this); } NoiseMaker.Noises["Hurt"] = def.HurtSounds; NoiseMaker.Noises["Chew"] = new List <string>() { def.ChewSound }; NoiseMaker.Noises["Jump"] = new List <string>() { def.JumpSound }; MinimapIcon minimapIcon = new MinimapIcon(Physics, def.MinimapIcon); Stats.FullName = TextGenerator.GenerateRandom(PlayState.ComponentManager.Factions.Races[def.Race].NameTemplates); Stats.CanSleep = def.CanSleep; Stats.CanEat = def.CanEat; AI.TriggersMourning = def.TriggersMourning; }
public void Initialize(EmployeeClass dwarfClass) { Physics.Orientation = Physics.OrientMode.RotateY; Sprite = new CharacterSprite(Graphics, Manager, "Dwarf Sprite", Physics, Matrix.CreateTranslation(new Vector3(0, 0.15f, 0))); foreach (Animation animation in dwarfClass.Animations) { Sprite.AddAnimation(animation.Clone()); } Sprite.SpriteSheet = Sprite.Animations.First().Value.SpriteSheet; Sprite.CurrentAnimation = Sprite.Animations.First().Value; Sprite.CurrentAnimation.NextFrame(); Hands = new Grabber("hands", Physics, Matrix.Identity, new Vector3(0.1f, 0.1f, 0.1f), Vector3.Zero); Sensors = new EnemySensor(Manager, "EnemySensor", Physics, Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero); AI = new CreatureAI(this, "Dwarf AI", Sensors, PlanService); Attacks = new List <Attack>() { new Attack(Stats.CurrentClass.Attacks[0]) }; Inventory = new Inventory("Inventory", Physics) { Resources = new ResourceContainer { MaxResources = 128 } }; Matrix shadowTransform = Matrix.CreateRotationX((float)Math.PI * 0.5f); shadowTransform.Translation = new Vector3(0.0f, -0.5f, 0.0f); Shadow = new Shadow(Manager, "Shadow", Physics, shadowTransform, new SpriteSheet(ContentPaths.Effects.shadowcircle)) { GlobalScale = 1.25f }; List <Point> shP = new List <Point> { new Point(0, 0) }; Animation shadowAnimation = new Animation(Graphics, new SpriteSheet(ContentPaths.Effects.shadowcircle), "sh", 32, 32, shP, false, Color.Black, 1, 0.7f, 0.7f, false); Shadow.AddAnimation(shadowAnimation); shadowAnimation.Play(); Shadow.SetCurrentAnimation("sh"); Physics.Tags.Add("Dwarf"); DeathParticleTrigger = new ParticleTrigger("blood_particle", Manager, "Death Gibs", Physics, Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1, BoxTriggerTimes = 10, SoundToPlay = ContentPaths.Entities.Dwarf.Audio.dwarfhurt1, }; Flames = new Flammable(Manager, "Flames", Physics, this); NoiseMaker.Noises["Hurt"] = new List <string> { ContentPaths.Entities.Dwarf.Audio.dwarfhurt1, ContentPaths.Entities.Dwarf.Audio.dwarfhurt2, ContentPaths.Entities.Dwarf.Audio.dwarfhurt3, ContentPaths.Entities.Dwarf.Audio.dwarfhurt4, }; NoiseMaker.Noises["Ok"] = new List <string>() { ContentPaths.Audio.ok0, ContentPaths.Audio.ok1, ContentPaths.Audio.ok2 }; NoiseMaker.Noises["Chew"] = new List <string> { ContentPaths.Audio.chew }; NoiseMaker.Noises["Jump"] = new List <string> { ContentPaths.Audio.jump }; MinimapIcon minimapIcon = new MinimapIcon(Physics, new ImageFrame(TextureManager.GetTexture(ContentPaths.GUI.map_icons), 16, 0, 0)); Stats.FullName = TextGenerator.GenerateRandom("$firstname", " ", "$lastname"); Stats.Size = 5; Stats.CanSleep = true; Stats.CanEat = true; AI.Movement.CanClimbWalls = true; AI.Movement.SetCost(MoveType.ClimbWalls, 50.0f); AI.Movement.SetSpeed(MoveType.ClimbWalls, 0.15f); AI.TriggersMourning = true; }
public override void CreateCosmeticChildren(ComponentManager Manager) { CreateSprite("Entities\\Animals\\Snake\\pumpking_animation.json", Manager, 0.35f); #region Create Tail Pieces Tail = new List <TailSegment>(); var tailAnimations = Library.LoadCompositeAnimationSet("Entities\\Animals\\Snake\\pumpking_tail_animation.json", "Pumpking"); for (int i = 0; i < 10; ++i) { var tailPiece = new CharacterSprite(Manager, "Sprite", Matrix.CreateTranslation(0, 0.5f, 0)); tailPiece.SetAnimations(tailAnimations); tailPiece.SetFlag(Flag.ShouldSerialize, false); tailPiece.Name = "Pumpking Tail"; Tail.Add( new TailSegment() { Sprite = Manager.RootComponent.AddChild(tailPiece) as GameComponent, Target = Physics.LocalTransform.Translation }); tailPiece.AddChild(new Shadow(Manager)); var inventory = tailPiece.AddChild(new Inventory(Manager, "Inventory", Physics.BoundingBox.Extents(), Physics.LocalBoundingBoxOffset)) as Inventory; inventory.SetFlag(Flag.ShouldSerialize, false); inventory.AddResource(new Resource("Pumpkin") { DisplayName = "Flesh of the Pumpking" }); } #endregion Physics.AddChild(Shadow.Create(0.75f, Manager)); Physics.AddChild(new MinimapIcon(Manager, new NamedImageFrame(ContentPaths.GUI.map_icons, 16, 2, 4))).SetFlag(Flag.ShouldSerialize, false); NoiseMaker = new NoiseMaker(); NoiseMaker.Noises["Hurt"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_giant_snake_hurt_1 }; NoiseMaker.Noises["Chirp"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_giant_snake_neutral_1, ContentPaths.Audio.Oscar.sfx_oc_giant_snake_neutral_2 }; Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1, BoxTriggerTimes = 10, SoundToPlay = ContentPaths.Audio.Oscar.sfx_oc_giant_snake_hurt_1, }).SetFlag(Flag.ShouldSerialize, false); base.CreateCosmeticChildren(Manager); }
public override void CreateCosmeticChildren(ComponentManager Manager) { CreateSprite(ContentPaths.Entities.Animals.Snake.snake_animation, Manager, 0.35f); #region Create Tail Pieces Tail = new List <TailSegment>(); var tailAnimations = Library.LoadCompositeAnimationSet(ContentPaths.Entities.Animals.Snake.tail_animation, "Necrosnake"); for (int i = 0; i < 10; ++i) { var tailPiece = new CharacterSprite(Manager, "Sprite", Matrix.CreateTranslation(0, 0.25f, 0)); tailPiece.SetAnimations(tailAnimations); tailPiece.SetFlag(Flag.ShouldSerialize, false); tailPiece.Name = "Snake Tail"; Tail.Add( new TailSegment() { Sprite = Manager.RootComponent.AddChild(tailPiece) as GameComponent, Target = Physics.LocalTransform.Translation }); tailPiece.AddChild(new Shadow(Manager)); var inventory = tailPiece.AddChild(new Inventory(Manager, "Inventory", Physics.BoundingBox.Extents(), Physics.LocalBoundingBoxOffset)) as Inventory; inventory.SetFlag(Flag.ShouldSerialize, false); { String type = Stats.CurrentClass.Name + " " + "Meat"; if (!Library.DoesResourceTypeExist(type)) { var r = Library.CreateResourceType(Library.GetResourceType("Meat")); r.Name = type; r.ShortName = type; Library.AddResourceType(r); } inventory.AddResource(new ResourceAmount(type, 1)); } { String type = Stats.CurrentClass.Name + " Bone"; if (!Library.DoesResourceTypeExist(type)) { var r = Library.CreateResourceType(Library.GetResourceType("Bone")); r.Name = type; r.ShortName = type; Library.AddResourceType(r); } inventory.AddResource(new ResourceAmount(type, 1)); } } #endregion Physics.AddChild(Shadow.Create(0.75f, Manager)); Physics.AddChild(new MinimapIcon(Manager, new NamedImageFrame(ContentPaths.GUI.map_icons, 16, 2, 4))).SetFlag(Flag.ShouldSerialize, false); NoiseMaker = new NoiseMaker(); NoiseMaker.Noises["Hurt"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_giant_snake_hurt_1 }; NoiseMaker.Noises["Chirp"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_giant_snake_neutral_1, ContentPaths.Audio.Oscar.sfx_oc_giant_snake_neutral_2 }; Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1, BoxTriggerTimes = 10, SoundToPlay = ContentPaths.Audio.Oscar.sfx_oc_giant_snake_hurt_1, }).SetFlag(Flag.ShouldSerialize, false); base.CreateCosmeticChildren(Manager); }
public void Initialize(SpriteSheet spriteSheet) { Physics.Orientation = Physics.OrientMode.RotateY; const int frameWidth = 48; const int frameHeight = 40; Sprite = new CharacterSprite (Graphics, Manager, "Deer Sprite", Physics, Matrix.CreateTranslation(Vector3.Up * 0.6f) ); // Add the idle animation Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Forward, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 0, 0); Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Left, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 1, 0); Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Right, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 2, 0); Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Backward, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 3, 0); // Add the running animation Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Forward, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 4, 0, 1, 2, 3); Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Left, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 5, 0, 1, 2, 3); Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Right, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 6, 0, 1, 2, 3); Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Backward, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 7, 0, 1, 2, 3); // Add the jumping animation Sprite.AddAnimation(CharacterMode.Jumping, OrientedAnimation.Orientation.Forward, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 8, 0, 1); Sprite.AddAnimation(CharacterMode.Jumping, OrientedAnimation.Orientation.Left, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 9, 0, 1); Sprite.AddAnimation(CharacterMode.Jumping, OrientedAnimation.Orientation.Right, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 10, 0, 1); Sprite.AddAnimation(CharacterMode.Jumping, OrientedAnimation.Orientation.Backward, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 11, 0, 1); // Add hands Hands = new Grabber("hands", Physics, Matrix.Identity, new Vector3(0.1f, 0.1f, 0.1f), Vector3.Zero); // Add sensor Sensors = new EnemySensor(Manager, "EnemySensor", Physics, Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero); // Add AI AI = new DeerAI(this, "Deer AI", Sensors, PlanService); Attacks = new List <Attack> { new Attack("None", 0.0f, 0.0f, 0.0f, ContentPaths.Audio.pick, ContentPaths.Effects.flash) }; Inventory = new Inventory("Inventory", Physics) { Resources = new ResourceContainer { MaxResources = 1 } }; // Shadow Matrix shadowTransform = Matrix.CreateRotationX((float)Math.PI * 0.5f); shadowTransform.Translation = new Vector3(0.0f, -.25f, 0.0f); SpriteSheet shadowTexture = new SpriteSheet(ContentPaths.Effects.shadowcircle); Shadow = new Shadow(Manager, "Shadow", Physics, shadowTransform, shadowTexture); List <Point> shP = new List <Point> { new Point(0, 0) }; Animation shadowAnimation = new Animation(Graphics, new SpriteSheet(ContentPaths.Effects.shadowcircle), "sh", 32, 32, shP, false, Color.Black, 1, 0.7f, 0.7f, false); Shadow.AddAnimation(shadowAnimation); shadowAnimation.Play(); Shadow.SetCurrentAnimation("sh"); // The bird will emit a shower of blood when it dies DeathParticleTrigger = new ParticleTrigger("blood_particle", Manager, "Death Gibs", Physics, Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1, BoxTriggerTimes = 10 }; // The bird is flammable, and can die when exposed to fire. Flames = new Flammable(Manager, "Flames", Physics, this); // Tag the physics component with some information // that can be used later Physics.Tags.Add("Deer"); Physics.Tags.Add("Animal"); Stats.FullName = TextGenerator.GenerateRandom("$firstname"); Stats.CurrentClass = new EmployeeClass() { Name = "Deer", Levels = new List <EmployeeClass.Level>() { new EmployeeClass.Level() { Index = 0, Name = "Deer" } } }; }
public void Initialize(EmployeeClass dwarfClass) { Stats.Gender = Mating.RandomGender(); Physics.Orientation = Physics.OrientMode.RotateY; CreateDwarfSprite(dwarfClass, Manager); Physics.AddChild(new EnemySensor(Manager, "EnemySensor", Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero)); Physics.AddChild(new CreatureAI(Manager, "Dwarf AI", Sensors, PlanService)); Attacks = new List <Attack>() { new Attack(Stats.CurrentClass.Attacks[0]) }; Physics.AddChild(new Inventory(Manager, "Inventory", Physics.BoundingBox.Extents(), Physics.LocalBoundingBoxOffset)); Physics.Tags.Add("Dwarf"); Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1, BoxTriggerTimes = 10, SoundToPlay = ContentPaths.Entities.Dwarf.Audio.dwarfhurt1, }); Physics.AddChild(new Flammable(Manager, "Flames")); Physics.AddChild(Shadow.Create(0.75f, Manager)); NoiseMaker.Noises["Hurt"] = new List <string> { ContentPaths.Audio.Oscar.sfx_ic_dwarf_hurt_1, ContentPaths.Audio.Oscar.sfx_ic_dwarf_hurt_2, }; NoiseMaker.Noises["Ok"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_ok_1, ContentPaths.Audio.Oscar.sfx_ic_dwarf_ok_2, ContentPaths.Audio.Oscar.sfx_ic_dwarf_ok_3 }; NoiseMaker.Noises["Die"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_death }; NoiseMaker.Noises["Pleased"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_pleased }; NoiseMaker.Noises["Tantrum"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_tantrum_1, ContentPaths.Audio.Oscar.sfx_ic_dwarf_tantrum_2, ContentPaths.Audio.Oscar.sfx_ic_dwarf_tantrum_3, }; NoiseMaker.Noises["Jump"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_jump }; NoiseMaker.Noises["Climb"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_climb_1, ContentPaths.Audio.Oscar.sfx_ic_dwarf_climb_2, ContentPaths.Audio.Oscar.sfx_ic_dwarf_climb_3 }; MinimapIcon minimapIcon = Physics.AddChild(new MinimapIcon(Manager, new NamedImageFrame(ContentPaths.GUI.map_icons, 16, 0, 0))) as MinimapIcon; Stats.FullName = TextGenerator.GenerateRandom("$firstname", " ", "$lastname"); Stats.Size = 5; Stats.CanSleep = true; Stats.CanEat = true; Stats.CanGetBored = true; AI.Movement.CanClimbWalls = true; // Why isn't this a flag like the below? AI.Movement.SetCan(MoveType.Teleport, true); AI.Movement.SetCost(MoveType.Teleport, 1.0f); AI.Movement.SetSpeed(MoveType.Teleport, 10.0f); AI.Movement.SetCost(MoveType.ClimbWalls, 50.0f); AI.Movement.SetSpeed(MoveType.ClimbWalls, 0.15f); AI.Movement.SetCan(MoveType.EnterVehicle, true); AI.Movement.SetCan(MoveType.ExitVehicle, true); AI.Movement.SetCan(MoveType.RideVehicle, true); AI.Movement.SetCost(MoveType.EnterVehicle, 1.0f); AI.Movement.SetCost(MoveType.ExitVehicle, 1.0f); AI.Movement.SetCost(MoveType.RideVehicle, 0.01f); AI.Movement.SetSpeed(MoveType.RideVehicle, 3.0f); AI.Movement.SetSpeed(MoveType.EnterVehicle, 1.0f); AI.Movement.SetSpeed(MoveType.ExitVehicle, 1.0f); if (AI.Stats.IsTaskAllowed(Task.TaskCategory.Dig)) { AI.Movement.SetCan(MoveType.Dig, true); } AI.TriggersMourning = true; AI.Biography = Applicant.GenerateBiography(AI.Stats.FullName, Stats.Gender); Species = "Dwarf"; Status.Money = (decimal)MathFunctions.Rand(0, 150); Physics.AddChild(new VoxelRevealer(Manager, Physics, 5)).SetFlag(Flag.ShouldSerialize, false); Physics.AddChild(new DwarfThoughts(Manager, "Thoughts")); }
public Creature(Vector3 pos, CreatureDef def, string creatureClass, int creatureLevel, string faction) : this(new CreatureStats(EmployeeClass.Classes[creatureClass], creatureLevel), faction, PlayState.PlanService, PlayState.ComponentManager.Factions.Factions[faction], new Physics(def.Name, PlayState.ComponentManager.RootComponent, Matrix.CreateTranslation(pos), def.Size, new Vector3(0, -def.Size.Y * 0.5f, 0), def.Mass, 1.0f, 0.999f, 0.999f, Vector3.UnitY * -10, Physics.OrientMode.RotateY), PlayState.ChunkManager, GameState.Game.GraphicsDevice, GameState.Game.Content, def.Name) { EmployeeClass employeeClass = EmployeeClass.Classes[creatureClass]; Physics.Orientation = Physics.OrientMode.RotateY; Sprite = new CharacterSprite(Graphics, Manager, "Sprite", Physics, Matrix.CreateTranslation(def.SpriteOffset)); foreach (Animation animation in employeeClass.Animations) { Sprite.AddAnimation(animation.Clone()); } Hands = new Grabber("hands", Physics, Matrix.Identity, new Vector3(0.1f, 0.1f, 0.1f), Vector3.Zero); Sensors = new EnemySensor(Manager, "EnemySensor", Physics, Matrix.Identity, def.SenseRange, Vector3.Zero); AI = new CreatureAI(this, "AI", Sensors, PlanService); Attacks = new List<Attack>(); foreach (Attack attack in employeeClass.Attacks) { Attacks.Add(new Attack(attack)); } Inventory = new Inventory("Inventory", Physics) { Resources = new ResourceContainer { MaxResources = def.InventorySize } }; if (def.HasShadow) { Matrix shadowTransform = Matrix.CreateRotationX((float) Math.PI*0.5f); shadowTransform.Translation = new Vector3(0.0f, -0.5f, 0.0f); Shadow = new Shadow(Manager, "Shadow", Physics, shadowTransform, new SpriteSheet(ContentPaths.Effects.shadowcircle)) { GlobalScale = def.ShadowScale }; List<Point> shP = new List<Point> { new Point(0, 0) }; Animation shadowAnimation = new Animation(Graphics, new SpriteSheet(ContentPaths.Effects.shadowcircle), "sh", 32, 32, shP, false, Color.Black, 1, 0.7f, 0.7f, false); Shadow.AddAnimation(shadowAnimation); shadowAnimation.Play(); Shadow.SetCurrentAnimation("sh"); } Physics.Tags.AddRange(def.Tags); DeathParticleTrigger = new ParticleTrigger(def.BloodParticle, Manager, "Death Gibs", Physics, Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1, BoxTriggerTimes = 10, SoundToPlay = ContentPaths.Entities.Dwarf.Audio.dwarfhurt1, }; if (def.IsFlammable) { Flames = new Flammable(Manager, "Flames", Physics, this); } NoiseMaker.Noises["Hurt"] = def.HurtSounds; NoiseMaker.Noises["Chew"] = new List<string>() {def.ChewSound}; NoiseMaker.Noises["Jump"] = new List<string>() {def.JumpSound}; MinimapIcon minimapIcon = new MinimapIcon(Physics, def.MinimapIcon); Stats.FullName = TextGenerator.GenerateRandom(PlayState.ComponentManager.Factions.Races[def.Race].NameTemplates); Stats.CanSleep = def.CanSleep; Stats.CanEat = def.CanEat; AI.TriggersMourning = def.TriggersMourning; }
public Bird(string sprites, Vector3 position, ComponentManager manager, string name) : base ( manager, new CreatureStats { Dexterity = 6, Constitution = 1, Strength = 1, Wisdom = 1, Charisma = 1, Intelligence = 1, Size = 0.25f, CanSleep = false, LaysEggs = true, IsMigratory = true }, "Herbivore", manager.World.PlanService, manager.World.Factions.Factions["Herbivore"], name ) { Physics = new Physics ( manager, "A Bird", Matrix.CreateTranslation(position), new Vector3(0.25f, 0.25f, 0.25f), new Vector3(0.0f, 0.0f, 0.0f), 1.0f, 1.0f, 0.999f, 0.999f, new Vector3(0, -10, 0) ); Physics.Orientation = Physics.OrientMode.RotateY; Physics.AddChild(this); SpriteAsset = sprites; BaseMeatResource = "Bird Meat"; CreateSprite(ContentPaths.Entities.Animals.Birds.GetBirdAnimations(SpriteAsset), Manager, 0.35f); // Used to sense hostile creatures Physics.AddChild(new EnemySensor(Manager, "EnemySensor", Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero)); // Controls the behavior of the creature Physics.AddChild(new BirdAI(Manager, "Bird AI", Sensors)); // The bird can peck at its enemies (0.1 damage) Attacks = new List <Attack> { new Attack("Peck", 0.1f, 2.0f, 1.0f, SoundSource.Create(ContentPaths.Audio.Oscar.sfx_oc_bird_attack), ContentPaths.Effects.pierce) { Mode = Attack.AttackMode.Dogfight } }; // The bird can hold one item at a time in its inventory Physics.AddChild(new Inventory(Manager, "Inventory", Physics.BoundingBox.Extents(), Physics.LocalBoundingBoxOffset)); Physics.AddChild(Shadow.Create(0.25f, Manager)); // The bird will emit a shower of blood when it dies Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1, SoundToPlay = ContentPaths.Audio.Oscar.sfx_oc_bird_hurt }); // The bird is flammable, and can die when exposed to fire. Physics.AddChild(new Flammable(Manager, "Flames")); // Tag the physics component with some information // that can be used later Physics.Tags.Add("Bird"); Physics.Tags.Add("Animal"); Physics.Tags.Add("DomesticAnimal"); NoiseMaker.Noises.Add("chirp", new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_bird_neutral_1, ContentPaths.Audio.Oscar.sfx_oc_bird_neutral_2 }); NoiseMaker.Noises["Hurt"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_bird_hurt }; NoiseMaker.Noises["Lay Egg"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_bird_lay_egg }; Stats.FullName = TextGenerator.GenerateRandom("$firstname") + " the bird"; Stats.CurrentClass = new EmployeeClass() { Name = "Bird", Levels = new List <EmployeeClass.Level>() { new EmployeeClass.Level() { Index = 0, Name = "Bird" } } }; AI.Movement.CanFly = true; AI.Movement.CanWalk = false; AI.Movement.CanClimb = false; Species = "Bird"; }
public void Initialize() { Physics.Orientation = Physics.OrientMode.RotateY; Sprite = new CharacterSprite(Graphics, Manager, "Goblin Sprite", Physics, Matrix.CreateTranslation(new Vector3(0, 0.1f, 0))); foreach (Animation animation in Stats.CurrentClass.Animations) { Sprite.AddAnimation(animation.Clone()); } HasMeat = false; HasBones = false; Hands = new Grabber("hands", Physics, Matrix.Identity, new Vector3(0.1f, 0.1f, 0.1f), Vector3.Zero); Sensors = new EnemySensor(Manager, "EnemySensor", Physics, Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero); AI = new CreatureAI(this, "Goblin AI", Sensors, PlanService); Attacks = new List <Attack>() { new Attack(Stats.CurrentClass.Attacks[0]) }; Inventory = new Inventory("Inventory", Physics) { Resources = new ResourceContainer { MaxResources = 16 } }; Matrix shadowTransform = Matrix.CreateRotationX((float)Math.PI * 0.5f); shadowTransform.Translation = new Vector3(0.0f, -0.5f, 0.0f); SpriteSheet shadowTexture = new SpriteSheet(ContentPaths.Effects.shadowcircle); Shadow = new Shadow(Manager, "Shadow", Physics, shadowTransform, shadowTexture); List <Point> shP = new List <Point> { new Point(0, 0) }; Animation shadowAnimation = new Animation(Graphics, new SpriteSheet(ContentPaths.Effects.shadowcircle), "sh", 32, 32, shP, false, Color.Black, 1, 0.7f, 0.7f, false); Shadow.AddAnimation(shadowAnimation); shadowAnimation.Play(); Shadow.SetCurrentAnimation("sh"); Physics.Tags.Add("Goblin"); DeathParticleTrigger = new ParticleTrigger("blood_particle", Manager, "Death Gibs", Physics, Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 3, SoundToPlay = ContentPaths.Entities.Goblin.Audio.goblinhurt1 }; Flames = new Flammable(Manager, "Flames", Physics, this); NoiseMaker.Noises["Hurt"] = new List <string> { ContentPaths.Entities.Goblin.Audio.goblinhurt1, ContentPaths.Entities.Goblin.Audio.goblinhurt2, ContentPaths.Entities.Goblin.Audio.goblinhurt3, ContentPaths.Entities.Goblin.Audio.goblinhurt4, }; MinimapIcon minimapIcon = new MinimapIcon(Physics, new ImageFrame(TextureManager.GetTexture(ContentPaths.GUI.map_icons), 16, 3, 0)); NoiseMaker.Noises["Chew"] = new List <string> { ContentPaths.Audio.chew }; NoiseMaker.Noises["Jump"] = new List <string> { ContentPaths.Audio.jump }; Stats.FullName = TextGenerator.GenerateRandom("$goblinname"); //Stats.LastName = TextGenerator.GenerateRandom("$goblinfamily"); Stats.Size = 4; }
/// <summary> /// Initialize function creates all the required components for the bird. /// </summary> /// <param name="sprites">The sprite sheet to use for the bird</param> public void Initialize(string sprites) { SpriteAsset = sprites; // When true, causes the bird to face the direction its moving in Physics.Orientation = Physics.OrientMode.RotateY; CreateSprite(sprites, Manager); // Used to grab other components Hands = Physics.AddChild(new Grabber("hands", Manager, Matrix.Identity, new Vector3(0.1f, 0.1f, 0.1f), Vector3.Zero)) as Grabber; // Used to sense hostile creatures Sensors = Physics.AddChild(new EnemySensor(Manager, "EnemySensor", Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero)) as EnemySensor; // Controls the behavior of the creature AI = Physics.AddChild(new PacingCreatureAI(Manager, "Rabbit AI", Sensors, PlanService)) as CreatureAI; // The bird can peck at its enemies (0.1 damage) Attacks = new List <Attack> { new Attack("Bite", 0.01f, 2.0f, 1.0f, SoundSource.Create(ContentPaths.Audio.Oscar.sfx_oc_rabbit_attack), ContentPaths.Effects.bite) { DiseaseToSpread = "Rabies" } }; // The bird can hold one item at a time in its inventory Inventory = Physics.AddChild(new Inventory(Manager, "Inventory", Physics.BoundingBox.Extents(), Physics.BoundingBoxPos)) as Inventory; Physics.AddChild(Shadow.Create(0.25f, Manager)); // The bird will emit a shower of blood when it dies Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1 }); // The bird is flammable, and can die when exposed to fire. Physics.AddChild(new Flammable(Manager, "Flames")); // Tag the physics component with some information // that can be used later Physics.Tags.Add("Rabbit"); Physics.Tags.Add("Animal"); Physics.Tags.Add("DomesticAnimal"); Stats.FullName = TextGenerator.GenerateRandom("$firstname") + " the rabbit"; Stats.CurrentClass = new EmployeeClass() { Name = "Rabbit", Levels = new List <EmployeeClass.Level>() { new EmployeeClass.Level() { Index = 0, Name = "Rabbit" } } }; NoiseMaker.Noises["Hurt"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_rabbit_hurt_1, ContentPaths.Audio.Oscar.sfx_oc_rabbit_hurt_2 }; NoiseMaker.Noises["Chirp"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_rabbit_neutral_1, ContentPaths.Audio.Oscar.sfx_oc_rabbit_neutral_2 }; Species = "Rabbit"; CanReproduce = true; BabyType = Name; var deathParticleTrigger = Parent.EnumerateAll().OfType <ParticleTrigger>().FirstOrDefault(); if (deathParticleTrigger != null) { deathParticleTrigger.SoundToPlay = NoiseMaker.Noises["Hurt"][0]; } }
public void Initialize(EmployeeClass dwarfClass) { Physics.Orientation = Physics.OrientMode.RotateY; CreateSprite(Stats.CurrentClass, Manager); Sprite.LightsWithVoxels = false; Physics.AddChild(new EnemySensor(Manager, "EnemySensor", Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero)); Physics.AddChild(new CreatureAI(Manager, "Fairy AI", Sensors, PlanService)); Attacks = new List <Attack>() { new Attack(Stats.CurrentClass.Attacks[0]) }; Physics.AddChild(new Inventory(Manager, "Inventory", Physics.BoundingBox.Extents(), Physics.LocalBoundingBoxOffset)); Physics.AddChild(Shadow.Create(0.75f, Manager)); Physics.Tags.Add("Dwarf"); Physics.AddChild(new ParticleTrigger("star_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 5, SoundToPlay = ContentPaths.Audio.wurp, }); NoiseMaker.Noises["Hurt"] = new List <string> { ContentPaths.Audio.tinkle }; NoiseMaker.Noises["Chew"] = new List <string> { ContentPaths.Audio.tinkle }; NoiseMaker.Noises["Jump"] = new List <string> { ContentPaths.Audio.tinkle }; MinimapIcon minimapIcon = Physics.AddChild(new MinimapIcon(Manager, new NamedImageFrame(ContentPaths.GUI.map_icons, 16, 0, 0))) as MinimapIcon; //new LightEmitter("Light Emitter", Sprite, Matrix.Identity, Vector3.One, Vector3.One, 255, 150); Stats.FullName = TextGenerator.GenerateRandom("$firstname"); //Stats.LastName = "The Fairy"; Stats.CanSleep = false; Stats.CanEat = false; AI.Movement.CanClimbWalls = true; AI.Movement.CanFly = true; AI.Movement.SetCost(MoveType.Fly, 1.0f); AI.Movement.SetSpeed(MoveType.Fly, 1.0f); AI.Movement.SetCost(MoveType.ClimbWalls, 1.0f); AI.Movement.SetSpeed(MoveType.ClimbWalls, 1.0f); AI.Movement.SetCan(MoveType.Dig, true); Species = "Fairy"; }
/// <summary> /// Initialize function creates all the required components for the bird. /// </summary> /// <param name="spriteSheet">The sprite sheet to use for the bird</param> public void Initialize(SpriteSheet spriteSheet) { // When true, causes the bird to face the direction its moving in Physics.Orientation = Physics.OrientMode.RotateY; // The dimensions of each frame in the sprite sheet (in pixels), as given by the readme const int frameWidth = 24; const int frameHeight = 16; // Create the sprite component for the bird. Sprite = new CharacterSprite (Graphics, Manager, "Bird Sprite", Physics, Matrix.CreateTranslation(0, 0.25f, 0) ); // Flying animation (rows 4 5 6 and 7) Sprite.AddAnimation(CharacterMode.Flying, OrientedAnimation.Orientation.Forward, spriteSheet, // animation will play at 15 FPS 15.0f, frameWidth, frameHeight, // animation begins at row 4 4, // It consists of columns 0, 1 and 2 looped forever 0, 1, 2); Sprite.AddAnimation(CharacterMode.Flying, OrientedAnimation.Orientation.Left, spriteSheet, 15.0f, frameWidth, frameHeight, 5, 0, 1, 2); Sprite.AddAnimation(CharacterMode.Flying, OrientedAnimation.Orientation.Right, spriteSheet, 15.0f, frameWidth, frameHeight, 6, 0, 1, 2); Sprite.AddAnimation(CharacterMode.Flying, OrientedAnimation.Orientation.Backward, spriteSheet, 15.0f, frameWidth, frameHeight, 7, 0, 1, 2); // Hopping animation (rows 0 1 2 and 3) Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Forward, spriteSheet, 5.0f, frameWidth, frameHeight, 0, 0, 1); Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Left, spriteSheet, 5.0f, frameWidth, frameHeight, 1, 0, 1); Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Right, spriteSheet, 5.0f, frameWidth, frameHeight, 2, 0, 1); Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Backward, spriteSheet, 5.0f, frameWidth, frameHeight, 3, 0, 1); // Idle animation (rows 0 1 2 and 3) Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Forward, spriteSheet, 5.0f, frameWidth, frameHeight, 0, 0); Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Left, spriteSheet, 5.0f, frameWidth, frameHeight, 1, 0); Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Right, spriteSheet, 5.0f, frameWidth, frameHeight, 2, 0); Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Backward, spriteSheet, 5.0f, frameWidth, frameHeight, 3, 0); // Used to grab other components Hands = new Grabber("hands", Physics, Matrix.Identity, new Vector3(0.1f, 0.1f, 0.1f), Vector3.Zero); // Used to sense hostile creatures Sensors = new EnemySensor(Manager, "EnemySensor", Physics, Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero); // Controls the behavior of the creature AI = new BirdAI(this, "Bird AI", Sensors, PlanService); // The bird can peck at its enemies (0.1 damage) Attacks = new List <Attack> { new Attack("Peck", 0.1f, 2.0f, 1.0f, ContentPaths.Audio.pick, ContentPaths.Effects.flash) }; // The bird can hold one item at a time in its inventory Inventory = new Inventory("Inventory", Physics) { Resources = new ResourceContainer { MaxResources = 1 } }; // The shadow is rotated 90 degrees along X, and is 0.25 blocks beneath the creature Matrix shadowTransform = Matrix.CreateRotationX((float)Math.PI * 0.5f); shadowTransform.Translation = new Vector3(0.0f, -0.25f, 0.0f); shadowTransform *= Matrix.CreateScale(0.75f); SpriteSheet shadowTexture = new SpriteSheet(ContentPaths.Effects.shadowcircle); Shadow = new Shadow(Manager, "Shadow", Physics, shadowTransform, shadowTexture); // We set up the shadow's animation so that it's just a static black circle // TODO: Make the shadow set this up automatically List <Point> shP = new List <Point> { new Point(0, 0) }; Animation shadowAnimation = new Animation(Graphics, new SpriteSheet(ContentPaths.Effects.shadowcircle), "sh", 32, 32, shP, false, Color.Black, 1, 0.7f, 0.7f, false); Shadow.AddAnimation(shadowAnimation); shadowAnimation.Play(); Shadow.SetCurrentAnimation("sh"); // The bird will emit a shower of blood when it dies DeathParticleTrigger = new ParticleTrigger("blood_particle", Manager, "Death Gibs", Physics, Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1 }; // The bird is flammable, and can die when exposed to fire. Flames = new Flammable(Manager, "Flames", Physics, this); // Tag the physics component with some information // that can be used later Physics.Tags.Add("Bird"); Physics.Tags.Add("Animal"); NoiseMaker.Noises.Add("chirp", new List <string>() { ContentPaths.Audio.bird }); Stats.FullName = TextGenerator.GenerateRandom("$firstname") + " the bird"; Stats.CurrentClass = new EmployeeClass() { Name = "Bird", Levels = new List <EmployeeClass.Level>() { new EmployeeClass.Level() { Index = 0, Name = "Bird" } } }; }
/// <summary> /// Initialize function creates all the required components for the bird. /// </summary> /// <param name="spriteSheet">The sprite sheet to use for the bird</param> public void Initialize(string sprites) { // When true, causes the bird to face the direction its moving in Physics.Orientation = Physics.OrientMode.RotateY; // Create the sprite component for the bird. Sprite = new CharacterSprite (Graphics, Manager, "Frog Sprite", Physics, Matrix.CreateTranslation(0, 0.5f, 0) ); CompositeAnimation.Descriptor descriptor = FileUtils.LoadJsonFromString <CompositeAnimation.Descriptor>( ContentPaths.GetFileAsString(sprites)); List <CompositeAnimation> animations = descriptor.GenerateAnimations("Rabbit"); foreach (CompositeAnimation animation in animations) { Sprite.AddAnimation(animation); } // Used to grab other components Hands = new Grabber("hands", Physics, Matrix.Identity, new Vector3(0.2f, 0.2f, 0.2f), Vector3.Zero); // Used to sense hostile creatures Sensors = new EnemySensor(Manager, "EnemySensor", Physics, Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero); // Controls the behavior of the creature AI = new CreatureAI(this, "Rabbit AI", Sensors, PlanService); // The bird can peck at its enemies (0.1 damage) Attacks = new List <Attack> { new Attack("Bite", 0.01f, 2.0f, 1.0f, ContentPaths.Audio.frog, ContentPaths.Effects.flash) }; // The bird can hold one item at a time in its inventory Inventory = new Inventory("Inventory", Physics) { Resources = new ResourceContainer { MaxResources = 1 } }; // The shadow is rotated 90 degrees along X, and is 0.25 blocks beneath the creature Matrix shadowTransform = Matrix.CreateRotationX((float)Math.PI * 0.5f); shadowTransform.Translation = new Vector3(0.0f, -0.25f, 0.0f); shadowTransform *= Matrix.CreateScale(0.75f); SpriteSheet shadowTexture = new SpriteSheet(ContentPaths.Effects.shadowcircle); Shadow = new Shadow(Manager, "Shadow", Physics, shadowTransform, shadowTexture); // We set up the shadow's animation so that it's just a static black circle // TODO: Make the shadow set this up automatically List <Point> shP = new List <Point> { new Point(0, 0) }; Animation shadowAnimation = new Animation(Graphics, new SpriteSheet(ContentPaths.Effects.shadowcircle), "sh", 32, 32, shP, false, Color.Black, 1, 0.7f, 0.7f, false); Shadow.AddAnimation(shadowAnimation); shadowAnimation.Play(); Shadow.SetCurrentAnimation("sh"); // The bird will emit a shower of blood when it dies DeathParticleTrigger = new ParticleTrigger("blood_particle", Manager, "Death Gibs", Physics, Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1 }; // The bird is flammable, and can die when exposed to fire. Flames = new Flammable(Manager, "Flames", Physics, this); // Tag the physics component with some information // that can be used later Physics.Tags.Add("Frog"); Physics.Tags.Add("Animal"); Stats.FullName = TextGenerator.GenerateRandom("$firstname") + " the frog"; Stats.CurrentClass = new EmployeeClass() { Name = "Frog", Levels = new List <EmployeeClass.Level>() { new EmployeeClass.Level() { Index = 0, Name = "Frog" } } }; NoiseMaker.Noises.Add("Idle", new List <string>() { ContentPaths.Audio.frog }); NoiseMaker.Noises.Add("Hurt", new List <string>() { ContentPaths.Audio.frog }); }
public void Initialize(SpriteSheet spriteSheet) { Physics.Orientation = Physics.OrientMode.RotateY; const int frameWidth = 48; const int frameHeight = 40; Sprite = new CharacterSprite (Graphics, Manager, "Deer Sprite", Physics, Matrix.CreateTranslation(Vector3.Up * 0.6f) ); // Add the idle animation Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Forward, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 0, 0); Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Left, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 1, 0); Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Right, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 2, 0); Sprite.AddAnimation(CharacterMode.Idle, OrientedAnimation.Orientation.Backward, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 3, 0); // Add the running animation Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Forward, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 4, 0, 1, 2, 3); Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Left, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 5, 0, 1, 2, 3); Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Right, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 6, 0, 1, 2, 3); Sprite.AddAnimation(CharacterMode.Walking, OrientedAnimation.Orientation.Backward, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 7, 0, 1, 2, 3); // Add the jumping animation Sprite.AddAnimation(CharacterMode.Jumping, OrientedAnimation.Orientation.Forward, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 8, 0, 1); Sprite.AddAnimation(CharacterMode.Jumping, OrientedAnimation.Orientation.Left, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 9, 0, 1); Sprite.AddAnimation(CharacterMode.Jumping, OrientedAnimation.Orientation.Right, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 10, 0, 1); Sprite.AddAnimation(CharacterMode.Jumping, OrientedAnimation.Orientation.Backward, spriteSheet, ANIM_SPEED, frameWidth, frameHeight, 11, 0, 1); // Add hands Hands = new Grabber("hands", Physics, Matrix.Identity, new Vector3(0.1f, 0.1f, 0.1f), Vector3.Zero); // Add sensor Sensors = new EnemySensor(Manager, "EnemySensor", Physics, Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero); // Add AI AI = new DeerAI(this, "Deer AI", Sensors, PlanService); Attacks = new List<Attack>{new Attack("None", 0.0f, 0.0f, 0.0f, ContentPaths.Audio.pick, ContentPaths.Effects.flash)}; Inventory = new Inventory("Inventory", Physics) { Resources = new ResourceContainer { MaxResources = 1 } }; // Shadow Matrix shadowTransform = Matrix.CreateRotationX((float)Math.PI * 0.5f); shadowTransform.Translation = new Vector3(0.0f, -.25f, 0.0f); SpriteSheet shadowTexture = new SpriteSheet(ContentPaths.Effects.shadowcircle); Shadow = new Shadow(Manager, "Shadow", Physics, shadowTransform, shadowTexture); List<Point> shP = new List<Point> { new Point(0,0) }; Animation shadowAnimation = new Animation(Graphics, new SpriteSheet(ContentPaths.Effects.shadowcircle), "sh", 32, 32, shP, false, Color.Black, 1, 0.7f, 0.7f, false); Shadow.AddAnimation(shadowAnimation); shadowAnimation.Play(); Shadow.SetCurrentAnimation("sh"); // The bird will emit a shower of blood when it dies DeathParticleTrigger = new ParticleTrigger("blood_particle", Manager, "Death Gibs", Physics, Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1, BoxTriggerTimes = 10 }; // The bird is flammable, and can die when exposed to fire. Flames = new Flammable(Manager, "Flames", Physics, this); // Tag the physics component with some information // that can be used later Physics.Tags.Add("Deer"); Physics.Tags.Add("Animal"); Stats.FullName = TextGenerator.GenerateRandom("$firstname"); Stats.CurrentClass = new EmployeeClass() { Name = "Deer", Levels = new List<EmployeeClass.Level>() { new EmployeeClass.Level() { Index = 0, Name = "Deer"} } }; }
public override void CreateCosmeticChildren(ComponentManager manager) { CreateSprite(Stats.CurrentClass, manager); Physics.AddChild(Shadow.Create(0.75f, manager)); base.CreateCosmeticChildren(manager); }
public void Initialize() { Physics.Orientation = Physics.OrientMode.RotateY; Sprite = new CharacterSprite(Graphics, Manager, "Elf Sprite", Physics, Matrix.CreateTranslation(new Vector3(0, 0.35f, 0))); foreach (Animation animation in Stats.CurrentClass.Animations) { Sprite.AddAnimation(animation.Clone()); } Hands = new Grabber("hands", Physics, Matrix.Identity, new Vector3(0.1f, 0.1f, 0.1f), Vector3.Zero); Sensors = new EnemySensor(Manager, "EnemySensor", Physics, Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero); AI = new CreatureAI(this, "Elf AI", Sensors, PlanService); Attacks = new List<Attack>() { new Attack(Stats.CurrentClass.Attacks[0]) }; Inventory = new Inventory("Inventory", Physics) { Resources = new ResourceContainer { MaxResources = 16 } }; Matrix shadowTransform = Matrix.CreateRotationX((float)Math.PI * 0.5f); shadowTransform.Translation = new Vector3(0.0f, -0.5f, 0.0f); SpriteSheet shadowTexture = new SpriteSheet(ContentPaths.Effects.shadowcircle); Shadow = new Shadow(Manager, "Shadow", Physics, shadowTransform, shadowTexture); List<Point> shP = new List<Point> { new Point(0, 0) }; Animation shadowAnimation = new Animation(Graphics, new SpriteSheet(ContentPaths.Effects.shadowcircle), "sh", 32, 32, shP, false, Color.Black, 1, 0.7f, 0.7f, false); Shadow.AddAnimation(shadowAnimation); shadowAnimation.Play(); Shadow.SetCurrentAnimation("sh"); Physics.Tags.Add("Goblin"); DeathParticleTrigger = new ParticleTrigger("blood_particle", Manager, "Death Gibs", Physics, Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 5, SoundToPlay = ContentPaths.Entities.Goblin.Audio.goblinhurt1 }; Flames = new Flammable(Manager, "Flames", Physics, this); NoiseMaker.Noises["Hurt"] = new List<string> { ContentPaths.Entities.Goblin.Audio.goblinhurt1, ContentPaths.Entities.Goblin.Audio.goblinhurt2, ContentPaths.Entities.Goblin.Audio.goblinhurt3, ContentPaths.Entities.Goblin.Audio.goblinhurt4, }; MinimapIcon minimapIcon = new MinimapIcon(Physics, new ImageFrame(TextureManager.GetTexture(ContentPaths.GUI.map_icons), 16, 3, 0)); NoiseMaker.Noises["Chew"] = new List<string> { ContentPaths.Audio.chew }; NoiseMaker.Noises["Jump"] = new List<string> { ContentPaths.Audio.jump }; Stats.FullName = TextGenerator.GenerateRandom("$elfname"); //Stats.LastName = TextGenerator.GenerateRandom("$elffamily"); Stats.Size = 4; }
public override void CreateCosmeticChildren(ComponentManager manager) { CreateSprite(SpriteAsset, manager); Physics.AddChild(Shadow.Create(0.25f, manager)); base.CreateCosmeticChildren(manager); }
public override void CreateCosmeticChildren(ComponentManager manager) { CreateSprite(ContentPaths.Entities.Animals.Bat.bat_animations, manager, 0.0f); Physics.AddChild(Shadow.Create(0.3f, manager)); base.CreateCosmeticChildren(manager); }
/// <summary> /// Initialize function creates all the required components for the bird. /// </summary> /// <param name="sprites">The sprite sheet to use for the bird</param> public void Initialize(string sprites) { HasBones = false; // When true, causes the bird to face the direction its moving in Physics.Orientation = Physics.OrientMode.RotateY; SpriteAsset = sprites; CreateSprite(sprites, Manager, 0.35f); Physics.AddChild(Shadow.Create(0.3f, Manager)); // Used to sense hostile creatures Physics.AddChild(new EnemySensor(Manager, "EnemySensor", Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero)); // Controls the behavior of the creature Physics.AddChild(new PacingCreatureAI(Manager, "Scorpion AI", Sensors, PlanService)); // The bird can peck at its enemies (0.1 damage) Attacks = new List <Attack> { new Attack("Sting", 4.0f, 2.0f, 1.5f, SoundSource.Create(ContentPaths.Audio.Oscar.sfx_oc_scorpion_attack_1, ContentPaths.Audio.Oscar.sfx_oc_scorpion_attack_2), ContentPaths.Effects.pierce) { TriggerFrame = 2, TriggerMode = Attack.AttackTrigger.Animation } }; // The bird can hold one item at a time in its inventory Physics.AddChild(new Inventory(Manager, "Inventory", Physics.BoundingBox.Extents(), Physics.LocalBoundingBoxOffset)); // The bird will emit a shower of blood when it dies Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1 }); // The bird is flammable, and can die when exposed to fire. Physics.AddChild(new Flammable(Manager, "Flames")); // Tag the physics component with some information // that can be used later Physics.Tags.Add("Scorpion"); Physics.Tags.Add("Animal"); Stats.FullName = TextGenerator.GenerateRandom("$firstname") + " the Scorpion"; Stats.CurrentClass = new EmployeeClass() { Name = "Scorpion", Levels = new List <EmployeeClass.Level>() { new EmployeeClass.Level() { Index = 0, Name = "Scorpion" } } }; NoiseMaker.Noises["Hurt"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_scorpion_hurt_1 }; NoiseMaker.Noises["Chirp"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_oc_scorpion_neutral_1, ContentPaths.Audio.Oscar.sfx_oc_scorpion_neutral_2 }; AI.Movement.CanClimbWalls = true; AI.Movement.CanSwim = false; AI.Movement.SetSpeed(MoveType.Jump, 1.5f); AI.Movement.SetSpeed(MoveType.Climb, 1.5f); AI.Movement.SetCost(MoveType.Climb, 0.1f); Species = "Scorpion"; CanReproduce = true; BabyType = "Scorpion"; }
public void Initialize(EmployeeClass dwarfClass) { Physics.Orientation = Physics.OrientMode.RotateY; Sprite = new CharacterSprite(Graphics, Manager, "Dwarf Sprite", Physics, Matrix.CreateTranslation(new Vector3(0, 0.15f, 0))); foreach (Animation animation in dwarfClass.Animations) { Sprite.AddAnimation(animation.Clone()); } Sprite.SpriteSheet = Sprite.Animations.First().Value.SpriteSheet; Sprite.CurrentAnimation = Sprite.Animations.First().Value; Sprite.CurrentAnimation.NextFrame(); Hands = new Grabber("hands", Physics, Matrix.Identity, new Vector3(0.1f, 0.1f, 0.1f), Vector3.Zero); Sensors = new EnemySensor(Manager, "EnemySensor", Physics, Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero); AI = new CreatureAI(this, "Dwarf AI", Sensors, PlanService); Attacks = new List<Attack>() { new Attack(Stats.CurrentClass.Attacks[0]) }; Inventory = new Inventory("Inventory", Physics) { Resources = new ResourceContainer { MaxResources = 128 } }; Matrix shadowTransform = Matrix.CreateRotationX((float) Math.PI * 0.5f); shadowTransform.Translation = new Vector3(0.0f, -0.5f, 0.0f); Shadow = new Shadow(Manager, "Shadow", Physics, shadowTransform, new SpriteSheet(ContentPaths.Effects.shadowcircle)) { GlobalScale = 1.25f }; List<Point> shP = new List<Point> { new Point(0, 0) }; Animation shadowAnimation = new Animation(Graphics, new SpriteSheet(ContentPaths.Effects.shadowcircle), "sh", 32, 32, shP, false, Color.Black, 1, 0.7f, 0.7f, false); Shadow.AddAnimation(shadowAnimation); shadowAnimation.Play(); Shadow.SetCurrentAnimation("sh"); Physics.Tags.Add("Dwarf"); DeathParticleTrigger = new ParticleTrigger("blood_particle", Manager, "Death Gibs", Physics, Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1, BoxTriggerTimes = 10, SoundToPlay = ContentPaths.Entities.Dwarf.Audio.dwarfhurt1, }; Flames = new Flammable(Manager, "Flames", Physics, this); NoiseMaker.Noises["Hurt"] = new List<string> { ContentPaths.Entities.Dwarf.Audio.dwarfhurt1, ContentPaths.Entities.Dwarf.Audio.dwarfhurt2, ContentPaths.Entities.Dwarf.Audio.dwarfhurt3, ContentPaths.Entities.Dwarf.Audio.dwarfhurt4, }; NoiseMaker.Noises["Chew"] = new List<string> { ContentPaths.Audio.chew }; NoiseMaker.Noises["Jump"] = new List<string> { ContentPaths.Audio.jump }; MinimapIcon minimapIcon = new MinimapIcon(Physics, new ImageFrame(TextureManager.GetTexture(ContentPaths.GUI.map_icons), 16, 0, 0)); Stats.FullName = TextGenerator.GenerateRandom("$firstname", " ", "$lastname"); Stats.Size = 5; Stats.CanSleep = true; Stats.CanEat = true; AI.TriggersMourning = true; }
public override void CreateCosmeticChildren(ComponentManager manager) { CreateDwarfSprite(Stats.CurrentClass, manager); Physics.AddChild(Shadow.Create(0.75f, manager)); Physics.AddChild(new VoxelRevealer(manager, Physics, 5)).SetFlag(Flag.ShouldSerialize, false); Physics.AddChild(new MinimapIcon(Manager, new NamedImageFrame(ContentPaths.GUI.map_icons, 16, 0, 0))).SetFlag(Flag.ShouldSerialize, false); NoiseMaker = new NoiseMaker(); NoiseMaker.Noises["Hurt"] = new List <string> { ContentPaths.Audio.Oscar.sfx_ic_dwarf_hurt_1, ContentPaths.Audio.Oscar.sfx_ic_dwarf_hurt_2, }; NoiseMaker.Noises["Ok"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_ok_1, ContentPaths.Audio.Oscar.sfx_ic_dwarf_ok_2, ContentPaths.Audio.Oscar.sfx_ic_dwarf_ok_3 }; NoiseMaker.Noises["Die"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_death }; NoiseMaker.Noises["Pleased"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_pleased }; NoiseMaker.Noises["Tantrum"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_tantrum_1, ContentPaths.Audio.Oscar.sfx_ic_dwarf_tantrum_2, ContentPaths.Audio.Oscar.sfx_ic_dwarf_tantrum_3, }; NoiseMaker.Noises["Jump"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_jump }; NoiseMaker.Noises["Climb"] = new List <string>() { ContentPaths.Audio.Oscar.sfx_ic_dwarf_climb_1, ContentPaths.Audio.Oscar.sfx_ic_dwarf_climb_2, ContentPaths.Audio.Oscar.sfx_ic_dwarf_climb_3 }; Physics.AddChild(new ParticleTrigger("blood_particle", Manager, "Death Gibs", Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 1, BoxTriggerTimes = 10, SoundToPlay = ContentPaths.Entities.Dwarf.Audio.dwarfhurt1, }).SetFlag(Flag.ShouldSerialize, false); if (Equipment.HasValue(out var equipment) && GetRoot().GetComponent <DwarfSprites.LayeredCharacterSprite>().HasValue(out var sprite)) { equipment.AddLayersToSprite(sprite); } base.CreateCosmeticChildren(manager); }
public void Initialize(EmployeeClass dwarfClass) { Physics.Orientation = Physics.OrientMode.RotateY; Sprite = new CharacterSprite(Graphics, Manager, "Fairy Sprite", Physics, Matrix.CreateTranslation(new Vector3(0, 0.5f, 0))); foreach (Animation animation in dwarfClass.Animations) { Sprite.AddAnimation(animation.Clone()); } Sprite.LightsWithVoxels = false; Hands = new Grabber("hands", Physics, Matrix.Identity, new Vector3(0.1f, 0.1f, 0.1f), Vector3.Zero); Sensors = new EnemySensor(Manager, "EnemySensor", Physics, Matrix.Identity, new Vector3(20, 5, 20), Vector3.Zero); AI = new CreatureAI(this, "Fairy AI", Sensors, PlanService); Attacks = new List<Attack>() { new Attack(Stats.CurrentClass.Attacks[0]) }; Inventory = new Inventory("Inventory", Physics) { Resources = new ResourceContainer { MaxResources = 128 } }; Matrix shadowTransform = Matrix.CreateRotationX((float)Math.PI * 0.5f); shadowTransform.Translation = new Vector3(0.0f, -0.5f, 0.0f); Shadow = new Shadow(Manager, "Shadow", Physics, shadowTransform, new SpriteSheet(ContentPaths.Effects.shadowcircle)); List<Point> shP = new List<Point> { new Point(0, 0) }; Animation shadowAnimation = new Animation(Graphics, new SpriteSheet(ContentPaths.Effects.shadowcircle), "sh", 32, 32, shP, false, Color.Black, 1, 0.7f, 0.7f, false); Shadow.AddAnimation(shadowAnimation); shadowAnimation.Play(); Shadow.SetCurrentAnimation("sh"); Physics.Tags.Add("Dwarf"); DeathParticleTrigger = new ParticleTrigger("star_particle", Manager, "Death Gibs", Physics, Matrix.Identity, Vector3.One, Vector3.Zero) { TriggerOnDeath = true, TriggerAmount = 5, SoundToPlay = ContentPaths.Audio.wurp, }; NoiseMaker.Noises["Hurt"] = new List<string> { ContentPaths.Audio.tinkle }; NoiseMaker.Noises["Chew"] = new List<string> { ContentPaths.Audio.tinkle }; NoiseMaker.Noises["Jump"] = new List<string> { ContentPaths.Audio.tinkle }; MinimapIcon minimapIcon = new MinimapIcon(Physics, new ImageFrame(TextureManager.GetTexture(ContentPaths.GUI.map_icons), 16, 0, 0)); //new LightEmitter("Light Emitter", Sprite, Matrix.Identity, Vector3.One, Vector3.One, 255, 150); new Bobber(0.25f, 3.0f, MathFunctions.Rand(), Sprite); Stats.FullName = TextGenerator.GenerateRandom("$firstname"); //Stats.LastName = "The Fairy"; Stats.CanSleep = false; Stats.CanEat = false; }