001package com.fs.starfarer.api.impl.campaign.fleets;
002
003import java.util.Random;
004
005import org.lwjgl.util.vector.Vector2f;
006
007import com.fs.starfarer.api.campaign.econ.MarketAPI;
008import com.fs.starfarer.api.characters.PersonAPI;
009
010/**
011 * Parameters for generic fleet creation.
012 * Fleet point values are targets not hard limits.
013 * 
014 * "Pts" are not fleet points
015 * 1/2/4/8 points = frigate/destroyer/cruiser/capital 
016 * 
017 * @author Alex Mosolov
018 *
019 *
020 * Copyright 2015 Fractal Softworks, LLC
021 */
022public class FleetParams {
023
024        public Vector2f hyperspaceLocation;
025        public MarketAPI market;
026        public String factionId;
027        public String fleetType;
028        public float combatPts;
029        public float freighterPts;      
030        public float tankerPts;         
031        public float transportPts;      
032        public float linerPts;
033        public float civilianPts;
034        public float utilityPts;
035        
036        public float qualityBonus;
037        public float qualityOverride = -1f;
038        
039        public float officerNumMult = 1f;
040        public int officerLevelBonus = 0;
041        public int levelLimit = 1000;
042        
043        public PersonAPI commander;
044        public String factionIdForShipPicking;
045        public Random random = null;
046        public boolean withOfficers = true;
047        
048        
049        /**
050         * 0: fighter, 4: capital
051         */
052        public int maxShipSize = 1000;
053        
054        
055        public FleetParams() {
056        }
057
058        public FleetParams(Vector2f hyperspaceLocation, MarketAPI market,
059                        String factionId, String fleetType, float combatFP,
060                        float freighterPts, float tankerPts, float transportPts,
061                        float linerPts, float civilianPts, float utilityPts,
062                        float qualityBonus, float qualityOverride) {
063                this.hyperspaceLocation = hyperspaceLocation;
064                this.market = market;
065                this.factionId = factionId;
066                this.fleetType = fleetType;
067                this.combatPts = combatFP;
068                this.freighterPts = freighterPts;
069                this.tankerPts = tankerPts;
070                this.transportPts = transportPts;
071                this.linerPts = linerPts;
072                this.civilianPts = civilianPts;
073                this.utilityPts = utilityPts;
074                this.qualityBonus = qualityBonus;
075                this.qualityOverride = qualityOverride;
076        }
077        
078        
079        public FleetParams(Vector2f hyperspaceLocation, MarketAPI market,
080                        String factionId, String factionIdForShipPicking, String fleetType, float combatPts,
081                        float freighterPts, float tankerPts, float transportPts,
082                        float linerPts, float civilianPts, float utilityPts,
083                        float qualityBonus, float qualityOverride, float officerNumMult,
084                        int officerLevelBonus) {
085                super();
086                this.hyperspaceLocation = hyperspaceLocation;
087                this.market = market;
088                this.factionId = factionId;
089                this.factionIdForShipPicking = factionIdForShipPicking;
090                this.fleetType = fleetType;
091                this.combatPts = combatPts;
092                this.freighterPts = freighterPts;
093                this.tankerPts = tankerPts;
094                this.transportPts = transportPts;
095                this.linerPts = linerPts;
096                this.civilianPts = civilianPts;
097                this.utilityPts = utilityPts;
098                this.qualityBonus = qualityBonus;
099                this.qualityOverride = qualityOverride;
100                this.officerNumMult = officerNumMult;
101                this.officerLevelBonus = officerLevelBonus;
102        }
103        
104        public FleetParams(Vector2f hyperspaceLocation, MarketAPI market,
105                        String factionId, String fleetType, float combatPts,
106                        float freighterPts, float tankerPts, float transportPts,
107                        float linerPts, float civilianPts, float utilityPts,
108                        float qualityBonus, float qualityOverride, float officerNumMult,
109                        int officerLevelBonus, PersonAPI commander, int levelLimit) {
110                super();
111                this.hyperspaceLocation = hyperspaceLocation;
112                this.market = market;
113                this.factionId = factionId;
114                this.fleetType = fleetType;
115                this.combatPts = combatPts;
116                this.freighterPts = freighterPts;
117                this.tankerPts = tankerPts;
118                this.transportPts = transportPts;
119                this.linerPts = linerPts;
120                this.civilianPts = civilianPts;
121                this.utilityPts = utilityPts;
122                this.qualityBonus = qualityBonus;
123                this.qualityOverride = qualityOverride;
124                this.officerNumMult = officerNumMult;
125                this.officerLevelBonus = officerLevelBonus;
126                this.commander = commander;
127                this.levelLimit = levelLimit;
128        }
129
130        public float getTotalPts() {
131                return combatPts + freighterPts + tankerPts + transportPts + linerPts + civilianPts + utilityPts;
132        }
133}
134
135
136
137
138
139
140
141
142
143
144