2
0

InteractiveTileController.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package controller.tiles.interactive;
  2. import controller.GameController;
  3. import controller.InteractiveController;
  4. import model.tiles.InteractiveTileModel;
  5. import view.Camera;
  6. import view.popUpMenu.PopupMenu;
  7. import view.tile.ONCLICKTYPE;
  8. import view.tile.interactive.InteractiveTileView;
  9. import java.awt.*;
  10. public abstract class InteractiveTileController implements InteractiveController {
  11. private GameController gameController;
  12. private InteractiveTileView view;
  13. private InteractiveTileModel model;
  14. protected ONCLICKTYPE onclicktype;
  15. private boolean clicked = false;
  16. private int screenXClick, screenYClick;
  17. public InteractiveTileController(InteractiveTileModel model, InteractiveTileView view, GameController gameController){
  18. this.view = view;
  19. this.model = model;
  20. this.gameController = gameController;
  21. }
  22. public void setModel(InteractiveTileModel model){
  23. this.model = model;
  24. }
  25. public void setView(InteractiveTileView view){
  26. this.view = view;
  27. }
  28. public boolean isClicked(int mouseScreenX, int mouseScreenY, Camera camera) {
  29. double mouseWorldGridX = (camera.worldX + mouseScreenX - camera.screenX) / view.getWidth();
  30. double mouseWorldGridY = (camera.worldY + mouseScreenY - camera.screenY) / view.getHeight();
  31. boolean clicked = mouseWorldGridX == model.getWorldGridX() && mouseWorldGridY == model.getWorldGridY();
  32. return clicked;
  33. }
  34. public void updateCoordinates(int screenX, int screenY){
  35. view.updateCoordinates(screenX, screenY);
  36. }
  37. public PopupMenu getPopupMenu(){
  38. return view.getPopupMenu();
  39. }
  40. public void setPopupOnClick(PopupMenu popup){
  41. onclicktype = ONCLICKTYPE.POPUP;
  42. view.setPopupOnClick(popup);
  43. }
  44. public void click(int screenX, int screenY) {
  45. if(onclicktype == ONCLICKTYPE.RUNNABLE){
  46. view.runOnClick();
  47. }else{
  48. screenXClick = screenX;
  49. screenYClick = screenY;
  50. clicked = true;
  51. }
  52. }
  53. public InteractiveTileModel getModel(){
  54. return model;
  55. }
  56. public ONCLICKTYPE getOnClickType(){
  57. return onclicktype;
  58. }
  59. public void drawTile(Graphics2D g2){
  60. view.drawTile(g2);
  61. }
  62. public void drawPopup(Graphics2D g2){
  63. if(onclicktype == ONCLICKTYPE.POPUP && clicked == true){
  64. view.drawPopUp(screenXClick, screenYClick, g2);
  65. }
  66. }
  67. public boolean getClicked(){
  68. return clicked;
  69. }
  70. public void unClick() {
  71. clicked = false;
  72. }
  73. public abstract void upgrade();
  74. public abstract void collect();
  75. public int getLevel() {
  76. return model.getLevel();
  77. }
  78. }