package com.n3plugins.guardiansrift;

import com.n3plugins.InteractionApi.common.InteractionResult;
import com.n3plugins.InteractionApi.common.InteractionStatus;

interface GuardiansRiftRuntime
{
    GuardiansRiftSnapshot snapshot();

    default InteractionResult startBreak() { return unsupported("break"); }
    default InteractionResult gameBusy() { return unsupported("busy-state"); }
    default InteractionResult enterGame() { return unsupported("entry"); }
    default InteractionResult repairPouch() { return unsupported("pouch repair"); }
    default InteractionResult waitForGame() { return unsupported("game wait"); }
    default InteractionResult getCells() { return unsupported("cell retrieval"); }
    default InteractionResult moveToEastMine() { return unsupported("east-mine movement"); }
    default InteractionResult leaveEastMine() { return unsupported("east-mine exit"); }
    default InteractionResult enterPortal() { return unsupported("portal entry"); }
    default InteractionResult mineHugeGuardians() { return unsupported("huge guardian mining"); }
    default InteractionResult mineLargeGuardians() { return unsupported("large guardian mining"); }
    default InteractionResult mineRegularGuardians() { return unsupported("regular guardian mining"); }
    default InteractionResult craftEssence() { return unsupported("essence crafting"); }
    default InteractionResult fillPouches() { return unsupported("pouch filling"); }
    default InteractionResult powerGuardian() { return unsupported("guardian powering"); }
    default InteractionResult useCell() { return unsupported("cell use"); }
    default InteractionResult enterAltar() { return unsupported("altar entry"); }
    default InteractionResult craftRunes() { return unsupported("rune crafting"); }
    default InteractionResult leaveAltar() { return unsupported("altar exit"); }
    default InteractionResult depositRunes() { return unsupported("rune deposit"); }
    default InteractionResult dropRunes() { return unsupported("rune drop"); }

    default InteractionResult unsupported(String action)
    {
        return InteractionResult.fail(InteractionStatus.FAILED,
                "Guardians Rift runtime does not implement " + action);
    }
}
