GameLogic.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #pragma once
  2. #include "utils/Card.h"
  3. #include "utils/List.h"
  4. #include "utils/Input.h"
  5. #include "utils/Vector.h"
  6. enum GameState {
  7. Logo, Intro, Play, Solve, Finish
  8. };
  9. class GameLogic {
  10. GameState state = Logo;
  11. List<Card> hand = List<Card>();
  12. RenderBuffer *buffer;
  13. List<Card> stock = List<Card>();
  14. List<Card> waste = List<Card>();
  15. List<Card> foundation[4] = {List<Card>(), List<Card>(), List<Card>(), List<Card>()};
  16. List<Card> tableau[7] = {List<Card>(), List<Card>(), List<Card>(), List<Card>(), List<Card>(), List<Card>(),
  17. List<Card>()};
  18. int8_t selection[2] = {0, 0};
  19. int8_t selectedCard=0;
  20. Card *tempCard;
  21. Vector tempPos = {0, 0};
  22. float tempTime=0;
  23. int8_t target[2] = {0, -1};
  24. bool readyToRender= false;
  25. double startTime;
  26. double end;
  27. public:
  28. bool dirty= true;
  29. GameLogic(RenderBuffer *buffer, InputEventHandler *inputHandler);
  30. ~GameLogic();
  31. void Update(float delta);
  32. void Input(int key, InputType type);
  33. void Reset();
  34. void GenerateDeck();
  35. bool CanSolve();
  36. void DoIntro(float delta);
  37. void DrawPlayScene();
  38. void HandleSolve(float delta);
  39. void QuickSolve();
  40. bool isReady(){return readyToRender;}
  41. void DrawColumn(uint8_t x, uint8_t y, uint8_t selected, int8_t column);
  42. void HandleNavigation(int key);
  43. void PickAndPlace();
  44. int8_t FirstNonFlipped(const List<Card> &deck);
  45. };