mod.rs 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. use ggez::graphics;
  2. use crate::config::{UI_SPRITE_SHEET_HEIGHT, UI_SPRITE_SHEET_WIDTH};
  3. use crate::scene::item::SceneItem;
  4. use crate::ui::scene_item_menu::SceneItemMenuItem;
  5. use crate::WindowPoint;
  6. pub mod scene_item_menu;
  7. pub enum UiItem {
  8. SceneItemMenu,
  9. }
  10. pub struct UiSpriteInfo {
  11. pub relative_start_x: f32,
  12. pub relative_start_y: f32,
  13. pub relative_width: f32,
  14. pub relative_height: f32,
  15. pub width: f32,
  16. pub height: f32,
  17. }
  18. impl UiSpriteInfo {
  19. pub fn from_type(type_: UiItem) -> Self {
  20. match type_ {
  21. UiItem::SceneItemMenu => Self {
  22. relative_start_x: 0.0,
  23. relative_start_y: 0.0,
  24. relative_width: 71.0 / UI_SPRITE_SHEET_WIDTH,
  25. relative_height: 68.0 / UI_SPRITE_SHEET_HEIGHT,
  26. width: 71.0,
  27. height: 68.0,
  28. },
  29. }
  30. }
  31. pub fn as_draw_param(&self) -> graphics::DrawParam {
  32. graphics::DrawParam::new().src(graphics::Rect::new(
  33. self.relative_start_x,
  34. self.relative_start_y,
  35. self.relative_width,
  36. self.relative_height,
  37. ))
  38. }
  39. pub fn which_item_clicked(
  40. &self,
  41. _window_menu_point: WindowPoint,
  42. _window_click_point: WindowPoint,
  43. _scene_item: &SceneItem,
  44. ) -> Option<SceneItemMenuItem> {
  45. Some(SceneItemMenuItem::Move)
  46. }
  47. }
  48. #[derive(Debug)]
  49. pub enum UserEvent {
  50. Click(WindowPoint), // Window coordinates
  51. RightClick(WindowPoint), // Window coordinates
  52. AreaSelection(WindowPoint, WindowPoint), // Window coordinates
  53. }
  54. pub enum SceneItemPrepareOrder {
  55. Move(usize), // scene_item usize
  56. }