| 54 | }; |
| 55 | |
| 56 | Player::Player(PlayerConfigPtr config, Uuid uuid) { |
| 57 | auto assets = Root::singleton().assets(); |
| 58 | |
| 59 | m_config = config; |
| 60 | m_client = nullptr; |
| 61 | |
| 62 | m_state = State::Idle; |
| 63 | m_emoteState = HumanoidEmote::Idle; |
| 64 | |
| 65 | m_footstepTimer = 0.0f; |
| 66 | m_teleportTimer = 0.0f; |
| 67 | m_teleportAnimationType = "default"; |
| 68 | |
| 69 | m_shifting = false; |
| 70 | |
| 71 | m_aimPosition = Vec2F(); |
| 72 | |
| 73 | setUniqueId(uuid.hex()); |
| 74 | m_identity = m_config->defaultIdentity; |
| 75 | m_identityUpdated = true; |
| 76 | |
| 77 | m_questManager = make_shared<QuestManager>(this); |
| 78 | m_tools = make_shared<ToolUser>(); |
| 79 | m_armor = make_shared<ArmorWearer>(); |
| 80 | m_companions = make_shared<PlayerCompanions>(config->companionsConfig); |
| 81 | |
| 82 | for (auto& p : config->genericScriptContexts) { |
| 83 | auto scriptComponent = make_shared<GenericScriptComponent>(); |
| 84 | scriptComponent->setScript(p.second); |
| 85 | m_genericScriptContexts.set(p.first, scriptComponent); |
| 86 | } |
| 87 | |
| 88 | // all of these are defaults and won't include the correct humanoid config for the species |
| 89 | m_humanoid = make_shared<Humanoid>(Root::singleton().speciesDatabase()->species(m_identity.species)->humanoidConfig()); |
| 90 | m_humanoid->setIdentity(m_identity); |
| 91 | auto movementParameters = ActorMovementParameters(jsonMerge(m_humanoid->defaultMovementParameters(), m_config->movementParameters)); |
| 92 | if (!movementParameters.physicsEffectCategories) |
| 93 | movementParameters.physicsEffectCategories = StringSet({"player"}); |
| 94 | m_movementController = make_shared<ActorMovementController>(movementParameters); |
| 95 | m_zeroGMovementParameters = ActorMovementParameters(m_config->zeroGMovementParameters); |
| 96 | |
| 97 | m_techController = make_shared<TechController>(); |
| 98 | m_statusController = make_shared<StatusController>(m_config->statusControllerSettings); |
| 99 | m_deployment = make_shared<PlayerDeployment>(m_config->deploymentConfig); |
| 100 | |
| 101 | m_inventory = make_shared<PlayerInventory>(); |
| 102 | m_blueprints = make_shared<PlayerBlueprints>(); |
| 103 | m_universeMap = make_shared<PlayerUniverseMap>(); |
| 104 | m_codexes = make_shared<PlayerCodexes>(); |
| 105 | m_techs = make_shared<PlayerTech>(); |
| 106 | m_log = make_shared<PlayerLog>(); |
| 107 | |
| 108 | setModeType(PlayerMode::Casual); |
| 109 | |
| 110 | m_useDown = false; |
| 111 | m_edgeTriggeredUse = false; |
| 112 | setTeam(EntityDamageTeam(TeamType::Friendly)); |
| 113 |
nothing calls this directly
no test coverage detected