001package com.fs.starfarer.api.campaign; 002 003import java.util.Random; 004 005import java.awt.Color; 006 007import org.json.JSONException; 008 009import com.fs.starfarer.api.campaign.CargoAPI.CargoItemType; 010import com.fs.starfarer.api.campaign.econ.MarketAPI; 011import com.fs.starfarer.api.campaign.econ.SubmarketAPI; 012import com.fs.starfarer.api.graphics.SpriteAPI; 013import com.fs.starfarer.api.ui.TooltipMakerAPI; 014 015public interface SpecialItemPlugin { 016 public static interface RightClickActionHelper { 017 void removeFromClickedStackFirst(int num); 018 void removeFromAnyStack(CargoItemType type, Object data, int num); 019 void addItems(CargoItemType type, Object data, float quantity); 020 float getNumItems(CargoItemType type, Object data); 021 } 022 023 public interface SpecialItemRendererAPI { 024 void renderSchematic(SpriteAPI sprite, float cx, float cy, float alphaMult); 025 void renderScanlines(SpriteAPI sprite, float cx, float cy, float alphaMult); 026 void renderScanlinesWithCorners(float blX, float blY, float tlX, float tlY, 027 float trX, float trY, float brX, float brY, 028 float alphaMult, boolean additive); 029 void renderSchematicWithCorners(SpriteAPI sprite, Color color, 030 float blX, float blY, float tlX, float tlY, 031 float trX, float trY, float brX, float brY, 032 float alphaMult); 033 void renderShipWithCorners(String hullOrWingId, Color bgColor, 034 float blX, float blY, float tlX, float tlY, float trX, 035 float trY, float brX, float brY, float alphaMult, float glowMult, boolean withSpotlight); 036 void renderBGWithCorners(Color bgColor, float blX, float blY, 037 float tlX, float tlY, float trX, float trY, float brX, 038 float brY, float alphaMult, float glowMult, boolean additive); 039 void renderWeaponWithCorners(String weaponId, float blX, float blY, 040 float tlX, float tlY, float trX, float trY, float brX, 041 float brY, float alphaMult, float glowMult, boolean withSpotlight); 042 043 } 044 045 /** 046 * Called before init(). init() may not be called if there's no stack. 047 * @param id 048 */ 049 void setId(String id); 050 void init(CargoStackAPI stack); 051 052 String getName(); 053 int getPrice(MarketAPI market, SubmarketAPI submarket); 054 055 boolean hasRightClickAction(); 056 void performRightClickAction(); 057 void performRightClickAction(RightClickActionHelper helper); 058 059 boolean shouldRemoveOnRightClickAction(); 060 061// int getNumToRemove(); 062// boolean shouldRemoveCalledAfterRightClickAction(); 063// void setReadOnlyCargoForRightClickAction(CargoAPI cargo); 064 065 boolean isTooltipExpandable(); 066 float getTooltipWidth(); 067 void createTooltip(TooltipMakerAPI tooltip, boolean expanded, CargoTransferHandlerAPI transferHandler, Object stackSource); 068 069 void render(float x, float y, float w, float h, float alphaMult, float glowMult, SpecialItemRendererAPI renderer); 070 071 /** 072 * Return null to have this item turn into nothing, or an empty string if it has no parameters. 073 * @param params 074 * @return 075 * @throws JSONException 076 */ 077 String resolveDropParamsToSpecificItemData(String params, Random random) throws JSONException; 078 String getDesignType(); 079 080 SpecialItemSpecAPI getSpec(); 081} 082 083 084 085 086 087 088 089