mod.rs 1.7KB

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