public override void Update() { if (Input.Pressed(Mouse.Button.Right)) { World.Remove(hat); if (hat is NoHat) { hat = new Ninja(this); } else { hat = new NoHat(this); } World.Add(hat); } //Movement if (!isHurt) { if (Input.Pressed(Keyboard.Key.Space) && physics.velocity.Y == 0) { physics.velocity.Y += jumpForce; bodySprites.Play("Jump"); if (!isAttacking) { faceSprites.Play("Jump"); } } if (Input.Check(Keyboard.Key.A)) { physics.velocity.X -= this.speed; } if (Input.Check(Keyboard.Key.D)) { physics.velocity.X += this.speed; } if (Input.Check(Keyboard.Key.S)) { if (!isDucking) { bodySprites.Play("Duck"); } isDucking = true; } else { if (isDucking) { bodySprites.Play("Stand"); } isDucking = false; } //Attack if (Input.Pressed(Mouse.Button.Left)) { string nextAnim = hat.attackStart(); if (nextAnim != "") { faceSprites.Play(nextAnim); } isAttacking = true; } else if (Input.Released(Mouse.Button.Left)) { faceSprites.Play("Release"); } } base.Update(); //Animation stuff if (!isHurt) { //Flippin' stuffs if (physics.velocity.X > 0) { bodySprites.FlippedX = false; faceSprites.FlippedX = false; Hat.hatmap.FlippedX = false; } else if (physics.velocity.X < 0) { bodySprites.FlippedX = true; faceSprites.FlippedX = true; Hat.hatmap.FlippedX = true; } //Ground if (physics.isGrounded) { if (isDucking) { //Idle if (physics.velocity.X == 0) { bodySprites.Play("DuckIdle"); } //Run else { bodySprites.Play("DuckShuffle", false); } } else { //Idle if (physics.velocity.X == 0 && bodySprites.CurrentAnim != "Stand") { bodySprites.Play("Idle"); if (!isAttacking) { faceSprites.Play("Idle"); } } //Run else if (physics.velocity.X != 0) { bodySprites.Play("Run"); if (!isAttacking) { faceSprites.Play("Run"); } } } } else //In air { if (physics.velocity.Y > 0) { bodySprites.Play("JumpIdle"); //faceSprites.Play("JumpIdle"); } else if (bodySprites.CurrentAnim != "FallIdle") { bodySprites.Play("Fall"); if (!isAttacking) { faceSprites.Play("Fall"); } } } } bodySprites.Update(); //get y offset of the face if (bodySprites.CurrentAnim != "") { AnimationData animData = BodyAnimDict[bodySprites.CurrentAnim]; int[] yoffset = animData.yFacePoints; if (yoffset != null) { faceSprites.OriginY = bodySprites.Height - yoffset[bodySprites.Index] / 4 + faceSprites.Height - 10; } } faceSprites.Update(); }