contract ICommonGame is IAdminContract {
    // true if the game is finishing
    function gameFinishing() public view returns(bool);

    // stops the game
    function stopGame() public;

    function totalVariants() public view returns(uint);
    function alterTotalVariants(uint _newVariants) public;

    function autoCreationAllowed() public view returns(bool);
    function setAutoCreation(bool allowed) public;

    function autoCreationAfterOwnAllowed() public view returns(bool);
    function setAutoCreationAfterOwn(bool allowed) public;

    function creationAllowed() public view returns(bool) {
        return autoCreationAllowed() && !gameFinishing();
    }

    function transferInteractionsAllowed() public view returns(bool); 
    function setTransferInteractions(bool allowed) public; 

    function startOnlyMinPrizes() public view returns (bool);
    function setStartOnlyMinPrizes(bool minPrizes) public;
 
    function startProfitedGamesAllowed() public view returns (bool);
    function setStartProfitedGamesAllowed(bool games) public;

    // returns true, when the experiment with this thing is finished
    // so one can give back all of the money
    function gameFinished() public view returns(bool);

    // the block when all of this experiment is finished
    function gameFinishedBlock() public view returns(uint);

    event GameStopInitiated(uint finishingBlock);
    event TransferInteractionsChanged(bool newValue);
    event StartOnlyMinPrizesChanged(bool newValue);
    event StartProfitedGamesAllowedChanged(bool newValue);

    event AutoCreationChanged(bool newValue);
    event AutoCreationAfterOwnChanged(bool newValue);
    event TotalVariantsChanged(uint newTotalVariants);
}
function gameFinishing() public view returns(bool);

// true if the game is finishing