001package com.fs.starfarer.api.impl.campaign.intel.bar.events; 002 003import com.fs.starfarer.api.Global; 004import com.fs.starfarer.api.impl.campaign.ids.Tags; 005import com.fs.starfarer.api.impl.campaign.intel.bar.PortsideBarEvent; 006import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionBarEventWrapper; 007import com.fs.starfarer.api.loading.BarEventSpec; 008 009public class SpecBarEventCreator extends BaseBarEventCreator { 010 011 protected transient BarEventSpec spec = null; 012 protected String specId = null; 013 protected boolean wasAutoAdded = false; 014 015 public SpecBarEventCreator(String specId) { 016 this.specId = specId; 017 readResolve(); 018 } 019 020 protected Object readResolve() { 021 spec = Global.getSettings().getBarEventSpec(specId); 022 return this; 023 } 024 025 026 public boolean wasAutoAdded() { 027 return wasAutoAdded; 028 } 029 030 public void setWasAutoAdded(boolean wasAutoAdded) { 031 this.wasAutoAdded = wasAutoAdded; 032 } 033 034 public BarEventSpec getSpec() { 035 return spec; 036 } 037 038 public String getBarEventId() { 039 return specId; 040 } 041 042 public PortsideBarEvent createBarEvent() { 043 if (spec.isMission()) { 044 return new HubMissionBarEventWrapper(specId); 045 } 046 return spec.createEvent(); 047 } 048 049 public float getBarEventActiveDuration() { 050 return spec.getMinDur() + (spec.getMaxDur() - spec.getMinDur()) * (float) Math.random(); 051 } 052 053 public float getBarEventFrequencyWeight() { 054 return spec.getFreq(); 055 } 056 057 public float getBarEventTimeoutDuration() { 058 return spec.getMinTimeout() + (spec.getMaxTimeout() - spec.getMinTimeout()) * (float) Math.random(); 059 } 060 061 public float getBarEventAcceptedTimeoutDuration() { 062 return spec.getMinAcceptedTimeout() + (spec.getMaxAcceptedTimeout() - spec.getMinAcceptedTimeout()) * (float) Math.random(); 063 } 064 065 public boolean isPriority() { 066 return spec.hasTag(Tags.MISSION_PRIORITY); 067 } 068 069}