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