public void GrabLadder(EntityLadder ladder) { Movement = MovementType.Climb; AnimationManager.Play(AnimationLibrary["climbLadder"]); ActiveLadder = ladder; MoveSpeed = WalkSpeed; Move(new Vector2(ladder.Position.X, Position.Y)); }
public void DismountLadder() { ProposedPosition = Position; Movement = MovementType.RunWalk; AnimationManager.Play(AnimationLibrary["idle"]); ActiveLadder = null; OnPlayerMoved(); }
public ActorPlayer(int id, PlayerIndex controller, Vector2 position) { ID = id; Controller = controller; Position = position; ProposedPosition = position; Velocity = new Vector2(0); FallVector = new Vector2(0); Content = Global.Content; WalkSpeed = 32f; RunSpeed = 128f; MoveSpeed = WalkSpeed; Collisions = new List <Rectangle>(); IsColliding = false; IsGrounded = true; CreateCollisionMask(Position, 32, 64); AnimationManager = new AnimationManager(); AnimationLibrary = new Dictionary <string, Animation>(); Facing = ActorFacing.Right; Movement = MovementType.RunWalk; SavedMovement = MovementType.RunWalk; ActiveLadder = null; LoadContent(); AnimationManager.Play(AnimationLibrary["idle"]); Inventory = new ActorInventory(); InputManager.DownPressed += OnDownPress; InputManager.UpPressed += OnUpPress; InputManager.LeftPressed += OnLeftPress; InputManager.RightPressed += OnRightPress; InputManager.JumpPressed += OnJumpPress; InputManager.RunPressed += OnRunPress; InputManager.RunReleased += OnRunRelease; InputManager.InteractPressed += OnInteractPress; }
/// <summary> /// Loads TiledMap into memory, releasing old CollisionMasks, if present /// </summary> /// <param name="mapID">ID of Map to Load</param> /// <returns></returns> public void LoadMap(string mapID) { SceneObjectLoader loader = new SceneObjectLoader(); if (ActiveMap != null) { loader.SaveSceneObjects(MapID, TileSceneObjects); } if (CollisionSolids.Count > 0) { for (int i = CollisionSolids.Count - 1; i >= 0; i--) { CollisionSolids.RemoveAt(i); } } if (TransitionHandlers.Count > 0) { for (int i = TransitionHandlers.Count - 1; i >= 0; i--) { TransitionHandlers.RemoveAt(i); } } MapID = mapID; string assetPath = Global.GetMapAssetPathByID(MapID); MapToLoad = Content.Load <TiledMap>(assetPath); TiledMapObjectLayer collisionLayer = MapToLoad.GetLayer <TiledMapObjectLayer>("CollisionMasks"); TiledMapObjectLayer transitionLayer = MapToLoad.GetLayer <TiledMapObjectLayer>("Transitions"); TiledMapObjectLayer interactive = MapToLoad.GetLayer <TiledMapObjectLayer>("Interactive"); if (collisionLayer.Objects.Length > 0 && collisionLayer != null) { foreach (TiledMapObject _sceneObject in collisionLayer.Objects) { switch (_sceneObject.Name) { case "CollisionSolid": { EntityCollisionSolid _newCollisionObject = new EntityCollisionSolid(_sceneObject.Position, (int)_sceneObject.Size.Width, (int)_sceneObject.Size.Height); CollisionSolids.Add(_newCollisionObject); break; } case "CollisionSolidAngle": { EntityCollisionSolid _newCollision = new EntityCollisionSolid(_sceneObject.Position, (int)_sceneObject.Size.Width, (int)_sceneObject.Size.Height, float.Parse(_sceneObject.Properties["Tilt"])); CollisionSolids.Add(_newCollision); break; } } } } if (transitionLayer.Objects.Length > 0 && transitionLayer != null) { foreach (TiledMapObject _transition in transitionLayer.Objects) { switch (_transition.Name) { case "TransitionDoor": { TransitionHandler transition = new TransitionHandler(_transition.Properties["MapID"], _transition.Position.X, _transition.Position.Y, float.Parse(_transition.Properties["PlayerX"]), float.Parse(_transition.Properties["PlayerY"]), _transition.Size.Width, _transition.Size.Height); TransitionHandlers.Add(transition); break; } case "TransitionDoorLocked": { TransitionHandler transition = new TransitionHandler(_transition.Properties["MapID"], _transition.Position.X, _transition.Position.Y, float.Parse(_transition.Properties["PlayerX"]), float.Parse(_transition.Properties["PlayerY"]), _transition.Size.Width, _transition.Size.Height); if (_transition.Properties["LockType"] == "Key") { transition.LockWithKey(Global.GetSceneObjectBYID(_transition.Properties["KeyShortname"]), int.Parse(_transition.Properties["KeyQuantity"])); } if (_transition.Properties["LockType"] == "Trigger") { transition.LockWithTrigger(_transition.Properties["TriggerKey"]); } TransitionHandlers.Add(transition); break; } case "TransitionSilent": { TransitionHandler transition = new TransitionHandler(_transition.Properties["MapID"], _transition.Position.X, _transition.Position.Y, float.Parse(_transition.Properties["PlayerX"]), float.Parse(_transition.Properties["PlayerY"]), _transition.Size.Width, _transition.Size.Height); transition.SetAsSilent(); TransitionHandlers.Add(transition); break; } } } } if (interactive != null && interactive.Objects.Length > 0) { foreach (TiledMapObject _interactive in interactive.Objects) { switch (_interactive.Name) { case "InteractiveLadder": { EntityLadder ladder = new EntityLadder(_interactive.Position, (int)_interactive.Size.Width, (int)_interactive.Size.Height); InteractiveEntities.Add(ladder); break; } } } } ActiveMap = MapToLoad; TileSceneObjects = new List <TileEntitySceneObject>(loader.LoadSceneObjects(mapID)); BoundingBox = new Rectangle(0, 0, ActiveMap.WidthInPixels, ActiveMap.HeightInPixels); OnMapLoaded(); }