001package com.fs.starfarer.api.impl.campaign.rulecmd;
002
003import java.util.List;
004import java.util.Map;
005
006import com.fs.starfarer.api.Global;
007import com.fs.starfarer.api.campaign.FactionAPI;
008import com.fs.starfarer.api.campaign.InteractionDialogAPI;
009import com.fs.starfarer.api.campaign.RepLevel;
010import com.fs.starfarer.api.campaign.rules.MemoryAPI;
011import com.fs.starfarer.api.impl.campaign.ids.Factions;
012import com.fs.starfarer.api.util.Misc.Token;
013import com.fs.starfarer.api.util.Misc.VarAndMemory;
014
015
016/**
017 * TakeRepCheck <factionid> <resultVarName>
018 */
019public class TakeRepCheck extends BaseCommandPlugin {
020//      public static enum RepCheckResult {
021//              R0(0.0f),
022//              R1(0.1f),
023//              R2(0.2f),
024//              R3(0.4f),
025//              R4(0.6f),
026//              R5(0.95f);
027//              
028//              private final float threshold;
029//              private RepCheckResult(float threshold) {
030//                      this.threshold = threshold;
031//              }
032//              public float getThreshold() {
033//                      return threshold;
034//              }
035//      }
036        
037        public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
038                
039                String factionId = params.get(0).getString(memoryMap);
040                VarAndMemory result = params.get(1).getVarNameAndMemory(memoryMap);
041                
042                FactionAPI faction = Global.getSector().getFaction(factionId);
043                FactionAPI player = Global.getSector().getFaction(Factions.PLAYER);
044                RepLevel level = player.getRelationshipLevel(faction);
045                if (level.isAtBest(RepLevel.SUSPICIOUS)) {
046                        //result.memory.set(result.name, RepCheckResult.R0.name(), 0);
047                        result.memory.set(result.name, 0f, 0);
048                }
049                
050                float rel = player.getRelationship(factionId);
051                
052                float r = (float) Math.random();
053                r *= r;
054                float roll = rel * 0.2f + rel * 0.8f * (float) Math.random() + (1f - rel) * r;
055                
056                result.memory.set(result.name, roll, 0);
057                //result.memory.set(result.name, 1f, 0);
058//              RepCheckResult max = RepCheckResult.R0;
059//              float minDiff = Float.MAX_VALUE;
060//              for (RepCheckResult r : EnumSet.allOf(RepCheckResult.class)) {
061//                      float diff = 2f - 
062//              }
063                return true;
064        }
065
066        
067}
068
069
070
071