Exemplo n.º 1
0
 public void SetBouncePosition(CourtPosition courtPosition)
 {
     if (ballBounced)
     {
         if (!ballBouncedTwice)
         {
             ballBouncedTwice = true;
             bouncePosition   = courtPosition;
         }
     }
     else
     {
         ballBounced    = true;
         bouncePosition = courtPosition;
     }
 }
Exemplo n.º 2
0
 private void SetExpectedServePosition()
 {
     if (currentPlayer == 1 && servePosition == 0)
     {
         expectedServePosition = CourtPosition.OpponentSquareLeft;
     }
     else if (currentPlayer == 1 && servePosition == 1)
     {
         expectedServePosition = CourtPosition.OpponentSquareRight;
     }
     else if (currentPlayer == 2 && servePosition == 0)
     {
         expectedServePosition = CourtPosition.PlayerSquareRight;
     }
     else
     {
         expectedServePosition = CourtPosition.PlayerSquareLeft;
     }
 }
Exemplo n.º 3
0
 private void ResetPoint()
 {
     SetServePosition();
     SetExpectedServePosition();
     SetPlayerState();
     if (multiplayer)
     {
         SetPlayer2State();
     }
     else
     {
         SetAIServeState();
     }
     ChangeServePosition();
     bouncePosition   = CourtPosition.NotSet;
     ballBounced      = false;
     ballBouncedTwice = false;
     ball.gameObject.GetComponent <Ball>().Freeze(true);
     state = State.Serve;
     UpdateVisualScore();
 }
Exemplo n.º 4
0
        public Player(PlayerIndex playerIndex, Team team, Vector2 submatrix,
        CourtPosition position)
            : base()
        {
            this.playerIndex = playerIndex;
              this.team = team;
              spriteSubmatrix = submatrix;
              heading = Heading.Forward;

              courtPosition = position;
              switch (position) {
            case CourtPosition.TopLeft:
              x = 15;
              y = 65;
              break;
            case CourtPosition.TopRight:
              x = 414;
              y = 65;
              break;
            case CourtPosition.BottomLeft:
              x = 15;
              y = 180;
              break;
            case CourtPosition.BottomRight:
              x = 414;
              y = 180;
              break;
              }

              maxSpeed = MAX_RUN_SPEED;
              drag = new Vector2(CONTROL_DRAG,CONTROL_DRAG);

              loadGraphic("player", 34, 34);
              characterOffset.X = submatrix.X * atlas.Width / 2;
              characterOffset.Y = submatrix.Y * atlas.Height / 2;

              sheetOffset.X = characterOffset.X;

              playerGlow = new PlayerGlow(this);
              G.state.add(playerGlow);

              addAnimation("idle", new List<int> { 0, 1, 2, 3 }, 10, true);

              addAnimation("runForward", new List<int> { 12, 13, 14, 15 }, 15, true);
              addAnimation("runBackward", new List<int> { 16, 17, 18, 19 }, 15, true);
              addAnimation("runUpForward", new List<int> { 4, 5, 6, 7 }, 15, true);
              addAnimation("runDownForward", new List<int> { 8, 9, 10, 11 }, 15, true);
              addAnimation("runUpBackward", new List<int> { 8, 11, 10, 9 }, 15, true);
              addAnimation("runDownBackward", new List<int> { 6, 5, 4, 7 }, 15, true);

              addAnimation("throw", new List<int> { 0, 1, 2, 3 }, 10, false);
              addAnimation("throwReturn", new List<int> { 4, 4 }, 20, false);
              addAnimationCallback("throw", onThrowCallback);
              addOnCompleteCallback("throw", onThrowCompleteCallback);
              addOnCompleteCallback("throwReturn", onThrowReturnCompleteCallback);

              addAnimation("hurt", new List<int> { 5 });
              addAnimation("hurtFall", new List<int> { 6, 7 }, 10, false);
              addAnimation("hurtRecover", new List<int> { 8, 8 }, 20, false);
              addOnCompleteCallback("hurtRecover", onHurtRecoverCompleteCallback);
              addAnimationCallback("hurtFall", onHurtFallCallback);

              addAnimation("parry", new List<int> { 10, 9, 9, 10 }, 40, false);
              addAnimation("parryReturn", new List<int> { 10, 10 }, 20, false);
              addOnCompleteCallback("parryReturn", onParryReturn);

              throwOffsets[(int)Heading.Up] = new Vector2[3] {
              new Vector2(0, 0),
              new Vector2(0, 0),
              new Vector2(0, 0)
            };
              throwOffsets[(int)Heading.UpMid] = new Vector2[3] {
              new Vector2(0, 0),
              new Vector2(0, 0),
              new Vector2(0, 0)
            };
              throwOffsets[(int)Heading.Forward] = new Vector2[3] {
              new Vector2(1, 0),
              new Vector2(3, 0),
              new Vector2(1, 0)
            };
              throwOffsets[(int)Heading.DownMid] = new Vector2[3] {
              new Vector2(0, 0),
              new Vector2(0, 0),
              new Vector2(0, 0)
            };
              throwOffsets[(int)Heading.Down] = new Vector2[3] {
              new Vector2(0, 0),
              new Vector2(0, 0),
              new Vector2(0, 0)
            };

              //We can change this to use Heading later if needed
              fallOffsets = new Vector2[2] {
            new Vector2(-4, 0),
            new Vector2(-11, 0)
              };

              //No actual hit yet, this should substitute for now
              addAnimation("hit", new List<int> { 12, 13, 14, 15 }, 60, true);

              height = 22;
              offset.Y = -5;
              width = 18;
              offset.X = -9;

              shadow = new PlayerShadow(this);
              G.state.add(shadow);

              retical = new Retical(playerIndex, team);
              retical.visible = false;
              G.state.add(retical);

              blood = new BloodSpatter(this);
              G.state.add(blood);
              play("idle");
        }
Exemplo n.º 5
0
 private bool IsPointOver()
 {
     if (ballBounced)
     {
         if (ballBouncedTwice)
         {
             if (lastHit == 1)
             {
                 pointWinner = 1;
             }
             else
             {
                 pointWinner = 2;
             }
             return(true);
         }
         else if (bouncePosition == CourtPosition.Out)
         {
             if (lastHit == 1)
             {
                 pointWinner = 2;
             }
             else
             {
                 pointWinner = 1;
             }
             return(true);
         }
         else if (lastHit == 1)
         {
             if (!ballBouncedTwice)
             {
                 if (bouncePosition == CourtPosition.PlayerHalf || bouncePosition == CourtPosition.PlayerSquareLeft || bouncePosition == CourtPosition.PlayerSquareRight)
                 {
                     pointWinner = 2;
                     return(true);
                 }
             }
             else
             {
                 pointWinner = 2;
                 return(true);
             }
         }
         else if (lastHit == 2)
         {
             if (!ballBouncedTwice)
             {
                 if (bouncePosition == CourtPosition.OpponentHalf || bouncePosition == CourtPosition.OpponentSquareLeft || bouncePosition == CourtPosition.OpponentSquareRight)
                 {
                     pointWinner = 1;
                     return(true);
                 }
             }
             else
             {
                 pointWinner = 1;
                 return(true);
             }
         }
     }
     bouncePosition = CourtPosition.NotSet;
     return(false);
 }