/// <summary> /// Creates a new Bullet /// </summary> /// <param name="attacker">The GameObject that fired the bullet</param> /// <param name="position">The starting position of the bullet</param> /// <param name="direction">The direction in which the bullet was fired[needs to be unit length]</param> /// <returns></returns> public static GameObject CreateBullet(GameObject attacker, Vector2f position, int direction) { GameObject gameObject = new GameObject(); GameState.GameObjects.Add(gameObject); gameObject.Position = position; PhysicsComponent physicsComp = PhysicsMgr.MakeNewComponent(gameObject, bulletConfigFileParser.GetAsFloat("CollisionWidth"), bulletConfigFileParser.GetAsFloat("CollisionHeight"), PhysicsManager.PlayerCategory, PhysicsManager.EnemyCategory | PhysicsManager.MapCategory, BodyType.Dynamic); physicsComp.Body.LinearVelocity = new Microsoft.Xna.Framework.Vector2(direction, 0) * bulletConfigFileParser.GetAsFloat("Speed"); physicsComp.Body.GravityScale = bulletConfigFileParser.GetAsFloat("GravityScale"); physicsComp.Body.LinearDamping = 0.0f; gameObject.AddComponent(physicsComp); AttackComponent attackComp = new AttackComponent(attacker, bulletConfigFileParser.GetAsFloat("Damage"), gameObject); gameObject.AddComponent(attackComp); AnimationRenderComponent renderComp = RenderMgr.MakeNewAnimationComponent("cfg/bullet_anim.txt", gameObject); renderComp.WorldWidth = bulletConfigFileParser.GetAsFloat("SpriteWidth"); renderComp.WorldHeight = bulletConfigFileParser.GetAsFloat("SpriteHeight"); renderComp.ZIndex = bulletConfigFileParser.GetAsInt("ZIndex"); if (direction < 0) renderComp.FlipX = true; gameObject.AddComponent(renderComp); gameObject.AddComponent(new ExplodesOnCollisionComponent(gameObject)); RectRenderComponent collisionRect = new RectRenderComponent(bulletConfigFileParser.GetAsFloat("CollisionWidth"), bulletConfigFileParser.GetAsFloat("CollisionHeight"), new Color(255, 0, 0, 100), RenderMgr, gameObject); RenderMgr.Components.Add(collisionRect); gameObject.AddComponent(collisionRect); return gameObject; }
/// <summary> /// Creates a new Bullet /// </summary> /// <param name="attacker">The GameObject that fired the bullet</param> /// <param name="position">The starting position of the bullet</param> /// <param name="direction">The direction in which the bullet was fired[needs to be unit length]</param> /// <returns></returns> public static GameObject CreateStinger(GameObject attacker, Vector2f position, Vector2f direction) { GameObject gameObject = new GameObject(); GameState.GameObjects.Add(gameObject); gameObject.Position = position; PhysicsComponent physicsComp = PhysicsMgr.MakeNewComponent( gameObject, stingerConfigFileParser.GetAsFloat("CollisionWidth"), stingerConfigFileParser.GetAsFloat("CollisionHeight"), PhysicsManager.EnemyCategory, PhysicsManager.PlayerCategory | PhysicsManager.MapCategory, BodyType.Dynamic); physicsComp.Body.LinearVelocity = new Microsoft.Xna.Framework.Vector2(direction.X, direction.Y) * stingerConfigFileParser.GetAsFloat("Speed"); physicsComp.Body.LinearDamping = 0.0f; physicsComp.Body.IgnoreGravity = true; gameObject.AddComponent(physicsComp); AttackComponent attackComp = new AttackComponent(attacker, stingerConfigFileParser.GetAsFloat("Damage"), gameObject); gameObject.AddComponent(attackComp); SpriteRenderComponent renderComp = RenderMgr.MakeNewSpriteComponent(gameObject, StingerTexture); renderComp.WorldWidth = stingerConfigFileParser.GetAsFloat("SpriteWidth"); renderComp.WorldHeight = stingerConfigFileParser.GetAsFloat("SpriteHeight"); renderComp.ZIndex = stingerConfigFileParser.GetAsInt("ZIndex"); gameObject.AddComponent(renderComp); gameObject.AddComponent(new ExplodesOnCollisionComponent(gameObject)); RectRenderComponent collisionRect = new RectRenderComponent(stingerConfigFileParser.GetAsFloat("CollisionWidth"), stingerConfigFileParser.GetAsFloat("CollisionHeight"), new Color(255, 0, 0, 100), RenderMgr, gameObject); RenderMgr.Components.Add(collisionRect); gameObject.AddComponent(collisionRect); return gameObject; }
/// <summary> /// Creates a new jab attack instance /// </summary> public static GameObject CreateJab(GameObject attacker, MeleeWeaponComponent meleeWeapon, Vector2f position, int xdirection) { float width = jabConfigFileParser.GetAsFloat("CollisionWidth"); float height = jabConfigFileParser.GetAsFloat("CollisionHeight"); float damage = jabConfigFileParser.GetAsFloat("Damage"); float forwardX = jabConfigFileParser.GetAsFloat("ForwardX"); float backwardX = jabConfigFileParser.GetAsFloat("BackwardX"); float forwardTime = jabConfigFileParser.GetAsFloat("ForwardTime"); float backwardTime = jabConfigFileParser.GetAsFloat("BackwardTime"); GameObject gameObject = new GameObject(); GameState.GameObjects.Add(gameObject); gameObject.Position = position; PhysicsComponent physicsComp = PhysicsMgr.MakeNewComponent(gameObject, width, height, PhysicsManager.PlayerCategory, PhysicsManager.EnemyCategory | PhysicsManager.MapCategory, BodyType.Kinematic); physicsComp.Body.GravityScale = 0.0f; physicsComp.Body.IsSensor = true; gameObject.AddComponent(physicsComp); AttackComponent attackComp = new AttackComponent(attacker, damage, gameObject); gameObject.AddComponent(attackComp); SpriteRenderComponent renderComp = RenderMgr.MakeNewSpriteComponent(gameObject, SwordTexture); renderComp.WorldPosition = position; renderComp.WorldWidth = width; renderComp.WorldHeight = height; renderComp.ZIndex = 100; gameObject.AddComponent(renderComp); JabControllerComponent scc = new JabControllerComponent(physicsComp, meleeWeapon, new Vector2f(forwardX * xdirection, 0), new Vector2f(backwardX * xdirection, 0), forwardTime, backwardTime, gameObject); gameObject.AddComponent(scc); RectRenderComponent collisionRect = new RectRenderComponent( jabConfigFileParser.GetAsFloat("CollisionWidth"), jabConfigFileParser.GetAsFloat("CollisionHeight"), new Color(255, 0, 0, 100), RenderMgr, gameObject); RenderMgr.Components.Add(collisionRect); gameObject.AddComponent(collisionRect); return gameObject; }