Tile.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // ----------------------------------------------------------------
  2. // From Game Programming in C++ by Sanjay Madhav
  3. // Copyright (C) 2017 Sanjay Madhav. All rights reserved.
  4. //
  5. // Released under the BSD License
  6. // See LICENSE in root directory for full details.
  7. // ----------------------------------------------------------------
  8. #include "Tile.h"
  9. #include "SpriteComponent.h"
  10. #include "Game.h"
  11. Tile::Tile(class Game* game)
  12. :Actor(game)
  13. ,mParent(nullptr)
  14. ,f(0.0f)
  15. ,g(0.0f)
  16. ,h(0.0f)
  17. ,mBlocked(false)
  18. ,mSprite(nullptr)
  19. ,mTileState(EDefault)
  20. ,mSelected(false)
  21. {
  22. mSprite = new SpriteComponent(this);
  23. UpdateTexture();
  24. }
  25. void Tile::SetTileState(TileState state)
  26. {
  27. mTileState = state;
  28. UpdateTexture();
  29. }
  30. void Tile::ToggleSelect()
  31. {
  32. mSelected = !mSelected;
  33. UpdateTexture();
  34. }
  35. void Tile::UpdateTexture()
  36. {
  37. std::string text;
  38. switch (mTileState)
  39. {
  40. case EStart:
  41. text = "Assets/TileTan.png";
  42. break;
  43. case EBase:
  44. text = "Assets/TileGreen.png";
  45. break;
  46. case EPath:
  47. if (mSelected)
  48. text = "Assets/TileGreySelected.png";
  49. else
  50. text = "Assets/TileGrey.png";
  51. break;
  52. case EDefault:
  53. default:
  54. if (mSelected)
  55. text = "Assets/TileBrownSelected.png";
  56. else
  57. text = "Assets/TileBrown.png";
  58. break;
  59. }
  60. mSprite->SetTexture(GetGame()->GetTexture(text));
  61. }