package de.nisble.droidsweeper.game.jni;
import de.nisble.droidsweeper.game.Position;
/** Interface that is used to observe changes in the matrix of the native
* library.
* @author Moritz Nisblé moritz.nisble@gmx.de */
public interface MatrixObserver {
/** Called from native code via {@link MineSweeperMatrix} when the internal
* {@link GameStatus
* status} of the
* game has changed.
* @param newStatus The new status. */
void onGameStatusChanged(GameStatus newStatus);
/** Called from native code via {@link MineSweeperMatrix} when the count of
* the remaining bombs has changed because the user has marked some fields.
* @param remainingBombs The new count of remaining bombs. */
void onRemainingBombsChanged(int remainingBombs);
/** Called from native code via {@link MineSweeperMatrix} after the
* {@link FieldStatus status} of a field has changed.<br>
* In contrast to {@link FieldListener#onStatusChanged(FieldStatus, int)}
* this function is commonly called for status changes of fields.
* <p>
* <b>Note:</b> This function is called after
* {@link FieldListener#onStatusChanged(FieldStatus, int)}.
* </p>
* @param p The {@link Position} of the field.
* @param fs The new {@link FieldStatus status}.
* @param adjacentBombs The count of adjacent bombs. */
void afterFieldStatusChanged(Position p, FieldStatus fs, int adjacentBombs);
}