Gridarta Editor
MoveSquareEnvAction.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2015 The Gridarta Developers.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 package net.sf.gridarta.action;
21 
22 import java.awt.Point;
30 import net.sf.japi.swing.action.ActionMethod;
31 import org.jetbrains.annotations.NotNull;
32 import org.jetbrains.annotations.Nullable;
33 
39 public class MoveSquareEnvAction<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> extends AbstractMoveSquareAction<G, A, R> {
40 
44  @NotNull
46 
52  public MoveSquareEnvAction(@NotNull final SelectedSquareModel<G, A, R> selectedSquareModel, @Nullable final MapManager<G, A, R> mapManager) {
53  super(selectedSquareModel, mapManager);
54  this.selectedSquareModel = selectedSquareModel;
55  }
56 
60  @ActionMethod
61  public void moveSquareEnv() {
62  doAction(true);
63  }
64 
65  @Override
66  protected boolean doAction(final boolean performAction, @Nullable final G gameObject) {
67  if (gameObject == null || !gameObject.isHead()) {
68  return false;
69  }
70 
71  final G envGameObject = gameObject.getContainerGameObject();
72  if (envGameObject == null) {
73  return false;
74  }
75 
76  final MapSquare<G, A, R> mapSquare = selectedSquareModel.getSelectedMapSquare();
77  if (mapSquare == null) {
78  return false;
79  }
80 
81  final MapModel<G, A, R> mapModel = mapSquare.getMapModel();
82  final Point pos = mapSquare.getMapLocation();
83  if (!envGameObject.isInContainer() && gameObject.getArchetype().isMulti() && !mapModel.isMultiArchFittingToMap(gameObject.getArchetype(), pos, true)) {
84  return false;
85  }
86 
87  if (performAction) {
88  mapModel.beginTransaction("Move To Environment");
89  try {
90  mapModel.moveEnv(gameObject, pos, envGameObject);
91  } finally {
92  mapModel.endTransaction();
93  }
94  }
95 
96  return true;
97  }
98 
99 }
boolean isMultiArchFittingToMap(@NotNull Archetype< G, A, R > archetype, @NotNull Point pos, boolean allowDouble)
Checks whether an GameObject (multi-arch) would still fit on this map.
A MapModel reflects the data of a map.
Definition: MapModel.java:75
A MapManager manages all opened maps.
Definition: MapManager.java:37
Graphical User Interface of Gridarta.
MapModel< G, A, R > getMapModel()
Returns the MapModel this map square is part of.
Definition: MapSquare.java:99
void endTransaction()
End a transaction.
MapSquare< G, A, R > getSelectedMapSquare()
Returns the currently selected map square.
final SelectedSquareModel< G, A, R > selectedSquareModel
The SelectedSquareModel that is updated.
Base package of all Gridarta classes.
MapModel< G, A, R > mapModel
The currently active MapModel.
Abstract base class for actions that move the selected game object in the SelectedSquareModel.
void moveSquareEnv()
Action method that moves the selected game object to its environment.
Reflects a game object (object on a map).
Definition: GameObject.java:36
GameObjects are the objects based on Archetypes found on maps.
Point getMapLocation()
Returns the coordinate on the map.
Definition: MapSquare.java:124
Displays the contents of the currently selected map square.
void moveEnv(@NotNull G gameObject, @NotNull Point pos, @NotNull G nextGameObject)
Moves a GameObject to its environment.
boolean doAction(final boolean performAction, @Nullable final G gameObject)
An net.sf.gridarta.utils.EditorAction that moves the selected game object in the SelectedSquareModel ...
void beginTransaction(@NotNull String name)
Starts a new transaction.
The model component of the selected square control.
MoveSquareEnvAction(@NotNull final SelectedSquareModel< G, A, R > selectedSquareModel, @Nullable final MapManager< G, A, R > mapManager)
Creates a new instance.