jaghaimo/hypernet

View on GitHub
src/main/java/hypernet/DialogPlugin.java

Summary

Maintainability
A
0 mins
Test Coverage
package hypernet;

import java.awt.Color;
import java.util.List;
import java.util.Map;

import com.fs.starfarer.api.campaign.InteractionDialogAPI;
import com.fs.starfarer.api.campaign.InteractionDialogPlugin;
import com.fs.starfarer.api.campaign.OptionPanelAPI;
import com.fs.starfarer.api.campaign.TextPanelAPI;
import com.fs.starfarer.api.campaign.VisualPanelAPI;
import com.fs.starfarer.api.campaign.rules.MemoryAPI;
import com.fs.starfarer.api.combat.EngagementResultAPI;
import com.fs.starfarer.api.util.Misc;

import org.lwjgl.input.Keyboard;

import hypernet.filter.MutableFilterManager;
import hypernet.handler.DialogHandler;
import hypernet.handler.DialogHandlerFactory;

public class DialogPlugin implements InteractionDialogPlugin {

    private DialogOption lastOption;
    private MutableFilterManager filterManager;
    private List<IntelQuery> queries;

    private InteractionDialogAPI dialog;
    private OptionPanelAPI options;
    private TextPanelAPI textPanel;
    private VisualPanelAPI visual;

    public DialogPlugin(List<IntelQuery> q) {
        filterManager = new MutableFilterManager();
        queries = q;
    }

    @Override
    public void advance(float amount) {
    }

    @Override
    public void backFromEngagement(EngagementResultAPI result) {
    }

    @Override
    public Object getContext() {
        return null;
    }

    @Override
    public Map<String, MemoryAPI> getMemoryMap() {
        return null;
    }

    @Override
    public void init(InteractionDialogAPI d) {
        dialog = d;
        options = d.getOptionPanel();
        textPanel = d.getTextPanel();
        visual = d.getVisualPanel();
        visual.showImagePortion("illustrations", "hypernet", 640, 400, 0, 0, 480, 300);

        addTitle("HyperNET");
        textPanel.addPara("Welcome to Hyperspace Network!");
        showMenu();
    }

    @Override
    public void optionMousedOver(String text, Object optionData) {
    }

    @Override
    public void optionSelected(String text, Object optionData) {
        if (optionData == null) {
            return;
        }

        DialogOption option = (DialogOption) optionData;
        DialogHandler handler = DialogHandlerFactory.getHandler(option, lastOption);
        lastOption = handler.handle(this);
    }

    public void addNewQuery(IntelProvider provider) {
        queries.add(new IntelQuery(provider, filterManager));
    }

    public void addOptions(DialogOption... intelOptions) {
        options.clearOptions();
        for (DialogOption option : intelOptions) {
            options.addOption(option.getName(), option);
        }
    }

    public void addText(String update) {
        textPanel.addPara(update);
    }

    public void addTitle(String title) {
        Color colorHighlight = Misc.getHighlightColor();
        textPanel.addPara(title, colorHighlight);
    }

    public void dismiss() {
        dialog.dismiss();
        HypernetBoard.refresh();
    }

    public InteractionDialogAPI getDialog() {
        return dialog;
    }

    public MutableFilterManager getFilterManager() {
        return filterManager;
    }

    public void setEscShortcut(DialogOption option) {
        options.setShortcut(option, Keyboard.KEY_ESCAPE, false, false, false, false);
    }

    public void showMenu() {
        lastOption = DialogOption.INIT;
        addOptions(DialogOption.STAFF, DialogOption.CARGO, DialogOption.SHIP, DialogOption.EXIT);
        setEscShortcut(DialogOption.EXIT);
    }
}