コード例 #1
0
 public void MovePlayerTo(GameObj target)
 {
     m_controlsLocked = true;
     if (Player.X != target.X - 150f)
     {
         if (Player.X > target.Position.X - 150f)
         {
             Player.Flip = SpriteEffects.FlipHorizontally;
         }
         var num = CDGMath.DistanceBetweenPts(Player.Position, new Vector2(target.X - 150f, target.Y)) /
                   Player.Speed;
         Player.UpdateCollisionBoxes();
         Player.State         = 1;
         Player.IsWeighted    = false;
         Player.AccelerationY = 0f;
         Player.AccelerationX = 0f;
         Player.IsCollidable  = false;
         Player.CurrentSpeed  = 0f;
         Player.LockControls();
         Player.ChangeSprite("PlayerWalking_Character");
         Player.PlayAnimation();
         var logicSet = new LogicSet(Player);
         logicSet.AddAction(new DelayLogicAction(num));
         Player.RunExternalLogicSet(logicSet);
         Tween.To(Player, num, Tween.EaseNone, "X", (target.Position.X - 150f).ToString());
         Tween.AddEndHandlerToLastTween(this, "MovePlayerComplete", target);
         return;
     }
     MovePlayerComplete(target);
 }
コード例 #2
0
 public override void Update(GameTime gameTime)
 {
     if (!m_displayText && CDGMath.DistanceBetweenPts(Player.Position, m_king.Position) < 200f)
     {
         m_displayText = true;
         Tween.StopAllContaining(m_tutorialText, false);
         Tween.To(m_tutorialText, 0.5f, Tween.EaseNone, "Opacity", "1");
     }
     else if (m_displayText && CDGMath.DistanceBetweenPts(Player.Position, m_king.Position) > 200f)
     {
         m_displayText = false;
         Tween.StopAllContaining(m_tutorialText, false);
         Tween.To(m_tutorialText, 0.5f, Tween.EaseNone, "Opacity", "0");
     }
     if (Player.X > m_king.X - 100f)
     {
         Player.X = m_king.X - 100f;
     }
     if (!m_kingKilled && m_king.WasHit)
     {
         m_kingKilled = true;
         Game.ScreenManager.DisplayScreen(27, false);
     }
     base.Update(gameTime);
 }
コード例 #3
0
 private int PlayerNearWaypoint()
 {
     for (var i = 0; i < m_waypointList.Count; i++)
     {
         if (CDGMath.DistanceBetweenPts(Player.Position, m_waypointList[i].Position) < 500f)
         {
             return(i);
         }
     }
     return(-1);
 }
コード例 #4
0
 public void RefreshChestIcons(RoomObj room)
 {
     foreach (var current in room.GameObjList)
     {
         var chestObj = current as ChestObj;
         if (chestObj != null && chestObj.IsOpen)
         {
             var pt = new Vector2(chestObj.X / m_spriteScale.X - 8f, chestObj.Y / m_spriteScale.Y - 12f);
             for (var i = 0; i < m_iconSpritePosList.Count; i++)
             {
                 if (CDGMath.DistanceBetweenPts(pt, m_iconSpritePosList[i]) < 15f)
                 {
                     m_iconSpriteList[i].ChangeSprite("MapChestUnlocked_Sprite");
                     m_iconSpriteList[i].Opacity = 1f;
                     break;
                 }
             }
         }
     }
 }