public static Entity CreatePlayerEntity(Vector2 Position) { Entity player = Entity.CreateNew(); player.Add(new PlayerInputComponent()); var component = new TilePositionComponent(Position); LabyrinthianGame.PlayerPosition = component; player.Add(component); player.Add(new TransformComponent()); player.Add(new PlayerSpriteComponent(LabyrinthianGame.Game.Content.Load <Texture2D>(@"Textures/PlayerFemale"), new SpriteAnimator(SpriteAnimator.PlayerRectangles) { TimeBetweenAnimationInMs = 200 })); player.Add(new BoxColliderComponent(new Point(6, 3), new Point(20, 26))); player.Add(new RigidBodyComponent(BodyType.Dynamic)); player.Add(new LightSourceComponent(100) { Offset = new Point(16, 16) }); player.Add(new CameraComponent(LabyrinthianGame.Game.GraphicsDevice.Viewport)); player.Add(new LevelCompleterComponent()); return(player); }
protected override void Entity_ComponentRemoved(Entity sender, ComponentEventArgs e) { if (e.Component == this.entityPosition) { this.entityPosition = null; } base.Entity_ComponentRemoved(sender, e); }
protected override void Entity_ComponentAdded(Entity sender, ComponentEventArgs e) { if (e.Component is TilePositionComponent p) { this.entityPosition = p; } base.Entity_ComponentAdded(sender, e); }
static public bool IsOnFloor(GameEntity avatarEntity, GameContext gameContext) { if (avatarEntity.position.y % TilePositionComponent.TileSize == TilePositionComponent.TileSize - 1) { var playerTilePosition = TilePositionComponent.TransformWorldPositionToTilePosition(new IntVector2(avatarEntity.position.x, avatarEntity.position.y)); var tileBelowPlayer = playerTilePosition.BelowTilePosition(); return(gameContext.GetEntitiesWithTilePosition(tileBelowPlayer).Count > 0); } return(false); }
public void Execute() { foreach (var entity in allMovablesGroup.GetEntities()) { if (entity.rigidbody.speedX != 0 || entity.rigidbody.speedY != 0) { var newX = entity.position.x + entity.rigidbody.speedX; var newY = entity.position.y + entity.rigidbody.speedY; var newTilePosition = TilePositionComponent.TransformWorldPositionToTilePosition(new IntVector2(newX, newY)); if (TileUtils.IsSolid(newX, newY, gameContext)) { if (entity.rigidbody.speedY > 0) { entity.rigidbody.speedY = 0; newY = newTilePosition.ToTopLeftWorldPosition().y - 1; } } entity.ReplacePosition(newX, newY); } if (entity.rigidbody.useGravity) { if (!AvatarUtils.IsOnFloor(entity, gameContext)) { entity.rigidbody.speedY++; if (entity.rigidbody.speedY > 10) { entity.rigidbody.speedY = 10; } } else { entity.rigidbody.speedY = 0; } } } }
static public bool IsSolid(IntVector2 worldPosition, GameContext gameContext) { var tilePosition = TilePositionComponent.TransformWorldPositionToTilePosition(worldPosition); return(IsSolid(tilePosition, gameContext)); }
private Rectangle GetDrawRectangle(TilePositionComponent tilePosition) { return(new Rectangle(tilePosition.TopLeftWorldPosition.ToPoint(), new Point(TilePositionComponent.TileSize, TilePositionComponent.TileSize))); }
public IntVector2 ToBottomMiddleWorldPosition() { return(TilePositionComponent.TransformTilePositionToBottomMiddleWorldPosition(this)); }
public IntVector2 ToCenteredWorldPosition() { return(TilePositionComponent.TransformTilePositionToCenteredWorldPosition(this)); }