示例#1
0
 public RogueskivApp(RogueskivAppConfig appConfig)
 {
     AppConfig             = appConfig;
     UxContext             = new UxContext("Rogueskiv", AppConfig, imagesPath: "imgs", audiosPath: "audio", fontsPath: "fonts");
     GameContext           = new GameContext(appConfig.MaxGameStepsWithoutRender);
     LoadingScreenRenderer = new LoadingScreenRenderer(UxContext, AppConfig.FontFile);
 }
示例#2
0
        public RogueskivInputHandler(
            UxContext uxContext, RogueskivGame game, IGameRenderer gameRenderer
            )
            : base(
                uxContext,
                game,
                gameRenderer,
                controlsByKeys: new Dictionary <int, int>
        {
            { (int)SDL_Keycode.SDLK_q, (int)Controls.QUIT },
            { (int)SDL_Keycode.SDLK_ESCAPE, (int)Controls.PAUSE },

            { (int)SDL_Keycode.SDLK_UP, (int)Controls.UP },
            { (int)SDL_Keycode.SDLK_DOWN, (int)Controls.DOWN },
            { (int)SDL_Keycode.SDLK_LEFT, (int)Controls.LEFT },
            { (int)SDL_Keycode.SDLK_RIGHT, (int)Controls.RIGHT },

            { (int)SDL_Keycode.SDLK_w, (int)Controls.UP },
            { (int)SDL_Keycode.SDLK_s, (int)Controls.DOWN },
            { (int)SDL_Keycode.SDLK_a, (int)Controls.LEFT },
            { (int)SDL_Keycode.SDLK_d, (int)Controls.RIGHT },

            { (int)SDL_Keycode.SDLK_KP_8, (int)Controls.UP },
            { (int)SDL_Keycode.SDLK_KP_2, (int)Controls.DOWN },
            { (int)SDL_Keycode.SDLK_KP_4, (int)Controls.LEFT },
            { (int)SDL_Keycode.SDLK_KP_6, (int)Controls.RIGHT },

            { (int)SDL_Keycode.SDLK_n, (int)Controls.TOGGLE_SOUNDS },
            { (int)SDL_Keycode.SDLK_m, (int)Controls.TOGGLE_MUSIC },
        },
                closeWindowControl: (int)Controls.CLOSE_WINDOW,
                toggleMusicControl: (int)Controls.TOGGLE_MUSIC
                )
        {
        }
示例#3
0
 public FixedPositionRenderer(
     UxContext uxContext,
     IRenderizable game,
     ISpriteProvider <T> spriteProvider
     ) : base(uxContext, game, spriteProvider)
 {
 }
示例#4
0
 public PlayerMovementEffectPlayer(UxContext uxContext, RogueskivGame game)
     : base(uxContext, audioFilename: "player_movement")
 {
     Game = game;
     PlayerMovementComp     = game.Entities.GetSingleComponent <PlayerComp, BoundedMovementComp>();
     PlayerPositionComp     = game.Entities.GetSingleComponent <PlayerComp, CurrentPositionComp>();
     PlayerLastPositionComp = game.Entities.GetSingleComponent <PlayerComp, LastPositionComp>();
 }
示例#5
0
 public HealthRenderer(UxContext uxContext)
     : base(uxContext)
 {
     Texture     = uxContext.GetTexture("player-health-bar.png");
     TextureSize = new Size(TEXTURE_WIDTH, TEXTURE_HEIGHT);
     TextureRect = new SDL_Rect()
     {
         x = 0, y = 0, w = TextureSize.Width, h = TextureSize.Height
     };
 }
示例#6
0
 public PlayerRenderer(UxContext uxContext, IRenderizable game, int playerRadius)
     : base(
         uxContext,
         game,
         new SingleSpriteProvider <CurrentPositionComp>(
             uxContext,
             "player.png",
             GetPlayerTextureRect(playerRadius)
             )
         ) =>
示例#7
0
        public TitleRenderer(UxContext uxContext, IntPtr titleFont, IntPtr versionFont)
        {
            UxContext       = uxContext;
            TextRenderer    = new TextRenderer(uxContext, titleFont);
            VersionRenderer = new TextRenderer(uxContext, versionFont);

            var             assembly        = Assembly.GetExecutingAssembly();
            FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(assembly.Location);

            Version = fileVersionInfo.ProductVersion;
        }
示例#8
0
        public PlayerAnimationProvider(UxContext uxContext, int playerRadius)
        {
            Texture = uxContext.GetTexture("player-texture.png");
            var playerDiameter = playerRadius * 2;

            MaskTexture = Masks.GetCircleMask(playerRadius);
            TextureRect = new SDL_Rect {
                x = 0, y = 0, w = playerDiameter, h = playerDiameter
            };
            OutputSize = new Size(TextureRect.w, TextureRect.h);
            NonRepeatingTextureSize = 64 - TextureRect.w;
        }
示例#9
0
 public TileRenderer(UxContext uxContext, IRenderizable game)
     : base(
         uxContext,
         game,
         new TileSpriteProvider(
             uxContext,
             "floor.png",
             new Size(1920, 1440)
             )
         )
 {
 }
示例#10
0
 public PickableRenderer(
     IGameRenderer gameRenderer,
     UxContext uxContext,
     IRenderizable game,
     IntPtr texture,
     SDL_Rect textureRect
     )
     : base(
         uxContext,
         game,
         new PickableSpriteProvider <T>(texture, textureRect)
         ) =>
示例#11
0
        public RogueskivRenderer(
            UxContext uxContext,
            IGameContext gameContext,
            RogueskivGame game,
            IRogueskivUxConfig uxConfig,
            IRogueskivGameConfig gameConfig
            ) : base(uxContext, game)
        {
            RogueskivGame      = game;
            UxContext          = uxContext;
            UxConfig           = uxConfig;
            PlayerPositionComp = game.Entities.GetSingleComponent <PlayerComp, CurrentPositionComp>();

            var font = uxContext.GetFont(uxConfig.FontFile, FONT_SIZE);

            BoardTexture = uxContext.GetTexture("board.png");

            var bgrRenderer = new BgrRenderer(uxContext, new Size(1920, 1440));

            Renderers.Add(bgrRenderer);
            Renderers.Add(new BoardRenderer(uxContext, game, BoardTexture));

            CompRenderers[typeof(FoodComp)]        = new FoodRenderer(this, uxContext, game, BoardTexture);
            CompRenderers[typeof(TorchComp)]       = new TorchRenderer(this, uxContext, game, BoardTexture);
            CompRenderers[typeof(MapRevealerComp)] = new MapRevealerRenderer(this, uxContext, game, BoardTexture);
            CompRenderers[typeof(AmuletComp)]      = new AmuletRenderer(this, uxContext, game, BoardTexture);
            CompRenderers[typeof(EnemyComp)]       = new EnemyRenderer(uxContext, game);
            CompRenderers[typeof(FOVComp)]         = new FOVRenderer(uxContext);
            CompRenderers[typeof(PlayerComp)]      = new PlayerRenderer(uxContext, game, gameConfig.PlayerRadius);
            CompRenderers[typeof(HealthComp)]      = new HealthRenderer(uxContext);
            CompRenderers[typeof(TimerComp)]       = new GameInfoRenderer(
                uxContext,
                gameContext,
                font,
                game.Floor,
                inGameTimeVisible: gameConfig.InGameTimeVisible,
                realTimeVisible: gameConfig.RealTimeVisible
                );
            CompRenderers[typeof(PopUpComp)] = new PopUpRenderer(uxContext, game, font);

            PlayerMovementEffectPlayer = new PlayerMovementEffectPlayer(uxContext, game);
            EffectPlayers.Add(new BounceEffectPlayer(uxContext, game));
            EffectPlayers.Add(new TorchPickedEffectPlayer(uxContext, game));
            EffectPlayers.Add(new MapRevealerPickedEffectPlayer(uxContext, game));
            EffectPlayers.Add(new FoodPickedEffectPlayer(uxContext, game));
            EffectPlayers.Add(new WinEffectPlayer(uxContext, game));
            EffectPlayers.Add(new EnemyCollidedEffectPlayer(uxContext, game));
            EffectPlayers.Add(new StairsUpEffectPlayer(uxContext, game));
            EffectPlayers.Add(new StairsDownEffectPlayer(uxContext, game));
            EffectPlayers.Add(new DeathEffectPlayer(uxContext, game));
        }
示例#12
0
 public GameInfoRenderer(
     UxContext uxContext,
     IGameContext gameContext,
     IntPtr font,
     int floor,
     bool inGameTimeVisible,
     bool realTimeVisible
     ) : base(uxContext, font)
 {
     Floor             = floor;
     GameTicks         = gameContext.GameTicks;
     InGameTimeVisible = inGameTimeVisible;
     RealTimeVisible   = realTimeVisible;
 }
示例#13
0
        public RogueskivMenuRenderer(UxContext uxContext, RogueskivMenu game, string fontFile)
            : base(uxContext, game)
        {
            var titleFont = uxContext.GetFont(fontFile, TITLE_FONT_SIZE);
            var menuFont  = uxContext.GetFont(fontFile, MENU_FONT_SIZE);
            var smallFont = uxContext.GetFont(fontFile, SMALL_FONT_SIZE);

            Renderers.Add(new TitleRenderer(uxContext, titleFont, smallFont));
            Renderers.Add(new InstructionsRenderer(uxContext, smallFont));
            Renderers.Add(new ControlsInfoRenderer(uxContext, game, smallFont));
            Renderers.Add(new CustomSeedInputRenderer(uxContext, game, smallFont));
            CompRenderers[typeof(MenuOptionComp)] = new MenuOptionRenderer(uxContext, game, menuFont);
            CompRenderers[typeof(StatsComp)]      = new StatsRenderer(uxContext, smallFont);
        }
示例#14
0
        public static void SetUxCenter(
            UxContext uxContext, PointF playerPosition, int friction = 1
            )
        {
            var targetCenter = uxContext
                               .ScreenSize.ToPoint().Divide(2)
                               .Substract(playerPosition.ToPoint());

            var cameraMovement = targetCenter
                                 .Substract(uxContext.Center)
                                 .Divide(friction);

            uxContext.Center = uxContext.Center.Add(cameraMovement);
        }
示例#15
0
 public EnemyRenderer(UxContext uxContext, IRenderizable game)
     : base(
         uxContext,
         game,
         new SingleSpriteProvider <CurrentPositionComp>(
             uxContext,
             "enemy.png",
             new SDL_Rect {
     x = 0, y = 0, w = 16, h = 16
 }
             )
         )
 {
 }
示例#16
0
 public DownStairsRenderer(UxContext uxContext, IRenderizable game, IntPtr boardTexture)
     : base(
         uxContext,
         game,
         new SingleSpriteProvider <DownStairsComp>(
             boardTexture,
             new SDL_Rect
 {
     x = 0,
     y = BoardComp.TILE_SIZE,
     w = BoardComp.TILE_SIZE,
     h = BoardComp.TILE_SIZE
 }
             )
         )
 {
 }
示例#17
0
 public UpStairsRenderer(UxContext uxContext, IRenderizable game, IntPtr boardTexture)
     : base(
         uxContext,
         game,
         new SingleSpriteProvider <UpStairsComp>(
             boardTexture,
             new SDL_Rect
 {
     x = BoardComp.TILE_SIZE,
     y = BoardComp.TILE_SIZE,
     w = UP_STAIRS_SPRITE_WIDTH,
     h = BoardComp.TILE_SIZE
 }
             )
         )
 {
 }
示例#18
0
        public RogueskivMenuInputHandler(
            UxContext uxContext, RogueskivMenu game, IGameRenderer gameRenderer
            )
            : base(
                uxContext,
                game,
                gameRenderer,
                controlsByKeys: new Dictionary <int, int>
        {
            { (int)SDL_Keycode.SDLK_ESCAPE, (int)Controls.QUIT },
            { (int)SDL_Keycode.SDLK_q, (int)Controls.QUIT },

            { (int)SDL_Keycode.SDLK_UP, (int)Controls.UP },
            { (int)SDL_Keycode.SDLK_DOWN, (int)Controls.DOWN },
            { (int)SDL_Keycode.SDLK_LEFT, (int)Controls.LEFT },
            { (int)SDL_Keycode.SDLK_RIGHT, (int)Controls.RIGHT },

            { (int)SDL_Keycode.SDLK_w, (int)Controls.UP },
            { (int)SDL_Keycode.SDLK_s, (int)Controls.DOWN },
            { (int)SDL_Keycode.SDLK_a, (int)Controls.LEFT },
            { (int)SDL_Keycode.SDLK_d, (int)Controls.RIGHT },

            { (int)SDL_Keycode.SDLK_KP_8, (int)Controls.UP },
            { (int)SDL_Keycode.SDLK_KP_2, (int)Controls.DOWN },
            { (int)SDL_Keycode.SDLK_KP_4, (int)Controls.LEFT },
            { (int)SDL_Keycode.SDLK_KP_6, (int)Controls.RIGHT },

            { (int)SDL_Keycode.SDLK_RETURN, (int)Controls.ENTER },
            { (int)SDL_Keycode.SDLK_RETURN2, (int)Controls.ENTER },
            { (int)SDL_Keycode.SDLK_KP_ENTER, (int)Controls.ENTER },
            { (int)SDL_Keycode.SDLK_BACKSPACE, (int)Controls.BACKSPACE },
            { (int)SDL_Keycode.SDLK_m, (int)Controls.TOGGLE_MUSIC },
        },
                closeWindowControl: (int)Controls.CLOSE_WINDOW,
                toggleMusicControl: (int)Controls.TOGGLE_MUSIC,
                allowRepeats: true
                )
        {
            Game = game;
            ControlStates.Add((int)Controls.COPY, false);
            ControlStates.Add((int)Controls.PASTE, false);
        }
示例#19
0
 public FoodRenderer(
     IGameRenderer gameRenderer,
     UxContext uxContext,
     IRenderizable game,
     IntPtr boardTexture
     )
     : base(
         gameRenderer,
         uxContext,
         game,
         boardTexture,
         new SDL_Rect
 {
     x = 0,
     y = 0,
     w = BoardComp.TILE_SIZE,
     h = BoardComp.TILE_SIZE
 }
         )
 {
 }
示例#20
0
 public BounceEffectPlayer(UxContext uxContext, RogueskivGame game)
     : base(uxContext, game, "rock_hit")
 {
 }
示例#21
0
 public LoadingScreenRenderer(UxContext uxContext, string fontPath)
     : base(uxContext, uxContext.GetFont(fontPath, LOADING_FONT_SIZE))
 {
 }
示例#22
0
 public InstructionsRenderer(UxContext uxContext, IntPtr font)
 {
     UxContext    = uxContext;
     TextRenderer = new TextRenderer(uxContext, font);
 }
示例#23
0
 public PopUpRenderer(UxContext uxContext, RogueskivGame game, IntPtr font)
     : base(uxContext, font) => Game = game;
示例#24
0
 public StairsDownEffectPlayer(UxContext uxContext, RogueskivGame game)
     : base(uxContext, game, "stairs_down")
 {
 }
示例#25
0
 public BufferRenderer(UxContext uxContext)
 {
     UxContext = uxContext;
     SetBufferTexture();
 }
示例#26
0
 protected EventEffectPlayer(UxContext uxContext, RogueskivGame game, string audioFilename)
     : base(uxContext, audioFilename) =>
示例#27
0
 public FoodPickedEffectPlayer(UxContext uxContext, RogueskivGame game)
     : base(uxContext, game, "food_picked")
 {
 }
示例#28
0
 public TorchPickedEffectPlayer(UxContext uxContext, RogueskivGame game)
     : base(uxContext, game, "torch_picked")
 {
 }
示例#29
0
 public MapRevealerPickedEffectPlayer(UxContext uxContext, RogueskivGame game)
     : base(uxContext, game, "map_revealer_picked")
 {
 }
示例#30
0
 public CustomSeedInputRenderer(UxContext uxContext, RogueskivMenu game, IntPtr font)
 {
     Game         = game;
     TextRenderer = new TextRenderer(uxContext, font);
 }