game_mode.nim 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. import nico
  2. import nico/keycodes
  3. # import ./cons
  4. # Переключает режимы программы
  5. # 1. Объявляем enum для игровых режимов
  6. type
  7. GameModeEnum* = enum
  8. modeGame, # Стандартный режим игры
  9. modeShowHelp, # Показ справки
  10. modeFontGen # Режим рисования/генерации шрифта
  11. GameMode* {.requiresInit.}= object
  12. mode: GameModeEnum = modeGame
  13. proc NewGameMode*():GameMode{.inline.} =
  14. var sf: GameMode = GameMode()
  15. return sf
  16. proc `mode`*(sf: GameMode):GameModeEnum{.inline.}=
  17. return sf.mode
  18. proc Update*(sf: var GameMode, dt: float32)=
  19. # 2. Глобальный переключатель справки (работает в любом режиме)
  20. # В Nico клавиша F1 мапится через key(keyF1)
  21. if keyp(K_F1):
  22. sf.mode = modeShowHelp
  23. elif keyp(K_F2):
  24. sf.mode=modeFontGen
  25. elif keyp(K_ESCAPE):
  26. sf.mode = modeGame