package com.lyndir.omicron.api; import com.lyndir.omicron.api.util.Maybe; import java.util.stream.Stream; public interface IPlayerController extends GameObserver { IPlayer getPlayer(); /** * List the objects of this player observable by the current player. * * @return A list of game objects owned by this controller's player filtered by visibility by the current player. */ Stream<? extends IGameObject> playerObjectsObservable(); /** * Iterate the objects of this player that the given observer (and the current player) can observe. * * @param observer The observer that we want to observe the player's objects with. * * @return An iterable of game objects owned by this controller's player. */ Stream<? extends IGameObject> playerObjectsObservableBy(GameObserver observer); Maybe<? extends IGameObject> getObject(int objectId); IGameController getGameController(); }