001package com.fs.starfarer.api.impl.campaign.rulecmd; 002 003import java.awt.Color; 004import java.util.List; 005import java.util.Map; 006 007import com.fs.starfarer.api.Global; 008import com.fs.starfarer.api.campaign.InteractionDialogAPI; 009import com.fs.starfarer.api.campaign.OptionPanelAPI; 010import com.fs.starfarer.api.campaign.OptionPanelAPI.OptionTooltipCreator; 011import com.fs.starfarer.api.campaign.TextPanelAPI; 012import com.fs.starfarer.api.campaign.rules.MemoryAPI; 013import com.fs.starfarer.api.ui.LabelAPI; 014import com.fs.starfarer.api.ui.TooltipMakerAPI; 015import com.fs.starfarer.api.util.Misc; 016import com.fs.starfarer.api.util.Misc.Token; 017 018/** 019 * DoCanAffordCheck <price> <option id> <with total> 020 */ 021public class DoCanAffordCheck extends BaseCommandPlugin { 022 023 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) { 024 if (dialog == null) return false; 025 026 float price = params.get(0).getFloat(memoryMap); 027 String option = params.get(1).getString(memoryMap); 028 boolean showCredits = params.size() >= 3; 029 boolean showTotal = params.size() >= 3 && params.get(2).getBoolean(memoryMap); 030 031 TextPanelAPI text = dialog.getTextPanel(); 032 OptionPanelAPI options = dialog.getOptionPanel(); 033 034 Color h = Misc.getHighlightColor(); 035 Color n = Misc.getNegativeHighlightColor(); 036 n = h; // don't do red highlights they don't seem to come across well here, I think 037 final float credits = Global.getSector().getPlayerFleet().getCargo().getCredits().get(); 038 //credits = 100; 039 final boolean canAccept = (int) price <= (int) credits; 040 041 LabelAPI label = null; 042 043 if (showCredits) { 044 if (showTotal) { 045 label = text.addPara("The total price is %s. You have %s available.", 046 h, 047 Misc.getDGSCredits(price), 048 Misc.getDGSCredits(credits)); 049 label.setHighlightColors(canAccept ? h : n, h); 050 label.setHighlight(Misc.getDGSCredits(price), Misc.getDGSCredits(credits)); 051 } else { 052 label = text.addPara("You have %s available.", 053 h, 054 Misc.getDGSCredits(credits)); 055 label.setHighlightColors(canAccept ? h : n); 056 label.setHighlight(Misc.getDGSCredits(credits)); 057 } 058 } 059 060 if (!canAccept) { 061 options.setEnabled(option, false); 062 //options.setTooltip(option, "Not enough credits."); 063 } 064 options.addOptionTooltipAppender(option, new OptionTooltipCreator() { 065 public void createTooltip(TooltipMakerAPI tooltip, boolean hadOtherText) { 066 if (canAccept) { 067 tooltip.addPara("You have %s credits available.", 10f, 068 Misc.getHighlightColor(), Misc.getWithDGS(credits)); 069 } else { 070 tooltip.addPara("You only have %s credits available.", 10f, 071 Misc.getHighlightColor(), Misc.getWithDGS(credits)); 072 } 073 } 074 }); 075 076 return true; 077 } 078} 079 080