public HowManyPlayersMenu(Game game) : base(game) { Name = "Main"; animations = new List <SpriterAnimationPlayer>(); renderers = new List <SpriterRenderer <Texture2D> >(); for (int i = 0; i < 4; i++) { SpriterRenderer <Texture2D> renderer = null; SpriterAnimationPlayer animation = SpriterComponent <Texture2D> .LoadAnimation(game, @"Animations\Player\Player", ref renderer); string[] charmaps = { "GREEN", "RED", "YELLOW" }; if (i > 0) { animation.CharacterMaps = new Entity.CharacterMap[1]; animation.CharacterMaps[0] = animation.Entity.GetCharacterMap(charmaps[i - 1]); } animation.SetAnimation("Walk"); animation.SetScale(0.5f); renderers.Add(renderer); animations.Add(animation); } OnInitialize(); }
protected override void OnInitialize() { spriterComponent = new SpriterComponent <Texture2D>(Owner, @"Animations\Player\Player"); spriterComponent.Initialize(); spriterComponent.Scale = 0.2f; Owner.AddComponent(spriterComponent); Owner.InitializeComponents(); }
public SpriterEffect(GameObject owner, string name) : base(owner, false) { component = new SpriterComponent <Texture2D>(owner, name); component.Initialize(); owner.AddComponent(component); component.OnAnimationFinished += component_OnAnimationFinished; }
public Player(GameObject owner) : base(owner) { owner.Body.Shape.Size = new Vector2(32.0f, 32.0f); owner.Size = new Vector2(32f, 110f); owner.Game.World.CreateBody(owner.Body, CollisionSettings.PlayerCollisionGroup, ~CollisionSettings.PlayerCollisionGroup); spriterComponent = new SpriterComponent <Texture2D>(Owner, @"Animations\Player\Player"); owner.AddComponent(spriterComponent); owner.AddTag("player"); }
protected override void OnInitialize() { MonsterBuilder builder = new BlobBuilder(); builder.Build(Owner); Tree tree = CreateTree(); tree.Initialize(); Owner.AddComponent(tree); spriterComponent = new SpriterComponent <Texture2D>(Owner, @"Animations\Boss\Boss"); spriterComponent.Initialize(); spriterComponent.ChangeAnimation("Walk"); spriterComponent.Scale = 0.75f; Owner.AddComponent(spriterComponent); steeringComponent = Owner.FirstComponentOfType <SteeringComponent>(); SteeringBehavior seek = new SeekBehavior() { DesiredVelocity = new Vector2(1.25f), MaxSpeed = 1.25f }; steeringComponent.AddBehavior(seek); steeringComponent.ChangeActiveBehavior(typeof(SeekBehavior)); rotation = Owner.FirstComponentOfType <SkillRotation>(); targetingComponent = Owner.FirstComponentOfType <TargetingComponent>(); BossHealthComponent c = new BossHealthComponent(Owner); c.Initialize(); Owner.AddComponent(c); rotation.Enable(); }
// TODO: duplicated code. Crawlerilla melkein sama init logic. protected override void OnInitialize() { MonsterBuilder builder = new ZombieBuilder(); builder.Build(Owner); Tree tree = CreateTree(); tree.Initialize(); Owner.AddComponent(tree); // Idle, Walk, Attack spriterComponent = new SpriterComponent <Texture2D>(Owner, @"Animations\GenericZombie\GenericZombie"); spriterComponent.Initialize(); spriterComponent.ChangeAnimation("Walk"); spriterComponent.Scale = 0.5f; Owner.AddComponent(spriterComponent); steeringComponent = Owner.FirstComponentOfType <SteeringComponent>(); SteeringBehavior flee = new FleeBehavior() { DesiredVelocity = new Vector2(4.25f), MaxSpeed = 3.25f }; SteeringBehavior seek = new SeekBehavior() { DesiredVelocity = new Vector2(4.25f), MaxSpeed = 3.25f }; steeringComponent.AddBehavior(flee); steeringComponent.AddBehavior(seek); steeringComponent.ChangeActiveBehavior(typeof(SeekBehavior)); }
protected override void OnInitialize() { MonsterBuilder builder = new CrawlerBuilder(); builder.Build(Owner); Tree tree = CreateTree(); tree.Initialize(); Owner.AddComponent(tree); spriterComponent = new SpriterComponent <Texture2D>(Owner, @"Animations\Crawler\crawler"); spriterComponent.Initialize(); spriterComponent.ChangeAnimation("NewAnimation"); spriterComponent.Scale = 0.3f; Owner.AddComponent(spriterComponent); steeringComponent = Owner.FirstComponentOfType <SteeringComponent>(); SteeringBehavior flee = new FleeBehavior() { DesiredVelocity = new Vector2(2.25f), MaxSpeed = 1.25f }; SteeringBehavior seek = new SeekBehavior() { DesiredVelocity = new Vector2(2.25f), MaxSpeed = 1.25f }; steeringComponent.AddBehavior(flee); steeringComponent.AddBehavior(seek); steeringComponent.ChangeActiveBehavior(typeof(SeekBehavior)); }
public static SkillSet CreateBlobSkillSet(GameObject blob) { SkillSet skillSet = new SkillSet(blob); Skill attack = new Skill("attack", 5200, () => { TargetingComponent targetingComponent = blob.FirstComponentOfType <TargetingComponent>(); WeaponComponent weaponComponent = blob.FirstComponentOfType <WeaponComponent>(); StatSet statSet = blob.FirstComponentOfType <StatSet>(); if (targetingComponent.HasTarget) { bool isCrit = false; float damage = weaponComponent.GenerateAttack(statSet.GetAttackPower(), statSet.GetCritPercent(), ref isCrit); targetingComponent.Target.FirstComponentOfType <HealthComponent>().TakeDamage(damage); SpriterComponent <Texture2D> spriterComponent = blob.FirstComponentOfType <SpriterComponent <Texture2D> >(); spriterComponent.ChangeAnimation("Attack"); AnimationFinishedEventHandler animationFininshedEventHandler = (animation) => { spriterComponent.ChangeAnimation("Walk"); }; spriterComponent.OnAnimationFinished += animationFininshedEventHandler; spriterComponent.OnAnimationChanged += (old, newAnim) => { if (old.Name == "Attack") { spriterComponent.OnAnimationFinished -= animationFininshedEventHandler; } }; blob.FirstComponentOfType <DamageRenderer>().AddText(((int)(damage)).ToString(), isCrit); return(true); } return(false); }); Skill beam = new Skill("beam", 15200, () => { TargetingComponent targetingComponent = blob.FirstComponentOfType <TargetingComponent>(); WeaponComponent weaponComponent = blob.FirstComponentOfType <WeaponComponent>(); StatSet statSet = blob.FirstComponentOfType <StatSet>(); FacingComponent facing = blob.FirstComponentOfType <FacingComponent>(); SpriterComponent <Texture2D> spriterComponent = blob.FirstComponentOfType <SpriterComponent <Texture2D> >(); spriterComponent.ChangeAnimation("Attack2"); Texture2D plasma = blob.Game.Content.Load <Texture2D>(@"Animations\Boss\Plasma"); AABB area = new AABB(blob.Position.X * facing.FacingNumber * -1, blob.Position.Y, plasma.Width, plasma.Height); List <BroadphaseProxy> proxies = blob.Game.World.QueryAABB(ref area); bool isCrit = false; float damage = weaponComponent.GenerateSpecialAttack(25f, 50f, statSet.GetAttackPower(), statSet.GetCritPercent(), ref isCrit); foreach (BroadphaseProxy proxy in proxies.Where(p => p.Client.Owner.Name.StartsWith("Player"))) { proxy.Client.Owner.FirstComponentOfType <HealthComponent>().TakeDamage(damage); blob.FirstComponentOfType <DamageRenderer>().AddText(((int)(damage)).ToString(), isCrit); } AnimationFinishedEventHandler animationFininshedEventHandler = (animation) => { spriterComponent.ChangeAnimation("Walk"); }; spriterComponent.OnAnimationFinished += animationFininshedEventHandler; spriterComponent.OnAnimationChanged += (old, newAnim) => { if (old.Name == "Attack2") { spriterComponent.OnAnimationFinished -= animationFininshedEventHandler; } }; return(true); }); Skill smash = new Skill("smash", 10200, () => { TargetingComponent targetingComponent = blob.FirstComponentOfType <TargetingComponent>(); WeaponComponent weaponComponent = blob.FirstComponentOfType <WeaponComponent>(); StatSet statSet = blob.FirstComponentOfType <StatSet>(); if (targetingComponent.HasTarget) { Console.WriteLine("SMASH!"); bool isCrit = false; float damage = weaponComponent.GenerateAttack(statSet.GetAttackPower(), statSet.GetCritPercent(), ref isCrit); targetingComponent.Target.FirstComponentOfType <HealthComponent>().TakeDamage(damage); SpriterComponent <Texture2D> spriterComponent = blob.FirstComponentOfType <SpriterComponent <Texture2D> >(); spriterComponent.ChangeAnimation("Attack"); AnimationFinishedEventHandler animationFininshedEventHandler = (animation) => { spriterComponent.ChangeAnimation("Walk"); }; spriterComponent.OnAnimationFinished += animationFininshedEventHandler; spriterComponent.OnAnimationChanged += (old, newAnim) => { if (old.Name == "Attack") { spriterComponent.OnAnimationFinished -= animationFininshedEventHandler; } }; blob.FirstComponentOfType <DamageRenderer>().AddText(((int)(damage)).ToString(), isCrit); return(true); } return(false); }); skillSet.AddSkill(attack); skillSet.AddSkill(beam); skillSet.AddSkill(smash); return(skillSet); }
public static SkillSet CreateZombieSkillSet(GameObject zombie) { SkillSet skillSet = new SkillSet(zombie); // Perus auto attack. Skill attack = new Skill("attack", 1200, () => { TargetingComponent targetingComponent = zombie.FirstComponentOfType <TargetingComponent>(); WeaponComponent weaponComponent = zombie.FirstComponentOfType <WeaponComponent>(); StatSet statSet = zombie.FirstComponentOfType <StatSet>(); if (targetingComponent.HasTarget) { bool isCrit = false; float damage = weaponComponent.GenerateAttack(statSet.GetAttackPower(), statSet.GetCritPercent(), ref isCrit); targetingComponent.Target.FirstComponentOfType <HealthComponent>().TakeDamage(damage); SpriterComponent <Texture2D> spriterComponent = zombie.FirstComponentOfType <SpriterComponent <Texture2D> >(); spriterComponent.ChangeAnimation("Attack"); AnimationFinishedEventHandler animationFininshedEventHandler = (animation) => { spriterComponent.ChangeAnimation("Walk"); }; spriterComponent.OnAnimationFinished += animationFininshedEventHandler; spriterComponent.OnAnimationChanged += (old, newAnim) => { if (old.Name == "Attack") { spriterComponent.OnAnimationFinished -= animationFininshedEventHandler; } }; zombie.FirstComponentOfType <DamageRenderer>().AddText(((int)(damage)).ToString(), isCrit); return(true); } return(false); }); // Tekee 200% weapon damagesta ja 20-50 lisää damaa. Skill slam = new Skill("slam", 4500, () => { TargetingComponent targetingComponent = zombie.FirstComponentOfType <TargetingComponent>(); WeaponComponent weaponComponent = zombie.FirstComponentOfType <WeaponComponent>(); StatSet statSet = zombie.FirstComponentOfType <StatSet>(); if (targetingComponent.HasTarget) { bool isCrit = false; float damage = weaponComponent.GenerateSpecialAttack(weaponComponent.Weapon.MinDamage, weaponComponent.Weapon.MaxDamage, statSet.GetAttackPower(), statSet.GetCritPercent(), ref isCrit); targetingComponent.Target.FirstComponentOfType <HealthComponent>().TakeDamage(damage); SpriterComponent <Texture2D> spriterComponent = zombie.FirstComponentOfType <SpriterComponent <Texture2D> >(); spriterComponent.ChangeAnimation("Attack"); AnimationFinishedEventHandler animationFininshedEventHandler = (animation) => { spriterComponent.ChangeAnimation("Walk"); }; spriterComponent.OnAnimationFinished += animationFininshedEventHandler; spriterComponent.OnAnimationChanged += (old, newAnim) => { if (old.Name == "Attack") { spriterComponent.OnAnimationFinished -= animationFininshedEventHandler; } }; zombie.FirstComponentOfType <DamageRenderer>().AddText(((int)(damage)).ToString(), isCrit); return(true); } return(false); }); // Parantaa useria 10% hpsta ja antaa sille 5% stamina buffin. Skill meatWall = new Skill("meat wall", 12500, () => { TargetingComponent targetingComponent = zombie.FirstComponentOfType <TargetingComponent>(); WeaponComponent weaponComponent = zombie.FirstComponentOfType <WeaponComponent>(); StatSet statSet = zombie.FirstComponentOfType <StatSet>(); if (targetingComponent.HasTarget) { statSet.AddBuff(new Buff("meat wall", 5f, BuffType.Stamina, ModifierType.Modifier, new BuffDuration(4500))); zombie.FirstComponentOfType <HealthComponent>().Heal(statSet.GetMaxHealth() * 0.10f); return(true); } return(false); }); // Antaa userille 5% lisää strenaa. Skill rage = new Skill("rage", 12500, () => { TargetingComponent targetingComponent = zombie.FirstComponentOfType <TargetingComponent>(); WeaponComponent weaponComponent = zombie.FirstComponentOfType <WeaponComponent>(); StatSet statSet = zombie.FirstComponentOfType <StatSet>(); if (targetingComponent.HasTarget) { statSet.AddBuff(new Buff("rage", 5f, BuffType.Strength, ModifierType.Modifier, new BuffDuration(2500))); return(true); } return(false); }); skillSet.AddSkill(attack); skillSet.AddSkill(slam); skillSet.AddSkill(meatWall); skillSet.AddSkill(rage); return(skillSet); }