/// <summary> /// Constructor /// </summary> /// <param name="body"></param> /// <param name="model"></param> /// <param name="team"></param> /// <param name="enemyTeam"></param> public BotPlayer(AbstractBody body, PrimitiveBuilder model, AbstractTeam team, AbstractTeam enemyTeam) : base(body, model, team, enemyTeam) { this.SetCollisionBehaviors(new CollisionBehaviors(this)); this.MovementBehavior = new MovementBehavior(); this.AttackBehavior = new AttackBehavior(); }
/// <summary> /// Add body /// </summary> /// <param name="body"></param> public void AddBody(AbstractBody body) { if (!this._bodies.Contains(body)) { this._bodiesMarkedForAddition.Enqueue(body); } }
/// <summary> /// Constructor /// </summary> /// <param name="body"></param> /// <param name="model"></param> /// <param name="team"></param> public AbstractFlag(AbstractBody body, PrimitiveBuilder model, AbstractTeam team) : base(body, model) { this.Team = team; this.InitialPosition = body.GetPosition(); EntityTable.Instance.Add(this.Body, this); }
/// <summary> /// Constructor /// </summary> /// <param name="body"></param> /// <param name="model"></param> /// <param name="delayInMilliseconds"></param> public AbstractGun(AbstractBody body, PrimitiveBuilder model, double delayInMilliseconds) : base(body, model) { this.BulletIndex = 0; this.DelayInMilliseconds = delayInMilliseconds; // Add Entity table entry that maps the Body to this Entity EntityTable.Instance.Add(this.Body, this); }
/// <summary> /// Constructor /// </summary> /// <param name="body"></param> /// <param name="model"></param> /// <param name="collisionBehaviors"></param> public AbstractEntity(AbstractBody body, PrimitiveBuilder model, ICollisionBehaviors collisionBehaviors = null) { // Set body this.Body = body; // Set model this._model = model; // Subscribe to collision event CollisionPool.Instance.CollisionDetected += CollisionDetected; // Set collision behaviors this._collisionBehaviors = collisionBehaviors; }
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)); }
/// <summary> /// Constructs a list of nodes based on the geometry of the given body /// </summary> /// <param name="body"></param> /// <param name="distanceFromBody"></param> /// <param name="maxDistanceBetweenEachNode"></param> /// <returns></returns> public static List<Node> Construct(AbstractBody body, int distanceFromBody, int maxDistanceBetweenEachNode) { List<Node> result = new List<Node>(); Type bodyType = body.GetType(); if (bodyType.Equals(typeof(CircleBody))) { result = Construct((CircleBody)body, distanceFromBody, maxDistanceBetweenEachNode); } else { result = Construct((RectangleBody)body, distanceFromBody, maxDistanceBetweenEachNode); } return result; }
/// <summary> /// Constructor /// </summary> /// <param name="body"></param> /// <param name="model"></param> /// <param name="team"></param> /// <param name="enemyTeam"></param> public UserPlayer(AbstractBody body, PrimitiveBuilder model, AbstractTeam team, AbstractTeam enemyTeam) : base(body, model, team, enemyTeam) { this.SetCollisionBehaviors(new CollisionBehaviors(this)); }
/// <summary> /// Remove body /// </summary> /// <param name="body"></param> public void RemoveBody(AbstractBody body) { if (this._bodies.Contains(body)) { this._bodiesMarkedForRemoval.Enqueue(body); } }
/// <summary> /// Constructor /// </summary> /// <param name="body"></param> /// <param name="model"></param> public CircleWall(AbstractBody body, PrimitiveBuilder model) : base(body, model) { }
/// <summary> /// Constructor /// </summary> /// <param name="body"></param> /// <param name="model"></param> /// <param name="gun"></param> public Bullet(AbstractBody body, PrimitiveBuilder model, AbstractGun gun) : base(body, model, gun) { this.SetCollisionBehaviors(new CollisionBehaviors(this)); }
/// <summary> /// Detect collision /// </summary> /// <param name="body"></param> /// <returns></returns> public bool DetectCollision(AbstractBody body) { bool result = false; Type bodyType = body.GetType(); if (bodyType.Equals(typeof(CircleBody))) { result = this.DetectCollision((CircleBody)body); } else if (bodyType.Equals(typeof(RectangleBody))) { result = this.DetectCollision((RectangleBody)body); } else if (bodyType.Equals(typeof(LineBody))) { result = this.DetectCollision((LineBody)body); } return result; }
/// <summary> /// Constructor /// </summary> /// <param name="body"></param> /// <param name="model"></param> /// <param name="team"></param> protected AbstractPlayer(AbstractBody body, PrimitiveBuilder model, AbstractTeam team, AbstractTeam enemyTeam) : base(body, model) { this.Team = team; this.EnemyTeam = enemyTeam; this.Health = AppSettingsFacade.PlayerHealth; this.HealthLabel = new TextLabel(String.Empty, SpriteFontRepository.Instance.Get("test"), Vector2.Zero, LabelAlignment.Center, Color.White); this._messageQueue = new TextLabelQueue( SpriteFontRepository.Instance.Get("test"), Vector2.Zero, LabelAlignment.Center, Color.White, 3000); this._healthBar = new CircleProgressBar(new Color(20, 20, 30)); EntityTable.Instance.Add(this.Body, this); this.IsAlive = true; }
public CollisionDetectedEventArgs(AbstractBody body1, AbstractBody body2) { this.Body1 = body1; this.Body2 = body2; }
/// <summary> /// Constructor /// </summary> /// <param name="body"></param> /// <param name="model"></param> /// <param name="team"></param> public Flag(AbstractBody body, PrimitiveBuilder model, AbstractTeam team) : base(body, model, team) { this.SetCollisionBehaviors(new CollisionBehaviors(this)); }
/// <summary> /// Constructor /// </summary> /// <param name="body"></param> /// <param name="model"></param> public RectangleWall(AbstractBody body, PrimitiveBuilder model) : base(body, model) { }
/// <summary> /// Constructor /// </summary> /// <param name="body"></param> /// <param name="model"></param> public AbstractWall(AbstractBody body, PrimitiveBuilder model) : base(body, model) { EntityTable.Instance.Add(this.Body, this); }