001package com.fs.starfarer.api.impl.campaign.rulecmd;
002
003import java.util.ArrayList;
004import java.util.List;
005import java.util.Map;
006
007import com.fs.starfarer.api.campaign.InteractionDialogAPI;
008import com.fs.starfarer.api.campaign.rules.MemoryAPI;
009import com.fs.starfarer.api.util.Misc;
010import com.fs.starfarer.api.util.Misc.Token;
011
012/**
013 * ShowResCost <commotity id> <quantity> <optional: consumed> (repeated); optional: width of each panel
014 * 
015 * ShowResCost crew 1000 supplies 100 true 200
016 * = requires 1000 crew, 100 supplis (consumed), each item is 200 pixels wide   
017 */
018public class ShowResCost extends BaseCommandPlugin {
019
020        public static class ResData {
021                String id;
022                int qty;
023                boolean consumed;
024        }
025        
026        public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
027                List<ResData> data = new ArrayList<ResData>();
028
029                float widthOverride = -1f;
030                for (int i = 0; i < params.size(); i++) {
031                        Token t = params.get(i);
032                        
033                        boolean commodityId = !t.isBoolean(memoryMap) && !t.isFloat(memoryMap);
034                        if (commodityId) {
035                                ResData curr = new ResData();
036                                curr.id = t.getString(memoryMap);
037                                
038                                i++;
039                                t = params.get(i);
040                                curr.qty = (int) t.getFloat(memoryMap);
041                                
042                                if (params.size() > i + 1) {
043                                        t = params.get(i + 1);
044                                        if (t.isBoolean(memoryMap)) {
045                                                curr.consumed = t.getBoolean(memoryMap);
046                                                i++;
047                                        }
048                                }
049                                data.add(curr);
050                                continue;
051                        } else if (t.isFloat(memoryMap)) {
052                                widthOverride = t.getFloat(memoryMap);
053                                break;
054                        }
055                }
056                
057                String [] ids = new String [data.size()];
058                int [] qty = new int [data.size()];
059                boolean [] consumed = new boolean [data.size()];
060                
061                for (int i = 0; i < data.size(); i++) {
062                        ResData curr = data.get(i);
063                        ids[i] = curr.id;
064                        qty[i] = curr.qty;
065                        consumed[i] = curr.consumed;
066                }
067                
068                Misc.showCost(dialog.getTextPanel(), "Resources: required (available)", true, widthOverride, null, null, ids, qty, consumed);
069                
070                return true;
071        }
072
073}
074
075