001package com.fs.starfarer.api.characters;
002
003import java.util.List;
004import java.util.Random;
005import java.util.Set;
006
007import com.fs.starfarer.api.campaign.CampaignFleetAPI;
008import com.fs.starfarer.api.campaign.FactionAPI;
009import com.fs.starfarer.api.campaign.PersonImportance;
010import com.fs.starfarer.api.campaign.econ.MarketAPI;
011import com.fs.starfarer.api.campaign.rules.HasMemory;
012import com.fs.starfarer.api.campaign.rules.MemoryAPI;
013import com.fs.starfarer.api.characters.FullName.Gender;
014import com.fs.starfarer.api.loading.ContactTagSpec;
015
016/**
017 * @author Alex Mosolov
018 *
019 * Copyright 2012 Fractal Softworks, LLC
020 */
021public interface PersonAPI extends HasMemory {
022        
023        void setPersonality(String personality);
024        
025        MutableCharacterStatsAPI getStats();
026
027        String getRank();
028        String getRankArticle();
029        String getRankId();
030        void setRankId(String rank);
031        
032        String getPost();
033        String getPostArticle();
034        void setPostId(String postId);
035        String getPostId();
036
037        FullName getName();
038        void setName(FullName name);
039        
040        String getPortraitSprite();
041        void setPortraitSprite(String portraitSprite);
042
043        
044        Gender getGender();
045        boolean isMale();
046        boolean isFemale();
047
048        MemoryAPI getMemory();
049        MemoryAPI getMemoryWithoutUpdate();
050
051        boolean wantsToContactPlayer();
052        void incrWantsToContactReasons();
053        void decrWantsToContactReasons();
054        
055        float getContactWeight();
056        void setContactWeight(float contactWeight);
057
058
059        FactionAPI getFaction();
060        void setFaction(String factionId);
061
062        RelationshipAPI getRelToPlayer();
063
064        String getId();
065        boolean hasTag(String tag);
066        void addTag(String tag);
067        void removeTag(String tag);
068        Set<String> getTags();
069        void clearTags();
070
071        boolean isPlayer();
072
073        boolean isDefault();
074
075        PersonalityAPI getPersonalityAPI();
076
077        String getAICoreId();
078        void setAICoreId(String aiCoreId);
079        boolean isAICore();
080
081        String getNameString();
082
083        void setGender(Gender gender);
084
085        /**
086         * For officers, the fleet they're in.
087         * @return
088         */
089        CampaignFleetAPI getFleet();
090        /**
091         * For officers, the fleet they're in.
092         */
093        void setFleet(CampaignFleetAPI fleet);
094
095        MutableCharacterStatsAPI getFleetCommanderStats();
096
097        void setId(String id);
098
099        MarketAPI getMarket();
100        void setMarket(MarketAPI market);
101
102        PersonImportance getImportance();
103        void setImportance(PersonImportance importance);
104        
105        /**
106         * The passed in random is used to set the "voice". These are paired since voice is based on importance.
107         * @param importance
108         * @param random
109         */
110        void setImportanceAndVoice(PersonImportance importance, Random random);
111
112        String getHisOrHer();
113
114        String getHeOrShe();
115
116        List<ContactTagSpec> getSortedContactTags();
117
118        List<String> getSortedContactTagStrings();
119
120        String getHimOrHer();
121
122        String getManOrWoman();
123
124        String getVoice();
125        void setVoice(String voice);
126
127        void setStats(MutableCharacterStatsAPI stats);
128
129
130}
131
132