001package com.fs.starfarer.api.impl.campaign.intel.bar.events;
002
003import java.util.Random;
004
005import com.fs.starfarer.api.Global;
006import com.fs.starfarer.api.campaign.econ.MarketAPI;
007import com.fs.starfarer.api.characters.FullName.Gender;
008import com.fs.starfarer.api.characters.PersonAPI;
009import com.fs.starfarer.api.impl.campaign.ids.Factions;
010import com.fs.starfarer.api.impl.campaign.ids.Ranks;
011import com.fs.starfarer.api.util.Misc;
012
013public abstract class BaseBarEventWithPerson extends BaseBarEvent {
014        protected PersonAPI person;
015        protected long seed;
016        protected MarketAPI market = null;
017        protected transient Random random;
018        
019        public BaseBarEventWithPerson() {
020                seed = Misc.random.nextLong();
021        }
022        
023        protected void regen(MarketAPI market) {
024                if (this.market == market) return;
025                this.market = market;
026                
027                random = new Random(seed + market.getId().hashCode());
028                person = createPerson();
029        }
030        
031        protected PersonAPI createPerson() {
032                PersonAPI person = Global.getSector().getFaction(getPersonFaction()).createRandomPerson(getPersonGender(), random);
033                String p = getPersonPortrait();
034                if (p != null) person.setPortraitSprite(p);
035                person.setRankId(getPersonRank());
036                person.setPostId(getPersonPost());
037                return person;
038        }
039        
040        protected String getPersonPortrait() {
041                return null;
042        }
043        
044        protected String getPersonFaction() {
045                return Factions.INDEPENDENT;
046        }
047        protected String getPersonRank() {
048                return Ranks.CITIZEN;
049        }
050        protected Gender getPersonGender() {
051                return Gender.ANY;
052        }
053        protected String getPersonPost() {
054                return Ranks.CITIZEN;
055        }
056        
057        protected String getManOrWoman() {
058                String manOrWoman = "man";
059                if (person.getGender() == Gender.FEMALE) manOrWoman = "woman";
060                return manOrWoman;
061        }
062        
063        protected String getHeOrShe() {
064                String heOrShe = "he";
065                if (person.getGender() == Gender.FEMALE) {
066                        heOrShe = "she";
067                }
068                return heOrShe;
069        }
070        
071        protected String getHimOrHer() {
072                String himOrHer = "him";
073                if (person.getGender() == Gender.FEMALE) {
074                        himOrHer = "her";
075                }
076                return himOrHer;
077        }
078        
079        protected String getHimOrHerself() {
080                String himOrHer = "himself";
081                if (person.getGender() == Gender.FEMALE) {
082                        himOrHer = "herself";
083                }
084                return himOrHer;
085        }
086        
087        protected String getHisOrHer() {
088                String hisOrHer = "his";
089                if (person.getGender() == Gender.FEMALE) {
090                        hisOrHer = "her";
091                }
092                return hisOrHer;
093        }
094
095        @Override
096        public boolean isDialogFinished() {
097                return done;
098        }
099
100        public PersonAPI getPerson() {
101                return person;
102        }
103
104        public MarketAPI getMarket() {
105                return market;
106        }
107
108        public Random getRandom() {
109                return random;
110        }
111        
112}
113
114
115