| 7 | namespace Star { |
| 8 | |
| 9 | AiDatabase::AiDatabase() { |
| 10 | auto assets = Root::singleton().assets(); |
| 11 | auto config = assets->json("/ai/ai.config"); |
| 12 | |
| 13 | auto& missions = assets->scanExtension("aimission"); |
| 14 | assets->queueJsons(missions); |
| 15 | |
| 16 | for (auto const& file : missions) { |
| 17 | if (auto config = assets->json(file)) { |
| 18 | auto mission = parseMission(config); |
| 19 | m_missions[mission.missionName] = mission; |
| 20 | } |
| 21 | } |
| 22 | |
| 23 | for (auto const& speciesPair : config.get("species").iterateObject()) |
| 24 | m_speciesParameters[speciesPair.first] = parseSpeciesParameters(speciesPair.second); |
| 25 | |
| 26 | for (auto const& p : config.get("shipStatus").iterateObject()) |
| 27 | m_shipStatus[lexicalCast<unsigned>(p.first)] = parseSpeech(p.second); |
| 28 | |
| 29 | m_noMissionsSpeech = parseSpeech(config.get("noMissionsSpeech")); |
| 30 | m_noCrewSpeech = parseSpeech(config.get("noCrewSpeech")); |
| 31 | |
| 32 | m_animationConfig.charactersPerSecond = config.getFloat("charactersPerSecond"); |
| 33 | m_animationConfig.defaultAnimation = config.getString("defaultAnimation"); |
| 34 | m_animationConfig.staticAnimation = Animation("/ai/ai.config:staticAnimation"); |
| 35 | m_animationConfig.staticOpacity = config.getFloat("staticOpacity"); |
| 36 | m_animationConfig.scanlineAnimation = Animation("/ai/ai.config:scanlineAnimation"); |
| 37 | m_animationConfig.scanlineOpacity = config.getFloat("scanlineOpacity"); |
| 38 | |
| 39 | for (auto const& pair : config.get("aiAnimations").iterateObject()) |
| 40 | m_animationConfig.aiAnimations[pair.first] = Animation(pair.second, "/ai/"); |
| 41 | } |
| 42 | |
| 43 | AiMission AiDatabase::mission(String const& missionName) const { |
| 44 | return m_missions.get(missionName); |
nothing calls this directly
no test coverage detected