001package com.fs.starfarer.api.impl.campaign.events; 002 003import java.awt.Color; 004import java.util.HashMap; 005import java.util.Map; 006 007import com.fs.starfarer.api.Global; 008import com.fs.starfarer.api.campaign.comm.MessagePriority; 009import com.fs.starfarer.api.campaign.events.CampaignEventTarget; 010import com.fs.starfarer.api.util.Misc; 011import com.fs.starfarer.api.util.WeightedRandomPicker; 012 013public class CivilDisorder extends BaseEventPlugin { 014 015 private float elapsedDays = 0f; 016 private CampaignEventTarget eventTarget; 017 018 private boolean started = false; 019 private int stage = 0; 020 private String type; 021 022 // called when there's the possibility of the event happening 023 // doesn't mean it'll actually happen, needs to pass the internal probability check first 024 public void init(String type, CampaignEventTarget eventTarget) { 025 this.type = type; 026 this.eventTarget = eventTarget; 027 } 028 029 // event passed the probability check and is happening 030 public void startEvent() { 031 started = true; 032 } 033 034 public void advance(float amount) { 035 if (Global.getSector().isPaused()) return; 036 if (!started) return; 037 038 //System.out.println("Advance() in TestEvent called"); 039 float days = Global.getSector().getClock().convertToDays(amount); 040 041 elapsedDays += days; 042 043 if (elapsedDays > 0 && stage == 0) { 044 WeightedRandomPicker<String> picker = new WeightedRandomPicker<String>(); 045 picker.add("start1"); 046 picker.add("start2"); 047 picker.add("start3"); 048 Global.getSector().reportEventStage(this, picker.pick(), MessagePriority.SECTOR); 049 stage++; 050 } 051 052 if (elapsedDays > 1 && stage == 1) { 053 WeightedRandomPicker<String> picker = new WeightedRandomPicker<String>(); 054 picker.add("ending1"); 055 picker.add("ending2"); 056 picker.add("ending3"); 057 picker.add("ending4"); 058 Global.getSector().reportEventStage(this, picker.pick(), MessagePriority.SECTOR); 059 stage++; 060 } 061 062 if (elapsedDays > 2 && stage == 2) { 063 WeightedRandomPicker<String> picker = new WeightedRandomPicker<String>(); 064 picker.add("end1"); 065 picker.add("end2"); 066 Global.getSector().reportEventStage(this, picker.pick(), MessagePriority.SECTOR); 067 stage++; 068 } 069 } 070 071 public boolean isDone() { 072 return elapsedDays > 5f || stage >= 3; 073 } 074 075 public CampaignEventTarget getEventTarget() { 076 return eventTarget; 077 } 078 079 public String getEventType() { 080 return type; 081 } 082 083 // tokens that are used in reports.csv for the stages of this event 084 public Map<String, String> getTokenReplacements() { 085 Map<String, String> map = new HashMap<String, String>(); 086 087 map.put("$market", eventTarget.getEntity().getName()); 088 map.put("$rulingFaction", eventTarget.getEntity().getFaction().getDisplayName()); 089 map.put("$rulingParty", eventTarget.getEntity().getFaction().getDisplayName()); 090 091 map.put("$theRulingFaction", eventTarget.getEntity().getFaction().getDisplayNameWithArticle()); 092 map.put("$TheRulingFaction", Misc.ucFirst(eventTarget.getEntity().getFaction().getDisplayNameWithArticle())); 093 094 return map; 095 096 } 097 098 // how far to send an "event is possible" type report 099 public MessagePriority getWarningWhenPossiblePriority() { 100 return MessagePriority.SECTOR; 101 } 102 103 // how far to send an "event is likely" type report 104 public MessagePriority getWarningWhenLikelyPriority() { 105 return MessagePriority.SECTOR; 106 } 107 108 // pick an event_stage for an "event is likely" report. 109 // called every so often while an event is likely. 110 public String getStageIdForLikely() { 111 WeightedRandomPicker<String> picker = new WeightedRandomPicker<String>(); 112 picker.add("possible1"); 113 picker.add("possible2"); 114 picker.add("possible3"); 115 picker.add("possible4"); 116 return picker.pick(); 117 //return "likely"; 118 } 119 120 // pick an event_stage for an "event is possible" report. 121 // called every so often while an event is possible. 122 public String getStageIdForPossible() { 123 WeightedRandomPicker<String> picker = new WeightedRandomPicker<String>(); 124 picker.add("possible1"); 125 picker.add("possible2"); 126 picker.add("possible3"); 127 picker.add("possible4"); 128 return picker.pick(); 129 } 130 131 public void cleanup() { 132 // TODO Auto-generated method stub 133 134 } 135 136 public void setParam(Object param) { 137 138 } 139 140 public boolean allowMultipleOngoingForSameTarget() { 141 // TODO Auto-generated method stub 142 return false; 143 } 144 145 public Color[] getHighlightColors(String stageId) { 146 // TODO Auto-generated method stub 147 return null; 148 } 149 150 public String[] getHighlights(String stageId) { 151 // TODO Auto-generated method stub 152 return null; 153 } 154 155} 156 157 158 159