| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package controller.tiles.interactive;
- import controller.GameController;
- import controller.InteractiveController;
- import model.tiles.InteractiveTileModel;
- import view.Camera;
- import view.popUpMenu.PopupMenu;
- import view.tile.ONCLICKTYPE;
- import view.tile.interactive.InteractiveTileView;
- import java.awt.*;
- public abstract class InteractiveTileController implements InteractiveController {
- private GameController gameController;
- private InteractiveTileView view;
- private InteractiveTileModel model;
- protected ONCLICKTYPE onclicktype;
- private boolean clicked = false;
- private int screenXClick, screenYClick;
- public InteractiveTileController(InteractiveTileModel model, InteractiveTileView view, GameController gameController){
- this.view = view;
- this.model = model;
- this.gameController = gameController;
- }
- public void setModel(InteractiveTileModel model){
- this.model = model;
- }
- public void setView(InteractiveTileView view){
- this.view = view;
- }
- public boolean isClicked(int mouseScreenX, int mouseScreenY, Camera camera) {
- double mouseWorldGridX = (camera.worldX + mouseScreenX - camera.screenX) / view.getWidth();
- double mouseWorldGridY = (camera.worldY + mouseScreenY - camera.screenY) / view.getHeight();
- boolean clicked = mouseWorldGridX == model.getWorldGridX() && mouseWorldGridY == model.getWorldGridY();
- return clicked;
- }
- public void updateCoordinates(int screenX, int screenY){
- view.updateCoordinates(screenX, screenY);
- }
- public PopupMenu getPopupMenu(){
- return view.getPopupMenu();
- }
- public void setPopupOnClick(PopupMenu popup){
- onclicktype = ONCLICKTYPE.POPUP;
- view.setPopupOnClick(popup);
- }
- public void click(int screenX, int screenY) {
- if(onclicktype == ONCLICKTYPE.RUNNABLE){
- view.runOnClick();
- }else{
- screenXClick = screenX;
- screenYClick = screenY;
- clicked = true;
- }
- }
- public InteractiveTileModel getModel(){
- return model;
- }
- public ONCLICKTYPE getOnClickType(){
- return onclicktype;
- }
- public void drawTile(Graphics2D g2){
- view.drawTile(g2);
- }
- public void drawPopup(Graphics2D g2){
- if(onclicktype == ONCLICKTYPE.POPUP && clicked == true){
- view.drawPopUp(screenXClick, screenYClick, g2);
- }
- }
- public boolean getClicked(){
- return clicked;
- }
- public void unClick() {
- clicked = false;
- }
- public abstract void upgrade();
- public abstract void collect();
- public int getLevel() {
- return model.getLevel();
- }
- }
|