/// <summary> /// Default model for ShotGun /// </summary> /// <returns></returns> public static PrimitiveBuilder DefaultModel() { PrimitiveBuilder result = new PrimitiveBuilder(Color.HotPink); result.Add(PrimitiveFactory.Circle(Color.HotPink, 6f, 6)); return result; }
/// <summary> /// Creates the "default" instance of this class /// </summary> /// <param name="color"></param> /// <param name="team"></param> /// <param name="enemyTeam"></param> /// <returns></returns> public static UserPlayer Default(Color color, AbstractTeam team, AbstractTeam enemyTeam) { CircleBody body = BodyFactory.Circle(false, AppSettingsFacade.PlayerMass, AppSettingsFacade.PlayerMaxSpeed, AppSettingsFacade.PlayerFrictionCoefficient, true, AppSettingsFacade.PlayerRadius); PrimitiveBuilder model = new PrimitiveBuilder(color); model.Add(PrimitiveFactory.Circle(color, AppSettingsFacade.PlayerRadius, 3)); model.Add(PrimitiveFactory.Line(color, Vector2.Zero, Vector2.UnitX * body.GetRadius())); UserPlayer result = new UserPlayer(body, model, team, enemyTeam); team.AddPlayer(result); return result; }
private static double RadiansOfBulletSpread = Math.PI / 12; // Pi / 12 is 15 degrees #endregion Fields #region Constructors /// <summary> /// Constructor /// </summary> /// <param name="body"></param> /// <param name="model"></param> public ShotGun(AbstractBody body, PrimitiveBuilder model) : base(body, model, BulletDelayInMilliseconds) { Bullet[] bullets = new Bullet[100]; for (int i = 0; i < bullets.Length; i++) { PrimitiveBuilder bulletModel = new PrimitiveBuilder(Color.Yellow); bulletModel.Add(PrimitiveFactory.Circle(Color.Yellow, 1f, 5)); bullets[i] = new Bullet(BodyFactory.Circle(false, 1f, BulletSpeed, 1f, false, 1f), bulletModel, this); } this.SetBullets(bullets); this.SetCollisionBehaviors(new CollisionBehaviors(this)); }
protected override void ConstructOuterWalls(Vector2 size) { // Left wall Vector2 leftWallStartPosition = Vector2.Zero; Vector2 leftWallEndPosition = new Vector2(0f, size.Y); PrimitiveBuilder leftWallModel = new PrimitiveBuilder(Color.White); leftWallModel.Add(PrimitiveFactory.Line(Color.White, leftWallStartPosition, leftWallEndPosition)); LineBody leftWallBody = BodyFactory.Line(true, 0f, 0f, 0f, true, leftWallStartPosition, leftWallEndPosition); this.Walls.Add(new LineWall(leftWallBody, leftWallModel)); // Top wall Vector2 topWallStartPosition = Vector2.Zero; Vector2 topWallEndPosition = new Vector2(size.X, 0f); PrimitiveBuilder topWallModel = new PrimitiveBuilder(Color.White); topWallModel.Add(PrimitiveFactory.Line(Color.White, topWallStartPosition, topWallEndPosition)); LineBody topWallBody = BodyFactory.Line(true, 0f, 0f, 0f, true, topWallStartPosition, topWallEndPosition); this.Walls.Add(new LineWall(topWallBody, topWallModel)); // Right wall Vector2 rightWallStartPosition = new Vector2(size.X, 0f); Vector2 rightWallEndPosition = new Vector2(size.X, size.Y); PrimitiveBuilder rightWallModel = new PrimitiveBuilder(Color.White); rightWallModel.Add(PrimitiveFactory.Line(Color.White, rightWallStartPosition, rightWallEndPosition)); LineBody rightWallBody = BodyFactory.Line(true, 0f, 0f, 0f, true, rightWallStartPosition, rightWallEndPosition); this.Walls.Add(new LineWall(rightWallBody, rightWallModel)); // Bottom wall Vector2 bottomWallStartPosition = new Vector2(size.X, size.Y); Vector2 bottomWallEndPosition = new Vector2(0f, size.Y); PrimitiveBuilder bottomWallModel = new PrimitiveBuilder(Color.White); bottomWallModel.Add(PrimitiveFactory.Line(Color.White, bottomWallStartPosition, bottomWallEndPosition)); LineBody bottomWallBody = BodyFactory.Line(true, 0f, 0f, 0f, true, bottomWallStartPosition, bottomWallEndPosition); this.Walls.Add(new LineWall(bottomWallBody, bottomWallModel)); }
/// <summary> /// Initialize /// </summary> protected override void Initialize() { // Build blue team CaptureTheFlagTeam blueTeam = new CaptureTheFlagTeam( "Blue team", new Vector2(25f, 25f), Color.Blue); // Build red team CaptureTheFlagTeam redTeam = new CaptureTheFlagTeam( "Red team", new Vector2(AppSettingsFacade.WindowWidth - 25f, AppSettingsFacade.WindowHeight - 25f), Color.Red); // Add guns this.AddGun(new WeakGun( WeakGun.DefaultBody(this.Size * 0.4f), WeakGun.DefaultModel())); this.AddGun(new WeakGun( WeakGun.DefaultBody(this.Size * 0.6f), WeakGun.DefaultModel())); this.AddGun(new ShotGun( ShotGun.DefaultBody(new Vector2(AppSettingsFacade.WindowWidth / 2, 0.1f * AppSettingsFacade.WindowHeight)), ShotGun.DefaultModel())); this.AddGun(new ShotGun( ShotGun.DefaultBody(new Vector2(AppSettingsFacade.WindowWidth / 2, 0.9f * AppSettingsFacade.WindowHeight)), ShotGun.DefaultModel())); // Add spawn points blueTeam.AddSpawnPoint(blueTeam.GetBasePosition()); blueTeam.AddSpawnPoint(blueTeam.GetBasePosition() + new Vector2(0f, 50f)); // Add players UserPlayer blueUser = UserPlayer.Default(Color.Blue, blueTeam, redTeam); BotPlayer blueBot1 = BotPlayer.Default(Color.Blue, blueTeam, redTeam); blueUser.Spawn(); blueBot1.Spawn(); this.AddTeam(blueTeam); // Add spawn points redTeam.AddSpawnPoint(redTeam.GetBasePosition()); redTeam.AddSpawnPoint(redTeam.GetBasePosition() + new Vector2(0f, -50f)); // Add players BotPlayer redBot1 = BotPlayer.Default(Color.Red, redTeam, blueTeam); BotPlayer redBot2 = BotPlayer.Default(Color.Red, redTeam, blueTeam); redBot1.Spawn(); redBot2.Spawn(); this.AddTeam(redTeam); // Build walls // Circle wall in the middle of the map PrimitiveBuilder circleWallModel1 = new PrimitiveBuilder(Color.White); circleWallModel1.Add(PrimitiveFactory.Circle(Color.White, 100f, 24)); CircleBody circleWallBody1 = (CircleBody)BodyFactory.Circle(true, 0f, 0f, 0f, true, 100f).SetPosition(this.Size / 2); this.AddWall(new CircleWall(circleWallBody1, circleWallModel1)); // Blue-side circle wall in front of flag PrimitiveBuilder circleWallModel2 = new PrimitiveBuilder(Color.Blue); circleWallModel2.Add(PrimitiveFactory.Circle(Color.White, 75f, 24)); CircleBody circleWallBody2 = (CircleBody)BodyFactory.Circle(true, 0f, 0f, 0f, true, 75f).SetPosition(this.Size * 0.25f); this.AddWall(new CircleWall(circleWallBody2, circleWallModel2)); // Red-side circle wall in front of flag PrimitiveBuilder circleWallModel3 = new PrimitiveBuilder(Color.Red); circleWallModel3.Add(PrimitiveFactory.Circle(Color.White, 75f, 24)); CircleBody circleWallBody3 = (CircleBody)BodyFactory.Circle(true, 0f, 0f, 0f, true, 75f).SetPosition(this.Size * 0.75f); this.AddWall(new CircleWall(circleWallBody3, circleWallModel3)); // Blue-side circle wall in front of flag PrimitiveBuilder circleWallModel4 = new PrimitiveBuilder(Color.Blue); circleWallModel4.Add(PrimitiveFactory.Circle(Color.White, 75f, 24)); CircleBody circleWallBody4 = (CircleBody)BodyFactory.Circle(true, 0f, 0f, 0f, true, 75f).SetPosition(new Vector2(this.Size.X * 0.25f, this.Size.Y * 0.75f)); this.AddWall(new CircleWall(circleWallBody4, circleWallModel4)); // Red-side circle wall in front of flag PrimitiveBuilder circleWallModel5 = new PrimitiveBuilder(Color.Blue); circleWallModel5.Add(PrimitiveFactory.Circle(Color.White, 75f, 24)); CircleBody circleWallBody5 = (CircleBody)BodyFactory.Circle(true, 0f, 0f, 0f, true, 75f).SetPosition(new Vector2(this.Size.X * 0.75f, this.Size.Y * 0.25f)); this.AddWall(new CircleWall(circleWallBody5, circleWallModel5)); this.ConstructOuterWalls(this.Size); }
/// <summary> /// Default model /// </summary> /// <param name="color"></param> /// <returns></returns> public static PrimitiveBuilder DefaultModel(Color color) { PrimitiveBuilder result = new PrimitiveBuilder(color); result.Add(PrimitiveFactory.Circle(color, 10f, 3)); return result; }