001package com.fs.starfarer.api.impl.codex; 002 003import java.util.LinkedHashSet; 004 005import com.fs.starfarer.api.EveryFrameScript; 006import com.fs.starfarer.api.Global; 007 008public class CodexIntelAdder implements EveryFrameScript { 009 010 public static String KEY = "$core_codexIntelAdder"; 011 012 public static CodexIntelAdder get() { 013 CodexIntelAdder adder = (CodexIntelAdder) Global.getSector().getMemoryWithoutUpdate().get(KEY); 014 if (adder == null) { 015 adder = new CodexIntelAdder(); 016 } 017 return adder; 018 } 019 020 protected float delay = 0f; 021 protected LinkedHashSet<String> unlockedEntries = new LinkedHashSet<>(); 022 023 public CodexIntelAdder() { 024 Global.getSector().getMemoryWithoutUpdate().set(KEY, this); 025 Global.getSector().addScript(this); 026 } 027 028 029 public void addEntry(String entryId) { 030 CodexEntryPlugin entry = CodexDataV2.getEntry(entryId); 031 if (entry == null || entry.isLocked()) return; 032 unlockedEntries.add(entryId); 033 delay = 1f; 034 } 035 036 @Override 037 public void advance(float amount) { 038 delay -= amount; 039 if (delay <= 0) { 040 delay = 0f; 041 if (!unlockedEntries.isEmpty()) { 042 if (!CodexDataV2.codexFullyUnlocked()) { 043 new CodexUpdateIntel(unlockedEntries); 044 } 045 unlockedEntries = new LinkedHashSet<>(); 046 } 047 } 048 } 049 050 @Override 051 public boolean isDone() { 052 return false; 053 } 054 055 @Override 056 public boolean runWhilePaused() { 057 return false; 058 } 059 060} 061 062 063 064 065 066 067 068