public void StartMovingLeft() { //acceleration.X = -Constants.WALK_SPEED; this.AddForce(new Vector2f(-this.walkSpeed, 0.0f)); horizontalFacing = HorizontalFacing.FACING_LEFT; //m_HorizontalFacing = HorizontalFacing::FACING_LEFT; }
public void BuildLadder(int ladderx, int laddery, int ladderheight, HorizontalFacing ladderfacing) { for (int y = 0; y < ladderheight; y++) { int facingOffset = (ladderfacing == HorizontalFacing.Right ? 1 : -1); Tiles[ladderx, laddery + y] = new Ladder(this, ladderx, laddery + y, ladderfacing); Tiles[ladderx + facingOffset, laddery + y] = new Wall(this, ladderx + facingOffset, laddery + y); } }
public static SpriteEffects ToMirror(this HorizontalFacing facing) { switch (facing) { default: case HorizontalFacing.Right: return(SpriteEffects.None); case HorizontalFacing.Left: return(SpriteEffects.FlipHorizontally); } }
public static HorizontalFacing Mirror(this HorizontalFacing facing) { switch (facing) { default: case HorizontalFacing.Left: return(HorizontalFacing.Right); case HorizontalFacing.Right: return(HorizontalFacing.Left); } }
public static int GetX(this HorizontalFacing facing) { switch (facing) { default: return(0); case HorizontalFacing.Left: return(-1); case HorizontalFacing.Right: return(1); } }
public static Vector2 GetFacingVector(HorizontalFacing facing) { switch (facing) { default: return(Vector2.Zero); case HorizontalFacing.Left: return(new Vector2(-1, 0)); case HorizontalFacing.Right: return(new Vector2(1, 0)); } }
public virtual void Swing() { float sizeMult = 1; Vector2 weaponSize = new Vector2(16, 8); weaponSize.X *= Weapon.LengthModifier; weaponSize.Y *= Weapon.WidthModifier; RectangleF weaponMask = new RectangleF(Human.Position + GetFacingVector(Human.Facing) * 8 + GetFacingVector(Human.Facing) * (weaponSize.X / 2) + new Vector2(0, 1) - weaponSize / 2f, weaponSize); /* * Vector2 PlayerWeaponOffset = Position + FacingVector * 14; * Vector2 WeaponSize = new Vector2(14 / 2, 14 * 2); * RectangleF weaponMask = new RectangleF(PlayerWeaponOffset - WeaponSize / 2, WeaponSize);*/ if (Weapon.CanParry) { HorizontalFacing Facing = Human.Facing; Vector2 Position = Human.Position; Vector2 FacingVector = GetFacingVector(Facing); Vector2 parrySize = new Vector2(22, 22); bool success = Human.Parry(new RectangleF(Position + FacingVector * 8 - parrySize / 2, parrySize)); if (success) { Parried = true; } } if (!Parried) { Human.SwingWeapon(weaponMask, 10); SwingVisual(Parried); SlashAction = SwingAction.DownSwing; } }
protected virtual void init() { Bounds = new AABB(0, 0, 1, 1); Bounds.SetDims(new Vector2f(Constants.CHAR_COLLISON_RECT.Width, Constants.CHAR_COLLISON_RECT.Height)); Bounds.SetPosByTopLeft(position); this.hitCollisionRect.SetDims(new Vector2f(32.0f, 32.0f)); this.hitCollisionRect.SetPosByTopLeft(position); shape = new RectangleShape(); shape.FillColor = Color.Green; shape.Size = new Vector2f(Bounds.dims.X, Bounds.dims.Y); isJumpActive = false; isOnGround = false; isOnOnewWayPlatform = false; horizontalFacing = HorizontalFacing.FACING_RIGHT; //must call, else not working spriteControl.ChangeState(this.GetSpriteState()); this.health = 1; }
public void StartMovingRight() { //acceleration.X = Constants.WALK_SPEED; this.AddForce(new Vector2f(this.walkSpeed, 0.0f)); horizontalFacing = HorizontalFacing.FACING_RIGHT; }
public virtual bool CanClimb(HorizontalFacing side) { return(false); }
public virtual void UpdateAI() { var viewSize = new Vector2(200, 100); RectangleF viewArea = new RectangleF(Position - viewSize / 2, viewSize); if (viewArea.Contains(World.Player.Position)) { Target = World.Player; TargetTime = 200; } else { TargetTime--; if (TargetTime <= 0) { Target = null; } } if (Target != null) //Engaged { float dx = Target.Position.X - Position.X; if (CurrentAction is ActionHidden) { CurrentAction = new ActionUnhide(this, 30); } else if (CurrentAction is ActionHide) { } else if (CurrentAction is ActionUnhide) { } else if (CurrentAction is ActionIdle idle) { if (dx < 0) { Facing = HorizontalFacing.Left; } else if (dx > 0) { Facing = HorizontalFacing.Right; } if (idle.Time > 180) { if (Random.NextDouble() < 0.4) { CurrentAction = new ActionSpit(this, Target, new Vector2(0, -70), 60, 20, 20, 20); } else { CurrentAction = new ActionBite(this, 40, 20, 30); } } } } else { if (CurrentAction is ActionHide) { } else if (CurrentAction is ActionUnhide) { } else if (CurrentAction is ActionIdle) { CurrentAction = new ActionHide(this, 80); } } }
private void UpdateAI() { var viewSize = new Vector2(500, 50); RectangleF viewArea = new RectangleF(Position - viewSize / 2, viewSize); if (viewArea.Contains(World.Player.Position)) { Target = World.Player; TargetTime = 200; } else { TargetTime--; if (TargetTime <= 0) { Target = null; } } foreach (var head in Heads) { head.Target = Target; } if (Target != null) //Engaged { float dx = Target.Position.X - Position.X; float dy = Target.Position.Y - Position.Y; if (CurrentAction is ActionDeath) { } else if (CurrentAction is ActionIdle idle) { if (idle.Time > 120) { if (Random.NextDouble() > 0.5) { CurrentAction = new ActionAggressive(this); } else { CurrentAction = new ActionIdle(this); } } if (dx < 0) { Facing = HorizontalFacing.Left; } else if (dx > 0) { Facing = HorizontalFacing.Right; } foreach (var head in Heads) { if (head.CurrentAction is Snake.ActionIdle headIdle && headIdle.Time > 80) { head.Facing = Facing; int attackingHeads = Heads.Count(x => !(x.CurrentAction is Snake.ActionIdle || x.CurrentAction is Snake.ActionDeath)); if (attackingHeads < 2) { SelectAttack(head); } } } float moveOffset = -Math.Sign(dx) * Target.Velocity.X * 32; float preferredDistanceMin = idle.MinDistance + moveOffset; float preferredDistanceMax = idle.MaxDistance + moveOffset; if (Math.Abs(dx) > preferredDistanceMax * 1.5f) { WalkConstrained(dx, 1.0f); } else if (Math.Abs(dx) > preferredDistanceMax) { WalkConstrained(dx, 0.5f); } else if (Math.Abs(dx) < preferredDistanceMin) { WalkConstrained(-dx, 0.5f); } } } else //Idle { } }
public cSpriteState(MotionType motion, HorizontalFacing h_facing) { motionType = motion; horizontalFacing = h_facing; }