package com.lyndir.omicron.api;
import com.lyndir.omicron.api.util.Maybool;
import java.util.stream.Stream;
import javax.annotation.Nonnull;
import org.jetbrains.annotations.NotNull;
/**
* <i>10 16, 2012</i>
*
* @author lhunath
*/
public interface GameObserver {
/**
* Check whether the current object can observe given observable.
*
* @param observable The observable that this observer is trying to see.
*
* @return true if the current player is able and allowed to observe the target.
*/
@SuppressWarnings("NonBooleanMethodNameMayNotStartWithQuestion")
Maybool canObserve(@Nonnull GameObservable observable);
/**
* Enumerate the tiles this observer can observe.
*
* @return All the tiles observable both by this observer and the current player.
*/
@NotNull
@Nonnull
Stream<? extends ITile> observableTiles();
}