Freeciv-3.3
|
#include "bitvector.h"
#include "shared.h"
#include "fc_types.h"
#include "name_translation.h"
#include "requirements.h"
#include "specenum_gen.h"
Go to the source code of this file.
Data Structures | |
struct | tech_class |
struct | advance |
Enumerations | |
enum | tech_req { AR_ONE = 0 , AR_TWO = 1 , AR_ROOT = 2 , AR_SIZE } |
#define advance_index_iterate_end |
#define advance_iterate | ( | _p | ) | advance_iterate_base(A_FIRST, _p) |
#define advance_iterate_all | ( | _p | ) | advance_iterate_base(A_NONE, _p) |
#define advance_iterate_all_end advance_iterate_base_end |
#define advance_iterate_end advance_iterate_base_end |
#define advance_re_active_iterate_end |
#define advance_req_iterate_end generic_iterate_end |
#define advance_root_req_iterate_end generic_iterate_end |
#define MAX_NUM_USER_TECH_FLAGS (TECH_USER_LAST - TECH_USER_1 + 1) |
#define SPECENUM_BITVECTOR bv_tech_flags |
#define SPECENUM_VALUE0 TF_BONUS_TECH |
#define SPECENUM_VALUE10 TECH_USER_8 |
#define SPECENUM_VALUE11 TECH_USER_9 |
#define SPECENUM_VALUE12 TECH_USER_LAST |
#define SPECENUM_VALUE2 TF_BUILD_AIRBORNE |
#define SPECENUM_VALUE3 TECH_USER_1 |
#define SPECENUM_VALUE4 TECH_USER_2 |
#define SPECENUM_VALUE5 TECH_USER_3 |
#define SPECENUM_VALUE6 TECH_USER_4 |
#define SPECENUM_VALUE7 TECH_USER_5 |
#define SPECENUM_VALUE8 TECH_USER_6 |
#define SPECENUM_VALUE9 TECH_USER_7 |
#define tech_class_re_active_iterate_end |
struct advance * advance_by_number | ( | const Tech_type_id | atype | ) |
Return the advance for the given advance index.
Definition at line 107 of file tech.c.
Referenced by tab_tech::add_now(), advance_has_flag(), help_widget::anchor_clicked(), api_edit_give_technology(), api_find_tech_type(), api_methods_player_researching(), boot_help_texts(), client_diplomacy_clause_string(), create_select_tech_icon(), create_tech_info(), create_tech_tree(), research_diagram::create_tooltip_help(), dai_goldequiv_clause(), dai_manage_government(), dai_manage_tech(), dai_select_tech(), do_tech_parasite_effects(), draw_reqtree(), found_new_tech(), get_tooltip_unit(), handle_diplomacy_accept_treaty_req(), handle_ruleset_tech(), help_hyperlink_callback(), help_tech_tree_activated_callback(), help_update_tech(), helptext_advance(), helptext_extra(), helptext_nation(), init_tech(), tab_tech::initialize_new_tech(), load_ruleset_techs(), research_diagram::mouseMoveEvent(), node_rectangle_minimum_size(), popup_change_research_dialog(), popup_change_research_goal_dialog(), popup_diplomatic_objects(), real_science_report_dialog_update(), real_tech_log(), research_advance_name(), research_get_reachable(), research_get_root_reqs_known(), research_tech_lost(), research_update(), sanity_check_ruleset_data(), save_tech_list(), save_techs_ruleset(), side_right_click_science(), spy_steal_popup_shared(), steal_a_tech(), tech_researched(), technology_save(), universal_by_number(), universal_value_initial(), unpack_tech_req(), update_intel_dialog(), science_report::update_report(), utype_primary_tech_req(), and valid_advance_by_number().
Does a linear search of advances[].name.vernacular Returns NULL when none match.
Definition at line 200 of file tech.c.
Referenced by api_find_tech_type_by_name(), tab_tech::initialize_new_tech(), load_ruleset_terrain(), lookup_tech(), lookup_tech_list(), tab_tech::req1_menu(), tab_tech::req2_menu(), tab_tech::root_req_menu(), tab_tech::select_tech(), sg_load_game(), sg_load_game(), sg_load_researches(), sg_load_researches(), technology_load(), technology_load(), and universal_value_from_str().
Does a linear search of advances[].name.translated Returns NULL when none match.
Definition at line 185 of file tech.c.
Referenced by help_update_tech(), help_dialog::make_tree(), and help_widget::set_topic_tech().
|
inlinestatic |
Inline wrapper for advance_count_real() that makes it clear to the compiler that the value returned never exceeds A_LAST. Making actual advance_count_real() inline would be more complicated due to header interdependencies.
Definition at line 165 of file tech.h.
Referenced by create_dummy_reqtree(), dai_select_tech(), extviewer_view_cell_toggled(), get_req_source_effects(), get_tech_sprite(), handle_research_info(), init_tech(), package_research_info(), pick_random_tech_to_lose(), popup_change_research_dialog(), popup_change_research_goal_dialog(), popup_diplomatic_objects(), research_update(), science_report_update(), send_ruleset_techs(), spy_steal_popup_shared(), steal_a_tech(), suggest_tech_exchange(), and science_report::update_report().
Tech_type_id advance_count_real | ( | void | ) |
Return the number of advances/technologies.
Definition at line 78 of file tech.c.
Referenced by advance_count().
bool advance_has_flag | ( | Tech_type_id | tech, |
enum tech_flag_id | flag | ||
) |
Return TRUE if the tech has this flag otherwise FALSE
Definition at line 216 of file tech.c.
Referenced by found_new_tech(), helptext_advance(), is_techflag_req_active(), research_update(), and save_techs_ruleset().
Tech_type_id advance_index | ( | const struct advance * | padvance | ) |
Return the advance index.
Currently same as advance_number(), paired with advance_count() indicates use as an array index.
Definition at line 89 of file tech.c.
Referenced by api_methods_player_tech_cost(), dai_choose_diplomat_defensive(), dai_choose_paratrooper(), dai_process_defender_want(), dai_tech_effect_values(), dai_wants_defender_against(), dai_wants_role_unit(), extviewer_refresh_widgets(), find_best_city_placement(), process_attacker_want(), real_tech_log(), tab_tech::refresh(), save_techs_ruleset(), sg_load_researches(), sg_save_savefile(), tileset_setup_tech_type(), and want_tech_for_improvement_effect().
Return the (translated) name of the given advance/technology. You don't have to free the return pointer.
Definition at line 300 of file tech.c.
Referenced by advance_by_translated_name(), help_widget::anchor_clicked(), api_methods_tech_type_name_translation(), boot_help_texts(), client_diplomacy_clause_string(), go_act_menu::create(), create_clause_menu(), create_tech_info(), create_tech_tree(), extviewer_refresh_widgets(), get_tooltip_improvement(), get_tooltip_unit(), handle_diplomacy_accept_treaty_req(), help_hyperlink_callback(), help_tech_tree_activated_callback(), help_update_tech(), help_update_unit_type(), help_update_wonder(), helptext_advance(), helptext_building(), helptext_extra(), helptext_nation(), manual_techs(), research_diagram::mouseMoveEvent(), popup_add_menu(), popup_change_research_dialog(), popup_change_research_goal_dialog(), popup_diplomatic_objects(), popup_impr_info(), popup_tech_info(), popup_unit_info(), real_menus_init(), real_menus_update(), req_text_insert(), help_widget::set_topic_building(), help_widget::set_topic_unit(), diplo_wdg::show_menu(), show_tech_gained_dialog(), side_right_click_science(), sort_advance_names(), spy_steal_popup_shared(), universal_name_translation(), update_intel_dialog(), science_report::update_report(), worklist_change_build_target(), and worklist_item_postpone_req_vec().
Tech_type_id advance_number | ( | const struct advance * | padvance | ) |
Return the advance index.
Definition at line 98 of file tech.c.
Referenced by adjust_improvement_wants_by_effects(), adv_best_government(), advance_req_iter_next(), advance_required(), advance_root_req_iter_init(), advance_root_req_iter_next(), diplo_wdg::all_advances(), api_edit_give_technology(), api_edit_player_give_bulbs(), api_method_player_can_research(), api_methods_player_knows_tech(), api_methods_player_tech_bulbs(), choose_tech_to_steal(), go_act_menu::create(), create_clause_menu(), create_select_tech_icon(), create_tech_info(), research_diagram::create_tooltip_help(), dai_gov_value(), dai_process_defender_want(), dai_tech_base_want(), dai_tech_effect_values(), dai_wants_defender_against(), dai_wants_role_unit(), diplomacy_dialog_tech_callback(), diplomacy_dialog_tech_callback(), draw_reqtree(), handle_ruleset_tech(), help_update_tech(), help_update_unit_type(), helptext_advance(), is_tech_needed(), is_tech_req_active(), load_ruleset_terrain(), lookup_tech_list(), help_dialog::make_tree(), nation_has_initial_tech(), plr_widget::nation_selected(), node_rectangle_minimum_size(), player_tech_upkeep(), popup_add_menu(), popup_impr_info(), popup_unit_info(), process_attacker_want(), real_science_report_dialog_update(), real_tech_log(), recalculate_techs_researched(), tab_tech::req1_jump(), tab_tech::req2_jump(), research_get_reachable(), research_get_root_reqs_known(), research_goal_step(), research_update(), tab_tech::root_req_jump(), send_ruleset_techs(), help_widget::set_topic_tech(), help_widget::set_topic_unit(), sg_load_game(), sg_load_game(), sg_load_researches(), sg_load_researches(), diplo_wdg::show_menu(), spy_steal_popup_shared(), tech_can_be_stolen(), technology_load(), technology_load(), unit_goto_and_callback(), unit_goto_and_callback(), universal_number(), and worklist_change_build_target().
Tech_type_id advance_required | ( | const Tech_type_id | tech, |
enum tech_req | require | ||
) |
Accessor for requirements.
Definition at line 121 of file tech.c.
Referenced by advance_root_req_iter_init(), advance_root_req_iter_next(), create_dummy_reqtree(), create_tech_info(), create_tech_tree(), create_tech_tree(), pick_random_tech_to_lose(), redraw_tech_tree_dlg(), research_get_reachable_rreqs(), research_update(), and tech_transfer().
Accessor for requirements.
Definition at line 136 of file tech.c.
Referenced by advance_req_iter_next(), advance_root_req_iter_get(), advance_root_req_iter_next(), help_update_tech(), helptext_advance(), research_get_reachable(), and sanity_check_ruleset_data().
Return the (untranslated) rule name of the advance/technology. You don't have to free the return pointer.
Definition at line 309 of file tech.c.
Referenced by advance_by_rule_name(), api_methods_tech_type_rule_name(), dai_choose_paratrooper(), dai_goldequiv_clause(), dai_select_tech(), tab_tech::delete_now(), tab_tech::edit_effects(), edit_tech::edit_tech(), handle_diplomacy_accept_treaty_req(), init_tech(), is_tech_needed(), load_ruleset_techs(), load_ruleset_units(), tab_tech::name_given(), real_tech_log(), tab_tech::refresh(), research_tech_lost(), research_update(), sanity_check_ruleset_data(), save_tech_list(), save_tech_ref(), sg_save_savefile(), tab_tech::tech_name(), technology_save(), tileset_setup_tech_type(), universal_kind_values(), and universal_rule_name().
BV_DEFINE | ( | bv_techs | , |
A_ARRAY_SIZE | |||
) |
bool is_future_tech | ( | Tech_type_id | tech | ) |
Is the given tech a future tech.
Definition at line 281 of file tech.c.
Referenced by adv_data_phase_init(), api_edit_give_technology(), choose_tech(), dai_select_tech(), found_new_tech(), popup_change_research_dialog(), research_tech_lost(), research_total_bulbs_required(), science_report_update(), progress_bar::set_pixmap(), sg_load_sanitycheck(), sg_load_sanitycheck(), steal_a_tech(), update_bulbs(), and science_report::update_report().
Is the given tech an regular advance. "None" counts as regular advance, Future Tech does not.
Definition at line 290 of file tech.c.
Referenced by help_update_tech(), help_dialog::make_tree(), and help_widget::set_topic_tech().
Sets user defined name for tech flag.
Definition at line 404 of file tech.c.
Referenced by handle_ruleset_tech_flag(), load_tech_names(), and rscompat_names().
struct tech_class * tech_class_by_number | ( | const int | idx | ) |
Return the tech_class for the given index.
Definition at line 330 of file tech.c.
Referenced by handle_ruleset_tech(), handle_ruleset_tech_class(), and tech_class_by_rule_name().
struct tech_class * tech_class_by_rule_name | ( | const char * | name | ) |
Does a linear search of tech_classes[].name.vernacular Returns NULL when none match.
Definition at line 361 of file tech.c.
Referenced by load_ruleset_techs().
const char * tech_class_name_translation | ( | const struct tech_class * | ptclass | ) |
Return the (translated) name of the given tech_class You must not free the return pointer.
Definition at line 343 of file tech.c.
Referenced by helptext_advance().
const char * tech_class_rule_name | ( | const struct tech_class * | ptclass | ) |
Return the (untranslated) rule name of tech_class You must not free the return pointer.
Definition at line 352 of file tech.c.
Referenced by save_techs_ruleset(), and tech_class_by_rule_name().
const char * tech_flag_helptxt | ( | enum tech_flag_id | id | ) |
Return the (untranslated) helptxt of the user tech flag.
Definition at line 445 of file tech.c.
Referenced by helptext_advance(), save_techs_ruleset(), and send_ruleset_techs().
De-allocate resources of all techs.
Definition at line 520 of file tech.c.
Referenced by game_ruleset_free().
Returns true if the costs for the given technology will stay constant during the game. False otherwise.
Checking every tech_cost_style with fixed costs seems a waste of system resources, when we can check that it is not the one style without fixed costs.
Definition at line 460 of file tech.c.
Referenced by helptext_advance().
Initialize tech structures.
Definition at line 469 of file tech.c.
Referenced by game_ruleset_init().
Function to precalculate needed data for technologies.
Definition at line 225 of file tech.c.
Referenced by load_rulesetdir().
Frees the memory associated with all user tech flags
Definition at line 392 of file tech.c.
Referenced by game_ruleset_free().
Initialize user tech flags.
Definition at line 380 of file tech.c.
Referenced by game_ruleset_init().
Returns pointer when the advance "exists" in this game, returns NULL otherwise.
A tech doesn't exist if it has been flagged as removed by setting its require values to A_NEVER. Note that this function returns NULL if either of req values is A_NEVER, rather than both, to be on the safe side.
Definition at line 152 of file tech.c.
Referenced by advance_req_iter_next(), advance_root_req_iter_next(), is_regular_advance(), load_ruleset_techs(), load_ruleset_units(), lookup_tech_list(), manual_techs(), real_tech_log(), recalculate_techs_researched(), research_get_reachable(), send_ruleset_techs(), tileset_setup_tech_type(), and valid_advance_by_number().
struct advance * valid_advance_by_number | ( | const Tech_type_id | id | ) |
Returns pointer when the advance "exists" in this game, returns NULL otherwise.
In addition to valid_advance(), tests for id is out of range.
Definition at line 176 of file tech.c.
Referenced by add_clause(), boot_help_texts(), calc_civ_score(), create_dummy_reqtree(), create_tech_tree(), dai_select_tech(), diplomat_get_tech(), found_new_tech(), handle_player_research(), handle_player_tech_goal(), helptext_advance(), init_tech(), popup_tech_info(), research_allowed(), research_get_reachable(), research_get_reachable_rreqs(), research_goal_bulbs_required(), research_goal_step(), research_goal_tech_req(), research_goal_unknown_techs(), research_invention_gettable(), research_invention_reachable(), research_invention_set(), research_invention_state(), research_tech_lost(), research_total_bulbs_required(), research_update(), sanity_check_ruleset_data(), progress_bar::set_pixmap(), sg_load_player_unit(), sg_load_sanitycheck(), sg_load_sanitycheck(), sg_save_researches(), show_tech_gained_dialog(), simple_action_callback(), simple_action_callback(), steal_a_tech(), and unit_order_list_is_sane().