001package com.fs.starfarer.api;
002
003import com.fs.starfarer.api.campaign.BattleAPI;
004import com.fs.starfarer.api.campaign.CampaignFleetAPI;
005import com.fs.starfarer.api.campaign.CampaignProgressIndicatorAPI;
006import com.fs.starfarer.api.campaign.CargoAPI;
007import com.fs.starfarer.api.campaign.CargoAPI.CargoItemType;
008import com.fs.starfarer.api.campaign.CargoStackAPI;
009import com.fs.starfarer.api.campaign.FactionAPI;
010import com.fs.starfarer.api.campaign.FleetStubAPI;
011import com.fs.starfarer.api.campaign.JumpPointAPI;
012import com.fs.starfarer.api.campaign.OrbitAPI;
013import com.fs.starfarer.api.campaign.SectorEntityToken;
014import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI;
015import com.fs.starfarer.api.campaign.comm.CommMessageAPI;
016import com.fs.starfarer.api.campaign.econ.MarketAPI;
017import com.fs.starfarer.api.campaign.rules.MemoryAPI;
018import com.fs.starfarer.api.characters.OfficerDataAPI;
019import com.fs.starfarer.api.characters.PersonAPI;
020import com.fs.starfarer.api.combat.ShipVariantAPI;
021import com.fs.starfarer.api.fleet.CrewCompositionAPI;
022import com.fs.starfarer.api.fleet.FleetMemberAPI;
023import com.fs.starfarer.api.fleet.FleetMemberType;
024
025/**
026 * Provides methods for creating various entities, such as fleets, markets, orbits, cargo, and more.
027 *
028 * @author Alex Mosolov
029 *
030 * Copyright 2012 Fractal Softworks, LLC
031 */
032public interface FactoryAPI {
033        FleetMemberAPI createFleetMember(FleetMemberType type, String variantOrWingId);
034        CargoAPI createCargo(boolean unlimitedStacks);
035        CrewCompositionAPI createCrewComposition();
036
037        JumpPointAPI createJumpPoint(String id, String name);
038        OrbitAPI createCircularOrbit(SectorEntityToken focus, float angle, float orbitRadius, float orbitDays);
039        CampaignProgressIndicatorAPI createProgressIndicator(String text, SectorEntityToken target, float durationDays);
040        
041        MemoryAPI createMemory();
042        MarketAPI createMarket(String id, String name, int size);
043        //MarketAPI createConditionMarket(String id, String name, int size);
044        
045        
046//      /**
047//       * Convert a stub "market conditions only" market used for uninhabited planets into
048//       * a full-featured market used by the economy. Used when, for example, establishing an outpost
049//       * on a planet.
050//       * @param market
051//       * @return
052//       */
053//      MarketAPI convertToRegularMarket(MarketAPI market);
054        
055        CampaignFleetAPI createEmptyFleet(String factionId, String name, boolean aiMode);
056        
057        PersonAPI createPerson();
058        
059        OfficerDataAPI createOfficerData(PersonAPI person);
060        BattleAPI createBattle(CampaignFleetAPI one, CampaignFleetAPI two);
061        CargoStackAPI createCargoStack(CargoItemType type, Object data, CargoAPI cargo);
062        CommMessageAPI createMessage();
063        FleetStubAPI createStub();
064        OrbitAPI createCircularOrbitWithSpin(SectorEntityToken focus, float angle, float orbitRadius, float orbitDays, float spin);
065        FleetMemberAPI createFleetMember(FleetMemberType type, ShipVariantAPI variant);
066        CampaignFleetAIAPI createFleetAI(CampaignFleetAPI fleet);
067        OrbitAPI createCircularOrbitPointingDown(SectorEntityToken focus, float angle, float orbitRadius, float orbitDays);
068        //CargoStackAPI createCargoStack(CargoItemType type, Object data, Object data2, CargoAPI cargo);
069        CampaignFleetAPI createEmptyFleet(FactionAPI faction, boolean aiMode);
070        void setCurrentlyOpenMarket(MarketAPI currentlyOpenMarket);
071}