001package com.fs.starfarer.api.impl.campaign.graid; 002 003import java.awt.Color; 004import java.util.Random; 005 006import com.fs.starfarer.api.Global; 007import com.fs.starfarer.api.campaign.CargoAPI; 008import com.fs.starfarer.api.campaign.CargoStackAPI; 009import com.fs.starfarer.api.campaign.TextPanelAPI; 010import com.fs.starfarer.api.campaign.CargoAPI.CargoItemType; 011import com.fs.starfarer.api.campaign.econ.CommoditySpecAPI; 012import com.fs.starfarer.api.campaign.econ.Industry; 013import com.fs.starfarer.api.campaign.econ.MarketAPI; 014import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.RaidDangerLevel; 015import com.fs.starfarer.api.loading.Description; 016import com.fs.starfarer.api.loading.Description.Type; 017import com.fs.starfarer.api.ui.TooltipMakerAPI; 018import com.fs.starfarer.api.util.Misc; 019 020public class AICoreGroundRaidObjectivePluginImpl extends BaseGroundRaidObjectivePluginImpl { 021 022 public AICoreGroundRaidObjectivePluginImpl(MarketAPI market, String id, Industry source) { 023 super(market, id); 024 setSource(source); 025 } 026 027 @Override 028 public void setSource(Industry source) { 029 super.setSource(source); 030 RaidDangerLevel level = getDangerLevel(); 031 int marines = level.marineTokens; 032 if (source != null) { 033 marines = source.adjustMarineTokensToRaidItem(id, null, marines); 034 } 035 setMarinesRequired(marines); 036 } 037 038 public float getQuantity(int marines) { 039 return 1; 040 } 041 042 public int getValue(int marines) { 043 return (int) (getQuantity(marines) * getCommoditySpec().getBasePrice()); 044 } 045 046 public int getCargoSpaceNeeded() { 047 return (int) getCommoditySpec().getCargoSpace(); 048 } 049 050 public int getFuelSpaceNeeded() { 051 return 0; 052 } 053 054 public int getProjectedCreditsValue() { 055 return (int) getCommoditySpec().getBasePrice(); 056 } 057 058 public CommoditySpecAPI getCommoditySpec() { 059 return Global.getSettings().getCommoditySpec(id); 060 } 061 062 public RaidDangerLevel getDangerLevel() { 063 RaidDangerLevel level = getCommoditySpec().getBaseDanger(); 064 if (source != null) { 065 level = source.adjustItemDangerLevel(id, null, level); 066 } 067 return level; 068 } 069 070 public float getQuantitySortValue() { 071 CommoditySpecAPI spec = getCommoditySpec(); 072 float add = 0; 073 if (spec != null) { 074 add = spec.getOrder(); 075 } 076 return QUANTITY_SORT_TIER_2 + add; 077 } 078 079 public String getName() { 080 return getCommoditySpec().getName(); 081 } 082 083 public CargoStackAPI getStackForIcon() { 084 CargoStackAPI stack = Global.getFactory().createCargoStack(CargoItemType.RESOURCES, getId(), null); 085 return stack; 086 } 087 088 public int performRaid(CargoAPI loot, Random random, float lootMult, TextPanelAPI text) { 089 if (marinesAssigned <= 0) return 0; 090 091 if (source != null) { 092 if (getId() == null || getId().equals(source.getAICoreId())) { 093 source.setAICoreId(null); 094 } 095 } 096 loot.addCommodity(getId(), 1f); 097 098 int xpGained = (int) (1 * getCommoditySpec().getBasePrice() * XP_GAIN_VALUE_MULT); 099 return xpGained; 100 } 101 102 @Override 103 public boolean hasTooltip() { 104 return true; 105 } 106 107 @Override 108 public void createTooltip(TooltipMakerAPI t, boolean expanded) { 109 float opad = 10f; 110 float pad = 3f; 111 Color h = Misc.getHighlightColor(); 112 Color bad = Misc.getNegativeHighlightColor(); 113 Color good = Misc.getPositiveHighlightColor(); 114 115 Description desc = Global.getSettings().getDescription(id, Type.RESOURCE); 116 117 t.addPara(desc.getText1FirstPara(), 0f); 118 119 t.addPara("Base value: %s per unit", opad, h, Misc.getDGSCredits(getCommoditySpec().getBasePrice())); 120 } 121 122} 123 124