001package com.fs.starfarer.api.impl.campaign.intel.misc; 002 003import java.util.ArrayList; 004import java.util.LinkedHashSet; 005import java.util.List; 006import java.util.Set; 007 008import java.awt.Color; 009 010import com.fs.starfarer.api.Global; 011import com.fs.starfarer.api.campaign.FactionSpecAPI; 012import com.fs.starfarer.api.fleet.FleetMemberAPI; 013import com.fs.starfarer.api.fleet.FleetMemberType; 014import com.fs.starfarer.api.ui.Alignment; 015import com.fs.starfarer.api.ui.SectorMapAPI; 016import com.fs.starfarer.api.ui.TooltipMakerAPI; 017import com.fs.starfarer.api.util.Misc; 018 019public class SimUpdateIntel extends FleetLogIntel { 020 021 protected LinkedHashSet<String> addedFactions; 022 protected LinkedHashSet<String> addedVariants; 023 024 public SimUpdateIntel(LinkedHashSet<String> addedFactions, LinkedHashSet<String> addedVariants) { 025 this.addedFactions = addedFactions; 026 this.addedVariants = addedVariants; 027 028 Global.getSector().getIntelManager().addIntel(this); 029 } 030 031 protected void addBulletPoints(TooltipMakerAPI info, ListInfoMode mode, boolean isUpdate, Color tc, float initPad) { 032 Color h = Misc.getHighlightColor(); 033 Color g = Misc.getGrayColor(); 034 float pad = 3f; 035 float opad = 10f; 036 037 bullet(info); 038 039 if (!addedFactions.isEmpty()) { 040 String factions = addedFactions.size() == 1 ? "faction" : "factions"; 041 info.addPara("%s new " + factions + "", initPad, tc, h, "" + addedFactions.size()); 042 initPad = 0f; 043 } 044 if (!addedVariants.isEmpty()) { 045 String variants = addedVariants.size() == 1 ? "variant" : "variants"; 046 info.addPara("%s new hull " + variants + "", initPad, tc, h, "" + addedVariants.size()); 047 initPad = 0f; 048 } 049 unindent(info); 050 } 051 052 @Override 053 public void createSmallDescription(TooltipMakerAPI info, float width, float height) { 054 Color h = Misc.getHighlightColor(); 055 Color g = Misc.getGrayColor(); 056 Color tc = Misc.getTextColor(); 057 float pad = 3f; 058 float small = 3f; 059 float opad = 10f; 060 061// info.addPara("New simulator opponents and factions unlocked. New ships " 062// + "are unlocked by encountering and destroying them in battle.", 0f); 063 064 if (!addedFactions.isEmpty()) { 065 info.addSpacer(0f); 066 info.addSectionHeading("Factions", Alignment.MID, opad); 067 info.addPara("New simulator factions available. New factions " 068 + "are are made available by encountering their fleets, or deserters from the faction, in battle.", opad); 069 //bullet(info); 070 float initPad = opad; 071 for (String fid : addedFactions) { 072 FactionSpecAPI spec = Global.getSettings().getFactionSpec(fid); 073 TooltipMakerAPI para = info.beginImageWithText(spec.getCrest(), 32); 074 para.addPara(Misc.ucFirst(spec.getDisplayName()), spec.getBaseUIColor(), 0f); 075 //para.getPosition().setXAlignOffset(100f); 076 info.addImageWithText(initPad); 077 //info.addPara(Misc.ucFirst(spec.getDisplayName()), spec.getBaseUIColor(), initPad); 078 initPad = 3f; 079 } 080 //unindent(info); 081 } 082 083 if (!addedVariants.isEmpty()) { 084 info.addSpacer(0f); 085 float extra = 0f; 086 if (!addedFactions.isEmpty()) extra = 2f; 087 info.addSectionHeading("Ship variants", Alignment.MID, opad + extra); 088 info.addPara("New simulator opponents available. New ships " 089 + "are made available by encountering and destroying them in battle.", opad); 090 091 List<FleetMemberAPI> members = new ArrayList<FleetMemberAPI>(); 092 for (String vid : addedVariants) { 093 FleetMemberAPI member = Global.getFactory().createFleetMember(FleetMemberType.SHIP, vid); 094 members.add(member); 095 } 096 097 int cols = 7; 098 float iconSize = width / cols; 099 int rows = members.size() / cols; 100 if (rows * cols < members.size()) rows++; 101 info.addShipList(cols, rows, iconSize, Misc.getBasePlayerColor(), members, opad); 102 103 //info.showShips(members, members.size(), true, opad); 104// bullet(info); 105// float initPad = opad; 106// for (String vid : addedVariants) { 107// ShipVariantAPI v = Global.getSettings().getVariant(vid); 108// if (v == null) continue; 109// info.addPara(v.getFullDesignationWithHullName(), initPad); 110// initPad = 0f; 111// } 112// unindent(info); 113 } 114 115 addLogTimestamp(info, tc, opad); 116 117 addDeleteButton(info, width); 118 } 119 120 @Override 121 public String getIcon() { 122 return Global.getSettings().getSpriteName("intel", "simulator_update"); 123 } 124 125 @Override 126 public Set<String> getIntelTags(SectorMapAPI map) { 127 Set<String> tags = super.getIntelTags(map); 128 return tags; 129 } 130 131 public String getName() { 132 return "Simulator Update"; 133 } 134 135}