24 #define SPECENUM_NAME tech_state
27 #define SPECENUM_VALUE0 TECH_UNKNOWN
28 #define SPECENUM_VALUE1 TECH_PREREQS_KNOWN
29 #define SPECENUM_VALUE2 TECH_KNOWN
30 #include "specenum_gen.h"
66 enum tech_state
state;
124 enum tech_state value);
151 #define research_players_iterate(_presearch, _pplayer) \
152 generic_iterate(struct research_player_iter, struct player *, _pplayer, \
153 research_player_iter_sizeof, research_player_iter_init, \
155 #define research_players_iterate_end generic_iterate_end
void researches_init()
Initializes all player research structure.
int research_goal_unknown_techs(const struct research *presearch, Tech_type_id goal)
Returns the number of technologies the player need to research to get the goal technology.
bool research_invention_reachable(const struct research *presearch, const Tech_type_id tech)
Returns TRUE iff the given tech is ever reachable via research by the players sharing the research by...
bool research_goal_tech_req(const struct research *presearch, Tech_type_id goal, Tech_type_id tech)
Returns if the given tech has to be researched to reach the goal.
enum tech_state research_invention_set(struct research *presearch, Tech_type_id tech, enum tech_state value)
Set research knowledge about tech to given state.
int player_tech_upkeep(const struct player *pplayer)
Calculate the bulb upkeep needed for all techs of a player.
struct research * research_get(const struct player *pplayer)
Returns the research structure associated with the player.
size_t research_player_iter_sizeof()
Returns the real size of the research player iterator.
QString research_advance_name_translation(const struct research *presearch, Tech_type_id tech)
Store the translated name of the given tech (including A_FUTURE) in 'buf'.
const char * research_name_translation(const struct research *presearch)
Returns the name of the research owner: a player name or a team name.
QString research_advance_rule_name(const struct research *presearch, Tech_type_id tech)
Store the rule name of the given tech (including A_FUTURE) in 'buf'.
int research_number(const struct research *presearch)
int research_goal_bulbs_required(const struct research *presearch, Tech_type_id goal)
Function to determine cost (in bulbs) of reaching goal technology.
int research_total_bulbs_required(const struct research *presearch, Tech_type_id tech, bool loss_value)
Function to determine cost for technology.
enum tech_state research_invention_state(const struct research *presearch, Tech_type_id tech)
Returns state of the tech for current research.
struct research * research_by_number(int number)
Returns the research for the given index.
Tech_type_id research_goal_step(const struct research *presearch, Tech_type_id goal)
Return the next tech we should research to advance towards our goal.
bool research_invention_gettable(const struct research *presearch, const Tech_type_id tech, bool allow_holes)
Returns TRUE iff the given tech can be given to the players sharing the research immediately.
std::vector< research > research_array
void researches_free()
Free all resources allocated for the research system.
struct iterator * research_player_iter_init(struct research_player_iter *it, const struct research *presearch)
Initializes a research player iterator.
bool research_is_valid(const struct research &presearch)
Checks whether the research object is valid in the current game.
void research_update(struct research *presearch)
Mark as TECH_PREREQS_KNOWN each tech which is available, not known and which has all requirements ful...
const char * research_rule_name(const struct research *presearch)
Returns the name of the research owner: a player name or a team name.
int research_pretty_name(const struct research *presearch, char *buf, size_t buf_len)
Set in 'buf' the name of the research owner.
int bulbs_researched_saved
struct research::@71::@73 client
int bulbs_researching_saved
Tech_type_id researching_saved
struct research::research_invention inventions[A_LAST]
int num_known_tech_with_flag[TF_COUNT]