tile.rs 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. pub enum TileId {
  2. ShortGrass,
  3. MiddleGrass,
  4. HighGrass,
  5. Dirt,
  6. Mud,
  7. Concrete,
  8. BrickWall,
  9. }
  10. pub struct Tile {
  11. pub id: TileId,
  12. pub tile_width: u32,
  13. pub tile_height: u32,
  14. pub relative_tile_width: f32,
  15. pub relative_tile_height: f32,
  16. pub tile_x: u32,
  17. pub tile_y: u32,
  18. pub opacity: f32,
  19. }
  20. impl Tile {
  21. pub fn from_str_id(
  22. id: &str,
  23. tile_width: u32,
  24. tile_height: u32,
  25. relative_tile_width: f32,
  26. relative_tile_height: f32,
  27. tile_x: u32,
  28. tile_y: u32,
  29. ) -> Self {
  30. match id {
  31. "ShortGrass" => Self {
  32. id: TileId::ShortGrass,
  33. opacity: 0.0,
  34. tile_width,
  35. tile_height,
  36. relative_tile_width,
  37. relative_tile_height,
  38. tile_x,
  39. tile_y,
  40. },
  41. "MiddleGrass" => Self {
  42. id: TileId::MiddleGrass,
  43. opacity: 0.1,
  44. tile_width,
  45. tile_height,
  46. relative_tile_width,
  47. relative_tile_height,
  48. tile_x,
  49. tile_y,
  50. },
  51. "HighGrass" => Self {
  52. id: TileId::HighGrass,
  53. opacity: 0.2,
  54. tile_width,
  55. tile_height,
  56. relative_tile_width,
  57. relative_tile_height,
  58. tile_x,
  59. tile_y,
  60. },
  61. "Dirt" => Self {
  62. id: TileId::Dirt,
  63. opacity: 0.0,
  64. tile_width,
  65. tile_height,
  66. relative_tile_width,
  67. relative_tile_height,
  68. tile_x,
  69. tile_y,
  70. },
  71. "Mud" => Self {
  72. id: TileId::Mud,
  73. opacity: 0.1,
  74. tile_width,
  75. tile_height,
  76. relative_tile_width,
  77. relative_tile_height,
  78. tile_x,
  79. tile_y,
  80. },
  81. "Concrete" => Self {
  82. id: TileId::Concrete,
  83. opacity: 0.0,
  84. tile_width,
  85. tile_height,
  86. relative_tile_width,
  87. relative_tile_height,
  88. tile_x,
  89. tile_y,
  90. },
  91. "BrickWall" => Self {
  92. id: TileId::BrickWall,
  93. opacity: 1.0,
  94. tile_width,
  95. tile_height,
  96. relative_tile_width,
  97. relative_tile_height,
  98. tile_x,
  99. tile_y,
  100. },
  101. &_ => {
  102. // FIXME BS NOW: manage errors
  103. panic!("Unknown tile id {}", id)
  104. }
  105. }
  106. }
  107. }