#pragma once #include #include #include #include "DataIndexes.hh" #include "DeckState.hh" #include "PlayerState.hh" namespace Episode3 { class Server; const std::vector& all_assist_card_ids(bool is_trial); AssistEffect assist_effect_number_for_card_id(uint16_t card_id, bool is_trial); class AssistServer { public: explicit AssistServer(std::shared_ptr server); std::shared_ptr server(); std::shared_ptr server() const; uint16_t card_id_for_card_ref(uint16_t card_ref) const; std::shared_ptr definition_for_card_id(uint16_t card_id) const; uint32_t compute_num_assist_effects_for_client(uint16_t client_id); uint32_t compute_num_assist_effects_for_team(uint32_t team_id); bool should_block_assist_effects_for_client(uint16_t client_id) const; AssistEffect get_active_assist_by_index(size_t index) const; void populate_effects(); void recompute_effects(); private: std::weak_ptr w_server; public: parray assist_effects; std::shared_ptr assist_card_defs[4]; uint32_t num_assist_cards_set; parray client_ids_with_assists; parray active_assist_effects; std::shared_ptr active_assist_card_defs[4]; uint32_t num_active_assists; std::shared_ptr hand_and_equip_states[4]; std::shared_ptr> card_short_statuses[4]; std::shared_ptr deck_entries[4]; std::shared_ptr> set_card_action_chains[4]; std::shared_ptr> set_card_action_metadatas[4]; }; } // namespace Episode3