Starsector API
Loading...
Searching...
No Matches
DoCanAffordCheck.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.rulecmd;
2
3import java.awt.Color;
4import java.util.List;
5import java.util.Map;
6
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.campaign.InteractionDialogAPI;
9import com.fs.starfarer.api.campaign.OptionPanelAPI;
10import com.fs.starfarer.api.campaign.OptionPanelAPI.OptionTooltipCreator;
11import com.fs.starfarer.api.campaign.TextPanelAPI;
12import com.fs.starfarer.api.campaign.rules.MemoryAPI;
13import com.fs.starfarer.api.ui.LabelAPI;
14import com.fs.starfarer.api.ui.TooltipMakerAPI;
15import com.fs.starfarer.api.util.Misc;
16import com.fs.starfarer.api.util.Misc.Token;
17
21public class DoCanAffordCheck extends BaseCommandPlugin {
22
23 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
24 if (dialog == null) return false;
25
26 float price = params.get(0).getFloat(memoryMap);
27 String option = params.get(1).getString(memoryMap);
28 boolean showCredits = params.size() >= 3;
29 boolean showTotal = params.size() >= 3 && params.get(2).getBoolean(memoryMap);
30
31 TextPanelAPI text = dialog.getTextPanel();
32 OptionPanelAPI options = dialog.getOptionPanel();
33
34 Color h = Misc.getHighlightColor();
35 Color n = Misc.getNegativeHighlightColor();
36 n = h; // don't do red highlights they don't seem to come across well here, I think
37 final float credits = Global.getSector().getPlayerFleet().getCargo().getCredits().get();
38 //credits = 100;
39 final boolean canAccept = (int) price <= (int) credits;
40
41 LabelAPI label = null;
42
43 if (showCredits) {
44 if (showTotal) {
45 label = text.addPara("The total price is %s. You have %s available.",
46 h,
47 Misc.getDGSCredits(price),
48 Misc.getDGSCredits(credits));
49 label.setHighlightColors(canAccept ? h : n, h);
50 label.setHighlight(Misc.getDGSCredits(price), Misc.getDGSCredits(credits));
51 } else {
52 label = text.addPara("You have %s available.",
53 h,
54 Misc.getDGSCredits(credits));
55 label.setHighlightColors(canAccept ? h : n);
56 label.setHighlight(Misc.getDGSCredits(credits));
57 }
58 }
59
60 if (!canAccept) {
61 options.setEnabled(option, false);
62 //options.setTooltip(option, "Not enough credits.");
63 }
64 options.addOptionTooltipAppender(option, new OptionTooltipCreator() {
65 public void createTooltip(TooltipMakerAPI tooltip, boolean hadOtherText) {
66 if (canAccept) {
67 tooltip.addPara("You have %s credits available.", 10f,
68 Misc.getHighlightColor(), Misc.getWithDGS(credits));
69 } else {
70 tooltip.addPara("You only have %s credits available.", 10f,
71 Misc.getHighlightColor(), Misc.getWithDGS(credits));
72 }
73 }
74 });
75
76 return true;
77 }
78}
79
80
static SectorAPI getSector()
Definition Global.java:59
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)