20 package net.sf.gridarta.actions;
28 import org.jetbrains.annotations.NotNull;
47 public static <G extends GameObject<G, A, R>, A extends
MapArchObject<A>, R extends
Archetype<G, A, R>>
void undo(@NotNull
final UndoModel<G, A, R> undoModel, @NotNull
final MapModel<G, A, R> mapModel) {
48 applyChange(undoModel, mapModel, undoModel.undo());
56 public static <G extends GameObject<G, A, R>, A extends
MapArchObject<A>, R extends
Archetype<G, A, R>>
void redo(@NotNull
final UndoModel<G, A, R> undoModel, @NotNull
final MapModel<G, A, R> mapModel) {
57 applyChange(undoModel, mapModel, undoModel.redo());
66 private static <G extends GameObject<G, A, R>, A extends
MapArchObject<A>, R extends Archetype<G, A, R>>
void applyChange(@NotNull
final UndoModel<G, A, R> undoModel, @NotNull
final MapModel<G, A, R> mapModel, @NotNull
final UndoState<G, A, R> undoState) {
68 mapModel.beginTransaction(undoState.getName());
70 final A newMapArchObject = undoState.getMapArchObject();
72 mapArchObject.setMapSize(newMapArchObject.getMapSize());
73 mapArchObject.beginTransaction();
75 mapArchObject.setState(newMapArchObject);
77 mapArchObject.endTransaction();
79 undoState.getSavedSquares().applyChanges(mapModel);
81 mapModel.endTransaction();