From 28b00d9f210fca0fa6810a0aa61cbeb3f87263c0 Mon Sep 17 00:00:00 2001 From: Mikhail Date: Sat, 16 Sep 2023 01:24:47 +0300 Subject: [PATCH 001/100] Tweaked military formula to be more informative about strong warriors. Added options to sort and reset manager orders to the 'o' screen. --- plugins/lua/orders.lua | 37 +++++++++++- plugins/lua/sort.lua | 74 +++++++++++------------ plugins/orders.cpp | 131 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 203 insertions(+), 39 deletions(-) diff --git a/plugins/lua/orders.lua b/plugins/lua/orders.lua index 7a87e529f..91fd3bef6 100644 --- a/plugins/lua/orders.lua +++ b/plugins/lua/orders.lua @@ -62,12 +62,24 @@ local function do_export() }:show() end +local function do_reset() + dfhack.run_command('orders', 'reset') +end + +local function do_sort_type() + dfhack.run_command('orders', 'sort_type') +end + +local function do_sort_mat() + dfhack.run_command('orders', 'sort_material') +end + OrdersOverlay = defclass(OrdersOverlay, overlay.OverlayWidget) OrdersOverlay.ATTRS{ default_pos={x=53,y=-6}, default_enabled=true, viewscreens='dwarfmode/Info/WORK_ORDERS/Default', - frame={w=30, h=4}, + frame={w=75, h=4}, } function OrdersOverlay:init() @@ -95,13 +107,34 @@ function OrdersOverlay:init() }, widgets.HotkeyLabel{ frame={t=0, l=15}, - label='sort', + label='sort by freq', key='CUSTOM_CTRL_O', auto_width=true, on_activate=do_sort, }, widgets.HotkeyLabel{ frame={t=1, l=15}, + label='sort by type', + key='CUSTOM_CTRL_T', + auto_width=true, + on_activate=do_sort_type, + }, + widgets.HotkeyLabel{ + frame={t=0, l=35}, + label='sort by mat', + key='CUSTOM_CTRL_T', + auto_width=true, + on_activate=do_sort_mat, + }, + widgets.HotkeyLabel{ + frame={t=1, l=35}, + label='reset', + key='CUSTOM_CTRL_R', + auto_width=true, + on_activate=do_reset, + }, + widgets.HotkeyLabel{ + frame={t=1, l=55}, label='clear', key='CUSTOM_CTRL_C', auto_width=true, diff --git a/plugins/lua/sort.lua b/plugins/lua/sort.lua index 15d9ebabb..778bc87b9 100644 --- a/plugins/lua/sort.lua +++ b/plugins/lua/sort.lua @@ -212,7 +212,7 @@ local function melee_skill_effectiveness(unit) end local function get_melee_skill_effectiveness_rating(unit) - return get_rating(melee_skill_effectiveness(unit), 350000, 2350000, 78, 64, 49, 35) + return get_rating(melee_skill_effectiveness(unit), 350000, 2750000, 64, 52, 40, 28) end local function make_sort_by_melee_skill_effectiveness_desc() @@ -272,7 +272,7 @@ local function ranged_skill_effectiveness(unit) end local function get_ranged_skill_effectiveness_rating(unit) - return get_rating(ranged_skill_effectiveness(unit), 0, 500000, 90, 62, 44, 27) + return get_rating(ranged_skill_effectiveness(unit), 0, 800000, 72, 52, 31, 11) end local function make_sort_by_ranged_skill_effectiveness_desc(list) @@ -345,41 +345,41 @@ end -- Statistical rating that is higher for dwarves that are mentally stable local function get_mental_stability(unit) - local ALTRUISM = unit.status.current_soul.personality.traits.ALTRUISM - local ANXIETY_PROPENSITY = unit.status.current_soul.personality.traits.ANXIETY_PROPENSITY - local BRAVERY = unit.status.current_soul.personality.traits.BRAVERY - local CHEER_PROPENSITY = unit.status.current_soul.personality.traits.CHEER_PROPENSITY - local CURIOUS = unit.status.current_soul.personality.traits.CURIOUS - local DISCORD = unit.status.current_soul.personality.traits.DISCORD - local DUTIFULNESS = unit.status.current_soul.personality.traits.DUTIFULNESS - local EMOTIONALLY_OBSESSIVE = unit.status.current_soul.personality.traits.EMOTIONALLY_OBSESSIVE - local HUMOR = unit.status.current_soul.personality.traits.HUMOR - local LOVE_PROPENSITY = unit.status.current_soul.personality.traits.LOVE_PROPENSITY - local PERSEVERENCE = unit.status.current_soul.personality.traits.PERSEVERENCE - local POLITENESS = unit.status.current_soul.personality.traits.POLITENESS - local PRIVACY = unit.status.current_soul.personality.traits.PRIVACY - local STRESS_VULNERABILITY = unit.status.current_soul.personality.traits.STRESS_VULNERABILITY - local TOLERANT = unit.status.current_soul.personality.traits.TOLERANT - - local CRAFTSMANSHIP = setbelief.getUnitBelief(unit, df.value_type['CRAFTSMANSHIP']) - local FAMILY = setbelief.getUnitBelief(unit, df.value_type['FAMILY']) - local HARMONY = setbelief.getUnitBelief(unit, df.value_type['HARMONY']) - local INDEPENDENCE = setbelief.getUnitBelief(unit, df.value_type['INDEPENDENCE']) - local KNOWLEDGE = setbelief.getUnitBelief(unit, df.value_type['KNOWLEDGE']) - local LEISURE_TIME = setbelief.getUnitBelief(unit, df.value_type['LEISURE_TIME']) - local NATURE = setbelief.getUnitBelief(unit, df.value_type['NATURE']) - local SKILL = setbelief.getUnitBelief(unit, df.value_type['SKILL']) - - -- Calculate the rating using the defined variables - local rating = (CRAFTSMANSHIP * -0.01) + (FAMILY * -0.09) + (HARMONY * 0.05) - + (INDEPENDENCE * 0.06) + (KNOWLEDGE * -0.30) + (LEISURE_TIME * 0.24) - + (NATURE * 0.27) + (SKILL * -0.21) + (ALTRUISM * 0.13) - + (ANXIETY_PROPENSITY * -0.06) + (BRAVERY * 0.06) - + (CHEER_PROPENSITY * 0.41) + (CURIOUS * -0.06) + (DISCORD * 0.14) - + (DUTIFULNESS * -0.03) + (EMOTIONALLY_OBSESSIVE * -0.13) - + (HUMOR * -0.05) + (LOVE_PROPENSITY * 0.15) + (PERSEVERENCE * -0.07) - + (POLITENESS * -0.14) + (PRIVACY * 0.03) + (STRESS_VULNERABILITY * -0.20) - + (TOLERANT * -0.11) + local altruism = unit.status.current_soul.personality.traits.ALTRUISM + local anxiety_propensity = unit.status.current_soul.personality.traits.ANXIETY_PROPENSITY + local bravery = unit.status.current_soul.personality.traits.BRAVERY + local cheer_propensity = unit.status.current_soul.personality.traits.CHEER_PROPENSITY + local curious = unit.status.current_soul.personality.traits.CURIOUS + local discord = unit.status.current_soul.personality.traits.DISCORD + local dutifulness = unit.status.current_soul.personality.traits.DUTIFULNESS + local emotionally_obsessive = unit.status.current_soul.personality.traits.EMOTIONALLY_OBSESSIVE + local humor = unit.status.current_soul.personality.traits.HUMOR + local love_propensity = unit.status.current_soul.personality.traits.LOVE_PROPENSITY + local perseverence = unit.status.current_soul.personality.traits.PERSEVERENCE + local politeness = unit.status.current_soul.personality.traits.POLITENESS + local privacy = unit.status.current_soul.personality.traits.PRIVACY + local stress_vulnerability = unit.status.current_soul.personality.traits.STRESS_VULNERABILITY + local tolerant = unit.status.current_soul.personality.traits.TOLERANT + + local craftsmanship = setbelief.getUnitBelief(unit, df.value_type['CRAFTSMANSHIP']) + local family = setbelief.getUnitBelief(unit, df.value_type['FAMILY']) + local harmony = setbelief.getUnitBelief(unit, df.value_type['HARMONY']) + local independence = setbelief.getUnitBelief(unit, df.value_type['INDEPENDENCE']) + local knowledge = setbelief.getUnitBelief(unit, df.value_type['KNOWLEDGE']) + local leisure_time = setbelief.getUnitBelief(unit, df.value_type['LEISURE_TIME']) + local nature = setbelief.getUnitBelief(unit, df.value_type['NATURE']) + local skill = setbelief.getUnitBelief(unit, df.value_type['SKILL']) + + -- calculate the rating using the defined variables + local rating = (craftsmanship * -0.01) + (family * -0.09) + (harmony * 0.05) + + (independence * 0.06) + (knowledge * -0.30) + (leisure_time * 0.24) + + (nature * 0.27) + (skill * -0.21) + (altruism * 0.13) + + (anxiety_propensity * -0.06) + (bravery * 0.06) + + (cheer_propensity * 0.41) + (curious * -0.06) + (discord * 0.14) + + (dutifulness * -0.03) + (emotionally_obsessive * -0.13) + + (humor * -0.05) + (love_propensity * 0.15) + (perseverence * -0.07) + + (politeness * -0.14) + (privacy * 0.03) + (stress_vulnerability * -0.20) + + (tolerant * -0.11) return rating end diff --git a/plugins/orders.cpp b/plugins/orders.cpp index e3c57d0f1..ceaf84196 100644 --- a/plugins/orders.cpp +++ b/plugins/orders.cpp @@ -64,6 +64,9 @@ static command_result orders_export_command(color_ostream & out, const std::stri static command_result orders_import_command(color_ostream & out, const std::string & name); static command_result orders_clear_command(color_ostream & out); static command_result orders_sort_command(color_ostream & out); +static command_result orders_sort_type_command(color_ostream & out); +static command_result orders_sort_material_command(color_ostream & out); +static command_result orders_reset_command(color_ostream & out); static command_result orders_command(color_ostream & out, std::vector & parameters) { @@ -111,6 +114,21 @@ static command_result orders_command(color_ostream & out, std::vectorreaction_name.empty(); + bool b_has_reaction_name = !b->reaction_name.empty(); + + if (a_has_reaction_name != b_has_reaction_name) + { + return a_has_reaction_name; + } + else if (a_has_reaction_name && b_has_reaction_name) + { + if (a->reaction_name != b->reaction_name) + { + return a->reaction_name < b->reaction_name; + } + } + + // Compare job_type + return enum_item_key(a->job_type) < enum_item_key(b->job_type); +} + +static command_result orders_sort_type_command(color_ostream & out) +{ + CoreSuspender suspend; + if (!std::is_sorted(world->manager_orders.begin(), + world->manager_orders.end(), + compare_type)) + { + std::stable_sort(world->manager_orders.begin(), + world->manager_orders.end(), + compare_type); + out << "Manager orders are sorted by job type." << std::endl; + } + + return CR_OK; +} + +static bool compare_material(df::manager_order *a, df::manager_order *b) +{ + // Goal: Sort orders to easily find them in the list and to see dupclicated orders. + // Sorting by materials + + // Determine if only one of the orders has mat_type + bool a_has_material = (a->mat_type != -1 || a->mat_index != -1); + bool b_has_material = (b->mat_type != -1 || b->mat_index != -1); + + if (a_has_material != b_has_material) + { + return a_has_material; + } + else if (a_has_material && b_has_material) + { + // Compare mat_type using MaterialInfo + if (MaterialInfo(a).getToken() != MaterialInfo(b).getToken()) + { + return MaterialInfo(a).getToken() < MaterialInfo(b).getToken(); + } + } + + // Determine if only one order has material_category + bool a_has_material_category = (a->material_category.whole != 0); + bool b_has_material_category = (b->material_category.whole != 0); + + if (a_has_material_category != b_has_material_category) + { + return a_has_material_category; + } + else if (a_has_material_category && b_has_material_category) + { + std::vector a_mats, b_mats; + bitfield_to_string(&a_mats, a->material_category); + bitfield_to_string(&b_mats, b->material_category); + + // Checking that mats are not empty just in case + if (!a_mats.empty() && !b_mats.empty() && a_mats[0] != b_mats[0]) + { + return a_mats[0] < b_mats[0]; + } + } + + // By default orders are equal + return false; +} +static command_result orders_sort_material_command(color_ostream & out) +{ + CoreSuspender suspend; + if (!std::is_sorted(world->manager_orders.begin(), + world->manager_orders.end(), + compare_material)) + { + std::stable_sort(world->manager_orders.begin(), + world->manager_orders.end(), + compare_material); + out << "Manager orders are sorted by material." << std::endl; + } + + return CR_OK; +} + +static command_result orders_reset_command(color_ostream & out) +{ + for (auto it : world->manager_orders) + { + it->status.bits.active = false; + it->status.bits.validated = false; + } + return CR_OK; +} \ No newline at end of file From 69be3be35963569f9edf56f0e75b2a6ef8407276 Mon Sep 17 00:00:00 2001 From: Mikhail Date: Sat, 16 Sep 2023 14:18:06 +0300 Subject: [PATCH 002/100] Added sorting by job type and by material for manager orders. Added shortcuts to the manager menu for new functions. --- docs/plugins/orders.rst | 12 ++++++++++++ plugins/lua/orders.lua | 34 +++++++++++++++++----------------- plugins/orders.cpp | 29 ++++++++++++++++++++++++++--- 3 files changed, 55 insertions(+), 20 deletions(-) diff --git a/docs/plugins/orders.rst b/docs/plugins/orders.rst index 46a004081..4affa01b3 100644 --- a/docs/plugins/orders.rst +++ b/docs/plugins/orders.rst @@ -17,10 +17,22 @@ Usage manager orders. It will not clear the orders that already exist. ``orders clear`` Deletes all manager orders in the current embark. +``orders reset`` + Invalidates manager orders forcing material conditions recheck. ``orders sort`` Sorts current manager orders by repeat frequency so repeating orders don't prevent one-time orders from ever being completed. The sorting order is: one-time orders first, then yearly, seasonally, monthly, and finally, daily. +``orders sort_type`` + Sorts current manager orders by job type, making it easier to locate orders + that produce similar items. The sorting is done by reaction name, job type + and item subtype. If orders are equal by these fields the sorting falls back + to sort by frequency. +``orders sort_material`` + Sorts current manager orders by material, making it easier to locate orders + that produce items of the same material. The sorting is done by material type + and material category. If orders are equal by these fields the sorting falls back + to sort by job type. You can keep your orders automatically sorted by adding the following command to your ``dfhack-config/init/onMapLoad.init`` file:: diff --git a/plugins/lua/orders.lua b/plugins/lua/orders.lua index 91fd3bef6..510e88b8c 100644 --- a/plugins/lua/orders.lua +++ b/plugins/lua/orders.lua @@ -79,7 +79,7 @@ OrdersOverlay.ATTRS{ default_pos={x=53,y=-6}, default_enabled=true, viewscreens='dwarfmode/Info/WORK_ORDERS/Default', - frame={w=75, h=4}, + frame={w=73, h=4}, } function OrdersOverlay:init() @@ -107,39 +107,39 @@ function OrdersOverlay:init() }, widgets.HotkeyLabel{ frame={t=0, l=15}, + label='reset', + key='CUSTOM_CTRL_R', + auto_width=true, + on_activate=do_reset, + }, + widgets.HotkeyLabel{ + frame={t=1, l=15}, + label='clear', + key='CUSTOM_CTRL_C', + auto_width=true, + on_activate=do_clear, + }, + widgets.HotkeyLabel{ + frame={t=0, l=30}, label='sort by freq', key='CUSTOM_CTRL_O', auto_width=true, on_activate=do_sort, }, widgets.HotkeyLabel{ - frame={t=1, l=15}, + frame={t=1, l=30}, label='sort by type', key='CUSTOM_CTRL_T', auto_width=true, on_activate=do_sort_type, }, widgets.HotkeyLabel{ - frame={t=0, l=35}, + frame={t=0, l=52}, label='sort by mat', key='CUSTOM_CTRL_T', auto_width=true, on_activate=do_sort_mat, }, - widgets.HotkeyLabel{ - frame={t=1, l=35}, - label='reset', - key='CUSTOM_CTRL_R', - auto_width=true, - on_activate=do_reset, - }, - widgets.HotkeyLabel{ - frame={t=1, l=55}, - label='clear', - key='CUSTOM_CTRL_C', - auto_width=true, - on_activate=do_clear, - }, }, } diff --git a/plugins/orders.cpp b/plugins/orders.cpp index ceaf84196..7fcefa745 100644 --- a/plugins/orders.cpp +++ b/plugins/orders.cpp @@ -1056,7 +1056,29 @@ static bool compare_type(df::manager_order *a, df::manager_order *b) } // Compare job_type - return enum_item_key(a->job_type) < enum_item_key(b->job_type); + if (enum_item_key(a->job_type) != enum_item_key(b->job_type)) + { + return enum_item_key(a->job_type) < enum_item_key(b->job_type); + } + + // Compare item subtype + bool a_has_item_subtype = (a->item_subtype != -1); + bool b_has_item_subtype = (b->item_subtype != -1); + + if (a_has_item_subtype != b_has_item_subtype) + { + return a_has_item_subtype; + } + else if (a_has_item_subtype && b_has_item_subtype) + { + if (a->item_subtype != b->item_subtype) + { + return a->item_subtype < b->item_subtype; + } + } + + // Fall back to freq sort + return compare_freq(a, b); } static command_result orders_sort_type_command(color_ostream & out) @@ -1118,9 +1140,10 @@ static bool compare_material(df::manager_order *a, df::manager_order *b) } } - // By default orders are equal - return false; + // Fall back to material sort + return compare_type(a, b); } + static command_result orders_sort_material_command(color_ostream & out) { CoreSuspender suspend; From ebb190e3569daa534fe8363b03fe7027d695b427 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 16 Sep 2023 11:37:11 +0000 Subject: [PATCH 003/100] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- plugins/orders.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/orders.cpp b/plugins/orders.cpp index 7fcefa745..12eb08640 100644 --- a/plugins/orders.cpp +++ b/plugins/orders.cpp @@ -1060,7 +1060,7 @@ static bool compare_type(df::manager_order *a, df::manager_order *b) { return enum_item_key(a->job_type) < enum_item_key(b->job_type); } - + // Compare item subtype bool a_has_item_subtype = (a->item_subtype != -1); bool b_has_item_subtype = (b->item_subtype != -1); @@ -1168,4 +1168,4 @@ static command_result orders_reset_command(color_ostream & out) it->status.bits.validated = false; } return CR_OK; -} \ No newline at end of file +} From 7d3786586acd087aceb5cd005e8e732fe2d8f792 Mon Sep 17 00:00:00 2001 From: Mikhail Date: Mon, 18 Sep 2023 12:28:34 +0300 Subject: [PATCH 004/100] Reverted sort.lua. Changed orders sort by material keybing from T to M. --- plugins/lua/orders.lua | 2 +- plugins/lua/sort.lua | 74 +++++++++++++++++++++--------------------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/plugins/lua/orders.lua b/plugins/lua/orders.lua index 510e88b8c..a4f3c459f 100644 --- a/plugins/lua/orders.lua +++ b/plugins/lua/orders.lua @@ -136,7 +136,7 @@ function OrdersOverlay:init() widgets.HotkeyLabel{ frame={t=0, l=52}, label='sort by mat', - key='CUSTOM_CTRL_T', + key='CUSTOM_CTRL_M', auto_width=true, on_activate=do_sort_mat, }, diff --git a/plugins/lua/sort.lua b/plugins/lua/sort.lua index 778bc87b9..15d9ebabb 100644 --- a/plugins/lua/sort.lua +++ b/plugins/lua/sort.lua @@ -212,7 +212,7 @@ local function melee_skill_effectiveness(unit) end local function get_melee_skill_effectiveness_rating(unit) - return get_rating(melee_skill_effectiveness(unit), 350000, 2750000, 64, 52, 40, 28) + return get_rating(melee_skill_effectiveness(unit), 350000, 2350000, 78, 64, 49, 35) end local function make_sort_by_melee_skill_effectiveness_desc() @@ -272,7 +272,7 @@ local function ranged_skill_effectiveness(unit) end local function get_ranged_skill_effectiveness_rating(unit) - return get_rating(ranged_skill_effectiveness(unit), 0, 800000, 72, 52, 31, 11) + return get_rating(ranged_skill_effectiveness(unit), 0, 500000, 90, 62, 44, 27) end local function make_sort_by_ranged_skill_effectiveness_desc(list) @@ -345,41 +345,41 @@ end -- Statistical rating that is higher for dwarves that are mentally stable local function get_mental_stability(unit) - local altruism = unit.status.current_soul.personality.traits.ALTRUISM - local anxiety_propensity = unit.status.current_soul.personality.traits.ANXIETY_PROPENSITY - local bravery = unit.status.current_soul.personality.traits.BRAVERY - local cheer_propensity = unit.status.current_soul.personality.traits.CHEER_PROPENSITY - local curious = unit.status.current_soul.personality.traits.CURIOUS - local discord = unit.status.current_soul.personality.traits.DISCORD - local dutifulness = unit.status.current_soul.personality.traits.DUTIFULNESS - local emotionally_obsessive = unit.status.current_soul.personality.traits.EMOTIONALLY_OBSESSIVE - local humor = unit.status.current_soul.personality.traits.HUMOR - local love_propensity = unit.status.current_soul.personality.traits.LOVE_PROPENSITY - local perseverence = unit.status.current_soul.personality.traits.PERSEVERENCE - local politeness = unit.status.current_soul.personality.traits.POLITENESS - local privacy = unit.status.current_soul.personality.traits.PRIVACY - local stress_vulnerability = unit.status.current_soul.personality.traits.STRESS_VULNERABILITY - local tolerant = unit.status.current_soul.personality.traits.TOLERANT - - local craftsmanship = setbelief.getUnitBelief(unit, df.value_type['CRAFTSMANSHIP']) - local family = setbelief.getUnitBelief(unit, df.value_type['FAMILY']) - local harmony = setbelief.getUnitBelief(unit, df.value_type['HARMONY']) - local independence = setbelief.getUnitBelief(unit, df.value_type['INDEPENDENCE']) - local knowledge = setbelief.getUnitBelief(unit, df.value_type['KNOWLEDGE']) - local leisure_time = setbelief.getUnitBelief(unit, df.value_type['LEISURE_TIME']) - local nature = setbelief.getUnitBelief(unit, df.value_type['NATURE']) - local skill = setbelief.getUnitBelief(unit, df.value_type['SKILL']) - - -- calculate the rating using the defined variables - local rating = (craftsmanship * -0.01) + (family * -0.09) + (harmony * 0.05) - + (independence * 0.06) + (knowledge * -0.30) + (leisure_time * 0.24) - + (nature * 0.27) + (skill * -0.21) + (altruism * 0.13) - + (anxiety_propensity * -0.06) + (bravery * 0.06) - + (cheer_propensity * 0.41) + (curious * -0.06) + (discord * 0.14) - + (dutifulness * -0.03) + (emotionally_obsessive * -0.13) - + (humor * -0.05) + (love_propensity * 0.15) + (perseverence * -0.07) - + (politeness * -0.14) + (privacy * 0.03) + (stress_vulnerability * -0.20) - + (tolerant * -0.11) + local ALTRUISM = unit.status.current_soul.personality.traits.ALTRUISM + local ANXIETY_PROPENSITY = unit.status.current_soul.personality.traits.ANXIETY_PROPENSITY + local BRAVERY = unit.status.current_soul.personality.traits.BRAVERY + local CHEER_PROPENSITY = unit.status.current_soul.personality.traits.CHEER_PROPENSITY + local CURIOUS = unit.status.current_soul.personality.traits.CURIOUS + local DISCORD = unit.status.current_soul.personality.traits.DISCORD + local DUTIFULNESS = unit.status.current_soul.personality.traits.DUTIFULNESS + local EMOTIONALLY_OBSESSIVE = unit.status.current_soul.personality.traits.EMOTIONALLY_OBSESSIVE + local HUMOR = unit.status.current_soul.personality.traits.HUMOR + local LOVE_PROPENSITY = unit.status.current_soul.personality.traits.LOVE_PROPENSITY + local PERSEVERENCE = unit.status.current_soul.personality.traits.PERSEVERENCE + local POLITENESS = unit.status.current_soul.personality.traits.POLITENESS + local PRIVACY = unit.status.current_soul.personality.traits.PRIVACY + local STRESS_VULNERABILITY = unit.status.current_soul.personality.traits.STRESS_VULNERABILITY + local TOLERANT = unit.status.current_soul.personality.traits.TOLERANT + + local CRAFTSMANSHIP = setbelief.getUnitBelief(unit, df.value_type['CRAFTSMANSHIP']) + local FAMILY = setbelief.getUnitBelief(unit, df.value_type['FAMILY']) + local HARMONY = setbelief.getUnitBelief(unit, df.value_type['HARMONY']) + local INDEPENDENCE = setbelief.getUnitBelief(unit, df.value_type['INDEPENDENCE']) + local KNOWLEDGE = setbelief.getUnitBelief(unit, df.value_type['KNOWLEDGE']) + local LEISURE_TIME = setbelief.getUnitBelief(unit, df.value_type['LEISURE_TIME']) + local NATURE = setbelief.getUnitBelief(unit, df.value_type['NATURE']) + local SKILL = setbelief.getUnitBelief(unit, df.value_type['SKILL']) + + -- Calculate the rating using the defined variables + local rating = (CRAFTSMANSHIP * -0.01) + (FAMILY * -0.09) + (HARMONY * 0.05) + + (INDEPENDENCE * 0.06) + (KNOWLEDGE * -0.30) + (LEISURE_TIME * 0.24) + + (NATURE * 0.27) + (SKILL * -0.21) + (ALTRUISM * 0.13) + + (ANXIETY_PROPENSITY * -0.06) + (BRAVERY * 0.06) + + (CHEER_PROPENSITY * 0.41) + (CURIOUS * -0.06) + (DISCORD * 0.14) + + (DUTIFULNESS * -0.03) + (EMOTIONALLY_OBSESSIVE * -0.13) + + (HUMOR * -0.05) + (LOVE_PROPENSITY * 0.15) + (PERSEVERENCE * -0.07) + + (POLITENESS * -0.14) + (PRIVACY * 0.03) + (STRESS_VULNERABILITY * -0.20) + + (TOLERANT * -0.11) return rating end From 68d94ad715797d011d7b52b1cea840a340c73a94 Mon Sep 17 00:00:00 2001 From: Mikhail Date: Mon, 18 Sep 2023 12:49:36 +0300 Subject: [PATCH 005/100] Removed redundant uppercase in mental stability formula. Reworked thresholds for combat skill effectiveness formulas to have a higher 100 cap (more descriptive about very strong warriors). --- plugins/lua/sort.lua | 74 ++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/plugins/lua/sort.lua b/plugins/lua/sort.lua index 15d9ebabb..778bc87b9 100644 --- a/plugins/lua/sort.lua +++ b/plugins/lua/sort.lua @@ -212,7 +212,7 @@ local function melee_skill_effectiveness(unit) end local function get_melee_skill_effectiveness_rating(unit) - return get_rating(melee_skill_effectiveness(unit), 350000, 2350000, 78, 64, 49, 35) + return get_rating(melee_skill_effectiveness(unit), 350000, 2750000, 64, 52, 40, 28) end local function make_sort_by_melee_skill_effectiveness_desc() @@ -272,7 +272,7 @@ local function ranged_skill_effectiveness(unit) end local function get_ranged_skill_effectiveness_rating(unit) - return get_rating(ranged_skill_effectiveness(unit), 0, 500000, 90, 62, 44, 27) + return get_rating(ranged_skill_effectiveness(unit), 0, 800000, 72, 52, 31, 11) end local function make_sort_by_ranged_skill_effectiveness_desc(list) @@ -345,41 +345,41 @@ end -- Statistical rating that is higher for dwarves that are mentally stable local function get_mental_stability(unit) - local ALTRUISM = unit.status.current_soul.personality.traits.ALTRUISM - local ANXIETY_PROPENSITY = unit.status.current_soul.personality.traits.ANXIETY_PROPENSITY - local BRAVERY = unit.status.current_soul.personality.traits.BRAVERY - local CHEER_PROPENSITY = unit.status.current_soul.personality.traits.CHEER_PROPENSITY - local CURIOUS = unit.status.current_soul.personality.traits.CURIOUS - local DISCORD = unit.status.current_soul.personality.traits.DISCORD - local DUTIFULNESS = unit.status.current_soul.personality.traits.DUTIFULNESS - local EMOTIONALLY_OBSESSIVE = unit.status.current_soul.personality.traits.EMOTIONALLY_OBSESSIVE - local HUMOR = unit.status.current_soul.personality.traits.HUMOR - local LOVE_PROPENSITY = unit.status.current_soul.personality.traits.LOVE_PROPENSITY - local PERSEVERENCE = unit.status.current_soul.personality.traits.PERSEVERENCE - local POLITENESS = unit.status.current_soul.personality.traits.POLITENESS - local PRIVACY = unit.status.current_soul.personality.traits.PRIVACY - local STRESS_VULNERABILITY = unit.status.current_soul.personality.traits.STRESS_VULNERABILITY - local TOLERANT = unit.status.current_soul.personality.traits.TOLERANT - - local CRAFTSMANSHIP = setbelief.getUnitBelief(unit, df.value_type['CRAFTSMANSHIP']) - local FAMILY = setbelief.getUnitBelief(unit, df.value_type['FAMILY']) - local HARMONY = setbelief.getUnitBelief(unit, df.value_type['HARMONY']) - local INDEPENDENCE = setbelief.getUnitBelief(unit, df.value_type['INDEPENDENCE']) - local KNOWLEDGE = setbelief.getUnitBelief(unit, df.value_type['KNOWLEDGE']) - local LEISURE_TIME = setbelief.getUnitBelief(unit, df.value_type['LEISURE_TIME']) - local NATURE = setbelief.getUnitBelief(unit, df.value_type['NATURE']) - local SKILL = setbelief.getUnitBelief(unit, df.value_type['SKILL']) - - -- Calculate the rating using the defined variables - local rating = (CRAFTSMANSHIP * -0.01) + (FAMILY * -0.09) + (HARMONY * 0.05) - + (INDEPENDENCE * 0.06) + (KNOWLEDGE * -0.30) + (LEISURE_TIME * 0.24) - + (NATURE * 0.27) + (SKILL * -0.21) + (ALTRUISM * 0.13) - + (ANXIETY_PROPENSITY * -0.06) + (BRAVERY * 0.06) - + (CHEER_PROPENSITY * 0.41) + (CURIOUS * -0.06) + (DISCORD * 0.14) - + (DUTIFULNESS * -0.03) + (EMOTIONALLY_OBSESSIVE * -0.13) - + (HUMOR * -0.05) + (LOVE_PROPENSITY * 0.15) + (PERSEVERENCE * -0.07) - + (POLITENESS * -0.14) + (PRIVACY * 0.03) + (STRESS_VULNERABILITY * -0.20) - + (TOLERANT * -0.11) + local altruism = unit.status.current_soul.personality.traits.ALTRUISM + local anxiety_propensity = unit.status.current_soul.personality.traits.ANXIETY_PROPENSITY + local bravery = unit.status.current_soul.personality.traits.BRAVERY + local cheer_propensity = unit.status.current_soul.personality.traits.CHEER_PROPENSITY + local curious = unit.status.current_soul.personality.traits.CURIOUS + local discord = unit.status.current_soul.personality.traits.DISCORD + local dutifulness = unit.status.current_soul.personality.traits.DUTIFULNESS + local emotionally_obsessive = unit.status.current_soul.personality.traits.EMOTIONALLY_OBSESSIVE + local humor = unit.status.current_soul.personality.traits.HUMOR + local love_propensity = unit.status.current_soul.personality.traits.LOVE_PROPENSITY + local perseverence = unit.status.current_soul.personality.traits.PERSEVERENCE + local politeness = unit.status.current_soul.personality.traits.POLITENESS + local privacy = unit.status.current_soul.personality.traits.PRIVACY + local stress_vulnerability = unit.status.current_soul.personality.traits.STRESS_VULNERABILITY + local tolerant = unit.status.current_soul.personality.traits.TOLERANT + + local craftsmanship = setbelief.getUnitBelief(unit, df.value_type['CRAFTSMANSHIP']) + local family = setbelief.getUnitBelief(unit, df.value_type['FAMILY']) + local harmony = setbelief.getUnitBelief(unit, df.value_type['HARMONY']) + local independence = setbelief.getUnitBelief(unit, df.value_type['INDEPENDENCE']) + local knowledge = setbelief.getUnitBelief(unit, df.value_type['KNOWLEDGE']) + local leisure_time = setbelief.getUnitBelief(unit, df.value_type['LEISURE_TIME']) + local nature = setbelief.getUnitBelief(unit, df.value_type['NATURE']) + local skill = setbelief.getUnitBelief(unit, df.value_type['SKILL']) + + -- calculate the rating using the defined variables + local rating = (craftsmanship * -0.01) + (family * -0.09) + (harmony * 0.05) + + (independence * 0.06) + (knowledge * -0.30) + (leisure_time * 0.24) + + (nature * 0.27) + (skill * -0.21) + (altruism * 0.13) + + (anxiety_propensity * -0.06) + (bravery * 0.06) + + (cheer_propensity * 0.41) + (curious * -0.06) + (discord * 0.14) + + (dutifulness * -0.03) + (emotionally_obsessive * -0.13) + + (humor * -0.05) + (love_propensity * 0.15) + (perseverence * -0.07) + + (politeness * -0.14) + (privacy * 0.03) + (stress_vulnerability * -0.20) + + (tolerant * -0.11) return rating end From 8826c27fa0f941ee50a866eae74ed969414f4113 Mon Sep 17 00:00:00 2001 From: Mikhail Date: Mon, 18 Sep 2023 13:41:02 +0300 Subject: [PATCH 006/100] Changed 'reset' to recheck for clarity. --- docs/plugins/orders.rst | 2 +- plugins/lua/orders.lua | 8 ++++---- plugins/orders.cpp | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/plugins/orders.rst b/docs/plugins/orders.rst index 4affa01b3..351456e2e 100644 --- a/docs/plugins/orders.rst +++ b/docs/plugins/orders.rst @@ -17,7 +17,7 @@ Usage manager orders. It will not clear the orders that already exist. ``orders clear`` Deletes all manager orders in the current embark. -``orders reset`` +``orders recheck`` Invalidates manager orders forcing material conditions recheck. ``orders sort`` Sorts current manager orders by repeat frequency so repeating orders don't diff --git a/plugins/lua/orders.lua b/plugins/lua/orders.lua index a4f3c459f..b50c28694 100644 --- a/plugins/lua/orders.lua +++ b/plugins/lua/orders.lua @@ -62,8 +62,8 @@ local function do_export() }:show() end -local function do_reset() - dfhack.run_command('orders', 'reset') +local function do_recheck() + dfhack.run_command('orders', 'recheck') end local function do_sort_type() @@ -107,10 +107,10 @@ function OrdersOverlay:init() }, widgets.HotkeyLabel{ frame={t=0, l=15}, - label='reset', + label='recheck', key='CUSTOM_CTRL_R', auto_width=true, - on_activate=do_reset, + on_activate=do_recheck, }, widgets.HotkeyLabel{ frame={t=1, l=15}, diff --git a/plugins/orders.cpp b/plugins/orders.cpp index 12eb08640..4b93cff2d 100644 --- a/plugins/orders.cpp +++ b/plugins/orders.cpp @@ -66,7 +66,7 @@ static command_result orders_clear_command(color_ostream & out); static command_result orders_sort_command(color_ostream & out); static command_result orders_sort_type_command(color_ostream & out); static command_result orders_sort_material_command(color_ostream & out); -static command_result orders_reset_command(color_ostream & out); +static command_result orders_recheck_command(color_ostream & out); static command_result orders_command(color_ostream & out, std::vector & parameters) { @@ -124,9 +124,9 @@ static command_result orders_command(color_ostream & out, std::vectormanager_orders) { From 6f45e347affe753d5c1015b32ed3cfc8cf0c92aa Mon Sep 17 00:00:00 2001 From: Najeeb Al-Shabibi Date: Fri, 22 Sep 2023 12:14:41 +0100 Subject: [PATCH 007/100] digtype now doesn't designate hidden tiles for digging, instead only designating visible tiles in 'auto' mode (also changed MapCache* to unique_ptr) --- plugins/dig.cpp | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/plugins/dig.cpp b/plugins/dig.cpp index 879d0dd52..307a1f221 100644 --- a/plugins/dig.cpp +++ b/plugins/dig.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include "Core.h" #include "Console.h" @@ -1072,14 +1073,13 @@ command_result digv (color_ostream &out, vector & parameters) con.printerr("I won't dig the borders. That would be cheating!\n"); return CR_FAILURE; } - MapExtras::MapCache * MCache = new MapExtras::MapCache; + std::unique_ptr MCache = std::make_unique(); df::tile_designation des = MCache->designationAt(xy); df::tiletype tt = MCache->tiletypeAt(xy); int16_t veinmat = MCache->veinMaterialAt(xy); if( veinmat == -1 ) { con.printerr("This tile is not a vein.\n"); - delete MCache; return CR_FAILURE; } con.print("%d/%d/%d tiletype: %d, veinmat: %d, designation: 0x%x ... DIGGING!\n", cx,cy,cz, tt, veinmat, des.whole); @@ -1192,7 +1192,6 @@ command_result digv (color_ostream &out, vector & parameters) } } MCache->WriteAll(); - delete MCache; return CR_OK; } @@ -1259,7 +1258,7 @@ command_result digl (color_ostream &out, vector & parameters) con.printerr("I won't dig the borders. That would be cheating!\n"); return CR_FAILURE; } - MapExtras::MapCache * MCache = new MapExtras::MapCache; + std::unique_ptr MCache = std::make_unique(); df::tile_designation des = MCache->designationAt(xy); df::tiletype tt = MCache->tiletypeAt(xy); int16_t veinmat = MCache->veinMaterialAt(xy); @@ -1267,7 +1266,6 @@ command_result digl (color_ostream &out, vector & parameters) if( veinmat != -1 ) { con.printerr("This is a vein. Use digv instead!\n"); - delete MCache; return CR_FAILURE; } con.print("%d/%d/%d tiletype: %d, basemat: %d, designation: 0x%x ... DIGGING!\n", cx,cy,cz, tt, basemat, des.whole); @@ -1408,7 +1406,6 @@ command_result digl (color_ostream &out, vector & parameters) } } MCache->WriteAll(); - delete MCache; return CR_OK; } @@ -1462,14 +1459,21 @@ command_result digtype (color_ostream &out, vector & parameters) return CR_FAILURE; } DFHack::DFCoord xy ((uint32_t)cx,(uint32_t)cy,cz); - MapExtras::MapCache * mCache = new MapExtras::MapCache; + std::unique_ptr mCache = std::make_unique(); df::tile_designation baseDes = mCache->designationAt(xy); + + if (baseDes.bits.hidden) { + out.printerr("Cursor is pointing at a hidden tile. Point the cursor at a visible tile"); + return CR_FAILURE; + } + + df::tile_occupancy baseOcc = mCache->occupancyAt(xy); + df::tiletype tt = mCache->tiletypeAt(xy); int16_t veinmat = mCache->veinMaterialAt(xy); if( veinmat == -1 ) { out.printerr("This tile is not a vein.\n"); - delete mCache; return CR_FAILURE; } out.print("(%d,%d,%d) tiletype: %d, veinmat: %d, designation: 0x%x ... DIGGING!\n", cx,cy,cz, tt, veinmat, baseDes.whole); @@ -1486,6 +1490,8 @@ command_result digtype (color_ostream &out, vector & parameters) } } + baseOcc.bits.dig_auto = true; + for( uint32_t z = 0; z < zMax; z++ ) { for( uint32_t x = 1; x < tileXMax-1; x++ ) @@ -1506,18 +1512,22 @@ command_result digtype (color_ostream &out, vector & parameters) if ( !mCache->testCoord(current) ) { out.printerr("testCoord failed at (%d,%d,%d)\n", x, y, z); - delete mCache; return CR_FAILURE; } df::tile_designation designation = mCache->designationAt(current); + + if (designation.bits.hidden) continue; + + df::tile_occupancy occupancy = mCache->occupancyAt(current); designation.bits.dig = baseDes.bits.dig; - mCache->setDesignationAt(current, designation,priority); + occupancy.bits.dig_auto = baseOcc.bits.dig_auto; + mCache->setDesignationAt(current, designation, priority); + mCache->setOccupancyAt(current, occupancy); } } } mCache->WriteAll(); - delete mCache; return CR_OK; } From b7fcf035bcd22932a0e16f4efcea323bbd52f9ad Mon Sep 17 00:00:00 2001 From: Najeeb Al-Shabibi Date: Fri, 22 Sep 2023 12:18:38 +0100 Subject: [PATCH 008/100] Stopped setting auto-dig on non-default dig designations as auto-dig doesn't work for anything except for the standard 'mine' designation --- plugins/dig.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/dig.cpp b/plugins/dig.cpp index 307a1f221..7b0edf7dd 100644 --- a/plugins/dig.cpp +++ b/plugins/dig.cpp @@ -1489,8 +1489,10 @@ command_result digtype (color_ostream &out, vector & parameters) baseDes.bits.dig = tile_dig_designation::Default; } } - - baseOcc.bits.dig_auto = true; + // Auto dig only works on default dig designation. Setting dig_auto for any other designation + // prevents dwarves from digging that tile at all. + if (baseDes.bits.dig == tile_dig_designation::Default) baseOcc.bits.dig_auto = true; + else baseOcc.bits.dig_auto = false; for( uint32_t z = 0; z < zMax; z++ ) { From 2083bab2e956b1fe0b21342658619e9b0dc4b433 Mon Sep 17 00:00:00 2001 From: Najeeb Al-Shabibi Date: Fri, 22 Sep 2023 12:41:41 +0100 Subject: [PATCH 009/100] added a +z option to digtype --- docs/plugins/dig.rst | 7 ++++--- plugins/dig.cpp | 6 +++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/plugins/dig.rst b/docs/plugins/dig.rst index 77b3137ae..d6b6451a6 100644 --- a/docs/plugins/dig.rst +++ b/docs/plugins/dig.rst @@ -143,9 +143,10 @@ Designation options: ``clear`` Clear any designations. -You can also pass a ``-z`` option, which restricts designations to the current -z-level and down. This is useful when you don't want to designate tiles on the -same z-levels as your carefully dug fort above. +You can also pass a ``-z`` and/or a ``+z``` option, which restricts designations to the +current z-level and down/up. This is useful when you don't want to designate tiles on the +same z-levels as your carefully dug fort above/below. To dig only at the current z-level, +pass in both. digexp ------ diff --git a/plugins/dig.cpp b/plugins/dig.cpp index 7b0edf7dd..7a92a0851 100644 --- a/plugins/dig.cpp +++ b/plugins/dig.cpp @@ -1424,6 +1424,8 @@ command_result digtype (color_ostream &out, vector & parameters) uint32_t xMax,yMax,zMax; Maps::getSize(xMax,yMax,zMax); + uint32_t zMin = 0; + int32_t targetDigType = -1; for (string parameter : parameters) { if ( parameter == "clear" ) @@ -1442,6 +1444,8 @@ command_result digtype (color_ostream &out, vector & parameters) targetDigType = tile_dig_designation::UpStair; else if ( parameter == "-z" ) zMax = *window_z + 1; + else if ( parameter == "+z") + zMin = *window_z; else { out.printerr("Invalid parameter: '%s'.\n", parameter.c_str()); @@ -1494,7 +1498,7 @@ command_result digtype (color_ostream &out, vector & parameters) if (baseDes.bits.dig == tile_dig_designation::Default) baseOcc.bits.dig_auto = true; else baseOcc.bits.dig_auto = false; - for( uint32_t z = 0; z < zMax; z++ ) + for( uint32_t z = zMin; z < zMax; z++ ) { for( uint32_t x = 1; x < tileXMax-1; x++ ) { From 6fe0fb5bf92ec68abb5cc54867cb17324f273f70 Mon Sep 17 00:00:00 2001 From: Najeeb Al-Shabibi Date: Fri, 22 Sep 2023 12:45:33 +0100 Subject: [PATCH 010/100] removed trailing whitespace --- plugins/dig.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/dig.cpp b/plugins/dig.cpp index 7a92a0851..1379bc3db 100644 --- a/plugins/dig.cpp +++ b/plugins/dig.cpp @@ -1496,7 +1496,7 @@ command_result digtype (color_ostream &out, vector & parameters) // Auto dig only works on default dig designation. Setting dig_auto for any other designation // prevents dwarves from digging that tile at all. if (baseDes.bits.dig == tile_dig_designation::Default) baseOcc.bits.dig_auto = true; - else baseOcc.bits.dig_auto = false; + else baseOcc.bits.dig_auto = false; for( uint32_t z = zMin; z < zMax; z++ ) { From 3fc289cefadcde4ebca15d08991d3ff1cef27a1c Mon Sep 17 00:00:00 2001 From: Mikhail Panov Date: Fri, 22 Sep 2023 16:26:23 +0300 Subject: [PATCH 011/100] Added single order recheck option to orders recheck. Sorting by material and job type consider frequency as a higher priority. --- plugins/orders.cpp | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/plugins/orders.cpp b/plugins/orders.cpp index 4b93cff2d..0bb89a0bc 100644 --- a/plugins/orders.cpp +++ b/plugins/orders.cpp @@ -67,6 +67,7 @@ static command_result orders_sort_command(color_ostream & out); static command_result orders_sort_type_command(color_ostream & out); static command_result orders_sort_material_command(color_ostream & out); static command_result orders_recheck_command(color_ostream & out); +static command_result orders_recheck_current_command(color_ostream & out); static command_result orders_command(color_ostream & out, std::vector & parameters) { @@ -129,6 +130,14 @@ static command_result orders_command(color_ostream & out, std::vectorfrequency != b->frequency) + { + return compare_freq(a, b); + } + // Determine if only one order has reaction_name bool a_has_reaction_name = !a->reaction_name.empty(); bool b_has_reaction_name = !b->reaction_name.empty(); @@ -1077,8 +1092,8 @@ static bool compare_type(df::manager_order *a, df::manager_order *b) } } - // Fall back to freq sort - return compare_freq(a, b); + // By default orders are the same + return false; } static command_result orders_sort_type_command(color_ostream & out) @@ -1102,6 +1117,12 @@ static bool compare_material(df::manager_order *a, df::manager_order *b) // Goal: Sort orders to easily find them in the list and to see dupclicated orders. // Sorting by materials + // Divide orders by frequency first + if (a->frequency != b->frequency) + { + return compare_freq(a, b); + } + // Determine if only one of the orders has mat_type bool a_has_material = (a->mat_type != -1 || a->mat_index != -1); bool b_has_material = (b->mat_type != -1 || b->mat_index != -1); @@ -1169,3 +1190,17 @@ static command_result orders_recheck_command(color_ostream & out) } return CR_OK; } + +static command_result orders_recheck_current_command(color_ostream & out) +{ + if (game->main_interface.info.work_orders.conditions.open) + { + game->main_interface.info.work_orders.conditions.wq.status.active = false; + } + else + { + out << COLOR_LIGHTRED << "Order conditions is not open" << std::endl; + return CR_FAILURE; + } + return CR_OK; +} From a500233e0baf78ab28b89150baf92babcaef6509 Mon Sep 17 00:00:00 2001 From: Mikhail Panov Date: Fri, 22 Sep 2023 18:29:45 +0300 Subject: [PATCH 012/100] Moved onde order recheck to orders plugin. --- plugins/lua/orders.lua | 84 ++++++++++++++++++++++++++++++++++++++++++ plugins/orders.cpp | 3 ++ 2 files changed, 87 insertions(+) diff --git a/plugins/lua/orders.lua b/plugins/lua/orders.lua index b50c28694..1dd7e8160 100644 --- a/plugins/lua/orders.lua +++ b/plugins/lua/orders.lua @@ -190,7 +190,91 @@ function OrdersOverlay:render(dc) OrdersOverlay.super.render(self, dc) end +-- Resets the selected work order to the `Checking` state + +local function set_current_inactive() + local scrConditions = df.global.game.main_interface.info.work_orders.conditions + if scrConditions.open then + dfhack.run_command('orders', 'recheck', 'this') + else + qerror("Order conditions is not open") + end +end + +local function is_current_active() + local scrConditions = df.global.game.main_interface.info.work_orders.conditions + local order = scrConditions.wq + return order.status.active +end + +-- ------------------- +-- RecheckOverlay +-- + +local focusString = 'dwarfmode/Info/WORK_ORDERS/Conditions' + +RecheckOverlay = defclass(RecheckOverlay, overlay.OverlayWidget) +RecheckOverlay.ATTRS{ + default_pos={x=6,y=8}, + default_enabled=true, + viewscreens=focusString, + -- width is the sum of lengths of `[` + `Ctrl+A` + `: ` + button.label + `]` + frame={w=1 + 6 + 2 + 16 + 1, h=3}, +} + +local function areTabsInTwoRows() + -- get the tile above the order status icon + local pen = dfhack.screen.readTile(7, 7, false) + -- in graphics mode, `0` when one row, something else when two (`67` aka 'C' from "Creatures") + -- in ASCII mode, `32` aka ' ' when one row, something else when two (`196` aka '-' from tab frame's top) + return (pen.ch ~= 0 and pen.ch ~= 32) +end + +function RecheckOverlay:updateTextButtonFrame() + local twoRows = areTabsInTwoRows() + if (self._twoRows == twoRows) then return false end + + self._twoRows = twoRows + local frame = twoRows + and {b=0, l=0, r=0, h=1} + or {t=0, l=0, r=0, h=1} + self.subviews.button.frame = frame + + return true +end + +function RecheckOverlay:init() + self:addviews{ + widgets.TextButton{ + view_id = 'button', + -- frame={t=0, l=0, r=0, h=1}, -- is set in `updateTextButtonFrame()` + label='request re-check', + key='CUSTOM_CTRL_A', + on_activate=set_current_inactive, + enabled=is_current_active, + }, + } + + self:updateTextButtonFrame() +end + +function RecheckOverlay:onRenderBody(dc) + if (self.frame_rect.y1 == 7) then + -- only apply this logic if the overlay is on the same row as + -- originally thought: just above the order status icon + + if self:updateTextButtonFrame() then + self:updateLayout() + end + end + + RecheckOverlay.super.onRenderBody(self, dc) +end + +-- ------------------- + OVERLAY_WIDGETS = { + recheck=RecheckOverlay, overlay=OrdersOverlay, } diff --git a/plugins/orders.cpp b/plugins/orders.cpp index 0bb89a0bc..bfbe03480 100644 --- a/plugins/orders.cpp +++ b/plugins/orders.cpp @@ -10,6 +10,7 @@ #include "json/json.h" #include "df/building.h" +#include "df/gamest.h" #include "df/historical_figure.h" #include "df/itemdef_ammost.h" #include "df/itemdef_armorst.h" @@ -36,6 +37,8 @@ using namespace DFHack; using namespace df::enums; +using df::global::game; + DFHACK_PLUGIN("orders"); REQUIRE_GLOBAL(world); From a236722a752ebd665ae75ee26ff89fd1ef1a504e Mon Sep 17 00:00:00 2001 From: Mikhail Panov Date: Fri, 22 Sep 2023 18:37:14 +0300 Subject: [PATCH 013/100] Changed hotkeys + orders.cpp compilation error fix. --- plugins/lua/orders.lua | 4 ++-- plugins/orders.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/lua/orders.lua b/plugins/lua/orders.lua index 1dd7e8160..c84dfa5f7 100644 --- a/plugins/lua/orders.lua +++ b/plugins/lua/orders.lua @@ -129,14 +129,14 @@ function OrdersOverlay:init() widgets.HotkeyLabel{ frame={t=1, l=30}, label='sort by type', - key='CUSTOM_CTRL_T', + key='CUSTOM_CTRL_J', auto_width=true, on_activate=do_sort_type, }, widgets.HotkeyLabel{ frame={t=0, l=52}, label='sort by mat', - key='CUSTOM_CTRL_M', + key='CUSTOM_CTRL_T', auto_width=true, on_activate=do_sort_mat, }, diff --git a/plugins/orders.cpp b/plugins/orders.cpp index bfbe03480..77e8d5fa8 100644 --- a/plugins/orders.cpp +++ b/plugins/orders.cpp @@ -1198,7 +1198,7 @@ static command_result orders_recheck_current_command(color_ostream & out) { if (game->main_interface.info.work_orders.conditions.open) { - game->main_interface.info.work_orders.conditions.wq.status.active = false; + game->main_interface.info.work_orders.conditions.wq->status.bits.active = false; } else { From 8a424de7ffb90f868c3f67112637137fdeeab3d7 Mon Sep 17 00:00:00 2001 From: Mikhail Panov Date: Fri, 22 Sep 2023 19:04:49 +0300 Subject: [PATCH 014/100] Updated orders.rst --- docs/plugins/orders.rst | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/plugins/orders.rst b/docs/plugins/orders.rst index 351456e2e..9bf220a06 100644 --- a/docs/plugins/orders.rst +++ b/docs/plugins/orders.rst @@ -17,8 +17,13 @@ Usage manager orders. It will not clear the orders that already exist. ``orders clear`` Deletes all manager orders in the current embark. -``orders recheck`` - Invalidates manager orders forcing material conditions recheck. +``orders recheck [this]`` + Sets the status to ``Checking`` (from ``Active``) of all work orders or one + currently viewed if 'this' option is passed. Work order conditions screen + should be open in this case. This makes the manager reevaluate its conditions. + This is especially useful for an order that had its conditions met when it + was started, but the requisite items have since disappeared and the workorder + is now generating job cancellation spam. ``orders sort`` Sorts current manager orders by repeat frequency so repeating orders don't prevent one-time orders from ever being completed. The sorting order is: From 303ce1fdc3005ccbef47fa415713243241e3b6bf Mon Sep 17 00:00:00 2001 From: donhth <> Date: Sat, 23 Sep 2023 15:54:46 -0400 Subject: [PATCH 015/100] re-enable tubefill. --- plugins/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index b96606284..bb2794011 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -167,7 +167,7 @@ if(BUILD_SUPPORTED) dfhack_plugin(tiletypes tiletypes.cpp Brushes.h LINK_LIBRARIES lua) #dfhack_plugin(title-folder title-folder.cpp) #dfhack_plugin(trackstop trackstop.cpp) - #dfhack_plugin(tubefill tubefill.cpp) + dfhack_plugin(tubefill tubefill.cpp) #add_subdirectory(tweak) dfhack_plugin(workflow workflow.cpp LINK_LIBRARIES lua) dfhack_plugin(work-now work-now.cpp) From 6f26650255c2f8ecc887e20a79f46d3a966e6401 Mon Sep 17 00:00:00 2001 From: shevernitskiy Date: Fri, 1 Sep 2023 18:12:59 +0300 Subject: [PATCH 016/100] reserved texpos range --- docs/dev/Lua API.rst | 12 ++- library/LuaApi.cpp | 9 +- library/include/modules/Textures.h | 10 +- library/lua/gui/textures.lua | 22 ++-- library/modules/Textures.cpp | 118 +++++++++++++++++--- plugins/lua/hotkeys.lua | 168 +++++++++++++++-------------- plugins/pathable.cpp | 2 +- 7 files changed, 222 insertions(+), 119 deletions(-) diff --git a/docs/dev/Lua API.rst b/docs/dev/Lua API.rst index 4f182d132..9199130fe 100644 --- a/docs/dev/Lua API.rst +++ b/docs/dev/Lua API.rst @@ -2595,10 +2595,12 @@ The ``textures`` module solves this problem by providing a stable handle instead raw ``texpos``. When we need to draw a particular tile, we can look up the current ``texpos`` value via the handle. -* ``loadTileset(file, tile_px_w, tile_px_h)`` +* ``loadTileset(file, tile_px_w, tile_px_h, reserved?)`` Loads a tileset from the image ``file`` with give tile dimensions in pixels. The image will be sliced in row major order. Returns an array of ``TexposHandle``. + ``reserved`` is optional boolean argument, which indicates texpos range. + ``true`` - reserved, ``false`` - dynamic (default). Example usage:: @@ -2611,18 +2613,22 @@ raw ``texpos``. When we need to draw a particular tile, we can look up the curre get the ``texpos`` for your texture. ``texpos`` can change when game textures are reset, but the handle will be the same. -* ``createTile(pixels, tile_px_w, tile_px_h)`` +* ``createTile(pixels, tile_px_w, tile_px_h, reserved?)`` Create and register a new texture with the given tile dimensions and an array of ``pixels`` in row major order. Each pixel is an integer representing color in packed RBGA format (for example, #0022FF11). Returns a ``TexposHandle``. + ``reserved`` is optional boolean argument, which indicates texpos range. + ``true`` - reserved, ``false`` - dynamic (default). -* ``createTileset(pixels, texture_px_w, texture_px_h, tile_px_w, tile_px_h)`` +* ``createTileset(pixels, texture_px_w, texture_px_h, tile_px_w, tile_px_h, reserved?)`` Create and register a new texture with the given texture dimensions and an array of ``pixels`` in row major order. Then slice it into tiles with the given tile dimensions. Each pixel is an integer representing color in packed RBGA format (for example #0022FF11). Returns an array of ``TexposHandle``. + ``reserved`` is optional boolean argument, which indicates texpos range. + ``true`` - reserved, ``false`` - dynamic (default). * ``deleteHandle(handle)`` diff --git a/library/LuaApi.cpp b/library/LuaApi.cpp index f792cff90..5faec6d88 100644 --- a/library/LuaApi.cpp +++ b/library/LuaApi.cpp @@ -1760,7 +1760,8 @@ static int textures_loadTileset(lua_State *state) std::string file = luaL_checkstring(state, 1); auto tile_w = luaL_checkint(state, 2); auto tile_h = luaL_checkint(state, 3); - auto handles = Textures::loadTileset(file, tile_w, tile_h); + bool reserved = lua_isboolean(state, 4) ? lua_toboolean(state, 4) : false; + auto handles = Textures::loadTileset(file, tile_w, tile_h, reserved); Lua::PushVector(state, handles); return 1; } @@ -1798,7 +1799,8 @@ static int textures_createTile(lua_State *state) Lua::GetVector(state, pixels); auto tile_w = luaL_checkint(state, 2); auto tile_h = luaL_checkint(state, 3); - auto handle = Textures::createTile(pixels, tile_w, tile_h); + bool reserved = lua_isboolean(state, 4) ? lua_toboolean(state, 4) : false; + auto handle = Textures::createTile(pixels, tile_w, tile_h, reserved); Lua::Push(state, handle); return 1; } @@ -1811,7 +1813,8 @@ static int textures_createTileset(lua_State *state) auto texture_h = luaL_checkint(state, 3); auto tile_w = luaL_checkint(state, 4); auto tile_h = luaL_checkint(state, 5); - auto handles = Textures::createTileset(pixels, texture_w, texture_h, tile_w, tile_h); + bool reserved = lua_isboolean(state, 6) ? lua_toboolean(state, 6) : false; + auto handles = Textures::createTileset(pixels, texture_w, texture_h, tile_w, tile_h, reserved); Lua::PushVector(state, handles); return 1; } diff --git a/library/include/modules/Textures.h b/library/include/modules/Textures.h index 5b238a4fd..b820c3332 100644 --- a/library/include/modules/Textures.h +++ b/library/include/modules/Textures.h @@ -26,7 +26,7 @@ const uint32_t TILE_HEIGHT_PX = 12; * Load texture and get handle. * Keep it to obtain valid texpos. */ -DFHACK_EXPORT TexposHandle loadTexture(SDL_Surface* surface); +DFHACK_EXPORT TexposHandle loadTexture(SDL_Surface* surface, bool reserved = false); /** * Load tileset from image file. @@ -34,7 +34,8 @@ DFHACK_EXPORT TexposHandle loadTexture(SDL_Surface* surface); */ DFHACK_EXPORT std::vector loadTileset(const std::string& file, int tile_px_w = TILE_WIDTH_PX, - int tile_px_h = TILE_HEIGHT_PX); + int tile_px_h = TILE_HEIGHT_PX, + bool reserved = false); /** * Get texpos by handle. @@ -53,7 +54,7 @@ DFHACK_EXPORT void deleteHandle(TexposHandle handle); * Register this texture and return TexposHandle. */ DFHACK_EXPORT TexposHandle createTile(std::vector& pixels, int tile_px_w = TILE_WIDTH_PX, - int tile_px_h = TILE_HEIGHT_PX); + int tile_px_h = TILE_HEIGHT_PX, bool reserved = false); /** * Create new textures as tileset with RGBA32 format and pixels as data in row major order. @@ -62,7 +63,8 @@ DFHACK_EXPORT TexposHandle createTile(std::vector& pixels, int tile_px DFHACK_EXPORT std::vector createTileset(std::vector& pixels, int texture_px_w, int texture_px_h, int tile_px_w = TILE_WIDTH_PX, - int tile_px_h = TILE_HEIGHT_PX); + int tile_px_h = TILE_HEIGHT_PX, + bool reserved = false); /** * Call this on DFHack init just once to setup interposed handlers and diff --git a/library/lua/gui/textures.lua b/library/lua/gui/textures.lua index 6557b6e02..6dac234e0 100644 --- a/library/lua/gui/textures.lua +++ b/library/lua/gui/textures.lua @@ -6,18 +6,18 @@ local _ENV = mkmodule('gui.textures') -- Preloaded DFHack Assets. -- Use this handles if you need to get dfhack standard textures. ----@type table +---@type table local texpos_handles = { - green_pin = dfhack.textures.loadTileset('hack/data/art/green-pin.png', 8, 12), - red_pin = dfhack.textures.loadTileset('hack/data/art/red-pin.png', 8, 12), - icons = dfhack.textures.loadTileset('hack/data/art/icons.png', 8, 12), - on_off = dfhack.textures.loadTileset('hack/data/art/on-off.png', 8, 12), - control_panel = dfhack.textures.loadTileset('hack/data/art/control-panel.png', 8, 12), - border_thin = dfhack.textures.loadTileset('hack/data/art/border-thin.png', 8, 12), - border_medium = dfhack.textures.loadTileset('hack/data/art/border-medium.png', 8, 12), - border_bold = dfhack.textures.loadTileset('hack/data/art/border-bold.png', 8, 12), - border_panel = dfhack.textures.loadTileset('hack/data/art/border-panel.png', 8, 12), - border_window = dfhack.textures.loadTileset('hack/data/art/border-window.png', 8, 12), + green_pin = dfhack.textures.loadTileset('hack/data/art/green-pin.png', 8, 12, true), + red_pin = dfhack.textures.loadTileset('hack/data/art/red-pin.png', 8, 12, true), + icons = dfhack.textures.loadTileset('hack/data/art/icons.png', 8, 12, true), + on_off = dfhack.textures.loadTileset('hack/data/art/on-off.png', 8, 12, true), + control_panel = dfhack.textures.loadTileset('hack/data/art/control-panel.png', 8, 12, true), + border_thin = dfhack.textures.loadTileset('hack/data/art/border-thin.png', 8, 12, true), + border_medium = dfhack.textures.loadTileset('hack/data/art/border-medium.png', 8, 12, true), + border_bold = dfhack.textures.loadTileset('hack/data/art/border-bold.png', 8, 12, true), + border_panel = dfhack.textures.loadTileset('hack/data/art/border-panel.png', 8, 12, true), + border_window = dfhack.textures.loadTileset('hack/data/art/border-window.png', 8, 12, true), } -- Get valid texpos for preloaded texture in tileset diff --git a/library/modules/Textures.cpp b/library/modules/Textures.cpp index c957bd878..e52445f18 100644 --- a/library/modules/Textures.cpp +++ b/library/modules/Textures.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -29,8 +30,30 @@ DBG_DECLARE(core, textures, DebugCategory::LINFO); } static std::unordered_map g_handle_to_texpos; +static std::unordered_map g_handle_to_reserved_texpos; static std::unordered_map g_handle_to_surface; +static std::unordered_map> g_tileset_to_handles; static std::mutex g_adding_mutex; +static std::atomic loading_state = false; + +struct Reserved { + static void init(int32_t start) { + reserved_range.start = start; + reserved_range.end = start + Reserved::size; + reserved_range.current = start; + } + static long get_new_texpos() { + if (reserved_range.current == reserved_range.end) + return -1; + current = reserved_range.current; + reserved_range.current++; + return current; + } + static const int32_t size = 10000; // size of reserved texpos buffer + inline static int32_t start = -1; + inline static int32_t end = -1; + inline static long current = -1; +} reserved_range; // Converts an arbitrary Surface to something like the display format // (32-bit RGBA), and converts magenta to transparency if convert_magenta is set @@ -71,6 +94,12 @@ static long add_texture(SDL_Surface* surface) { return texpos; } +// register surface in texture raws to specific texpos, returns a texpos +static void insert_texture(SDL_Surface* surface, long texpos) { + std::lock_guard lg_add_texture(g_adding_mutex); + enabler->textures.raws[texpos] = surface; +} + // delete surface from texture raws static void delete_texture(long texpos) { std::lock_guard lg_add_texture(g_adding_mutex); @@ -94,7 +123,8 @@ SDL_Surface* create_texture(std::vector& pixels, int texture_px_w, int // convert single surface into tiles according w/h // register tiles in texture raws and return handles -std::vector slice_tileset(SDL_Surface* surface, int tile_px_w, int tile_px_h) { +std::vector slice_tileset(SDL_Surface* surface, int tile_px_w, int tile_px_h, + bool reserved) { std::vector handles{}; if (!surface) return handles; @@ -109,7 +139,7 @@ std::vector slice_tileset(SDL_Surface* surface, int tile_px_w, int surface->format->Bmask, surface->format->Amask); SDL_Rect vp{tile_px_w * x, tile_px_h * y, tile_px_w, tile_px_h}; DFSDL_UpperBlit(surface, &vp, tile, NULL); - auto handle = Textures::loadTexture(tile); + auto handle = Textures::loadTexture(tile, reserved); handles.push_back(handle); } } @@ -118,22 +148,38 @@ std::vector slice_tileset(SDL_Surface* surface, int tile_px_w, int return handles; } -TexposHandle Textures::loadTexture(SDL_Surface* surface) { +TexposHandle Textures::loadTexture(SDL_Surface* surface, bool reserved) { if (!surface || !enabler) return 0; // should be some error, i guess + if (loading_state) { + ERR(textures).printerr("unable to load texture during game loading\n"); + return 0; + } auto handle = reinterpret_cast(surface); g_handle_to_surface.emplace(handle, surface); surface->refcount++; // prevent destruct on next FreeSurface by game - auto texpos = add_texture(surface); - g_handle_to_texpos.emplace(handle, texpos); + if (reserved) { + auto texpos = reserved_range.get_new_texpos(); + if (texpos == -1) { + ERR(textures).printerr("reserved range limit has been reached, use dynamic range\n"); + return 0; + } + insert_texture(surface, texpos); + g_handle_to_reserved_texpos.emplace(handle, texpos); + } else { + auto texpos = add_texture(surface); + g_handle_to_texpos.emplace(handle, texpos); + } return handle; } std::vector Textures::loadTileset(const std::string& file, int tile_px_w, - int tile_px_h) { + int tile_px_h, bool reserved) { if (!enabler) return std::vector{}; + if (g_tileset_to_handles.contains(file)) + return g_tileset_to_handles[file]; SDL_Surface* surface = DFIMG_Load(file.c_str()); if (!surface) { @@ -142,10 +188,12 @@ std::vector Textures::loadTileset(const std::string& file, int til } surface = canonicalize_format(surface); - auto handles = slice_tileset(surface, tile_px_w, tile_px_h); + auto handles = slice_tileset(surface, tile_px_w, tile_px_h, reserved); - DEBUG(textures).print("loaded %zd textures from '%s'\n", handles.size(), file.c_str()); + DEBUG(textures).print("loaded %zd textures from '%s' to %s range\n", handles.size(), + file.c_str(), reserved ? "reserved" : "dynamic"); + g_tileset_to_handles[file] = handles; return handles; } @@ -153,10 +201,15 @@ long Textures::getTexposByHandle(TexposHandle handle) { if (!handle || !enabler) return -1; + if (g_handle_to_reserved_texpos.contains(handle)) + return g_handle_to_reserved_texpos[handle]; if (g_handle_to_texpos.contains(handle)) return g_handle_to_texpos[handle]; - if (g_handle_to_surface.contains(handle)) { + if (loading_state) { + ERR(textures).printerr("unable reinit texture from dynamic range during loading\n"); + return -1; + } g_handle_to_surface[handle]->refcount++; // prevent destruct on next FreeSurface by game auto texpos = add_texture(g_handle_to_surface[handle]); g_handle_to_texpos.emplace(handle, texpos); @@ -166,22 +219,24 @@ long Textures::getTexposByHandle(TexposHandle handle) { return -1; } -TexposHandle Textures::createTile(std::vector& pixels, int tile_px_w, int tile_px_h) { +TexposHandle Textures::createTile(std::vector& pixels, int tile_px_w, int tile_px_h, + bool reserved) { if (!enabler) return 0; auto texture = create_texture(pixels, tile_px_w, tile_px_h); - auto handle = Textures::loadTexture(texture); + auto handle = Textures::loadTexture(texture, reserved); return handle; } std::vector Textures::createTileset(std::vector& pixels, int texture_px_w, - int texture_px_h, int tile_px_w, int tile_px_h) { + int texture_px_h, int tile_px_w, int tile_px_h, + bool reserved) { if (!enabler) return std::vector{}; auto texture = create_texture(pixels, texture_px_w, texture_px_h); - auto handles = slice_tileset(texture, tile_px_w, tile_px_h); + auto handles = slice_tileset(texture, tile_px_w, tile_px_h, reserved); return handles; } @@ -192,6 +247,8 @@ void Textures::deleteHandle(TexposHandle handle) { auto texpos = Textures::getTexposByHandle(handle); if (texpos > 0) delete_texture(texpos); + if (g_handle_to_reserved_texpos.contains(handle)) + g_handle_to_reserved_texpos.erase(handle); if (g_handle_to_texpos.contains(handle)) g_handle_to_texpos.erase(handle); if (g_handle_to_surface.contains(handle)) { @@ -207,7 +264,18 @@ static void reset_texpos() { g_handle_to_texpos.clear(); } +static void reset_reserved_texpos() { + DEBUG(textures).print("resetting reserved texture mappings\n"); + g_handle_to_reserved_texpos.clear(); +} + +static void reset_tilesets() { + DEBUG(textures).print("resetting tileset to handle mappings\n"); + g_tileset_to_handles.clear(); +} + static void reset_surface() { + DEBUG(textures).print("deleting cached surfaces\n"); for (auto& entry : g_handle_to_surface) { DFSDL_FreeSurface(entry.second); } @@ -220,7 +288,9 @@ struct tracking_stage_new_region : df::viewscreen_new_regionst { DEFINE_VMETHOD_INTERPOSE(void, logic, ()) { if (this->m_raw_load_stage != this->raw_load_stage) { - TRACE(textures).print("raw_load_stage %d -> %d\n", this->m_raw_load_stage, this->raw_load_stage); + TRACE(textures).print("raw_load_stage %d -> %d\n", this->m_raw_load_stage, + this->raw_load_stage); + loading_state = this->raw_load_stage >= 0 && this->raw_load_stage < 3 ? true : false; this->m_raw_load_stage = this->raw_load_stage; if (this->m_raw_load_stage == 1) reset_texpos(); @@ -240,6 +310,7 @@ struct tracking_stage_adopt_region : df::viewscreen_adopt_regionst { DEFINE_VMETHOD_INTERPOSE(void, logic, ()) { if (this->m_cur_step != this->cur_step) { TRACE(textures).print("step %d -> %d\n", this->m_cur_step, this->cur_step); + loading_state = this->cur_step >= 0 && this->cur_step < 3 ? true : false; this->m_cur_step = this->cur_step; if (this->m_cur_step == 1) reset_texpos(); @@ -259,6 +330,7 @@ struct tracking_stage_load_region : df::viewscreen_loadgamest { DEFINE_VMETHOD_INTERPOSE(void, logic, ()) { if (this->m_cur_step != this->cur_step) { TRACE(textures).print("step %d -> %d\n", this->m_cur_step, this->cur_step); + loading_state = this->cur_step >= 0 && this->cur_step < 3 ? true : false; this->m_cur_step = this->cur_step; if (this->m_cur_step == 1) reset_texpos(); @@ -278,6 +350,7 @@ struct tracking_stage_new_arena : df::viewscreen_new_arenast { DEFINE_VMETHOD_INTERPOSE(void, logic, ()) { if (this->m_cur_step != this->cur_step) { TRACE(textures).print("step %d -> %d\n", this->m_cur_step, this->cur_step); + loading_state = this->cur_step >= 0 && this->cur_step < 3 ? true : false; this->m_cur_step = this->cur_step; if (this->m_cur_step == 0) reset_texpos(); @@ -304,12 +377,25 @@ static void uninstall_reset_point() { INTERPOSE_HOOK(tracking_stage_new_arena, logic).remove(); } +static void reserve_static_range() { + reserved_range.init(enabler->textures.init_texture_size); + auto dummy_surface = + DFSDL_CreateRGBSurfaceWithFormat(0, 0, 0, 32, SDL_PixelFormatEnum::SDL_PIXELFORMAT_RGBA32); + for (int32_t i = 0; i < Reserved::size; i++) { + add_texture(dummy_surface); + } + enabler->textures.init_texture_size += Reserved::size; +} + void Textures::init(color_ostream& out) { if (!enabler) return; + reserve_static_range(); install_reset_point(); - DEBUG(textures, out).print("dynamic texture loading ready"); + DEBUG(textures, out) + .print("dynamic texture loading ready, reserved range %d-%d\n", reserved_range.start, + reserved_range.end); } void Textures::cleanup() { @@ -317,6 +403,8 @@ void Textures::cleanup() { return; reset_texpos(); + reset_reserved_texpos(); + reset_tilesets(); reset_surface(); uninstall_reset_point(); } diff --git a/plugins/lua/hotkeys.lua b/plugins/lua/hotkeys.lua index fae138353..4169d439a 100644 --- a/plugins/lua/hotkeys.lua +++ b/plugins/lua/hotkeys.lua @@ -5,8 +5,8 @@ local helpdb = require('helpdb') local overlay = require('plugins.overlay') local widgets = require('gui.widgets') -local logo_textures = dfhack.textures.loadTileset('hack/data/art/logo.png', 8, 12) -local logo_hovered_textures = dfhack.textures.loadTileset('hack/data/art/logo_hovered.png', 8, 12) +local logo_textures = dfhack.textures.loadTileset('hack/data/art/logo.png', 8, 12, true) +local logo_hovered_textures = dfhack.textures.loadTileset('hack/data/art/logo_hovered.png', 8, 12, true) local function get_command(cmdline) local first_word = cmdline:trim():split(' +')[1] @@ -17,8 +17,8 @@ end function should_hide_armok(cmdline) local command = get_command(cmdline) return dfhack.getHideArmokTools() and - helpdb.is_entry(command) and - helpdb.get_entry_tags(command).armok + helpdb.is_entry(command) and + helpdb.get_entry_tags(command).armok end -- ----------------- -- @@ -26,11 +26,11 @@ end -- ----------------- -- HotspotMenuWidget = defclass(HotspotMenuWidget, overlay.OverlayWidget) -HotspotMenuWidget.ATTRS{ - default_pos={x=5,y=1}, - default_enabled=true, - version=2, - viewscreens={ +HotspotMenuWidget.ATTRS { + default_pos = { x = 5, y = 1 }, + default_enabled = true, + version = 2, + viewscreens = { 'adopt_region', 'choose_game_type', -- 'choose_start_site', -- conflicts with vanilla panel layouts @@ -48,51 +48,51 @@ HotspotMenuWidget.ATTRS{ 'update_region', 'world' }, - frame={w=4, h=3} + frame = { w = 4, h = 3 } } function HotspotMenuWidget:init() local to_pen = dfhack.pen.parse local function tp(idx, ch) - return to_pen{ - tile=function() return dfhack.textures.getTexposByHandle(logo_textures[idx]) end, - ch=ch, - fg=COLOR_GREY, + return to_pen { + tile = function() return dfhack.textures.getTexposByHandle(logo_textures[idx]) end, + ch = ch, + fg = COLOR_GREY, } end local function tph(idx, ch) - return to_pen{ - tile=function() return dfhack.textures.getTexposByHandle(logo_hovered_textures[idx]) end, - ch=ch, - fg=COLOR_WHITE, + return to_pen { + tile = function() return dfhack.textures.getTexposByHandle(logo_hovered_textures[idx]) end, + ch = ch, + fg = COLOR_WHITE, } end local function get_tile_token(idx, ch) return { - tile=tp(idx, ch), - htile=tph(idx, ch), - width=1, + tile = tp(idx, ch), + htile = tph(idx, ch), + width = 1, } end - self:addviews{ - widgets.Label{ - text={ + self:addviews { + widgets.Label { + text = { get_tile_token(1, '!'), get_tile_token(2, 'D'), get_tile_token(3, 'F'), get_tile_token(4, '!'), NEWLINE, get_tile_token(5, '!'), get_tile_token(6, 'H'), get_tile_token(7, 'a'), get_tile_token(8, '!'), NEWLINE, get_tile_token(9, '!'), get_tile_token(10, 'c'), get_tile_token(11, 'k'), get_tile_token(12, '!'), }, - on_click=function() dfhack.run_command('hotkeys') end, + on_click = function() dfhack.run_command('hotkeys') end, }, } end function HotspotMenuWidget:overlay_trigger() - return MenuScreen{hotspot=self}:show() + return MenuScreen { hotspot = self }:show() end -- register the menu hotspot with the overlay -OVERLAY_WIDGETS = {menu=HotspotMenuWidget} +OVERLAY_WIDGETS = { menu = HotspotMenuWidget } -- ---- -- -- Menu -- @@ -103,15 +103,15 @@ local MAX_LIST_WIDTH = 45 local MAX_LIST_HEIGHT = 15 Menu = defclass(Menu, widgets.Panel) -Menu.ATTRS{ - hotspot=DEFAULT_NIL, +Menu.ATTRS { + hotspot = DEFAULT_NIL, } -- get a map from the binding string to a list of hotkey strings that all -- point to that binding local function get_bindings_to_hotkeys(hotkeys, bindings) local bindings_to_hotkeys = {} - for _,hotkey in ipairs(hotkeys) do + for _, hotkey in ipairs(hotkeys) do local binding = bindings[hotkey] table.insert(ensure_key(bindings_to_hotkeys, binding), hotkey) end @@ -126,17 +126,17 @@ local function get_choices(hotkeys, bindings, is_inverted) local bindings_to_hotkeys = get_bindings_to_hotkeys(hotkeys, bindings) -- build list choices - for _,hotkey in ipairs(hotkeys) do + for _, hotkey in ipairs(hotkeys) do local command = bindings[hotkey] if seen[command] then goto continue end seen[command] = true local hk_width, tokens = 0, {} - for _,hk in ipairs(bindings_to_hotkeys[command]) do + for _, hk in ipairs(bindings_to_hotkeys[command]) do if hk_width ~= 0 then table.insert(tokens, ', ') hk_width = hk_width + 2 end - table.insert(tokens, {text=hk, pen=COLOR_LIGHTGREEN}) + table.insert(tokens, { text = hk, pen = COLOR_LIGHTGREEN }) hk_width = hk_width + #hk end local command_str = command @@ -144,16 +144,20 @@ local function get_choices(hotkeys, bindings, is_inverted) local max_command_len = MAX_LIST_WIDTH - hk_width - LIST_BUFFER command_str = command:sub(1, max_command_len - 3) .. '...' end - table.insert(tokens, 1, {text=command_str}) - local choice = {icon=ARROW, command=command, text=tokens, - hk_width=hk_width} + table.insert(tokens, 1, { text = command_str }) + local choice = { + icon = ARROW, + command = command, + text = tokens, + hk_width = hk_width + } max_width = math.max(max_width, hk_width + #command_str + LIST_BUFFER) table.insert(choices, is_inverted and 1 or #choices + 1, choice) ::continue:: end -- adjust width of command fields so the hotkey tokens are right justified - for _,choice in ipairs(choices) do + for _, choice in ipairs(choices) do local command_token = choice.text[1] command_token.width = max_width - choice.hk_width - (LIST_BUFFER - 1) end @@ -164,17 +168,17 @@ end function Menu:init() local hotkeys, bindings = getHotkeys() if #hotkeys == 0 then - hotkeys = {''} - bindings = {['']='gui/launcher'} + hotkeys = { '' } + bindings = { [''] = 'gui/launcher' } end local is_inverted = not not self.hotspot.frame.b - local choices,list_width = get_choices(hotkeys, bindings, is_inverted) + local choices, list_width = get_choices(hotkeys, bindings, is_inverted) list_width = math.max(35, list_width) local list_frame = copyall(self.hotspot.frame) - local list_widget_frame = {h=math.min(#choices, MAX_LIST_HEIGHT)} + local list_widget_frame = { h = math.min(#choices, MAX_LIST_HEIGHT) } local quickstart_frame = {} list_frame.w = list_width + 2 list_frame.h = list_widget_frame.h + 4 @@ -193,51 +197,51 @@ function Menu:init() list_frame.r = math.max(0, list_frame.r + 5) end - local help_frame = {w=list_frame.w, l=list_frame.l, r=list_frame.r} + local help_frame = { w = list_frame.w, l = list_frame.l, r = list_frame.r } if list_frame.t then help_frame.t = list_frame.t + list_frame.h else help_frame.b = list_frame.b + list_frame.h end - self:addviews{ - widgets.Panel{ - view_id='list_panel', - frame=list_frame, - frame_style=gui.PANEL_FRAME, - frame_background=gui.CLEAR_PEN, - subviews={ - widgets.List{ - view_id='list', - frame=list_widget_frame, - choices=choices, - icon_width=2, - on_select=self:callback('onSelect'), - on_submit=self:callback('onSubmit'), - on_submit2=self:callback('onSubmit2'), + self:addviews { + widgets.Panel { + view_id = 'list_panel', + frame = list_frame, + frame_style = gui.PANEL_FRAME, + frame_background = gui.CLEAR_PEN, + subviews = { + widgets.List { + view_id = 'list', + frame = list_widget_frame, + choices = choices, + icon_width = 2, + on_select = self:callback('onSelect'), + on_submit = self:callback('onSubmit'), + on_submit2 = self:callback('onSubmit2'), }, - widgets.Panel{frame={h=1}}, - widgets.HotkeyLabel{ - frame=quickstart_frame, - label='Quickstart guide', - key='STRING_A063', - on_activate=function() - self:onSubmit(nil, {command='quickstart-guide'}) + widgets.Panel { frame = { h = 1 } }, + widgets.HotkeyLabel { + frame = quickstart_frame, + label = 'Quickstart guide', + key = 'STRING_A063', + on_activate = function() + self:onSubmit(nil, { command = 'quickstart-guide' }) end, }, }, }, - widgets.ResizingPanel{ - view_id='help_panel', - autoarrange_subviews=true, - frame=help_frame, - frame_style=gui.PANEL_FRAME, - frame_background=gui.CLEAR_PEN, - subviews={ - widgets.WrappedLabel{ - view_id='help', - text_to_wrap='', - scroll_keys={}, + widgets.ResizingPanel { + view_id = 'help_panel', + autoarrange_subviews = true, + frame = help_frame, + frame_style = gui.PANEL_FRAME, + frame_background = gui.CLEAR_PEN, + subviews = { + widgets.WrappedLabel { + view_id = 'help', + text_to_wrap = '', + scroll_keys = {}, }, }, }, @@ -252,7 +256,7 @@ function Menu:onSelect(_, choice) if not choice or #self.subviews == 0 then return end local command = get_command(choice.command) self.subviews.help.text_to_wrap = helpdb.is_entry(command) and - helpdb.get_entry_short_help(command) or 'Command not found' + helpdb.get_entry_short_help(command) or 'Command not found' self.subviews.help_panel:updateLayout() end @@ -302,7 +306,7 @@ end function Menu:getMouseFramePos() return self.subviews.list_panel:getMouseFramePos() or - self.subviews.help_panel:getMouseFramePos() + self.subviews.help_panel:getMouseFramePos() end function Menu:onRenderBody(dc) @@ -324,14 +328,14 @@ end MenuScreen = defclass(MenuScreen, gui.ZScreen) MenuScreen.ATTRS { - focus_path='hotkeys/menu', - initial_pause=false, - hotspot=DEFAULT_NIL, + focus_path = 'hotkeys/menu', + initial_pause = false, + hotspot = DEFAULT_NIL, } function MenuScreen:init() - self:addviews{ - Menu{hotspot=self.hotspot}, + self:addviews { + Menu { hotspot = self.hotspot }, } end diff --git a/plugins/pathable.cpp b/plugins/pathable.cpp index 12852a894..be6537d32 100644 --- a/plugins/pathable.cpp +++ b/plugins/pathable.cpp @@ -36,7 +36,7 @@ namespace DFHack { static std::vector textures; DFhackCExport command_result plugin_init(color_ostream &out, std::vector &commands) { - textures = Textures::loadTileset("hack/data/art/pathable.png", 32, 32); + textures = Textures::loadTileset("hack/data/art/pathable.png", 32, 32, true); return CR_OK; } From 5b34ac63e19599b0a2494e57cbd8761bd9737e03 Mon Sep 17 00:00:00 2001 From: shevernitskiy Date: Fri, 1 Sep 2023 18:31:19 +0300 Subject: [PATCH 017/100] fix for gcc --- library/modules/Textures.cpp | 44 +++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/library/modules/Textures.cpp b/library/modules/Textures.cpp index e52445f18..bdb1e815a 100644 --- a/library/modules/Textures.cpp +++ b/library/modules/Textures.cpp @@ -29,6 +29,27 @@ namespace DFHack { DBG_DECLARE(core, textures, DebugCategory::LINFO); } +struct ReservedRange { + void init(int32_t start) { + this->start = start; + this->end = start + ReservedRange::size; + this->current = start; + } + long get_new_texpos() { + if (this->current == this->end) + return -1; + current = this->current; + this->current++; + return current; + } + + static const int32_t size = 10000; // size of reserved texpos buffer + int32_t start = -1; + int32_t end = -1; + long current = -1; +}; + +static ReservedRange reserved_range{}; static std::unordered_map g_handle_to_texpos; static std::unordered_map g_handle_to_reserved_texpos; static std::unordered_map g_handle_to_surface; @@ -36,25 +57,6 @@ static std::unordered_map> g_tileset_to_h static std::mutex g_adding_mutex; static std::atomic loading_state = false; -struct Reserved { - static void init(int32_t start) { - reserved_range.start = start; - reserved_range.end = start + Reserved::size; - reserved_range.current = start; - } - static long get_new_texpos() { - if (reserved_range.current == reserved_range.end) - return -1; - current = reserved_range.current; - reserved_range.current++; - return current; - } - static const int32_t size = 10000; // size of reserved texpos buffer - inline static int32_t start = -1; - inline static int32_t end = -1; - inline static long current = -1; -} reserved_range; - // Converts an arbitrary Surface to something like the display format // (32-bit RGBA), and converts magenta to transparency if convert_magenta is set // and the source surface didn't already have an alpha channel. @@ -381,10 +383,10 @@ static void reserve_static_range() { reserved_range.init(enabler->textures.init_texture_size); auto dummy_surface = DFSDL_CreateRGBSurfaceWithFormat(0, 0, 0, 32, SDL_PixelFormatEnum::SDL_PIXELFORMAT_RGBA32); - for (int32_t i = 0; i < Reserved::size; i++) { + for (int32_t i = 0; i < ReservedRange::size; i++) { add_texture(dummy_surface); } - enabler->textures.init_texture_size += Reserved::size; + enabler->textures.init_texture_size += ReservedRange::size; } void Textures::init(color_ostream& out) { From 469a97f78189a2f0bf86ffa7253da47df4cdf475 Mon Sep 17 00:00:00 2001 From: shevernitskiy Date: Sat, 2 Sep 2023 08:38:33 +0300 Subject: [PATCH 018/100] review --- docs/dev/Lua API.rst | 5 +++ library/modules/Textures.cpp | 76 +++++++++++++++++++++++++++++------- 2 files changed, 66 insertions(+), 15 deletions(-) diff --git a/docs/dev/Lua API.rst b/docs/dev/Lua API.rst index 9199130fe..dc1722bf4 100644 --- a/docs/dev/Lua API.rst +++ b/docs/dev/Lua API.rst @@ -2594,6 +2594,11 @@ invalidates the ``texpos`` value that used to point to that texture. The ``textures`` module solves this problem by providing a stable handle instead of a raw ``texpos``. When we need to draw a particular tile, we can look up the current ``texpos`` value via the handle. +Texture module can register textures in two ways: to reserved and dynamic ranges. +Reserved range is a limit buffer in a game texture vector, that will never be wiped. +It is good for static assets, which need to be loaded at the very beginning and will be used during the process running. +In other cases, it is better to use dynamic range. +If reserved range buffer limit has been reached, dynamic range will be used by default. * ``loadTileset(file, tile_px_w, tile_px_h, reserved?)`` diff --git a/library/modules/Textures.cpp b/library/modules/Textures.cpp index bdb1e815a..a2810dd20 100644 --- a/library/modules/Textures.cpp +++ b/library/modules/Textures.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -34,6 +35,7 @@ struct ReservedRange { this->start = start; this->end = start + ReservedRange::size; this->current = start; + this->is_installed = true; } long get_new_texpos() { if (this->current == this->end) @@ -47,6 +49,7 @@ struct ReservedRange { int32_t start = -1; int32_t end = -1; long current = -1; + bool is_installed = false; }; static ReservedRange reserved_range{}; @@ -54,6 +57,7 @@ static std::unordered_map g_handle_to_texpos; static std::unordered_map g_handle_to_reserved_texpos; static std::unordered_map g_handle_to_surface; static std::unordered_map> g_tileset_to_handles; +static std::vector g_delayed_regs; static std::mutex g_adding_mutex; static std::atomic loading_state = false; @@ -134,6 +138,12 @@ std::vector slice_tileset(SDL_Surface* surface, int tile_px_w, int int dimx = surface->w / tile_px_w; int dimy = surface->h / tile_px_h; + if (reserved && (dimx * dimy > reserved_range.end - reserved_range.current)) { + WARN(textures).print( + "there is not enough space in reserved range for whole tileset, using dynamic range\n"); + reserved = false; + } + for (int y = 0; y < dimy; y++) { for (int x = 0; x < dimx; x++) { SDL_Surface* tile = DFSDL_CreateRGBSurface( @@ -153,26 +163,35 @@ std::vector slice_tileset(SDL_Surface* surface, int tile_px_w, int TexposHandle Textures::loadTexture(SDL_Surface* surface, bool reserved) { if (!surface || !enabler) return 0; // should be some error, i guess - if (loading_state) { - ERR(textures).printerr("unable to load texture during game loading\n"); - return 0; - } + if (loading_state) + reserved = true; // use reserved range during loading for all textures auto handle = reinterpret_cast(surface); g_handle_to_surface.emplace(handle, surface); surface->refcount++; // prevent destruct on next FreeSurface by game - if (reserved) { + + if (reserved && reserved_range.is_installed) { auto texpos = reserved_range.get_new_texpos(); - if (texpos == -1) { + if (texpos != -1) { + insert_texture(surface, texpos); + g_handle_to_reserved_texpos.emplace(handle, texpos); + return handle; + } + + if (loading_state) { // if we in loading state and reserved range is full -> error ERR(textures).printerr("reserved range limit has been reached, use dynamic range\n"); return 0; } - insert_texture(surface, texpos); - g_handle_to_reserved_texpos.emplace(handle, texpos); + } + + // if we here in loading state = true, then it should be dynamic range -> delay reg + if (loading_state) { + g_delayed_regs.push_back(handle); } else { auto texpos = add_texture(surface); g_handle_to_texpos.emplace(handle, texpos); } + return handle; } @@ -192,10 +211,9 @@ std::vector Textures::loadTileset(const std::string& file, int til surface = canonicalize_format(surface); auto handles = slice_tileset(surface, tile_px_w, tile_px_h, reserved); - DEBUG(textures).print("loaded %zd textures from '%s' to %s range\n", handles.size(), - file.c_str(), reserved ? "reserved" : "dynamic"); - + DEBUG(textures).print("loaded %zd textures from '%s'\n", handles.size(), file.c_str()); g_tileset_to_handles[file] = handles; + return handles; } @@ -207,12 +225,14 @@ long Textures::getTexposByHandle(TexposHandle handle) { return g_handle_to_reserved_texpos[handle]; if (g_handle_to_texpos.contains(handle)) return g_handle_to_texpos[handle]; + if (std::find(g_delayed_regs.begin(), g_delayed_regs.end(), handle) != g_delayed_regs.end()) + return 0; if (g_handle_to_surface.contains(handle)) { - if (loading_state) { - ERR(textures).printerr("unable reinit texture from dynamic range during loading\n"); - return -1; - } g_handle_to_surface[handle]->refcount++; // prevent destruct on next FreeSurface by game + if (loading_state) { // reinit dor dynamic range during loading -> delayed + g_delayed_regs.push_back(handle); + return 0; + } auto texpos = add_texture(g_handle_to_surface[handle]); g_handle_to_texpos.emplace(handle, texpos); return texpos; @@ -284,6 +304,15 @@ static void reset_surface() { g_handle_to_surface.clear(); } +static void register_delayed_handles() { + DEBUG(textures).print("register delayed handles, size %zd\n", g_delayed_regs.size()); + for (auto& handle : g_delayed_regs) { + auto texpos = add_texture(g_handle_to_surface[handle]); + g_handle_to_texpos.emplace(handle, texpos); + } + g_delayed_regs.clear(); +} + // reset point on New Game struct tracking_stage_new_region : df::viewscreen_new_regionst { typedef df::viewscreen_new_regionst interpose_base; @@ -292,7 +321,10 @@ struct tracking_stage_new_region : df::viewscreen_new_regionst { if (this->m_raw_load_stage != this->raw_load_stage) { TRACE(textures).print("raw_load_stage %d -> %d\n", this->m_raw_load_stage, this->raw_load_stage); + bool tmp_state = loading_state; loading_state = this->raw_load_stage >= 0 && this->raw_load_stage < 3 ? true : false; + if (tmp_state != loading_state && !loading_state) + register_delayed_handles(); this->m_raw_load_stage = this->raw_load_stage; if (this->m_raw_load_stage == 1) reset_texpos(); @@ -312,7 +344,10 @@ struct tracking_stage_adopt_region : df::viewscreen_adopt_regionst { DEFINE_VMETHOD_INTERPOSE(void, logic, ()) { if (this->m_cur_step != this->cur_step) { TRACE(textures).print("step %d -> %d\n", this->m_cur_step, this->cur_step); + bool tmp_state = loading_state; loading_state = this->cur_step >= 0 && this->cur_step < 3 ? true : false; + if (tmp_state != loading_state && !loading_state) + register_delayed_handles(); this->m_cur_step = this->cur_step; if (this->m_cur_step == 1) reset_texpos(); @@ -332,7 +367,10 @@ struct tracking_stage_load_region : df::viewscreen_loadgamest { DEFINE_VMETHOD_INTERPOSE(void, logic, ()) { if (this->m_cur_step != this->cur_step) { TRACE(textures).print("step %d -> %d\n", this->m_cur_step, this->cur_step); + bool tmp_state = loading_state; loading_state = this->cur_step >= 0 && this->cur_step < 3 ? true : false; + if (tmp_state != loading_state && !loading_state) + register_delayed_handles(); this->m_cur_step = this->cur_step; if (this->m_cur_step == 1) reset_texpos(); @@ -352,7 +390,10 @@ struct tracking_stage_new_arena : df::viewscreen_new_arenast { DEFINE_VMETHOD_INTERPOSE(void, logic, ()) { if (this->m_cur_step != this->cur_step) { TRACE(textures).print("step %d -> %d\n", this->m_cur_step, this->cur_step); + bool tmp_state = loading_state; loading_state = this->cur_step >= 0 && this->cur_step < 3 ? true : false; + if (tmp_state != loading_state && !loading_state) + register_delayed_handles(); this->m_cur_step = this->cur_step; if (this->m_cur_step == 0) reset_texpos(); @@ -380,6 +421,11 @@ static void uninstall_reset_point() { } static void reserve_static_range() { + if (static_cast(enabler->textures.init_texture_size) != enabler->textures.raws.size()) { + WARN(textures).print( + "reserved range can't be installed! all textures will be loaded to dynamic range!"); + return; + } reserved_range.init(enabler->textures.init_texture_size); auto dummy_surface = DFSDL_CreateRGBSurfaceWithFormat(0, 0, 0, 32, SDL_PixelFormatEnum::SDL_PIXELFORMAT_RGBA32); From 033a849de2580485daa66458502e4a87eb296190 Mon Sep 17 00:00:00 2001 From: shevernitskiy Date: Sat, 2 Sep 2023 08:40:24 +0300 Subject: [PATCH 019/100] Apply suggestions from code review Co-authored-by: Myk --- docs/dev/Lua API.rst | 6 +++--- library/modules/Textures.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/dev/Lua API.rst b/docs/dev/Lua API.rst index dc1722bf4..1cba8284e 100644 --- a/docs/dev/Lua API.rst +++ b/docs/dev/Lua API.rst @@ -2600,7 +2600,7 @@ It is good for static assets, which need to be loaded at the very beginning and In other cases, it is better to use dynamic range. If reserved range buffer limit has been reached, dynamic range will be used by default. -* ``loadTileset(file, tile_px_w, tile_px_h, reserved?)`` +* ``loadTileset(file, tile_px_w, tile_px_h[, reserved])`` Loads a tileset from the image ``file`` with give tile dimensions in pixels. The image will be sliced in row major order. Returns an array of ``TexposHandle``. @@ -2618,7 +2618,7 @@ If reserved range buffer limit has been reached, dynamic range will be used by d get the ``texpos`` for your texture. ``texpos`` can change when game textures are reset, but the handle will be the same. -* ``createTile(pixels, tile_px_w, tile_px_h, reserved?)`` +* ``createTile(pixels, tile_px_w, tile_px_h[, reserved])`` Create and register a new texture with the given tile dimensions and an array of ``pixels`` in row major order. Each pixel is an integer representing color in packed @@ -2626,7 +2626,7 @@ If reserved range buffer limit has been reached, dynamic range will be used by d ``reserved`` is optional boolean argument, which indicates texpos range. ``true`` - reserved, ``false`` - dynamic (default). -* ``createTileset(pixels, texture_px_w, texture_px_h, tile_px_w, tile_px_h, reserved?)`` +* ``createTileset(pixels, texture_px_w, texture_px_h, tile_px_w, tile_px_h[, reserved])`` Create and register a new texture with the given texture dimensions and an array of ``pixels`` in row major order. Then slice it into tiles with the given tile diff --git a/library/modules/Textures.cpp b/library/modules/Textures.cpp index a2810dd20..291b5343c 100644 --- a/library/modules/Textures.cpp +++ b/library/modules/Textures.cpp @@ -100,7 +100,7 @@ static long add_texture(SDL_Surface* surface) { return texpos; } -// register surface in texture raws to specific texpos, returns a texpos +// register surface in texture raws to specific texpos static void insert_texture(SDL_Surface* surface, long texpos) { std::lock_guard lg_add_texture(g_adding_mutex); enabler->textures.raws[texpos] = surface; From 770402a2928e576b78235a36f247cca3b98463b9 Mon Sep 17 00:00:00 2001 From: shevernitskiy Date: Sat, 2 Sep 2023 11:05:28 +0300 Subject: [PATCH 020/100] erase from delayed when deleteHandle() --- library/modules/Textures.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/library/modules/Textures.cpp b/library/modules/Textures.cpp index 291b5343c..5ece05193 100644 --- a/library/modules/Textures.cpp +++ b/library/modules/Textures.cpp @@ -273,6 +273,9 @@ void Textures::deleteHandle(TexposHandle handle) { g_handle_to_reserved_texpos.erase(handle); if (g_handle_to_texpos.contains(handle)) g_handle_to_texpos.erase(handle); + if (auto it = std::find(g_delayed_regs.begin(), g_delayed_regs.end(), handle); + it != g_delayed_regs.end()) + g_delayed_regs.erase(it); if (g_handle_to_surface.contains(handle)) { auto surface = g_handle_to_surface[handle]; while (surface->refcount) From 25cc778fce4e02784ec41aeffc46293a4093a23a Mon Sep 17 00:00:00 2001 From: shevernitskiy Date: Sun, 10 Sep 2023 11:17:24 +0300 Subject: [PATCH 021/100] review refactor --- library/modules/Textures.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/library/modules/Textures.cpp b/library/modules/Textures.cpp index 5ece05193..c8dc33c84 100644 --- a/library/modules/Textures.cpp +++ b/library/modules/Textures.cpp @@ -40,9 +40,7 @@ struct ReservedRange { long get_new_texpos() { if (this->current == this->end) return -1; - current = this->current; - this->current++; - return current; + return this->current++; } static const int32_t size = 10000; // size of reserved texpos buffer From bd4d831582e852bd36d2005d8a5ae7ca2fe5131e Mon Sep 17 00:00:00 2001 From: shevernitskiy Date: Sun, 10 Sep 2023 14:50:03 +0300 Subject: [PATCH 022/100] add flag for dummy & resolve conflicts --- library/modules/Textures.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/library/modules/Textures.cpp b/library/modules/Textures.cpp index c8dc33c84..b03821907 100644 --- a/library/modules/Textures.cpp +++ b/library/modules/Textures.cpp @@ -200,6 +200,9 @@ std::vector Textures::loadTileset(const std::string& file, int til if (g_tileset_to_handles.contains(file)) return g_tileset_to_handles[file]; + if (!enabler) + return std::vector{}; + SDL_Surface* surface = DFIMG_Load(file.c_str()); if (!surface) { ERR(textures).printerr("unable to load textures from '%s'\n", file.c_str()); @@ -428,8 +431,8 @@ static void reserve_static_range() { return; } reserved_range.init(enabler->textures.init_texture_size); - auto dummy_surface = - DFSDL_CreateRGBSurfaceWithFormat(0, 0, 0, 32, SDL_PixelFormatEnum::SDL_PIXELFORMAT_RGBA32); + auto dummy_surface = DFSDL_CreateRGBSurfaceWithFormat( + SDL_DONTFREE, 0, 0, 32, SDL_PixelFormatEnum::SDL_PIXELFORMAT_RGBA32); for (int32_t i = 0; i < ReservedRange::size; i++) { add_texture(dummy_surface); } From d2bc834fa960fd35d69f9a2ee252bebbe78f93c0 Mon Sep 17 00:00:00 2001 From: shevernitskiy Date: Mon, 11 Sep 2023 07:35:27 +0300 Subject: [PATCH 023/100] fix exception on close, dummy surface refcount --- library/modules/Textures.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/library/modules/Textures.cpp b/library/modules/Textures.cpp index b03821907..016a2193e 100644 --- a/library/modules/Textures.cpp +++ b/library/modules/Textures.cpp @@ -58,6 +58,7 @@ static std::unordered_map> g_tileset_to_h static std::vector g_delayed_regs; static std::mutex g_adding_mutex; static std::atomic loading_state = false; +static SDL_Surface* dummy_surface = NULL; // Converts an arbitrary Surface to something like the display format // (32-bit RGBA), and converts magenta to transparency if convert_magenta is set @@ -173,6 +174,7 @@ TexposHandle Textures::loadTexture(SDL_Surface* surface, bool reserved) { if (texpos != -1) { insert_texture(surface, texpos); g_handle_to_reserved_texpos.emplace(handle, texpos); + dummy_surface->refcount--; return handle; } @@ -431,8 +433,9 @@ static void reserve_static_range() { return; } reserved_range.init(enabler->textures.init_texture_size); - auto dummy_surface = DFSDL_CreateRGBSurfaceWithFormat( - SDL_DONTFREE, 0, 0, 32, SDL_PixelFormatEnum::SDL_PIXELFORMAT_RGBA32); + dummy_surface = + DFSDL_CreateRGBSurfaceWithFormat(0, 0, 0, 32, SDL_PixelFormatEnum::SDL_PIXELFORMAT_RGBA32); + dummy_surface->refcount += ReservedRange::size; for (int32_t i = 0; i < ReservedRange::size; i++) { add_texture(dummy_surface); } From f4348095a33f66ad5ada8338a9bad1083253370c Mon Sep 17 00:00:00 2001 From: shevernitskiy Date: Sun, 24 Sep 2023 09:43:28 +0300 Subject: [PATCH 024/100] upstream --- plugins/lua/hotkeys.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/lua/hotkeys.lua b/plugins/lua/hotkeys.lua index 4169d439a..30407a8fa 100644 --- a/plugins/lua/hotkeys.lua +++ b/plugins/lua/hotkeys.lua @@ -177,6 +177,8 @@ function Menu:init() list_width = math.max(35, list_width) + list_width = math.max(35, list_width) + local list_frame = copyall(self.hotspot.frame) local list_widget_frame = { h = math.min(#choices, MAX_LIST_HEIGHT) } local quickstart_frame = {} From ae67ec05dec9d9f3b818def9616b7f5d340bcecc Mon Sep 17 00:00:00 2001 From: shevernitskiy Date: Sun, 24 Sep 2023 13:01:31 +0300 Subject: [PATCH 025/100] remove doubled check --- build/ALL_BUILD.vcxproj | 533 +++++++++ build/ALL_BUILD.vcxproj.filters | 8 + build/Continuous.vcxproj | 145 +++ build/Continuous.vcxproj.filters | 17 + build/Experimental.vcxproj | 145 +++ build/Experimental.vcxproj.filters | 17 + build/INSTALL.vcxproj | 126 +++ build/INSTALL.vcxproj.filters | 13 + build/Nightly.vcxproj | 145 +++ build/Nightly.vcxproj.filters | 17 + build/NightlyMemoryCheck.vcxproj | 145 +++ build/NightlyMemoryCheck.vcxproj.filters | 17 + build/PACKAGE.vcxproj | 132 +++ build/PACKAGE.vcxproj.filters | 13 + build/RUN_TESTS.vcxproj | 118 ++ build/RUN_TESTS.vcxproj.filters | 13 + build/ZERO_CHECK.vcxproj | 105 ++ build/ZERO_CHECK.vcxproj.filters | 13 + build/dfhack.sln | 1295 ++++++++++++++++++++++ library/modules/Textures.cpp | 3 - 20 files changed, 3017 insertions(+), 3 deletions(-) create mode 100644 build/ALL_BUILD.vcxproj create mode 100644 build/ALL_BUILD.vcxproj.filters create mode 100644 build/Continuous.vcxproj create mode 100644 build/Continuous.vcxproj.filters create mode 100644 build/Experimental.vcxproj create mode 100644 build/Experimental.vcxproj.filters create mode 100644 build/INSTALL.vcxproj create mode 100644 build/INSTALL.vcxproj.filters create mode 100644 build/Nightly.vcxproj create mode 100644 build/Nightly.vcxproj.filters create mode 100644 build/NightlyMemoryCheck.vcxproj create mode 100644 build/NightlyMemoryCheck.vcxproj.filters create mode 100644 build/PACKAGE.vcxproj create mode 100644 build/PACKAGE.vcxproj.filters create mode 100644 build/RUN_TESTS.vcxproj create mode 100644 build/RUN_TESTS.vcxproj.filters create mode 100644 build/ZERO_CHECK.vcxproj create mode 100644 build/ZERO_CHECK.vcxproj.filters create mode 100644 build/dfhack.sln diff --git a/build/ALL_BUILD.vcxproj b/build/ALL_BUILD.vcxproj new file mode 100644 index 000000000..eefddc34c --- /dev/null +++ b/build/ALL_BUILD.vcxproj @@ -0,0 +1,533 @@ + + + + x64 + + + + Release + x64 + + + RelWithDebInfo + x64 + + + + {40EA859D-1269-313F-A313-AA32B87C8935} + 10.0.22000.0 + Win32Proj + x64 + ALL_BUILD + NoUpgrade + + + + Utility + MultiByte + v143 + + + Utility + MultiByte + v143 + + + + + + + + + + <_ProjectFileVersion>10.0.20506.1 + $(Platform)\$(Configuration)\$(ProjectName)\ + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + + + E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + + + Always + Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt + setlocal +"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp + false + Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt + setlocal +"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp + false + + + + + + + {31277AF8-10A2-3494-B123-559421E08C26} + ZERO_CHECK + false + Never + + + {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA} + 3dveins + false + Never + + + {14C478D6-D815-378F-81D1-B53BBD6CBE9A} + RemoteFortressReader + false + Never + + + {3A2B0858-3B92-3598-B679-2A437C1286E0} + add-spatter + false + Never + + + {27ECEB5C-C396-32BE-93E6-4D4801692191} + autobutcher + false + Never + + + {5F63101D-75FE-31BE-9D25-6641FBBFF959} + autochop + false + Never + + + {7D67495E-4C92-37BE-BEF8-174CA37ADD21} + autoclothing + false + Never + + + {6152D284-A720-3556-A60A-7C13C89205AD} + autodump + false + Never + + + {4049FF1D-8A65-3021-B550-0DE0E63F9577} + autofarm + false + Never + + + {8CE562EE-798E-3C1B-975C-F49C6B5C84ED} + autolabor + false + Never + + + {961FD68A-49A7-3F16-9F96-16AC8236D3A3} + autonestbox + false + Never + + + {D3C67352-8290-3C4E-9F23-93DDE051AA37} + autoslab + false + Never + + + {A0486456-80E4-3492-940E-6652FF2B45B9} + binpatch + + + {386966C3-DC46-3936-AD44-35E2470C6A28} + blueprint + false + Never + + + {02D9B109-1602-3567-80C0-3BF354675829} + buildingplan + false + Never + + + {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA} + changeitem + false + Never + + + {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515} + changelayer + false + Never + + + {76B00654-E15A-3E4F-8C41-DDC63A14246A} + changevein + false + Never + + + {D7DF31C2-3247-31BA-A745-DF4095334504} + channel-safely + false + Never + + + {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204} + cleanconst + false + Never + + + {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5} + cleaners + false + Never + + + {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB} + cleanowned + false + Never + + + {BAABB124-4999-3462-AF35-16DB3C974D7C} + confirm + false + Never + + + {6F451C91-A082-3981-83D5-65844ED16BDA} + createitem + false + Never + + + {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80} + cursecheck + false + Never + + + {AB8FA0F9-1482-31F8-87E2-E3C7BB178053} + cxxrandom + false + Never + + + {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212} + debug + false + Never + + + {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20} + deramp + false + Never + + + {5347E62F-7AEB-3B7C-B480-161A35974C9E} + design + false + Never + + + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + dfhack + + + {136AD85C-398C-329A-84AC-AD4481963950} + dfhack-client + + + {78DBE964-AC8C-3264-903B-2B102B46D476} + dfhack-run + + + {5DC5A20B-821C-3008-A247-B08677276F56} + dfhack-version + + + {D3A6760C-34FD-3EE2-B9CC-24647168DC6A} + dig + false + Never + + + {AFC95A6A-BDBB-35E2-9381-253284E1112D} + dig-now + false + Never + + + {0AED7AC4-8C48-3205-AF43-3D536A60D815} + dwarfvet + false + Never + + + {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96} + eventful + false + Never + + + {BA32E800-D5FA-3F4E-B91B-763CD4FE389C} + expat + + + {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7} + fastdwarf + false + Never + + + {47842A81-7497-313E-B466-C60AE89334CB} + faststart + false + Never + + + {25303A98-8EE4-3355-8C68-CFA8B4116EF0} + filltraffic + false + Never + + + {A80E6C37-1E31-3DDC-A4FE-B21553E580DB} + flows + false + Never + + + {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA} + getplants + false + Never + + + {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD} + hotkeys + false + Never + + + {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B} + lair + false + Never + + + {21572060-CA28-355B-A508-5675A4A2FAB3} + liquids + false + Never + + + {F1206958-458C-3F18-84D9-3EEE07B73862} + logistics + false + Never + + + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + lua + + + {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3} + luasocket + false + Never + + + {419297F2-C54C-3C4B-91AB-7B119D09E730} + misery + false + Never + + + {8F94C6B8-42CE-329C-B6A9-3E13C04350CF} + nestboxes + false + Never + + + {7FF993D7-A6D3-37CC-AE69-2906ECD89E03} + orders + false + Never + + + {374D8559-CBBF-3F24-BEE1-8B11A184B7F8} + overlay + false + Never + + + {4E197970-E280-3B04-AD7D-E52DC551E902} + pathable + false + Never + + + {4E6C8BD2-2434-31DC-BDD2-8788D2547403} + probe + false + Never + + + {37629CF4-1B6A-312A-89B7-CF11593F51A4} + prospector + false + Never + + + {8D195538-264D-3C39-AB9A-653DA8A6F56E} + protobuf + + + {9302E53B-085D-3577-A3E2-EB51A51D084C} + protobuf-lite + + + {1C17AAAA-9E99-32C1-9FF6-E88C054A2646} + protoc + + + {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} + protoc-bin + + + {E36DC20B-AE7A-3449-B308-C932B9DD4290} + regrass + false + Never + + + {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121} + reveal + false + Never + + + {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3} + seedwatch + false + Never + + + {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2} + showmood + false + Never + + + {C080819A-4275-3D2A-84DE-7C21EDAE2BBA} + sort + false + Never + + + {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F} + stockpiles + false + Never + + + {6579683E-AB4A-3B40-A145-1952047837D2} + strangemood + false + Never + + + {2FE38842-BDF7-3A93-9D06-1C9814B6B11B} + tailor + false + Never + + + {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C} + tiletypes + false + Never + + + {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4} + work-now + false + Never + + + {C884F97B-4C5C-3457-AF4D-BB4C05670662} + workflow + false + Never + + + {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D} + xlsxio_read_STATIC + + + {796760C3-71E4-32AD-A9C4-B984AFC97106} + xlsxio_write_STATIC + + + {8054C91C-5221-314F-96C5-8FEC57BBEED1} + xlsxreader + false + Never + + + {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} + zip + + + {3B9F42C2-0060-329E-B123-7DEF1E91617D} + zone + false + Never + + + + + + \ No newline at end of file diff --git a/build/ALL_BUILD.vcxproj.filters b/build/ALL_BUILD.vcxproj.filters new file mode 100644 index 000000000..a80df604e --- /dev/null +++ b/build/ALL_BUILD.vcxproj.filters @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/build/Continuous.vcxproj b/build/Continuous.vcxproj new file mode 100644 index 000000000..63a376abe --- /dev/null +++ b/build/Continuous.vcxproj @@ -0,0 +1,145 @@ + + + + x64 + + + + Release + x64 + + + RelWithDebInfo + x64 + + + + {D7C70C41-500D-35F8-A992-1351DDDCDA0C} + 10.0.22000.0 + Win32Proj + x64 + Continuous + NoUpgrade + + + + Utility + MultiByte + v143 + + + Utility + MultiByte + v143 + + + + + + + + + + <_ProjectFileVersion>10.0.20506.1 + $(Platform)\$(Configuration)\$(ProjectName)\ + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + + + E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + + + + setlocal +"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D Continuous +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + %(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\Continuous + false + false + + setlocal +"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D Continuous +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + %(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\Continuous + false + false + + + + + Always + Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt + setlocal +"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp + false + Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt + setlocal +"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp + false + + + + + + + + + {31277AF8-10A2-3494-B123-559421E08C26} + ZERO_CHECK + false + Never + + + + + + \ No newline at end of file diff --git a/build/Continuous.vcxproj.filters b/build/Continuous.vcxproj.filters new file mode 100644 index 000000000..a7314dd00 --- /dev/null +++ b/build/Continuous.vcxproj.filters @@ -0,0 +1,17 @@ + + + + + CMake Rules + + + + + + + + + {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} + + + diff --git a/build/Experimental.vcxproj b/build/Experimental.vcxproj new file mode 100644 index 000000000..396a79388 --- /dev/null +++ b/build/Experimental.vcxproj @@ -0,0 +1,145 @@ + + + + x64 + + + + Release + x64 + + + RelWithDebInfo + x64 + + + + {474F765F-548E-3AAB-8D5B-66CF364BE4B2} + 10.0.22000.0 + Win32Proj + x64 + Experimental + NoUpgrade + + + + Utility + MultiByte + v143 + + + Utility + MultiByte + v143 + + + + + + + + + + <_ProjectFileVersion>10.0.20506.1 + $(Platform)\$(Configuration)\$(ProjectName)\ + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + + + E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + + + + setlocal +"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D Experimental +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + %(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\Experimental + false + false + + setlocal +"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D Experimental +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + %(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\Experimental + false + false + + + + + Always + Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt + setlocal +"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp + false + Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt + setlocal +"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp + false + + + + + + + + + {31277AF8-10A2-3494-B123-559421E08C26} + ZERO_CHECK + false + Never + + + + + + \ No newline at end of file diff --git a/build/Experimental.vcxproj.filters b/build/Experimental.vcxproj.filters new file mode 100644 index 000000000..8622c11e8 --- /dev/null +++ b/build/Experimental.vcxproj.filters @@ -0,0 +1,17 @@ + + + + + CMake Rules + + + + + + + + + {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} + + + diff --git a/build/INSTALL.vcxproj b/build/INSTALL.vcxproj new file mode 100644 index 000000000..fcc0e5dd0 --- /dev/null +++ b/build/INSTALL.vcxproj @@ -0,0 +1,126 @@ + + + + x64 + + + + Release + x64 + + + RelWithDebInfo + x64 + + + + {07ADCCA9-7D16-3F3D-AB6F-1BDA83D4E943} + 10.0.22000.0 + Win32Proj + x64 + INSTALL + NoUpgrade + + + + Utility + MultiByte + v143 + + + Utility + MultiByte + v143 + + + + + + + + + + <_ProjectFileVersion>10.0.20506.1 + $(Platform)\$(Configuration)\$(ProjectName)\ + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + Always + + setlocal +"C:\Program Files\CMake\bin\cmake.exe" -DBUILD_TYPE=$(Configuration) -P cmake_install.cmake +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + + + + + Always + + setlocal +"C:\Program Files\CMake\bin\cmake.exe" -DBUILD_TYPE=$(Configuration) -P cmake_install.cmake +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + + + + + + setlocal +cd . +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + %(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\INSTALL_force + false + false + + setlocal +cd . +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + %(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\INSTALL_force + false + false + + + + + {31277AF8-10A2-3494-B123-559421E08C26} + ZERO_CHECK + false + Never + + + {40EA859D-1269-313F-A313-AA32B87C8935} + ALL_BUILD + false + Never + + + + + + \ No newline at end of file diff --git a/build/INSTALL.vcxproj.filters b/build/INSTALL.vcxproj.filters new file mode 100644 index 000000000..1d3583629 --- /dev/null +++ b/build/INSTALL.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + CMake Rules + + + + + {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} + + + diff --git a/build/Nightly.vcxproj b/build/Nightly.vcxproj new file mode 100644 index 000000000..ff59ec296 --- /dev/null +++ b/build/Nightly.vcxproj @@ -0,0 +1,145 @@ + + + + x64 + + + + Release + x64 + + + RelWithDebInfo + x64 + + + + {246A2207-0D75-3894-8E4E-785344D8ABF4} + 10.0.22000.0 + Win32Proj + x64 + Nightly + NoUpgrade + + + + Utility + MultiByte + v143 + + + Utility + MultiByte + v143 + + + + + + + + + + <_ProjectFileVersion>10.0.20506.1 + $(Platform)\$(Configuration)\$(ProjectName)\ + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + + + E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + + + + setlocal +"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D Nightly +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + %(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\Nightly + false + false + + setlocal +"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D Nightly +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + %(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\Nightly + false + false + + + + + Always + Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt + setlocal +"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp + false + Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt + setlocal +"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp + false + + + + + + + + + {31277AF8-10A2-3494-B123-559421E08C26} + ZERO_CHECK + false + Never + + + + + + \ No newline at end of file diff --git a/build/Nightly.vcxproj.filters b/build/Nightly.vcxproj.filters new file mode 100644 index 000000000..cf94569d8 --- /dev/null +++ b/build/Nightly.vcxproj.filters @@ -0,0 +1,17 @@ + + + + + CMake Rules + + + + + + + + + {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} + + + diff --git a/build/NightlyMemoryCheck.vcxproj b/build/NightlyMemoryCheck.vcxproj new file mode 100644 index 000000000..260a79e55 --- /dev/null +++ b/build/NightlyMemoryCheck.vcxproj @@ -0,0 +1,145 @@ + + + + x64 + + + + Release + x64 + + + RelWithDebInfo + x64 + + + + {93318712-66D7-31F1-B537-E229E2FD9AF0} + 10.0.22000.0 + Win32Proj + x64 + NightlyMemoryCheck + NoUpgrade + + + + Utility + MultiByte + v143 + + + Utility + MultiByte + v143 + + + + + + + + + + <_ProjectFileVersion>10.0.20506.1 + $(Platform)\$(Configuration)\$(ProjectName)\ + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + + + E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + + + + setlocal +"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D NightlyMemoryCheck +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + %(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\NightlyMemoryCheck + false + false + + setlocal +"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D NightlyMemoryCheck +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + %(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\NightlyMemoryCheck + false + false + + + + + Always + Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt + setlocal +"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp + false + Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt + setlocal +"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp + false + + + + + + + + + {31277AF8-10A2-3494-B123-559421E08C26} + ZERO_CHECK + false + Never + + + + + + \ No newline at end of file diff --git a/build/NightlyMemoryCheck.vcxproj.filters b/build/NightlyMemoryCheck.vcxproj.filters new file mode 100644 index 000000000..a4b92fdc7 --- /dev/null +++ b/build/NightlyMemoryCheck.vcxproj.filters @@ -0,0 +1,17 @@ + + + + + CMake Rules + + + + + + + + + {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} + + + diff --git a/build/PACKAGE.vcxproj b/build/PACKAGE.vcxproj new file mode 100644 index 000000000..67c1c92dc --- /dev/null +++ b/build/PACKAGE.vcxproj @@ -0,0 +1,132 @@ + + + + x64 + + + + Release + x64 + + + RelWithDebInfo + x64 + + + + {F20BBC06-43D9-375A-A5A9-E717817CF640} + 10.0.22000.0 + Win32Proj + x64 + PACKAGE + NoUpgrade + + + + Utility + MultiByte + v143 + + + Utility + MultiByte + v143 + + + + + + + + + + <_ProjectFileVersion>10.0.20506.1 + $(Platform)\$(Configuration)\$(ProjectName)\ + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + + setlocal +cd E:\programming\cplus\dfhack\build +if %errorlevel% neq 0 goto :cmEnd +E: +if %errorlevel% neq 0 goto :cmEnd +"C:\Program Files\CMake\bin\cpack.exe" -C $(Configuration) --config ./CPackConfig.cmake +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + + + + + + setlocal +cd E:\programming\cplus\dfhack\build +if %errorlevel% neq 0 goto :cmEnd +E: +if %errorlevel% neq 0 goto :cmEnd +"C:\Program Files\CMake\bin\cpack.exe" -C $(Configuration) --config ./CPackConfig.cmake +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + + + + + + setlocal +cd . +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + %(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\PACKAGE_force + false + false + + setlocal +cd . +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + %(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\PACKAGE_force + false + false + + + + + {31277AF8-10A2-3494-B123-559421E08C26} + ZERO_CHECK + false + Never + + + {40EA859D-1269-313F-A313-AA32B87C8935} + ALL_BUILD + false + Never + + + + + + \ No newline at end of file diff --git a/build/PACKAGE.vcxproj.filters b/build/PACKAGE.vcxproj.filters new file mode 100644 index 000000000..8c2a983bf --- /dev/null +++ b/build/PACKAGE.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + CMake Rules + + + + + {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} + + + diff --git a/build/RUN_TESTS.vcxproj b/build/RUN_TESTS.vcxproj new file mode 100644 index 000000000..197f2baf3 --- /dev/null +++ b/build/RUN_TESTS.vcxproj @@ -0,0 +1,118 @@ + + + + x64 + + + + Release + x64 + + + RelWithDebInfo + x64 + + + + {45641EBC-7207-3F33-8572-930EA9BD4C6B} + 10.0.22000.0 + Win32Proj + x64 + RUN_TESTS + NoUpgrade + + + + Utility + MultiByte + v143 + + + Utility + MultiByte + v143 + + + + + + + + + + <_ProjectFileVersion>10.0.20506.1 + $(Platform)\$(Configuration)\$(ProjectName)\ + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + + setlocal +"C:\Program Files\CMake\bin\ctest.exe" --force-new-ctest-process -C $(Configuration) +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + + + + + + setlocal +"C:\Program Files\CMake\bin\ctest.exe" --force-new-ctest-process -C $(Configuration) +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + + + + + + setlocal +cd . +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + %(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\RUN_TESTS_force + false + false + + setlocal +cd . +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + %(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\RUN_TESTS_force + false + false + + + + + {31277AF8-10A2-3494-B123-559421E08C26} + ZERO_CHECK + false + Never + + + + + + \ No newline at end of file diff --git a/build/RUN_TESTS.vcxproj.filters b/build/RUN_TESTS.vcxproj.filters new file mode 100644 index 000000000..9b4c15921 --- /dev/null +++ b/build/RUN_TESTS.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + CMake Rules + + + + + {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} + + + diff --git a/build/ZERO_CHECK.vcxproj b/build/ZERO_CHECK.vcxproj new file mode 100644 index 000000000..c71698f74 --- /dev/null +++ b/build/ZERO_CHECK.vcxproj @@ -0,0 +1,105 @@ + + + + x64 + + + + Release + x64 + + + RelWithDebInfo + x64 + + + + {31277AF8-10A2-3494-B123-559421E08C26} + 10.0.22000.0 + Win32Proj + x64 + ZERO_CHECK + NoUpgrade + + + + Utility + MultiByte + v143 + + + Utility + MultiByte + v143 + + + + + + + + + + <_ProjectFileVersion>10.0.20506.1 + $(Platform)\$(Configuration)\$(ProjectName)\ + $(Platform)\$(Configuration)\$(ProjectName)\ + + + + E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + + + E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) + $(ProjectDir)/$(IntDir) + %(Filename).h + %(Filename).tlb + %(Filename)_i.c + %(Filename)_p.c + + + + + Always + Checking Build System + setlocal +"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-list CMakeFiles/generate.stamp.list --vs-solution-file E:/programming/cplus/dfhack/build/dfhack.sln +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + C:\Program Files\CMake\share\cmake-3.22\Modules\BasicConfigVersion-AnyNewerVersion.cmake.in;C:\Program Files\CMake\share\cmake-3.22\Modules\BasicConfigVersion-SameMajorVersion.cmake.in;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCheckCompilerFlagCommonPatterns.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakePackageConfigHelpers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCCompilerFlag.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCSourceRuns.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSymbolExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckFunctionExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckIncludeFile.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckIncludeFileCXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckIncludeFiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckLibraryExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckStructHasMember.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckSymbolExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckTypeSize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\GNUInstallDirs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckCompilerFlag.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceRuns.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\TestBigEndian.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\WriteBasicConfigVersionFile.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\CMakeLists.txt;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;E:\programming\cplus\dfhack\data\CMakeLists.txt;E:\programming\cplus\dfhack\depends\CMakeLists.txt;E:\programming\cplus\dfhack\depends\clsocket\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\cmake\JoinPaths.cmake;E:\programming\cplus\dfhack\depends\jsoncpp-sub\include\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\include\PreventInBuildInstalls.cmake;E:\programming\cplus\dfhack\depends\jsoncpp-sub\include\PreventInSourceBuilds.cmake;E:\programming\cplus\dfhack\depends\jsoncpp-sub\pkg-config\jsoncpp.pc.in;E:\programming\cplus\dfhack\depends\jsoncpp-sub\src\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\src\lib_json\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\version.in;E:\programming\cplus\dfhack\depends\libexpat\expat\CMakeLists.txt;E:\programming\cplus\dfhack\depends\libexpat\expat\Changes;E:\programming\cplus\dfhack\depends\libexpat\expat\ConfigureChecks.cmake;E:\programming\cplus\dfhack\depends\libexpat\expat\cmake\expat-config.cmake.in;E:\programming\cplus\dfhack\depends\libexpat\expat\expat_config.h.cmake;E:\programming\cplus\dfhack\depends\libzip\CMakeLists.txt;E:\programming\cplus\dfhack\depends\libzip\cmake-config.h.in;E:\programming\cplus\dfhack\depends\libzip\cmake-zipconf.h.in;E:\programming\cplus\dfhack\depends\libzip\cmake\Dist.cmake;E:\programming\cplus\dfhack\depends\libzip\lib\CMakeLists.txt;E:\programming\cplus\dfhack\depends\libzip\libzip-config.cmake.in;E:\programming\cplus\dfhack\depends\libzip\libzip.pc.in;E:\programming\cplus\dfhack\depends\libzip\regress\nihtest.conf.in;E:\programming\cplus\dfhack\depends\libzip\regress\runtest.in;E:\programming\cplus\dfhack\depends\lodepng\CMakeLists.txt;E:\programming\cplus\dfhack\depends\lua\CMakeLists.txt;E:\programming\cplus\dfhack\depends\md5\CMakeLists.txt;E:\programming\cplus\dfhack\depends\protobuf\CMakeLists.txt;E:\programming\cplus\dfhack\depends\protobuf\config.h.in;E:\programming\cplus\dfhack\depends\tinyxml\CMakeLists.txt;E:\programming\cplus\dfhack\depends\tthread\CMakeLists.txt;E:\programming\cplus\dfhack\depends\xlsxio\CMakeLists.txt;E:\programming\cplus\dfhack\library\CMakeLists.txt;E:\programming\cplus\dfhack\library\git-describe.cmake.in;E:\programming\cplus\dfhack\library\xml\CMakeLists.txt;E:\programming\cplus\dfhack\library\xml\tools\CMakeLists.txt;E:\programming\cplus\dfhack\package\windows\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\Plugins.cmake;E:\programming\cplus\dfhack\plugins\autolabor\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\buildingplan\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\channel-safely\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\external\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\remotefortressreader\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\stockpiles\CMakeLists.txt;E:\programming\cplus\dfhack\scripts\CMakeLists.txt;%(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\lodepng\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\lua\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\md5\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\protobuf\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\tinyxml\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\tthread\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\src\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\src\lib_json\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\include\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\clsocket\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\libexpat\expat\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\libzip\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\libzip\lib\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\xlsxio\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\library\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\library\xml\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\library\xml\tools\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\autolabor\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\buildingplan\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\channel-safely\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\remotefortressreader\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\stockpiles\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\external\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\data\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\scripts\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\package\windows\CMakeFiles\generate.stamp + false + Checking Build System + setlocal +"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-list CMakeFiles/generate.stamp.list --vs-solution-file E:/programming/cplus/dfhack/build/dfhack.sln +if %errorlevel% neq 0 goto :cmEnd +:cmEnd +endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone +:cmErrorLevel +exit /b %1 +:cmDone +if %errorlevel% neq 0 goto :VCEnd + C:\Program Files\CMake\share\cmake-3.22\Modules\BasicConfigVersion-AnyNewerVersion.cmake.in;C:\Program Files\CMake\share\cmake-3.22\Modules\BasicConfigVersion-SameMajorVersion.cmake.in;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCheckCompilerFlagCommonPatterns.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakePackageConfigHelpers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCCompilerFlag.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCSourceRuns.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSymbolExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckFunctionExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckIncludeFile.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckIncludeFileCXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckIncludeFiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckLibraryExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckStructHasMember.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckSymbolExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckTypeSize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\GNUInstallDirs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckCompilerFlag.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceRuns.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\TestBigEndian.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\WriteBasicConfigVersionFile.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\CMakeLists.txt;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;E:\programming\cplus\dfhack\data\CMakeLists.txt;E:\programming\cplus\dfhack\depends\CMakeLists.txt;E:\programming\cplus\dfhack\depends\clsocket\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\cmake\JoinPaths.cmake;E:\programming\cplus\dfhack\depends\jsoncpp-sub\include\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\include\PreventInBuildInstalls.cmake;E:\programming\cplus\dfhack\depends\jsoncpp-sub\include\PreventInSourceBuilds.cmake;E:\programming\cplus\dfhack\depends\jsoncpp-sub\pkg-config\jsoncpp.pc.in;E:\programming\cplus\dfhack\depends\jsoncpp-sub\src\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\src\lib_json\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\version.in;E:\programming\cplus\dfhack\depends\libexpat\expat\CMakeLists.txt;E:\programming\cplus\dfhack\depends\libexpat\expat\Changes;E:\programming\cplus\dfhack\depends\libexpat\expat\ConfigureChecks.cmake;E:\programming\cplus\dfhack\depends\libexpat\expat\cmake\expat-config.cmake.in;E:\programming\cplus\dfhack\depends\libexpat\expat\expat_config.h.cmake;E:\programming\cplus\dfhack\depends\libzip\CMakeLists.txt;E:\programming\cplus\dfhack\depends\libzip\cmake-config.h.in;E:\programming\cplus\dfhack\depends\libzip\cmake-zipconf.h.in;E:\programming\cplus\dfhack\depends\libzip\cmake\Dist.cmake;E:\programming\cplus\dfhack\depends\libzip\lib\CMakeLists.txt;E:\programming\cplus\dfhack\depends\libzip\libzip-config.cmake.in;E:\programming\cplus\dfhack\depends\libzip\libzip.pc.in;E:\programming\cplus\dfhack\depends\libzip\regress\nihtest.conf.in;E:\programming\cplus\dfhack\depends\libzip\regress\runtest.in;E:\programming\cplus\dfhack\depends\lodepng\CMakeLists.txt;E:\programming\cplus\dfhack\depends\lua\CMakeLists.txt;E:\programming\cplus\dfhack\depends\md5\CMakeLists.txt;E:\programming\cplus\dfhack\depends\protobuf\CMakeLists.txt;E:\programming\cplus\dfhack\depends\protobuf\config.h.in;E:\programming\cplus\dfhack\depends\tinyxml\CMakeLists.txt;E:\programming\cplus\dfhack\depends\tthread\CMakeLists.txt;E:\programming\cplus\dfhack\depends\xlsxio\CMakeLists.txt;E:\programming\cplus\dfhack\library\CMakeLists.txt;E:\programming\cplus\dfhack\library\git-describe.cmake.in;E:\programming\cplus\dfhack\library\xml\CMakeLists.txt;E:\programming\cplus\dfhack\library\xml\tools\CMakeLists.txt;E:\programming\cplus\dfhack\package\windows\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\Plugins.cmake;E:\programming\cplus\dfhack\plugins\autolabor\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\buildingplan\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\channel-safely\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\external\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\remotefortressreader\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\stockpiles\CMakeLists.txt;E:\programming\cplus\dfhack\scripts\CMakeLists.txt;%(AdditionalInputs) + E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\lodepng\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\lua\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\md5\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\protobuf\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\tinyxml\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\tthread\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\src\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\src\lib_json\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\include\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\clsocket\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\libexpat\expat\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\libzip\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\libzip\lib\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\xlsxio\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\library\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\library\xml\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\library\xml\tools\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\autolabor\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\buildingplan\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\channel-safely\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\remotefortressreader\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\stockpiles\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\external\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\data\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\scripts\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\package\windows\CMakeFiles\generate.stamp + false + + + + + + + + + + \ No newline at end of file diff --git a/build/ZERO_CHECK.vcxproj.filters b/build/ZERO_CHECK.vcxproj.filters new file mode 100644 index 000000000..2c79705a5 --- /dev/null +++ b/build/ZERO_CHECK.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + CMake Rules + + + + + {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} + + + diff --git a/build/dfhack.sln b/build/dfhack.sln new file mode 100644 index 000000000..83a916c71 --- /dev/null +++ b/build/dfhack.sln @@ -0,0 +1,1295 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CMakePredefinedTargets", "CMakePredefinedTargets", "{28D9607F-8931-375B-9273-9E20D2F6347F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CTestDashboardTargets", "CTestDashboardTargets", "{068CE9B1-E6DD-3864-AC38-93F10EF27A17}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Depends", "Depends", "{D8D353CC-1D2C-3A83-8EA0-A85D6CF14722}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{25456F37-E968-3921-80E5-1C0E141753B6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ALL_BUILD", "ALL_BUILD.vcxproj", "{40EA859D-1269-313F-A313-AA32B87C8935}" + ProjectSection(ProjectDependencies) = postProject + {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA} = {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA} + {14C478D6-D815-378F-81D1-B53BBD6CBE9A} = {14C478D6-D815-378F-81D1-B53BBD6CBE9A} + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {3A2B0858-3B92-3598-B679-2A437C1286E0} = {3A2B0858-3B92-3598-B679-2A437C1286E0} + {27ECEB5C-C396-32BE-93E6-4D4801692191} = {27ECEB5C-C396-32BE-93E6-4D4801692191} + {5F63101D-75FE-31BE-9D25-6641FBBFF959} = {5F63101D-75FE-31BE-9D25-6641FBBFF959} + {7D67495E-4C92-37BE-BEF8-174CA37ADD21} = {7D67495E-4C92-37BE-BEF8-174CA37ADD21} + {6152D284-A720-3556-A60A-7C13C89205AD} = {6152D284-A720-3556-A60A-7C13C89205AD} + {4049FF1D-8A65-3021-B550-0DE0E63F9577} = {4049FF1D-8A65-3021-B550-0DE0E63F9577} + {8CE562EE-798E-3C1B-975C-F49C6B5C84ED} = {8CE562EE-798E-3C1B-975C-F49C6B5C84ED} + {961FD68A-49A7-3F16-9F96-16AC8236D3A3} = {961FD68A-49A7-3F16-9F96-16AC8236D3A3} + {D3C67352-8290-3C4E-9F23-93DDE051AA37} = {D3C67352-8290-3C4E-9F23-93DDE051AA37} + {A0486456-80E4-3492-940E-6652FF2B45B9} = {A0486456-80E4-3492-940E-6652FF2B45B9} + {386966C3-DC46-3936-AD44-35E2470C6A28} = {386966C3-DC46-3936-AD44-35E2470C6A28} + {02D9B109-1602-3567-80C0-3BF354675829} = {02D9B109-1602-3567-80C0-3BF354675829} + {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA} = {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA} + {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515} = {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515} + {76B00654-E15A-3E4F-8C41-DDC63A14246A} = {76B00654-E15A-3E4F-8C41-DDC63A14246A} + {D7DF31C2-3247-31BA-A745-DF4095334504} = {D7DF31C2-3247-31BA-A745-DF4095334504} + {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204} = {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204} + {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5} = {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5} + {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB} = {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB} + {BAABB124-4999-3462-AF35-16DB3C974D7C} = {BAABB124-4999-3462-AF35-16DB3C974D7C} + {6F451C91-A082-3981-83D5-65844ED16BDA} = {6F451C91-A082-3981-83D5-65844ED16BDA} + {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80} = {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80} + {AB8FA0F9-1482-31F8-87E2-E3C7BB178053} = {AB8FA0F9-1482-31F8-87E2-E3C7BB178053} + {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212} = {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212} + {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20} = {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20} + {5347E62F-7AEB-3B7C-B480-161A35974C9E} = {5347E62F-7AEB-3B7C-B480-161A35974C9E} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {136AD85C-398C-329A-84AC-AD4481963950} = {136AD85C-398C-329A-84AC-AD4481963950} + {78DBE964-AC8C-3264-903B-2B102B46D476} = {78DBE964-AC8C-3264-903B-2B102B46D476} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {D3A6760C-34FD-3EE2-B9CC-24647168DC6A} = {D3A6760C-34FD-3EE2-B9CC-24647168DC6A} + {AFC95A6A-BDBB-35E2-9381-253284E1112D} = {AFC95A6A-BDBB-35E2-9381-253284E1112D} + {0AED7AC4-8C48-3205-AF43-3D536A60D815} = {0AED7AC4-8C48-3205-AF43-3D536A60D815} + {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96} = {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96} + {BA32E800-D5FA-3F4E-B91B-763CD4FE389C} = {BA32E800-D5FA-3F4E-B91B-763CD4FE389C} + {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7} = {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7} + {47842A81-7497-313E-B466-C60AE89334CB} = {47842A81-7497-313E-B466-C60AE89334CB} + {25303A98-8EE4-3355-8C68-CFA8B4116EF0} = {25303A98-8EE4-3355-8C68-CFA8B4116EF0} + {A80E6C37-1E31-3DDC-A4FE-B21553E580DB} = {A80E6C37-1E31-3DDC-A4FE-B21553E580DB} + {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA} = {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA} + {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD} = {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD} + {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B} = {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B} + {21572060-CA28-355B-A508-5675A4A2FAB3} = {21572060-CA28-355B-A508-5675A4A2FAB3} + {F1206958-458C-3F18-84D9-3EEE07B73862} = {F1206958-458C-3F18-84D9-3EEE07B73862} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3} = {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3} + {419297F2-C54C-3C4B-91AB-7B119D09E730} = {419297F2-C54C-3C4B-91AB-7B119D09E730} + {8F94C6B8-42CE-329C-B6A9-3E13C04350CF} = {8F94C6B8-42CE-329C-B6A9-3E13C04350CF} + {7FF993D7-A6D3-37CC-AE69-2906ECD89E03} = {7FF993D7-A6D3-37CC-AE69-2906ECD89E03} + {374D8559-CBBF-3F24-BEE1-8B11A184B7F8} = {374D8559-CBBF-3F24-BEE1-8B11A184B7F8} + {4E197970-E280-3B04-AD7D-E52DC551E902} = {4E197970-E280-3B04-AD7D-E52DC551E902} + {4E6C8BD2-2434-31DC-BDD2-8788D2547403} = {4E6C8BD2-2434-31DC-BDD2-8788D2547403} + {37629CF4-1B6A-312A-89B7-CF11593F51A4} = {37629CF4-1B6A-312A-89B7-CF11593F51A4} + {8D195538-264D-3C39-AB9A-653DA8A6F56E} = {8D195538-264D-3C39-AB9A-653DA8A6F56E} + {9302E53B-085D-3577-A3E2-EB51A51D084C} = {9302E53B-085D-3577-A3E2-EB51A51D084C} + {1C17AAAA-9E99-32C1-9FF6-E88C054A2646} = {1C17AAAA-9E99-32C1-9FF6-E88C054A2646} + {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} = {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} + {E36DC20B-AE7A-3449-B308-C932B9DD4290} = {E36DC20B-AE7A-3449-B308-C932B9DD4290} + {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121} = {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121} + {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3} = {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3} + {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2} = {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2} + {C080819A-4275-3D2A-84DE-7C21EDAE2BBA} = {C080819A-4275-3D2A-84DE-7C21EDAE2BBA} + {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F} = {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F} + {6579683E-AB4A-3B40-A145-1952047837D2} = {6579683E-AB4A-3B40-A145-1952047837D2} + {2FE38842-BDF7-3A93-9D06-1C9814B6B11B} = {2FE38842-BDF7-3A93-9D06-1C9814B6B11B} + {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C} = {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C} + {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4} = {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4} + {C884F97B-4C5C-3457-AF4D-BB4C05670662} = {C884F97B-4C5C-3457-AF4D-BB4C05670662} + {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D} = {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D} + {796760C3-71E4-32AD-A9C4-B984AFC97106} = {796760C3-71E4-32AD-A9C4-B984AFC97106} + {8054C91C-5221-314F-96C5-8FEC57BBEED1} = {8054C91C-5221-314F-96C5-8FEC57BBEED1} + {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} = {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} + {3B9F42C2-0060-329E-B123-7DEF1E91617D} = {3B9F42C2-0060-329E-B123-7DEF1E91617D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3dveins", "plugins\3dveins.vcxproj", "{B10F83BD-77CE-3CC2-A4D0-2B412287DFEA}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Continuous", "Continuous.vcxproj", "{D7C70C41-500D-35F8-A992-1351DDDCDA0C}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Experimental", "Experimental.vcxproj", "{474F765F-548E-3AAB-8D5B-66CF364BE4B2}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "INSTALL", "INSTALL.vcxproj", "{07ADCCA9-7D16-3F3D-AB6F-1BDA83D4E943}" + ProjectSection(ProjectDependencies) = postProject + {40EA859D-1269-313F-A313-AA32B87C8935} = {40EA859D-1269-313F-A313-AA32B87C8935} + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Nightly", "Nightly.vcxproj", "{246A2207-0D75-3894-8E4E-785344D8ABF4}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NightlyMemoryCheck", "NightlyMemoryCheck.vcxproj", "{93318712-66D7-31F1-B537-E229E2FD9AF0}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PACKAGE", "PACKAGE.vcxproj", "{F20BBC06-43D9-375A-A5A9-E717817CF640}" + ProjectSection(ProjectDependencies) = postProject + {40EA859D-1269-313F-A313-AA32B87C8935} = {40EA859D-1269-313F-A313-AA32B87C8935} + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RUN_TESTS", "RUN_TESTS.vcxproj", "{45641EBC-7207-3F33-8572-930EA9BD4C6B}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RemoteFortressReader", "plugins\remotefortressreader\RemoteFortressReader.vcxproj", "{14C478D6-D815-378F-81D1-B53BBD6CBE9A}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {69CB13F6-E5DD-3AC2-AF47-08A452514760} = {69CB13F6-E5DD-3AC2-AF47-08A452514760} + {9302E53B-085D-3577-A3E2-EB51A51D084C} = {9302E53B-085D-3577-A3E2-EB51A51D084C} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZERO_CHECK", "ZERO_CHECK.vcxproj", "{31277AF8-10A2-3494-B123-559421E08C26}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "add-spatter", "plugins\add-spatter.vcxproj", "{3A2B0858-3B92-3598-B679-2A437C1286E0}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autobutcher", "plugins\autobutcher.vcxproj", "{27ECEB5C-C396-32BE-93E6-4D4801692191}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autochop", "plugins\autochop.vcxproj", "{5F63101D-75FE-31BE-9D25-6641FBBFF959}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autoclothing", "plugins\autoclothing.vcxproj", "{7D67495E-4C92-37BE-BEF8-174CA37ADD21}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autodump", "plugins\autodump.vcxproj", "{6152D284-A720-3556-A60A-7C13C89205AD}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autofarm", "plugins\autofarm.vcxproj", "{4049FF1D-8A65-3021-B550-0DE0E63F9577}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autolabor", "plugins\autolabor\autolabor.vcxproj", "{8CE562EE-798E-3C1B-975C-F49C6B5C84ED}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autonestbox", "plugins\autonestbox.vcxproj", "{961FD68A-49A7-3F16-9F96-16AC8236D3A3}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autoslab", "plugins\autoslab.vcxproj", "{D3C67352-8290-3C4E-9F23-93DDE051AA37}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "binpatch", "library\binpatch.vcxproj", "{A0486456-80E4-3492-940E-6652FF2B45B9}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {111D1A41-5C7F-397A-A62C-B19B0AEB044B} = {111D1A41-5C7F-397A-A62C-B19B0AEB044B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blueprint", "plugins\blueprint.vcxproj", "{386966C3-DC46-3936-AD44-35E2470C6A28}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "buildingplan", "plugins\buildingplan\buildingplan.vcxproj", "{02D9B109-1602-3567-80C0-3BF354675829}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "changeitem", "plugins\changeitem.vcxproj", "{B6B32914-FA20-3991-AEDE-3FFA75FDF7DA}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "changelayer", "plugins\changelayer.vcxproj", "{C153A10F-47F2-3FF1-A27D-0CE7AA4B1515}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "changevein", "plugins\changevein.vcxproj", "{76B00654-E15A-3E4F-8C41-DDC63A14246A}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "channel-safely", "plugins\channel-safely\channel-safely.vcxproj", "{D7DF31C2-3247-31BA-A745-DF4095334504}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cleanconst", "plugins\cleanconst.vcxproj", "{2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cleaners", "plugins\cleaners.vcxproj", "{099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cleanowned", "plugins\cleanowned.vcxproj", "{D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "clsocket", "depends\clsocket\clsocket.vcxproj", "{39BD79E1-6088-33F3-AD4A-74F0E0EE785C}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "confirm", "plugins\confirm.vcxproj", "{BAABB124-4999-3462-AF35-16DB3C974D7C}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "createitem", "plugins\createitem.vcxproj", "{6F451C91-A082-3981-83D5-65844ED16BDA}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cursecheck", "plugins\cursecheck.vcxproj", "{C143DDD8-9AB8-368F-ACE4-BA4F7651DA80}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cxxrandom", "plugins\cxxrandom.vcxproj", "{AB8FA0F9-1482-31F8-87E2-E3C7BB178053}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "debug", "plugins\debug.vcxproj", "{CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {CD9E5829-45CA-308D-9ED7-C2C38139D69E} = {CD9E5829-45CA-308D-9ED7-C2C38139D69E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "deramp", "plugins\deramp.vcxproj", "{E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "design", "plugins\design.vcxproj", "{5347E62F-7AEB-3B7C-B480-161A35974C9E}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack", "library\dfhack.vcxproj", "{6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} = {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} + {111D1A41-5C7F-397A-A62C-B19B0AEB044B} = {111D1A41-5C7F-397A-A62C-B19B0AEB044B} + {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7} = {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7} + {19F34DB6-1C4F-36FD-A7A8-8E5077651209} = {19F34DB6-1C4F-36FD-A7A8-8E5077651209} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {F2136CA7-D3F2-3A3E-8D32-FE5A5E55E1EE} = {F2136CA7-D3F2-3A3E-8D32-FE5A5E55E1EE} + {A294D3AD-91C7-32D9-B361-D399900843E5} = {A294D3AD-91C7-32D9-B361-D399900843E5} + {CD9E5829-45CA-308D-9ED7-C2C38139D69E} = {CD9E5829-45CA-308D-9ED7-C2C38139D69E} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + {9302E53B-085D-3577-A3E2-EB51A51D084C} = {9302E53B-085D-3577-A3E2-EB51A51D084C} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack-client", "library\dfhack-client.vcxproj", "{136AD85C-398C-329A-84AC-AD4481963950}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} = {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {CD9E5829-45CA-308D-9ED7-C2C38139D69E} = {CD9E5829-45CA-308D-9ED7-C2C38139D69E} + {9302E53B-085D-3577-A3E2-EB51A51D084C} = {9302E53B-085D-3577-A3E2-EB51A51D084C} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack-lodepng", "depends\lodepng\dfhack-lodepng.vcxproj", "{8DB90A0E-6076-3C07-B890-7E5E886009EC}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack-md5", "depends\md5\dfhack-md5.vcxproj", "{111D1A41-5C7F-397A-A62C-B19B0AEB044B}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack-run", "library\dfhack-run.vcxproj", "{78DBE964-AC8C-3264-903B-2B102B46D476}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} = {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} + {136AD85C-398C-329A-84AC-AD4481963950} = {136AD85C-398C-329A-84AC-AD4481963950} + {CD9E5829-45CA-308D-9ED7-C2C38139D69E} = {CD9E5829-45CA-308D-9ED7-C2C38139D69E} + {9302E53B-085D-3577-A3E2-EB51A51D084C} = {9302E53B-085D-3577-A3E2-EB51A51D084C} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack-tinythread", "depends\tthread\dfhack-tinythread.vcxproj", "{D3A713C3-480C-3DF0-95FA-8B80D95DF8F7}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack-tinyxml", "depends\tinyxml\dfhack-tinyxml.vcxproj", "{19F34DB6-1C4F-36FD-A7A8-8E5077651209}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack-version", "library\dfhack-version.vcxproj", "{5DC5A20B-821C-3008-A247-B08677276F56}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dig", "plugins\dig.vcxproj", "{D3A6760C-34FD-3EE2-B9CC-24647168DC6A}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dig-now", "plugins\dig-now.vcxproj", "{AFC95A6A-BDBB-35E2-9381-253284E1112D}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dist", "depends\libzip\dist.vcxproj", "{24F97336-D35B-3FBA-BEF8-64B2D5845D3F}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "distcheck", "depends\libzip\distcheck.vcxproj", "{86289ECD-3E29-3E01-93B2-829B5666A809}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {24F97336-D35B-3FBA-BEF8-64B2D5845D3F} = {24F97336-D35B-3FBA-BEF8-64B2D5845D3F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dwarfvet", "plugins\dwarfvet.vcxproj", "{0AED7AC4-8C48-3205-AF43-3D536A60D815}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "eventful", "plugins\eventful.vcxproj", "{D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "expat", "depends\libexpat\expat\expat.vcxproj", "{BA32E800-D5FA-3F4E-B91B-763CD4FE389C}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fastdwarf", "plugins\fastdwarf.vcxproj", "{894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "faststart", "plugins\faststart.vcxproj", "{47842A81-7497-313E-B466-C60AE89334CB}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "filltraffic", "plugins\filltraffic.vcxproj", "{25303A98-8EE4-3355-8C68-CFA8B4116EF0}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flows", "plugins\flows.vcxproj", "{A80E6C37-1E31-3DDC-A4FE-B21553E580DB}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate_headers", "library\generate_headers.vcxproj", "{F2136CA7-D3F2-3A3E-8D32-FE5A5E55E1EE}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate_proto", "plugins\generate_proto.vcxproj", "{0AE42C92-16FF-3E69-B468-111535996095}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} = {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate_proto_RemoteFortressReader", "plugins\remotefortressreader\generate_proto_RemoteFortressReader.vcxproj", "{69CB13F6-E5DD-3AC2-AF47-08A452514760}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} = {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate_proto_core", "library\generate_proto_core.vcxproj", "{A294D3AD-91C7-32D9-B361-D399900843E5}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} = {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate_proto_stockpiles", "plugins\stockpiles\generate_proto_stockpiles.vcxproj", "{73A57BCF-3487-35DC-B448-FD328037CDF3}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} = {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "getplants", "plugins\getplants.vcxproj", "{E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hotkeys", "plugins\hotkeys.vcxproj", "{6F10CAC8-6D9F-357E-B574-5EC901BF4EAD}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jsoncpp_static", "depends\jsoncpp-sub\src\lib_json\jsoncpp_static.vcxproj", "{CD9E5829-45CA-308D-9ED7-C2C38139D69E}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lair", "plugins\lair.vcxproj", "{DA8EE8E6-6AE0-3DA6-AED9-316977621A0B}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liquids", "plugins\liquids.vcxproj", "{21572060-CA28-355B-A508-5675A4A2FAB3}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "logistics", "plugins\logistics.vcxproj", "{F1206958-458C-3F18-84D9-3EEE07B73862}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lua", "depends\lua\lua.vcxproj", "{6CA1FA88-B709-340C-8366-DCE4C1D1FB32}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "luasocket", "plugins\luasocket.vcxproj", "{4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} = {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7} = {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "misery", "plugins\misery.vcxproj", "{419297F2-C54C-3C4B-91AB-7B119D09E730}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nestboxes", "plugins\nestboxes.vcxproj", "{8F94C6B8-42CE-329C-B6A9-3E13C04350CF}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "orders", "plugins\orders.vcxproj", "{7FF993D7-A6D3-37CC-AE69-2906ECD89E03}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {CD9E5829-45CA-308D-9ED7-C2C38139D69E} = {CD9E5829-45CA-308D-9ED7-C2C38139D69E} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "overlay", "plugins\overlay.vcxproj", "{374D8559-CBBF-3F24-BEE1-8B11A184B7F8}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pathable", "plugins\pathable.vcxproj", "{4E197970-E280-3B04-AD7D-E52DC551E902}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "probe", "plugins\probe.vcxproj", "{4E6C8BD2-2434-31DC-BDD2-8788D2547403}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "prospector", "plugins\prospector.vcxproj", "{37629CF4-1B6A-312A-89B7-CF11593F51A4}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "protobuf", "depends\protobuf\protobuf.vcxproj", "{8D195538-264D-3C39-AB9A-653DA8A6F56E}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "protobuf-lite", "depends\protobuf\protobuf-lite.vcxproj", "{9302E53B-085D-3577-A3E2-EB51A51D084C}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "protoc", "depends\protobuf\protoc.vcxproj", "{1C17AAAA-9E99-32C1-9FF6-E88C054A2646}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {8D195538-264D-3C39-AB9A-653DA8A6F56E} = {8D195538-264D-3C39-AB9A-653DA8A6F56E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "protoc-bin", "depends\protobuf\protoc-bin.vcxproj", "{74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {8D195538-264D-3C39-AB9A-653DA8A6F56E} = {8D195538-264D-3C39-AB9A-653DA8A6F56E} + {1C17AAAA-9E99-32C1-9FF6-E88C054A2646} = {1C17AAAA-9E99-32C1-9FF6-E88C054A2646} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "regrass", "plugins\regrass.vcxproj", "{E36DC20B-AE7A-3449-B308-C932B9DD4290}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reveal", "plugins\reveal.vcxproj", "{C831208B-D7C3-3DD6-9F16-0EA8A5FF3121}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "seedwatch", "plugins\seedwatch.vcxproj", "{7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "showmood", "plugins\showmood.vcxproj", "{E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sort", "plugins\sort.vcxproj", "{C080819A-4275-3D2A-84DE-7C21EDAE2BBA}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stockpiles", "plugins\stockpiles\stockpiles.vcxproj", "{7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {73A57BCF-3487-35DC-B448-FD328037CDF3} = {73A57BCF-3487-35DC-B448-FD328037CDF3} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + {9302E53B-085D-3577-A3E2-EB51A51D084C} = {9302E53B-085D-3577-A3E2-EB51A51D084C} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "strangemood", "plugins\strangemood.vcxproj", "{6579683E-AB4A-3B40-A145-1952047837D2}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tailor", "plugins\tailor.vcxproj", "{2FE38842-BDF7-3A93-9D06-1C9814B6B11B}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiletypes", "plugins\tiletypes.vcxproj", "{B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "work-now", "plugins\work-now.vcxproj", "{2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "workflow", "plugins\workflow.vcxproj", "{C884F97B-4C5C-3457-AF4D-BB4C05670662}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xlsxio_read_STATIC", "depends\xlsxio\xlsxio_read_STATIC.vcxproj", "{85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {BA32E800-D5FA-3F4E-B91B-763CD4FE389C} = {BA32E800-D5FA-3F4E-B91B-763CD4FE389C} + {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} = {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xlsxio_write_STATIC", "depends\xlsxio\xlsxio_write_STATIC.vcxproj", "{796760C3-71E4-32AD-A9C4-B984AFC97106}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} = {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xlsxreader", "plugins\xlsxreader.vcxproj", "{8054C91C-5221-314F-96C5-8FEC57BBEED1}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {BA32E800-D5FA-3F4E-B91B-763CD4FE389C} = {BA32E800-D5FA-3F4E-B91B-763CD4FE389C} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D} = {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D} + {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} = {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zip", "depends\libzip\lib\zip.vcxproj", "{744BEFA7-C931-39C8-A1B4-1A9A88901B1D}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zone", "plugins\zone.vcxproj", "{3B9F42C2-0060-329E-B123-7DEF1E91617D}" + ProjectSection(ProjectDependencies) = postProject + {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} + {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} + {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Release|x64 = Release|x64 + RelWithDebInfo|x64 = RelWithDebInfo|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {40EA859D-1269-313F-A313-AA32B87C8935}.Release|x64.ActiveCfg = Release|x64 + {40EA859D-1269-313F-A313-AA32B87C8935}.Release|x64.Build.0 = Release|x64 + {40EA859D-1269-313F-A313-AA32B87C8935}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {40EA859D-1269-313F-A313-AA32B87C8935}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA}.Release|x64.ActiveCfg = Release|x64 + {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA}.Release|x64.Build.0 = Release|x64 + {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {D7C70C41-500D-35F8-A992-1351DDDCDA0C}.Release|x64.ActiveCfg = Release|x64 + {D7C70C41-500D-35F8-A992-1351DDDCDA0C}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {474F765F-548E-3AAB-8D5B-66CF364BE4B2}.Release|x64.ActiveCfg = Release|x64 + {474F765F-548E-3AAB-8D5B-66CF364BE4B2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {07ADCCA9-7D16-3F3D-AB6F-1BDA83D4E943}.Release|x64.ActiveCfg = Release|x64 + {07ADCCA9-7D16-3F3D-AB6F-1BDA83D4E943}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {246A2207-0D75-3894-8E4E-785344D8ABF4}.Release|x64.ActiveCfg = Release|x64 + {246A2207-0D75-3894-8E4E-785344D8ABF4}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {93318712-66D7-31F1-B537-E229E2FD9AF0}.Release|x64.ActiveCfg = Release|x64 + {93318712-66D7-31F1-B537-E229E2FD9AF0}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {F20BBC06-43D9-375A-A5A9-E717817CF640}.Release|x64.ActiveCfg = Release|x64 + {F20BBC06-43D9-375A-A5A9-E717817CF640}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {45641EBC-7207-3F33-8572-930EA9BD4C6B}.Release|x64.ActiveCfg = Release|x64 + {45641EBC-7207-3F33-8572-930EA9BD4C6B}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {14C478D6-D815-378F-81D1-B53BBD6CBE9A}.Release|x64.ActiveCfg = Release|x64 + {14C478D6-D815-378F-81D1-B53BBD6CBE9A}.Release|x64.Build.0 = Release|x64 + {14C478D6-D815-378F-81D1-B53BBD6CBE9A}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {14C478D6-D815-378F-81D1-B53BBD6CBE9A}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {31277AF8-10A2-3494-B123-559421E08C26}.Release|x64.ActiveCfg = Release|x64 + {31277AF8-10A2-3494-B123-559421E08C26}.Release|x64.Build.0 = Release|x64 + {31277AF8-10A2-3494-B123-559421E08C26}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {31277AF8-10A2-3494-B123-559421E08C26}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {3A2B0858-3B92-3598-B679-2A437C1286E0}.Release|x64.ActiveCfg = Release|x64 + {3A2B0858-3B92-3598-B679-2A437C1286E0}.Release|x64.Build.0 = Release|x64 + {3A2B0858-3B92-3598-B679-2A437C1286E0}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {3A2B0858-3B92-3598-B679-2A437C1286E0}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {27ECEB5C-C396-32BE-93E6-4D4801692191}.Release|x64.ActiveCfg = Release|x64 + {27ECEB5C-C396-32BE-93E6-4D4801692191}.Release|x64.Build.0 = Release|x64 + {27ECEB5C-C396-32BE-93E6-4D4801692191}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {27ECEB5C-C396-32BE-93E6-4D4801692191}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {5F63101D-75FE-31BE-9D25-6641FBBFF959}.Release|x64.ActiveCfg = Release|x64 + {5F63101D-75FE-31BE-9D25-6641FBBFF959}.Release|x64.Build.0 = Release|x64 + {5F63101D-75FE-31BE-9D25-6641FBBFF959}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {5F63101D-75FE-31BE-9D25-6641FBBFF959}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {7D67495E-4C92-37BE-BEF8-174CA37ADD21}.Release|x64.ActiveCfg = Release|x64 + {7D67495E-4C92-37BE-BEF8-174CA37ADD21}.Release|x64.Build.0 = Release|x64 + {7D67495E-4C92-37BE-BEF8-174CA37ADD21}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {7D67495E-4C92-37BE-BEF8-174CA37ADD21}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {6152D284-A720-3556-A60A-7C13C89205AD}.Release|x64.ActiveCfg = Release|x64 + {6152D284-A720-3556-A60A-7C13C89205AD}.Release|x64.Build.0 = Release|x64 + {6152D284-A720-3556-A60A-7C13C89205AD}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {6152D284-A720-3556-A60A-7C13C89205AD}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {4049FF1D-8A65-3021-B550-0DE0E63F9577}.Release|x64.ActiveCfg = Release|x64 + {4049FF1D-8A65-3021-B550-0DE0E63F9577}.Release|x64.Build.0 = Release|x64 + {4049FF1D-8A65-3021-B550-0DE0E63F9577}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {4049FF1D-8A65-3021-B550-0DE0E63F9577}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {8CE562EE-798E-3C1B-975C-F49C6B5C84ED}.Release|x64.ActiveCfg = Release|x64 + {8CE562EE-798E-3C1B-975C-F49C6B5C84ED}.Release|x64.Build.0 = Release|x64 + {8CE562EE-798E-3C1B-975C-F49C6B5C84ED}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {8CE562EE-798E-3C1B-975C-F49C6B5C84ED}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {961FD68A-49A7-3F16-9F96-16AC8236D3A3}.Release|x64.ActiveCfg = Release|x64 + {961FD68A-49A7-3F16-9F96-16AC8236D3A3}.Release|x64.Build.0 = Release|x64 + {961FD68A-49A7-3F16-9F96-16AC8236D3A3}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {961FD68A-49A7-3F16-9F96-16AC8236D3A3}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {D3C67352-8290-3C4E-9F23-93DDE051AA37}.Release|x64.ActiveCfg = Release|x64 + {D3C67352-8290-3C4E-9F23-93DDE051AA37}.Release|x64.Build.0 = Release|x64 + {D3C67352-8290-3C4E-9F23-93DDE051AA37}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {D3C67352-8290-3C4E-9F23-93DDE051AA37}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {A0486456-80E4-3492-940E-6652FF2B45B9}.Release|x64.ActiveCfg = Release|x64 + {A0486456-80E4-3492-940E-6652FF2B45B9}.Release|x64.Build.0 = Release|x64 + {A0486456-80E4-3492-940E-6652FF2B45B9}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {A0486456-80E4-3492-940E-6652FF2B45B9}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {386966C3-DC46-3936-AD44-35E2470C6A28}.Release|x64.ActiveCfg = Release|x64 + {386966C3-DC46-3936-AD44-35E2470C6A28}.Release|x64.Build.0 = Release|x64 + {386966C3-DC46-3936-AD44-35E2470C6A28}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {386966C3-DC46-3936-AD44-35E2470C6A28}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {02D9B109-1602-3567-80C0-3BF354675829}.Release|x64.ActiveCfg = Release|x64 + {02D9B109-1602-3567-80C0-3BF354675829}.Release|x64.Build.0 = Release|x64 + {02D9B109-1602-3567-80C0-3BF354675829}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {02D9B109-1602-3567-80C0-3BF354675829}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA}.Release|x64.ActiveCfg = Release|x64 + {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA}.Release|x64.Build.0 = Release|x64 + {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515}.Release|x64.ActiveCfg = Release|x64 + {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515}.Release|x64.Build.0 = Release|x64 + {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {76B00654-E15A-3E4F-8C41-DDC63A14246A}.Release|x64.ActiveCfg = Release|x64 + {76B00654-E15A-3E4F-8C41-DDC63A14246A}.Release|x64.Build.0 = Release|x64 + {76B00654-E15A-3E4F-8C41-DDC63A14246A}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {76B00654-E15A-3E4F-8C41-DDC63A14246A}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {D7DF31C2-3247-31BA-A745-DF4095334504}.Release|x64.ActiveCfg = Release|x64 + {D7DF31C2-3247-31BA-A745-DF4095334504}.Release|x64.Build.0 = Release|x64 + {D7DF31C2-3247-31BA-A745-DF4095334504}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {D7DF31C2-3247-31BA-A745-DF4095334504}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204}.Release|x64.ActiveCfg = Release|x64 + {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204}.Release|x64.Build.0 = Release|x64 + {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5}.Release|x64.ActiveCfg = Release|x64 + {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5}.Release|x64.Build.0 = Release|x64 + {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB}.Release|x64.ActiveCfg = Release|x64 + {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB}.Release|x64.Build.0 = Release|x64 + {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {39BD79E1-6088-33F3-AD4A-74F0E0EE785C}.Release|x64.ActiveCfg = Release|x64 + {39BD79E1-6088-33F3-AD4A-74F0E0EE785C}.Release|x64.Build.0 = Release|x64 + {39BD79E1-6088-33F3-AD4A-74F0E0EE785C}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {39BD79E1-6088-33F3-AD4A-74F0E0EE785C}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {BAABB124-4999-3462-AF35-16DB3C974D7C}.Release|x64.ActiveCfg = Release|x64 + {BAABB124-4999-3462-AF35-16DB3C974D7C}.Release|x64.Build.0 = Release|x64 + {BAABB124-4999-3462-AF35-16DB3C974D7C}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {BAABB124-4999-3462-AF35-16DB3C974D7C}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {6F451C91-A082-3981-83D5-65844ED16BDA}.Release|x64.ActiveCfg = Release|x64 + {6F451C91-A082-3981-83D5-65844ED16BDA}.Release|x64.Build.0 = Release|x64 + {6F451C91-A082-3981-83D5-65844ED16BDA}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {6F451C91-A082-3981-83D5-65844ED16BDA}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80}.Release|x64.ActiveCfg = Release|x64 + {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80}.Release|x64.Build.0 = Release|x64 + {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {AB8FA0F9-1482-31F8-87E2-E3C7BB178053}.Release|x64.ActiveCfg = Release|x64 + {AB8FA0F9-1482-31F8-87E2-E3C7BB178053}.Release|x64.Build.0 = Release|x64 + {AB8FA0F9-1482-31F8-87E2-E3C7BB178053}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {AB8FA0F9-1482-31F8-87E2-E3C7BB178053}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212}.Release|x64.ActiveCfg = Release|x64 + {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212}.Release|x64.Build.0 = Release|x64 + {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20}.Release|x64.ActiveCfg = Release|x64 + {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20}.Release|x64.Build.0 = Release|x64 + {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {5347E62F-7AEB-3B7C-B480-161A35974C9E}.Release|x64.ActiveCfg = Release|x64 + {5347E62F-7AEB-3B7C-B480-161A35974C9E}.Release|x64.Build.0 = Release|x64 + {5347E62F-7AEB-3B7C-B480-161A35974C9E}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {5347E62F-7AEB-3B7C-B480-161A35974C9E}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62}.Release|x64.ActiveCfg = Release|x64 + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62}.Release|x64.Build.0 = Release|x64 + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {136AD85C-398C-329A-84AC-AD4481963950}.Release|x64.ActiveCfg = Release|x64 + {136AD85C-398C-329A-84AC-AD4481963950}.Release|x64.Build.0 = Release|x64 + {136AD85C-398C-329A-84AC-AD4481963950}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {136AD85C-398C-329A-84AC-AD4481963950}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {8DB90A0E-6076-3C07-B890-7E5E886009EC}.Release|x64.ActiveCfg = Release|x64 + {8DB90A0E-6076-3C07-B890-7E5E886009EC}.Release|x64.Build.0 = Release|x64 + {8DB90A0E-6076-3C07-B890-7E5E886009EC}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {8DB90A0E-6076-3C07-B890-7E5E886009EC}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {111D1A41-5C7F-397A-A62C-B19B0AEB044B}.Release|x64.ActiveCfg = Release|x64 + {111D1A41-5C7F-397A-A62C-B19B0AEB044B}.Release|x64.Build.0 = Release|x64 + {111D1A41-5C7F-397A-A62C-B19B0AEB044B}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {111D1A41-5C7F-397A-A62C-B19B0AEB044B}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {78DBE964-AC8C-3264-903B-2B102B46D476}.Release|x64.ActiveCfg = Release|x64 + {78DBE964-AC8C-3264-903B-2B102B46D476}.Release|x64.Build.0 = Release|x64 + {78DBE964-AC8C-3264-903B-2B102B46D476}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {78DBE964-AC8C-3264-903B-2B102B46D476}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7}.Release|x64.ActiveCfg = Release|x64 + {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7}.Release|x64.Build.0 = Release|x64 + {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {19F34DB6-1C4F-36FD-A7A8-8E5077651209}.Release|x64.ActiveCfg = Release|x64 + {19F34DB6-1C4F-36FD-A7A8-8E5077651209}.Release|x64.Build.0 = Release|x64 + {19F34DB6-1C4F-36FD-A7A8-8E5077651209}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {19F34DB6-1C4F-36FD-A7A8-8E5077651209}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {5DC5A20B-821C-3008-A247-B08677276F56}.Release|x64.ActiveCfg = Release|x64 + {5DC5A20B-821C-3008-A247-B08677276F56}.Release|x64.Build.0 = Release|x64 + {5DC5A20B-821C-3008-A247-B08677276F56}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {5DC5A20B-821C-3008-A247-B08677276F56}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {D3A6760C-34FD-3EE2-B9CC-24647168DC6A}.Release|x64.ActiveCfg = Release|x64 + {D3A6760C-34FD-3EE2-B9CC-24647168DC6A}.Release|x64.Build.0 = Release|x64 + {D3A6760C-34FD-3EE2-B9CC-24647168DC6A}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {D3A6760C-34FD-3EE2-B9CC-24647168DC6A}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {AFC95A6A-BDBB-35E2-9381-253284E1112D}.Release|x64.ActiveCfg = Release|x64 + {AFC95A6A-BDBB-35E2-9381-253284E1112D}.Release|x64.Build.0 = Release|x64 + {AFC95A6A-BDBB-35E2-9381-253284E1112D}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {AFC95A6A-BDBB-35E2-9381-253284E1112D}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {24F97336-D35B-3FBA-BEF8-64B2D5845D3F}.Release|x64.ActiveCfg = Release|x64 + {24F97336-D35B-3FBA-BEF8-64B2D5845D3F}.Release|x64.Build.0 = Release|x64 + {24F97336-D35B-3FBA-BEF8-64B2D5845D3F}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {24F97336-D35B-3FBA-BEF8-64B2D5845D3F}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {86289ECD-3E29-3E01-93B2-829B5666A809}.Release|x64.ActiveCfg = Release|x64 + {86289ECD-3E29-3E01-93B2-829B5666A809}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {0AED7AC4-8C48-3205-AF43-3D536A60D815}.Release|x64.ActiveCfg = Release|x64 + {0AED7AC4-8C48-3205-AF43-3D536A60D815}.Release|x64.Build.0 = Release|x64 + {0AED7AC4-8C48-3205-AF43-3D536A60D815}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {0AED7AC4-8C48-3205-AF43-3D536A60D815}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96}.Release|x64.ActiveCfg = Release|x64 + {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96}.Release|x64.Build.0 = Release|x64 + {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {BA32E800-D5FA-3F4E-B91B-763CD4FE389C}.Release|x64.ActiveCfg = Release|x64 + {BA32E800-D5FA-3F4E-B91B-763CD4FE389C}.Release|x64.Build.0 = Release|x64 + {BA32E800-D5FA-3F4E-B91B-763CD4FE389C}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {BA32E800-D5FA-3F4E-B91B-763CD4FE389C}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7}.Release|x64.ActiveCfg = Release|x64 + {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7}.Release|x64.Build.0 = Release|x64 + {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {47842A81-7497-313E-B466-C60AE89334CB}.Release|x64.ActiveCfg = Release|x64 + {47842A81-7497-313E-B466-C60AE89334CB}.Release|x64.Build.0 = Release|x64 + {47842A81-7497-313E-B466-C60AE89334CB}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {47842A81-7497-313E-B466-C60AE89334CB}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {25303A98-8EE4-3355-8C68-CFA8B4116EF0}.Release|x64.ActiveCfg = Release|x64 + {25303A98-8EE4-3355-8C68-CFA8B4116EF0}.Release|x64.Build.0 = Release|x64 + {25303A98-8EE4-3355-8C68-CFA8B4116EF0}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {25303A98-8EE4-3355-8C68-CFA8B4116EF0}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {A80E6C37-1E31-3DDC-A4FE-B21553E580DB}.Release|x64.ActiveCfg = Release|x64 + {A80E6C37-1E31-3DDC-A4FE-B21553E580DB}.Release|x64.Build.0 = Release|x64 + {A80E6C37-1E31-3DDC-A4FE-B21553E580DB}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {A80E6C37-1E31-3DDC-A4FE-B21553E580DB}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {F2136CA7-D3F2-3A3E-8D32-FE5A5E55E1EE}.Release|x64.ActiveCfg = Release|x64 + {F2136CA7-D3F2-3A3E-8D32-FE5A5E55E1EE}.Release|x64.Build.0 = Release|x64 + {F2136CA7-D3F2-3A3E-8D32-FE5A5E55E1EE}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {F2136CA7-D3F2-3A3E-8D32-FE5A5E55E1EE}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {0AE42C92-16FF-3E69-B468-111535996095}.Release|x64.ActiveCfg = Release|x64 + {0AE42C92-16FF-3E69-B468-111535996095}.Release|x64.Build.0 = Release|x64 + {0AE42C92-16FF-3E69-B468-111535996095}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {0AE42C92-16FF-3E69-B468-111535996095}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {69CB13F6-E5DD-3AC2-AF47-08A452514760}.Release|x64.ActiveCfg = Release|x64 + {69CB13F6-E5DD-3AC2-AF47-08A452514760}.Release|x64.Build.0 = Release|x64 + {69CB13F6-E5DD-3AC2-AF47-08A452514760}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {69CB13F6-E5DD-3AC2-AF47-08A452514760}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {A294D3AD-91C7-32D9-B361-D399900843E5}.Release|x64.ActiveCfg = Release|x64 + {A294D3AD-91C7-32D9-B361-D399900843E5}.Release|x64.Build.0 = Release|x64 + {A294D3AD-91C7-32D9-B361-D399900843E5}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {A294D3AD-91C7-32D9-B361-D399900843E5}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {73A57BCF-3487-35DC-B448-FD328037CDF3}.Release|x64.ActiveCfg = Release|x64 + {73A57BCF-3487-35DC-B448-FD328037CDF3}.Release|x64.Build.0 = Release|x64 + {73A57BCF-3487-35DC-B448-FD328037CDF3}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {73A57BCF-3487-35DC-B448-FD328037CDF3}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA}.Release|x64.ActiveCfg = Release|x64 + {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA}.Release|x64.Build.0 = Release|x64 + {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD}.Release|x64.ActiveCfg = Release|x64 + {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD}.Release|x64.Build.0 = Release|x64 + {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {CD9E5829-45CA-308D-9ED7-C2C38139D69E}.Release|x64.ActiveCfg = Release|x64 + {CD9E5829-45CA-308D-9ED7-C2C38139D69E}.Release|x64.Build.0 = Release|x64 + {CD9E5829-45CA-308D-9ED7-C2C38139D69E}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {CD9E5829-45CA-308D-9ED7-C2C38139D69E}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B}.Release|x64.ActiveCfg = Release|x64 + {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B}.Release|x64.Build.0 = Release|x64 + {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {21572060-CA28-355B-A508-5675A4A2FAB3}.Release|x64.ActiveCfg = Release|x64 + {21572060-CA28-355B-A508-5675A4A2FAB3}.Release|x64.Build.0 = Release|x64 + {21572060-CA28-355B-A508-5675A4A2FAB3}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {21572060-CA28-355B-A508-5675A4A2FAB3}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {F1206958-458C-3F18-84D9-3EEE07B73862}.Release|x64.ActiveCfg = Release|x64 + {F1206958-458C-3F18-84D9-3EEE07B73862}.Release|x64.Build.0 = Release|x64 + {F1206958-458C-3F18-84D9-3EEE07B73862}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {F1206958-458C-3F18-84D9-3EEE07B73862}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32}.Release|x64.ActiveCfg = Release|x64 + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32}.Release|x64.Build.0 = Release|x64 + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3}.Release|x64.ActiveCfg = Release|x64 + {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3}.Release|x64.Build.0 = Release|x64 + {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {419297F2-C54C-3C4B-91AB-7B119D09E730}.Release|x64.ActiveCfg = Release|x64 + {419297F2-C54C-3C4B-91AB-7B119D09E730}.Release|x64.Build.0 = Release|x64 + {419297F2-C54C-3C4B-91AB-7B119D09E730}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {419297F2-C54C-3C4B-91AB-7B119D09E730}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {8F94C6B8-42CE-329C-B6A9-3E13C04350CF}.Release|x64.ActiveCfg = Release|x64 + {8F94C6B8-42CE-329C-B6A9-3E13C04350CF}.Release|x64.Build.0 = Release|x64 + {8F94C6B8-42CE-329C-B6A9-3E13C04350CF}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {8F94C6B8-42CE-329C-B6A9-3E13C04350CF}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {7FF993D7-A6D3-37CC-AE69-2906ECD89E03}.Release|x64.ActiveCfg = Release|x64 + {7FF993D7-A6D3-37CC-AE69-2906ECD89E03}.Release|x64.Build.0 = Release|x64 + {7FF993D7-A6D3-37CC-AE69-2906ECD89E03}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {7FF993D7-A6D3-37CC-AE69-2906ECD89E03}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {374D8559-CBBF-3F24-BEE1-8B11A184B7F8}.Release|x64.ActiveCfg = Release|x64 + {374D8559-CBBF-3F24-BEE1-8B11A184B7F8}.Release|x64.Build.0 = Release|x64 + {374D8559-CBBF-3F24-BEE1-8B11A184B7F8}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {374D8559-CBBF-3F24-BEE1-8B11A184B7F8}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {4E197970-E280-3B04-AD7D-E52DC551E902}.Release|x64.ActiveCfg = Release|x64 + {4E197970-E280-3B04-AD7D-E52DC551E902}.Release|x64.Build.0 = Release|x64 + {4E197970-E280-3B04-AD7D-E52DC551E902}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {4E197970-E280-3B04-AD7D-E52DC551E902}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {4E6C8BD2-2434-31DC-BDD2-8788D2547403}.Release|x64.ActiveCfg = Release|x64 + {4E6C8BD2-2434-31DC-BDD2-8788D2547403}.Release|x64.Build.0 = Release|x64 + {4E6C8BD2-2434-31DC-BDD2-8788D2547403}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {4E6C8BD2-2434-31DC-BDD2-8788D2547403}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {37629CF4-1B6A-312A-89B7-CF11593F51A4}.Release|x64.ActiveCfg = Release|x64 + {37629CF4-1B6A-312A-89B7-CF11593F51A4}.Release|x64.Build.0 = Release|x64 + {37629CF4-1B6A-312A-89B7-CF11593F51A4}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {37629CF4-1B6A-312A-89B7-CF11593F51A4}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {8D195538-264D-3C39-AB9A-653DA8A6F56E}.Release|x64.ActiveCfg = Release|x64 + {8D195538-264D-3C39-AB9A-653DA8A6F56E}.Release|x64.Build.0 = Release|x64 + {8D195538-264D-3C39-AB9A-653DA8A6F56E}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {8D195538-264D-3C39-AB9A-653DA8A6F56E}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {9302E53B-085D-3577-A3E2-EB51A51D084C}.Release|x64.ActiveCfg = Release|x64 + {9302E53B-085D-3577-A3E2-EB51A51D084C}.Release|x64.Build.0 = Release|x64 + {9302E53B-085D-3577-A3E2-EB51A51D084C}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {9302E53B-085D-3577-A3E2-EB51A51D084C}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {1C17AAAA-9E99-32C1-9FF6-E88C054A2646}.Release|x64.ActiveCfg = Release|x64 + {1C17AAAA-9E99-32C1-9FF6-E88C054A2646}.Release|x64.Build.0 = Release|x64 + {1C17AAAA-9E99-32C1-9FF6-E88C054A2646}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {1C17AAAA-9E99-32C1-9FF6-E88C054A2646}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7}.Release|x64.ActiveCfg = Release|x64 + {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7}.Release|x64.Build.0 = Release|x64 + {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {E36DC20B-AE7A-3449-B308-C932B9DD4290}.Release|x64.ActiveCfg = Release|x64 + {E36DC20B-AE7A-3449-B308-C932B9DD4290}.Release|x64.Build.0 = Release|x64 + {E36DC20B-AE7A-3449-B308-C932B9DD4290}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {E36DC20B-AE7A-3449-B308-C932B9DD4290}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121}.Release|x64.ActiveCfg = Release|x64 + {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121}.Release|x64.Build.0 = Release|x64 + {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3}.Release|x64.ActiveCfg = Release|x64 + {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3}.Release|x64.Build.0 = Release|x64 + {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2}.Release|x64.ActiveCfg = Release|x64 + {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2}.Release|x64.Build.0 = Release|x64 + {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {C080819A-4275-3D2A-84DE-7C21EDAE2BBA}.Release|x64.ActiveCfg = Release|x64 + {C080819A-4275-3D2A-84DE-7C21EDAE2BBA}.Release|x64.Build.0 = Release|x64 + {C080819A-4275-3D2A-84DE-7C21EDAE2BBA}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {C080819A-4275-3D2A-84DE-7C21EDAE2BBA}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F}.Release|x64.ActiveCfg = Release|x64 + {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F}.Release|x64.Build.0 = Release|x64 + {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {6579683E-AB4A-3B40-A145-1952047837D2}.Release|x64.ActiveCfg = Release|x64 + {6579683E-AB4A-3B40-A145-1952047837D2}.Release|x64.Build.0 = Release|x64 + {6579683E-AB4A-3B40-A145-1952047837D2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {6579683E-AB4A-3B40-A145-1952047837D2}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {2FE38842-BDF7-3A93-9D06-1C9814B6B11B}.Release|x64.ActiveCfg = Release|x64 + {2FE38842-BDF7-3A93-9D06-1C9814B6B11B}.Release|x64.Build.0 = Release|x64 + {2FE38842-BDF7-3A93-9D06-1C9814B6B11B}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {2FE38842-BDF7-3A93-9D06-1C9814B6B11B}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C}.Release|x64.ActiveCfg = Release|x64 + {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C}.Release|x64.Build.0 = Release|x64 + {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4}.Release|x64.ActiveCfg = Release|x64 + {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4}.Release|x64.Build.0 = Release|x64 + {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {C884F97B-4C5C-3457-AF4D-BB4C05670662}.Release|x64.ActiveCfg = Release|x64 + {C884F97B-4C5C-3457-AF4D-BB4C05670662}.Release|x64.Build.0 = Release|x64 + {C884F97B-4C5C-3457-AF4D-BB4C05670662}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {C884F97B-4C5C-3457-AF4D-BB4C05670662}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D}.Release|x64.ActiveCfg = Release|x64 + {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D}.Release|x64.Build.0 = Release|x64 + {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {796760C3-71E4-32AD-A9C4-B984AFC97106}.Release|x64.ActiveCfg = Release|x64 + {796760C3-71E4-32AD-A9C4-B984AFC97106}.Release|x64.Build.0 = Release|x64 + {796760C3-71E4-32AD-A9C4-B984AFC97106}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {796760C3-71E4-32AD-A9C4-B984AFC97106}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {8054C91C-5221-314F-96C5-8FEC57BBEED1}.Release|x64.ActiveCfg = Release|x64 + {8054C91C-5221-314F-96C5-8FEC57BBEED1}.Release|x64.Build.0 = Release|x64 + {8054C91C-5221-314F-96C5-8FEC57BBEED1}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {8054C91C-5221-314F-96C5-8FEC57BBEED1}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {744BEFA7-C931-39C8-A1B4-1A9A88901B1D}.Release|x64.ActiveCfg = Release|x64 + {744BEFA7-C931-39C8-A1B4-1A9A88901B1D}.Release|x64.Build.0 = Release|x64 + {744BEFA7-C931-39C8-A1B4-1A9A88901B1D}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {744BEFA7-C931-39C8-A1B4-1A9A88901B1D}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + {3B9F42C2-0060-329E-B123-7DEF1E91617D}.Release|x64.ActiveCfg = Release|x64 + {3B9F42C2-0060-329E-B123-7DEF1E91617D}.Release|x64.Build.0 = Release|x64 + {3B9F42C2-0060-329E-B123-7DEF1E91617D}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 + {3B9F42C2-0060-329E-B123-7DEF1E91617D}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {40EA859D-1269-313F-A313-AA32B87C8935} = {28D9607F-8931-375B-9273-9E20D2F6347F} + {07ADCCA9-7D16-3F3D-AB6F-1BDA83D4E943} = {28D9607F-8931-375B-9273-9E20D2F6347F} + {F20BBC06-43D9-375A-A5A9-E717817CF640} = {28D9607F-8931-375B-9273-9E20D2F6347F} + {45641EBC-7207-3F33-8572-930EA9BD4C6B} = {28D9607F-8931-375B-9273-9E20D2F6347F} + {31277AF8-10A2-3494-B123-559421E08C26} = {28D9607F-8931-375B-9273-9E20D2F6347F} + {D7C70C41-500D-35F8-A992-1351DDDCDA0C} = {068CE9B1-E6DD-3864-AC38-93F10EF27A17} + {474F765F-548E-3AAB-8D5B-66CF364BE4B2} = {068CE9B1-E6DD-3864-AC38-93F10EF27A17} + {246A2207-0D75-3894-8E4E-785344D8ABF4} = {068CE9B1-E6DD-3864-AC38-93F10EF27A17} + {93318712-66D7-31F1-B537-E229E2FD9AF0} = {068CE9B1-E6DD-3864-AC38-93F10EF27A17} + {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} + {8DB90A0E-6076-3C07-B890-7E5E886009EC} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} + {111D1A41-5C7F-397A-A62C-B19B0AEB044B} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} + {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} + {19F34DB6-1C4F-36FD-A7A8-8E5077651209} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} + {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} + {8D195538-264D-3C39-AB9A-653DA8A6F56E} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} + {9302E53B-085D-3577-A3E2-EB51A51D084C} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} + {1C17AAAA-9E99-32C1-9FF6-E88C054A2646} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} + {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} + {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA} = {25456F37-E968-3921-80E5-1C0E141753B6} + {14C478D6-D815-378F-81D1-B53BBD6CBE9A} = {25456F37-E968-3921-80E5-1C0E141753B6} + {3A2B0858-3B92-3598-B679-2A437C1286E0} = {25456F37-E968-3921-80E5-1C0E141753B6} + {27ECEB5C-C396-32BE-93E6-4D4801692191} = {25456F37-E968-3921-80E5-1C0E141753B6} + {5F63101D-75FE-31BE-9D25-6641FBBFF959} = {25456F37-E968-3921-80E5-1C0E141753B6} + {7D67495E-4C92-37BE-BEF8-174CA37ADD21} = {25456F37-E968-3921-80E5-1C0E141753B6} + {6152D284-A720-3556-A60A-7C13C89205AD} = {25456F37-E968-3921-80E5-1C0E141753B6} + {4049FF1D-8A65-3021-B550-0DE0E63F9577} = {25456F37-E968-3921-80E5-1C0E141753B6} + {8CE562EE-798E-3C1B-975C-F49C6B5C84ED} = {25456F37-E968-3921-80E5-1C0E141753B6} + {961FD68A-49A7-3F16-9F96-16AC8236D3A3} = {25456F37-E968-3921-80E5-1C0E141753B6} + {D3C67352-8290-3C4E-9F23-93DDE051AA37} = {25456F37-E968-3921-80E5-1C0E141753B6} + {386966C3-DC46-3936-AD44-35E2470C6A28} = {25456F37-E968-3921-80E5-1C0E141753B6} + {02D9B109-1602-3567-80C0-3BF354675829} = {25456F37-E968-3921-80E5-1C0E141753B6} + {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA} = {25456F37-E968-3921-80E5-1C0E141753B6} + {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515} = {25456F37-E968-3921-80E5-1C0E141753B6} + {76B00654-E15A-3E4F-8C41-DDC63A14246A} = {25456F37-E968-3921-80E5-1C0E141753B6} + {D7DF31C2-3247-31BA-A745-DF4095334504} = {25456F37-E968-3921-80E5-1C0E141753B6} + {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204} = {25456F37-E968-3921-80E5-1C0E141753B6} + {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5} = {25456F37-E968-3921-80E5-1C0E141753B6} + {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB} = {25456F37-E968-3921-80E5-1C0E141753B6} + {BAABB124-4999-3462-AF35-16DB3C974D7C} = {25456F37-E968-3921-80E5-1C0E141753B6} + {6F451C91-A082-3981-83D5-65844ED16BDA} = {25456F37-E968-3921-80E5-1C0E141753B6} + {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80} = {25456F37-E968-3921-80E5-1C0E141753B6} + {AB8FA0F9-1482-31F8-87E2-E3C7BB178053} = {25456F37-E968-3921-80E5-1C0E141753B6} + {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212} = {25456F37-E968-3921-80E5-1C0E141753B6} + {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20} = {25456F37-E968-3921-80E5-1C0E141753B6} + {5347E62F-7AEB-3B7C-B480-161A35974C9E} = {25456F37-E968-3921-80E5-1C0E141753B6} + {D3A6760C-34FD-3EE2-B9CC-24647168DC6A} = {25456F37-E968-3921-80E5-1C0E141753B6} + {AFC95A6A-BDBB-35E2-9381-253284E1112D} = {25456F37-E968-3921-80E5-1C0E141753B6} + {0AED7AC4-8C48-3205-AF43-3D536A60D815} = {25456F37-E968-3921-80E5-1C0E141753B6} + {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96} = {25456F37-E968-3921-80E5-1C0E141753B6} + {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7} = {25456F37-E968-3921-80E5-1C0E141753B6} + {47842A81-7497-313E-B466-C60AE89334CB} = {25456F37-E968-3921-80E5-1C0E141753B6} + {25303A98-8EE4-3355-8C68-CFA8B4116EF0} = {25456F37-E968-3921-80E5-1C0E141753B6} + {A80E6C37-1E31-3DDC-A4FE-B21553E580DB} = {25456F37-E968-3921-80E5-1C0E141753B6} + {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA} = {25456F37-E968-3921-80E5-1C0E141753B6} + {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD} = {25456F37-E968-3921-80E5-1C0E141753B6} + {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B} = {25456F37-E968-3921-80E5-1C0E141753B6} + {21572060-CA28-355B-A508-5675A4A2FAB3} = {25456F37-E968-3921-80E5-1C0E141753B6} + {F1206958-458C-3F18-84D9-3EEE07B73862} = {25456F37-E968-3921-80E5-1C0E141753B6} + {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3} = {25456F37-E968-3921-80E5-1C0E141753B6} + {419297F2-C54C-3C4B-91AB-7B119D09E730} = {25456F37-E968-3921-80E5-1C0E141753B6} + {8F94C6B8-42CE-329C-B6A9-3E13C04350CF} = {25456F37-E968-3921-80E5-1C0E141753B6} + {7FF993D7-A6D3-37CC-AE69-2906ECD89E03} = {25456F37-E968-3921-80E5-1C0E141753B6} + {374D8559-CBBF-3F24-BEE1-8B11A184B7F8} = {25456F37-E968-3921-80E5-1C0E141753B6} + {4E197970-E280-3B04-AD7D-E52DC551E902} = {25456F37-E968-3921-80E5-1C0E141753B6} + {4E6C8BD2-2434-31DC-BDD2-8788D2547403} = {25456F37-E968-3921-80E5-1C0E141753B6} + {37629CF4-1B6A-312A-89B7-CF11593F51A4} = {25456F37-E968-3921-80E5-1C0E141753B6} + {E36DC20B-AE7A-3449-B308-C932B9DD4290} = {25456F37-E968-3921-80E5-1C0E141753B6} + {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121} = {25456F37-E968-3921-80E5-1C0E141753B6} + {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3} = {25456F37-E968-3921-80E5-1C0E141753B6} + {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2} = {25456F37-E968-3921-80E5-1C0E141753B6} + {C080819A-4275-3D2A-84DE-7C21EDAE2BBA} = {25456F37-E968-3921-80E5-1C0E141753B6} + {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F} = {25456F37-E968-3921-80E5-1C0E141753B6} + {6579683E-AB4A-3B40-A145-1952047837D2} = {25456F37-E968-3921-80E5-1C0E141753B6} + {2FE38842-BDF7-3A93-9D06-1C9814B6B11B} = {25456F37-E968-3921-80E5-1C0E141753B6} + {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C} = {25456F37-E968-3921-80E5-1C0E141753B6} + {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4} = {25456F37-E968-3921-80E5-1C0E141753B6} + {C884F97B-4C5C-3457-AF4D-BB4C05670662} = {25456F37-E968-3921-80E5-1C0E141753B6} + {8054C91C-5221-314F-96C5-8FEC57BBEED1} = {25456F37-E968-3921-80E5-1C0E141753B6} + {3B9F42C2-0060-329E-B123-7DEF1E91617D} = {25456F37-E968-3921-80E5-1C0E141753B6} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {97344453-ACD8-397F-8291-084632F194C3} + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/library/modules/Textures.cpp b/library/modules/Textures.cpp index 016a2193e..8b485a3a6 100644 --- a/library/modules/Textures.cpp +++ b/library/modules/Textures.cpp @@ -197,11 +197,8 @@ TexposHandle Textures::loadTexture(SDL_Surface* surface, bool reserved) { std::vector Textures::loadTileset(const std::string& file, int tile_px_w, int tile_px_h, bool reserved) { - if (!enabler) - return std::vector{}; if (g_tileset_to_handles.contains(file)) return g_tileset_to_handles[file]; - if (!enabler) return std::vector{}; From 7e4fe646054f99a3baeb4992fdc4875c19a7fb06 Mon Sep 17 00:00:00 2001 From: shevernitskiy Date: Sun, 24 Sep 2023 13:10:48 +0300 Subject: [PATCH 026/100] oops --- build/ALL_BUILD.vcxproj | 533 --------- build/ALL_BUILD.vcxproj.filters | 8 - build/Continuous.vcxproj | 145 --- build/Continuous.vcxproj.filters | 17 - build/Experimental.vcxproj | 145 --- build/Experimental.vcxproj.filters | 17 - build/INSTALL.vcxproj | 126 --- build/INSTALL.vcxproj.filters | 13 - build/Nightly.vcxproj | 145 --- build/Nightly.vcxproj.filters | 17 - build/NightlyMemoryCheck.vcxproj | 145 --- build/NightlyMemoryCheck.vcxproj.filters | 17 - build/PACKAGE.vcxproj | 132 --- build/PACKAGE.vcxproj.filters | 13 - build/RUN_TESTS.vcxproj | 118 -- build/RUN_TESTS.vcxproj.filters | 13 - build/ZERO_CHECK.vcxproj | 105 -- build/ZERO_CHECK.vcxproj.filters | 13 - build/dfhack.sln | 1295 ---------------------- 19 files changed, 3017 deletions(-) delete mode 100644 build/ALL_BUILD.vcxproj delete mode 100644 build/ALL_BUILD.vcxproj.filters delete mode 100644 build/Continuous.vcxproj delete mode 100644 build/Continuous.vcxproj.filters delete mode 100644 build/Experimental.vcxproj delete mode 100644 build/Experimental.vcxproj.filters delete mode 100644 build/INSTALL.vcxproj delete mode 100644 build/INSTALL.vcxproj.filters delete mode 100644 build/Nightly.vcxproj delete mode 100644 build/Nightly.vcxproj.filters delete mode 100644 build/NightlyMemoryCheck.vcxproj delete mode 100644 build/NightlyMemoryCheck.vcxproj.filters delete mode 100644 build/PACKAGE.vcxproj delete mode 100644 build/PACKAGE.vcxproj.filters delete mode 100644 build/RUN_TESTS.vcxproj delete mode 100644 build/RUN_TESTS.vcxproj.filters delete mode 100644 build/ZERO_CHECK.vcxproj delete mode 100644 build/ZERO_CHECK.vcxproj.filters delete mode 100644 build/dfhack.sln diff --git a/build/ALL_BUILD.vcxproj b/build/ALL_BUILD.vcxproj deleted file mode 100644 index eefddc34c..000000000 --- a/build/ALL_BUILD.vcxproj +++ /dev/null @@ -1,533 +0,0 @@ - - - - x64 - - - - Release - x64 - - - RelWithDebInfo - x64 - - - - {40EA859D-1269-313F-A313-AA32B87C8935} - 10.0.22000.0 - Win32Proj - x64 - ALL_BUILD - NoUpgrade - - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - - - - E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - Always - Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp - false - Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp - false - - - - - - - {31277AF8-10A2-3494-B123-559421E08C26} - ZERO_CHECK - false - Never - - - {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA} - 3dveins - false - Never - - - {14C478D6-D815-378F-81D1-B53BBD6CBE9A} - RemoteFortressReader - false - Never - - - {3A2B0858-3B92-3598-B679-2A437C1286E0} - add-spatter - false - Never - - - {27ECEB5C-C396-32BE-93E6-4D4801692191} - autobutcher - false - Never - - - {5F63101D-75FE-31BE-9D25-6641FBBFF959} - autochop - false - Never - - - {7D67495E-4C92-37BE-BEF8-174CA37ADD21} - autoclothing - false - Never - - - {6152D284-A720-3556-A60A-7C13C89205AD} - autodump - false - Never - - - {4049FF1D-8A65-3021-B550-0DE0E63F9577} - autofarm - false - Never - - - {8CE562EE-798E-3C1B-975C-F49C6B5C84ED} - autolabor - false - Never - - - {961FD68A-49A7-3F16-9F96-16AC8236D3A3} - autonestbox - false - Never - - - {D3C67352-8290-3C4E-9F23-93DDE051AA37} - autoslab - false - Never - - - {A0486456-80E4-3492-940E-6652FF2B45B9} - binpatch - - - {386966C3-DC46-3936-AD44-35E2470C6A28} - blueprint - false - Never - - - {02D9B109-1602-3567-80C0-3BF354675829} - buildingplan - false - Never - - - {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA} - changeitem - false - Never - - - {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515} - changelayer - false - Never - - - {76B00654-E15A-3E4F-8C41-DDC63A14246A} - changevein - false - Never - - - {D7DF31C2-3247-31BA-A745-DF4095334504} - channel-safely - false - Never - - - {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204} - cleanconst - false - Never - - - {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5} - cleaners - false - Never - - - {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB} - cleanowned - false - Never - - - {BAABB124-4999-3462-AF35-16DB3C974D7C} - confirm - false - Never - - - {6F451C91-A082-3981-83D5-65844ED16BDA} - createitem - false - Never - - - {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80} - cursecheck - false - Never - - - {AB8FA0F9-1482-31F8-87E2-E3C7BB178053} - cxxrandom - false - Never - - - {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212} - debug - false - Never - - - {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20} - deramp - false - Never - - - {5347E62F-7AEB-3B7C-B480-161A35974C9E} - design - false - Never - - - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - dfhack - - - {136AD85C-398C-329A-84AC-AD4481963950} - dfhack-client - - - {78DBE964-AC8C-3264-903B-2B102B46D476} - dfhack-run - - - {5DC5A20B-821C-3008-A247-B08677276F56} - dfhack-version - - - {D3A6760C-34FD-3EE2-B9CC-24647168DC6A} - dig - false - Never - - - {AFC95A6A-BDBB-35E2-9381-253284E1112D} - dig-now - false - Never - - - {0AED7AC4-8C48-3205-AF43-3D536A60D815} - dwarfvet - false - Never - - - {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96} - eventful - false - Never - - - {BA32E800-D5FA-3F4E-B91B-763CD4FE389C} - expat - - - {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7} - fastdwarf - false - Never - - - {47842A81-7497-313E-B466-C60AE89334CB} - faststart - false - Never - - - {25303A98-8EE4-3355-8C68-CFA8B4116EF0} - filltraffic - false - Never - - - {A80E6C37-1E31-3DDC-A4FE-B21553E580DB} - flows - false - Never - - - {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA} - getplants - false - Never - - - {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD} - hotkeys - false - Never - - - {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B} - lair - false - Never - - - {21572060-CA28-355B-A508-5675A4A2FAB3} - liquids - false - Never - - - {F1206958-458C-3F18-84D9-3EEE07B73862} - logistics - false - Never - - - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - lua - - - {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3} - luasocket - false - Never - - - {419297F2-C54C-3C4B-91AB-7B119D09E730} - misery - false - Never - - - {8F94C6B8-42CE-329C-B6A9-3E13C04350CF} - nestboxes - false - Never - - - {7FF993D7-A6D3-37CC-AE69-2906ECD89E03} - orders - false - Never - - - {374D8559-CBBF-3F24-BEE1-8B11A184B7F8} - overlay - false - Never - - - {4E197970-E280-3B04-AD7D-E52DC551E902} - pathable - false - Never - - - {4E6C8BD2-2434-31DC-BDD2-8788D2547403} - probe - false - Never - - - {37629CF4-1B6A-312A-89B7-CF11593F51A4} - prospector - false - Never - - - {8D195538-264D-3C39-AB9A-653DA8A6F56E} - protobuf - - - {9302E53B-085D-3577-A3E2-EB51A51D084C} - protobuf-lite - - - {1C17AAAA-9E99-32C1-9FF6-E88C054A2646} - protoc - - - {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} - protoc-bin - - - {E36DC20B-AE7A-3449-B308-C932B9DD4290} - regrass - false - Never - - - {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121} - reveal - false - Never - - - {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3} - seedwatch - false - Never - - - {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2} - showmood - false - Never - - - {C080819A-4275-3D2A-84DE-7C21EDAE2BBA} - sort - false - Never - - - {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F} - stockpiles - false - Never - - - {6579683E-AB4A-3B40-A145-1952047837D2} - strangemood - false - Never - - - {2FE38842-BDF7-3A93-9D06-1C9814B6B11B} - tailor - false - Never - - - {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C} - tiletypes - false - Never - - - {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4} - work-now - false - Never - - - {C884F97B-4C5C-3457-AF4D-BB4C05670662} - workflow - false - Never - - - {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D} - xlsxio_read_STATIC - - - {796760C3-71E4-32AD-A9C4-B984AFC97106} - xlsxio_write_STATIC - - - {8054C91C-5221-314F-96C5-8FEC57BBEED1} - xlsxreader - false - Never - - - {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} - zip - - - {3B9F42C2-0060-329E-B123-7DEF1E91617D} - zone - false - Never - - - - - - \ No newline at end of file diff --git a/build/ALL_BUILD.vcxproj.filters b/build/ALL_BUILD.vcxproj.filters deleted file mode 100644 index a80df604e..000000000 --- a/build/ALL_BUILD.vcxproj.filters +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/build/Continuous.vcxproj b/build/Continuous.vcxproj deleted file mode 100644 index 63a376abe..000000000 --- a/build/Continuous.vcxproj +++ /dev/null @@ -1,145 +0,0 @@ - - - - x64 - - - - Release - x64 - - - RelWithDebInfo - x64 - - - - {D7C70C41-500D-35F8-A992-1351DDDCDA0C} - 10.0.22000.0 - Win32Proj - x64 - Continuous - NoUpgrade - - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - - - - E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - - setlocal -"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D Continuous -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\Continuous - false - false - - setlocal -"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D Continuous -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\Continuous - false - false - - - - - Always - Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp - false - Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp - false - - - - - - - - - {31277AF8-10A2-3494-B123-559421E08C26} - ZERO_CHECK - false - Never - - - - - - \ No newline at end of file diff --git a/build/Continuous.vcxproj.filters b/build/Continuous.vcxproj.filters deleted file mode 100644 index a7314dd00..000000000 --- a/build/Continuous.vcxproj.filters +++ /dev/null @@ -1,17 +0,0 @@ - - - - - CMake Rules - - - - - - - - - {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} - - - diff --git a/build/Experimental.vcxproj b/build/Experimental.vcxproj deleted file mode 100644 index 396a79388..000000000 --- a/build/Experimental.vcxproj +++ /dev/null @@ -1,145 +0,0 @@ - - - - x64 - - - - Release - x64 - - - RelWithDebInfo - x64 - - - - {474F765F-548E-3AAB-8D5B-66CF364BE4B2} - 10.0.22000.0 - Win32Proj - x64 - Experimental - NoUpgrade - - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - - - - E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - - setlocal -"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D Experimental -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\Experimental - false - false - - setlocal -"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D Experimental -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\Experimental - false - false - - - - - Always - Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp - false - Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp - false - - - - - - - - - {31277AF8-10A2-3494-B123-559421E08C26} - ZERO_CHECK - false - Never - - - - - - \ No newline at end of file diff --git a/build/Experimental.vcxproj.filters b/build/Experimental.vcxproj.filters deleted file mode 100644 index 8622c11e8..000000000 --- a/build/Experimental.vcxproj.filters +++ /dev/null @@ -1,17 +0,0 @@ - - - - - CMake Rules - - - - - - - - - {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} - - - diff --git a/build/INSTALL.vcxproj b/build/INSTALL.vcxproj deleted file mode 100644 index fcc0e5dd0..000000000 --- a/build/INSTALL.vcxproj +++ /dev/null @@ -1,126 +0,0 @@ - - - - x64 - - - - Release - x64 - - - RelWithDebInfo - x64 - - - - {07ADCCA9-7D16-3F3D-AB6F-1BDA83D4E943} - 10.0.22000.0 - Win32Proj - x64 - INSTALL - NoUpgrade - - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - - - - Always - - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -DBUILD_TYPE=$(Configuration) -P cmake_install.cmake -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - - - - - Always - - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -DBUILD_TYPE=$(Configuration) -P cmake_install.cmake -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - - - - - - setlocal -cd . -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\INSTALL_force - false - false - - setlocal -cd . -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\INSTALL_force - false - false - - - - - {31277AF8-10A2-3494-B123-559421E08C26} - ZERO_CHECK - false - Never - - - {40EA859D-1269-313F-A313-AA32B87C8935} - ALL_BUILD - false - Never - - - - - - \ No newline at end of file diff --git a/build/INSTALL.vcxproj.filters b/build/INSTALL.vcxproj.filters deleted file mode 100644 index 1d3583629..000000000 --- a/build/INSTALL.vcxproj.filters +++ /dev/null @@ -1,13 +0,0 @@ - - - - - CMake Rules - - - - - {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} - - - diff --git a/build/Nightly.vcxproj b/build/Nightly.vcxproj deleted file mode 100644 index ff59ec296..000000000 --- a/build/Nightly.vcxproj +++ /dev/null @@ -1,145 +0,0 @@ - - - - x64 - - - - Release - x64 - - - RelWithDebInfo - x64 - - - - {246A2207-0D75-3894-8E4E-785344D8ABF4} - 10.0.22000.0 - Win32Proj - x64 - Nightly - NoUpgrade - - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - - - - E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - - setlocal -"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D Nightly -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\Nightly - false - false - - setlocal -"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D Nightly -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\Nightly - false - false - - - - - Always - Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp - false - Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp - false - - - - - - - - - {31277AF8-10A2-3494-B123-559421E08C26} - ZERO_CHECK - false - Never - - - - - - \ No newline at end of file diff --git a/build/Nightly.vcxproj.filters b/build/Nightly.vcxproj.filters deleted file mode 100644 index cf94569d8..000000000 --- a/build/Nightly.vcxproj.filters +++ /dev/null @@ -1,17 +0,0 @@ - - - - - CMake Rules - - - - - - - - - {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} - - - diff --git a/build/NightlyMemoryCheck.vcxproj b/build/NightlyMemoryCheck.vcxproj deleted file mode 100644 index 260a79e55..000000000 --- a/build/NightlyMemoryCheck.vcxproj +++ /dev/null @@ -1,145 +0,0 @@ - - - - x64 - - - - Release - x64 - - - RelWithDebInfo - x64 - - - - {93318712-66D7-31F1-B537-E229E2FD9AF0} - 10.0.22000.0 - Win32Proj - x64 - NightlyMemoryCheck - NoUpgrade - - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - - - - E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - - setlocal -"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D NightlyMemoryCheck -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\NightlyMemoryCheck - false - false - - setlocal -"C:\Program Files\CMake\bin\ctest.exe" -C $(Configuration) -D NightlyMemoryCheck -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\NightlyMemoryCheck - false - false - - - - - Always - Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp - false - Building Custom Rule E:/programming/cplus/dfhack/CMakeLists.txt - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-file E:/programming/cplus/dfhack/build/CMakeFiles/generate.stamp -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;%(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp - false - - - - - - - - - {31277AF8-10A2-3494-B123-559421E08C26} - ZERO_CHECK - false - Never - - - - - - \ No newline at end of file diff --git a/build/NightlyMemoryCheck.vcxproj.filters b/build/NightlyMemoryCheck.vcxproj.filters deleted file mode 100644 index a4b92fdc7..000000000 --- a/build/NightlyMemoryCheck.vcxproj.filters +++ /dev/null @@ -1,17 +0,0 @@ - - - - - CMake Rules - - - - - - - - - {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} - - - diff --git a/build/PACKAGE.vcxproj b/build/PACKAGE.vcxproj deleted file mode 100644 index 67c1c92dc..000000000 --- a/build/PACKAGE.vcxproj +++ /dev/null @@ -1,132 +0,0 @@ - - - - x64 - - - - Release - x64 - - - RelWithDebInfo - x64 - - - - {F20BBC06-43D9-375A-A5A9-E717817CF640} - 10.0.22000.0 - Win32Proj - x64 - PACKAGE - NoUpgrade - - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - - - - - setlocal -cd E:\programming\cplus\dfhack\build -if %errorlevel% neq 0 goto :cmEnd -E: -if %errorlevel% neq 0 goto :cmEnd -"C:\Program Files\CMake\bin\cpack.exe" -C $(Configuration) --config ./CPackConfig.cmake -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - - - - - - setlocal -cd E:\programming\cplus\dfhack\build -if %errorlevel% neq 0 goto :cmEnd -E: -if %errorlevel% neq 0 goto :cmEnd -"C:\Program Files\CMake\bin\cpack.exe" -C $(Configuration) --config ./CPackConfig.cmake -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - - - - - - setlocal -cd . -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\PACKAGE_force - false - false - - setlocal -cd . -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\PACKAGE_force - false - false - - - - - {31277AF8-10A2-3494-B123-559421E08C26} - ZERO_CHECK - false - Never - - - {40EA859D-1269-313F-A313-AA32B87C8935} - ALL_BUILD - false - Never - - - - - - \ No newline at end of file diff --git a/build/PACKAGE.vcxproj.filters b/build/PACKAGE.vcxproj.filters deleted file mode 100644 index 8c2a983bf..000000000 --- a/build/PACKAGE.vcxproj.filters +++ /dev/null @@ -1,13 +0,0 @@ - - - - - CMake Rules - - - - - {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} - - - diff --git a/build/RUN_TESTS.vcxproj b/build/RUN_TESTS.vcxproj deleted file mode 100644 index 197f2baf3..000000000 --- a/build/RUN_TESTS.vcxproj +++ /dev/null @@ -1,118 +0,0 @@ - - - - x64 - - - - Release - x64 - - - RelWithDebInfo - x64 - - - - {45641EBC-7207-3F33-8572-930EA9BD4C6B} - 10.0.22000.0 - Win32Proj - x64 - RUN_TESTS - NoUpgrade - - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - - - - - setlocal -"C:\Program Files\CMake\bin\ctest.exe" --force-new-ctest-process -C $(Configuration) -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - - - - - - setlocal -"C:\Program Files\CMake\bin\ctest.exe" --force-new-ctest-process -C $(Configuration) -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - - - - - - setlocal -cd . -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\RUN_TESTS_force - false - false - - setlocal -cd . -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - %(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\RUN_TESTS_force - false - false - - - - - {31277AF8-10A2-3494-B123-559421E08C26} - ZERO_CHECK - false - Never - - - - - - \ No newline at end of file diff --git a/build/RUN_TESTS.vcxproj.filters b/build/RUN_TESTS.vcxproj.filters deleted file mode 100644 index 9b4c15921..000000000 --- a/build/RUN_TESTS.vcxproj.filters +++ /dev/null @@ -1,13 +0,0 @@ - - - - - CMake Rules - - - - - {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} - - - diff --git a/build/ZERO_CHECK.vcxproj b/build/ZERO_CHECK.vcxproj deleted file mode 100644 index c71698f74..000000000 --- a/build/ZERO_CHECK.vcxproj +++ /dev/null @@ -1,105 +0,0 @@ - - - - x64 - - - - Release - x64 - - - RelWithDebInfo - x64 - - - - {31277AF8-10A2-3494-B123-559421E08C26} - 10.0.22000.0 - Win32Proj - x64 - ZERO_CHECK - NoUpgrade - - - - Utility - MultiByte - v143 - - - Utility - MultiByte - v143 - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - $(Platform)\$(Configuration)\$(ProjectName)\ - $(Platform)\$(Configuration)\$(ProjectName)\ - - - - E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - E:\programming\cplus\dfhack\depends\zlib\include;E:\programming\cplus\dfhack\depends\SDL2\SDL2-2.26.2\include;E:\programming\cplus\dfhack\depends\protobuf;E:\programming\cplus\dfhack\depends\lua\include;E:\programming\cplus\dfhack\depends\md5;E:\programming\cplus\dfhack\depends\tinyxml;E:\programming\cplus\dfhack\depends\lodepng;E:\programming\cplus\dfhack\depends\tthread;E:\programming\cplus\dfhack\depends\clsocket\src;E:\programming\cplus\dfhack\depends\xlsxio\include;%(AdditionalIncludeDirectories) - $(ProjectDir)/$(IntDir) - %(Filename).h - %(Filename).tlb - %(Filename)_i.c - %(Filename)_p.c - - - - - Always - Checking Build System - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-list CMakeFiles/generate.stamp.list --vs-solution-file E:/programming/cplus/dfhack/build/dfhack.sln -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.22\Modules\BasicConfigVersion-AnyNewerVersion.cmake.in;C:\Program Files\CMake\share\cmake-3.22\Modules\BasicConfigVersion-SameMajorVersion.cmake.in;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCheckCompilerFlagCommonPatterns.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakePackageConfigHelpers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCCompilerFlag.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCSourceRuns.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSymbolExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckFunctionExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckIncludeFile.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckIncludeFileCXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckIncludeFiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckLibraryExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckStructHasMember.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckSymbolExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckTypeSize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\GNUInstallDirs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckCompilerFlag.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceRuns.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\TestBigEndian.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\WriteBasicConfigVersionFile.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\CMakeLists.txt;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;E:\programming\cplus\dfhack\data\CMakeLists.txt;E:\programming\cplus\dfhack\depends\CMakeLists.txt;E:\programming\cplus\dfhack\depends\clsocket\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\cmake\JoinPaths.cmake;E:\programming\cplus\dfhack\depends\jsoncpp-sub\include\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\include\PreventInBuildInstalls.cmake;E:\programming\cplus\dfhack\depends\jsoncpp-sub\include\PreventInSourceBuilds.cmake;E:\programming\cplus\dfhack\depends\jsoncpp-sub\pkg-config\jsoncpp.pc.in;E:\programming\cplus\dfhack\depends\jsoncpp-sub\src\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\src\lib_json\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\version.in;E:\programming\cplus\dfhack\depends\libexpat\expat\CMakeLists.txt;E:\programming\cplus\dfhack\depends\libexpat\expat\Changes;E:\programming\cplus\dfhack\depends\libexpat\expat\ConfigureChecks.cmake;E:\programming\cplus\dfhack\depends\libexpat\expat\cmake\expat-config.cmake.in;E:\programming\cplus\dfhack\depends\libexpat\expat\expat_config.h.cmake;E:\programming\cplus\dfhack\depends\libzip\CMakeLists.txt;E:\programming\cplus\dfhack\depends\libzip\cmake-config.h.in;E:\programming\cplus\dfhack\depends\libzip\cmake-zipconf.h.in;E:\programming\cplus\dfhack\depends\libzip\cmake\Dist.cmake;E:\programming\cplus\dfhack\depends\libzip\lib\CMakeLists.txt;E:\programming\cplus\dfhack\depends\libzip\libzip-config.cmake.in;E:\programming\cplus\dfhack\depends\libzip\libzip.pc.in;E:\programming\cplus\dfhack\depends\libzip\regress\nihtest.conf.in;E:\programming\cplus\dfhack\depends\libzip\regress\runtest.in;E:\programming\cplus\dfhack\depends\lodepng\CMakeLists.txt;E:\programming\cplus\dfhack\depends\lua\CMakeLists.txt;E:\programming\cplus\dfhack\depends\md5\CMakeLists.txt;E:\programming\cplus\dfhack\depends\protobuf\CMakeLists.txt;E:\programming\cplus\dfhack\depends\protobuf\config.h.in;E:\programming\cplus\dfhack\depends\tinyxml\CMakeLists.txt;E:\programming\cplus\dfhack\depends\tthread\CMakeLists.txt;E:\programming\cplus\dfhack\depends\xlsxio\CMakeLists.txt;E:\programming\cplus\dfhack\library\CMakeLists.txt;E:\programming\cplus\dfhack\library\git-describe.cmake.in;E:\programming\cplus\dfhack\library\xml\CMakeLists.txt;E:\programming\cplus\dfhack\library\xml\tools\CMakeLists.txt;E:\programming\cplus\dfhack\package\windows\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\Plugins.cmake;E:\programming\cplus\dfhack\plugins\autolabor\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\buildingplan\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\channel-safely\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\external\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\remotefortressreader\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\stockpiles\CMakeLists.txt;E:\programming\cplus\dfhack\scripts\CMakeLists.txt;%(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\lodepng\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\lua\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\md5\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\protobuf\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\tinyxml\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\tthread\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\src\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\src\lib_json\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\include\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\clsocket\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\libexpat\expat\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\libzip\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\libzip\lib\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\xlsxio\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\library\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\library\xml\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\library\xml\tools\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\autolabor\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\buildingplan\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\channel-safely\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\remotefortressreader\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\stockpiles\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\external\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\data\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\scripts\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\package\windows\CMakeFiles\generate.stamp - false - Checking Build System - setlocal -"C:\Program Files\CMake\bin\cmake.exe" -SE:/programming/cplus/dfhack -BE:/programming/cplus/dfhack/build --check-stamp-list CMakeFiles/generate.stamp.list --vs-solution-file E:/programming/cplus/dfhack/build/dfhack.sln -if %errorlevel% neq 0 goto :cmEnd -:cmEnd -endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone -:cmErrorLevel -exit /b %1 -:cmDone -if %errorlevel% neq 0 goto :VCEnd - C:\Program Files\CMake\share\cmake-3.22\Modules\BasicConfigVersion-AnyNewerVersion.cmake.in;C:\Program Files\CMake\share\cmake-3.22\Modules\BasicConfigVersion-SameMajorVersion.cmake.in;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCXXInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCheckCompilerFlagCommonPatterns.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeCommonLanguageInclude.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeGenericSystem.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeInitializeConfigs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeLanguageInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakePackageConfigHelpers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeRCInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInformation.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CMakeSystemSpecificInitialize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPack.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CPackComponent.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTest.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestTargets.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CTestUseLaunchers.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCCompilerFlag.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCSourceRuns.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckCXXSymbolExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckFunctionExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckIncludeFile.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckIncludeFileCXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckIncludeFiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckLibraryExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckStructHasMember.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckSymbolExists.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\CheckTypeSize.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\CMakeCommonCompilerMacros.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Compiler\MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\DartConfiguration.tcl.in;C:\Program Files\CMake\share\cmake-3.22\Modules\FindCygwin.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindGit.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindMsys.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageHandleStandardArgs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPackageMessage.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindPerl.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\FindZLIB.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\GNUInstallDirs.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckCompilerFlag.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceCompiles.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Internal\CheckSourceRuns.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-C.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC-CXX.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows-MSVC.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\Windows.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\Platform\WindowsPaths.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\SelectLibraryConfigurations.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\TestBigEndian.cmake;C:\Program Files\CMake\share\cmake-3.22\Modules\WriteBasicConfigVersionFile.cmake;C:\Program Files\CMake\share\cmake-3.22\Templates\CPackConfig.cmake.in;E:\programming\cplus\dfhack\CMake\DownloadFile.cmake;E:\programming\cplus\dfhack\CMakeLists.txt;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeCXXCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeRCCompiler.cmake;E:\programming\cplus\dfhack\build\CMakeFiles\3.22.1\CMakeSystem.cmake;E:\programming\cplus\dfhack\data\CMakeLists.txt;E:\programming\cplus\dfhack\depends\CMakeLists.txt;E:\programming\cplus\dfhack\depends\clsocket\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\cmake\JoinPaths.cmake;E:\programming\cplus\dfhack\depends\jsoncpp-sub\include\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\include\PreventInBuildInstalls.cmake;E:\programming\cplus\dfhack\depends\jsoncpp-sub\include\PreventInSourceBuilds.cmake;E:\programming\cplus\dfhack\depends\jsoncpp-sub\pkg-config\jsoncpp.pc.in;E:\programming\cplus\dfhack\depends\jsoncpp-sub\src\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\src\lib_json\CMakeLists.txt;E:\programming\cplus\dfhack\depends\jsoncpp-sub\version.in;E:\programming\cplus\dfhack\depends\libexpat\expat\CMakeLists.txt;E:\programming\cplus\dfhack\depends\libexpat\expat\Changes;E:\programming\cplus\dfhack\depends\libexpat\expat\ConfigureChecks.cmake;E:\programming\cplus\dfhack\depends\libexpat\expat\cmake\expat-config.cmake.in;E:\programming\cplus\dfhack\depends\libexpat\expat\expat_config.h.cmake;E:\programming\cplus\dfhack\depends\libzip\CMakeLists.txt;E:\programming\cplus\dfhack\depends\libzip\cmake-config.h.in;E:\programming\cplus\dfhack\depends\libzip\cmake-zipconf.h.in;E:\programming\cplus\dfhack\depends\libzip\cmake\Dist.cmake;E:\programming\cplus\dfhack\depends\libzip\lib\CMakeLists.txt;E:\programming\cplus\dfhack\depends\libzip\libzip-config.cmake.in;E:\programming\cplus\dfhack\depends\libzip\libzip.pc.in;E:\programming\cplus\dfhack\depends\libzip\regress\nihtest.conf.in;E:\programming\cplus\dfhack\depends\libzip\regress\runtest.in;E:\programming\cplus\dfhack\depends\lodepng\CMakeLists.txt;E:\programming\cplus\dfhack\depends\lua\CMakeLists.txt;E:\programming\cplus\dfhack\depends\md5\CMakeLists.txt;E:\programming\cplus\dfhack\depends\protobuf\CMakeLists.txt;E:\programming\cplus\dfhack\depends\protobuf\config.h.in;E:\programming\cplus\dfhack\depends\tinyxml\CMakeLists.txt;E:\programming\cplus\dfhack\depends\tthread\CMakeLists.txt;E:\programming\cplus\dfhack\depends\xlsxio\CMakeLists.txt;E:\programming\cplus\dfhack\library\CMakeLists.txt;E:\programming\cplus\dfhack\library\git-describe.cmake.in;E:\programming\cplus\dfhack\library\xml\CMakeLists.txt;E:\programming\cplus\dfhack\library\xml\tools\CMakeLists.txt;E:\programming\cplus\dfhack\package\windows\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\Plugins.cmake;E:\programming\cplus\dfhack\plugins\autolabor\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\buildingplan\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\channel-safely\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\external\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\remotefortressreader\CMakeLists.txt;E:\programming\cplus\dfhack\plugins\stockpiles\CMakeLists.txt;E:\programming\cplus\dfhack\scripts\CMakeLists.txt;%(AdditionalInputs) - E:\programming\cplus\dfhack\build\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\lodepng\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\lua\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\md5\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\protobuf\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\tinyxml\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\tthread\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\src\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\src\lib_json\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\jsoncpp-sub\include\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\clsocket\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\libexpat\expat\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\libzip\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\libzip\lib\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\depends\xlsxio\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\library\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\library\xml\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\library\xml\tools\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\autolabor\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\buildingplan\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\channel-safely\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\remotefortressreader\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\stockpiles\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\plugins\external\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\data\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\scripts\CMakeFiles\generate.stamp;E:\programming\cplus\dfhack\build\package\windows\CMakeFiles\generate.stamp - false - - - - - - - - - - \ No newline at end of file diff --git a/build/ZERO_CHECK.vcxproj.filters b/build/ZERO_CHECK.vcxproj.filters deleted file mode 100644 index 2c79705a5..000000000 --- a/build/ZERO_CHECK.vcxproj.filters +++ /dev/null @@ -1,13 +0,0 @@ - - - - - CMake Rules - - - - - {AFAB5955-3E8F-3466-BF00-9CBF4FE558A1} - - - diff --git a/build/dfhack.sln b/build/dfhack.sln deleted file mode 100644 index 83a916c71..000000000 --- a/build/dfhack.sln +++ /dev/null @@ -1,1295 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CMakePredefinedTargets", "CMakePredefinedTargets", "{28D9607F-8931-375B-9273-9E20D2F6347F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CTestDashboardTargets", "CTestDashboardTargets", "{068CE9B1-E6DD-3864-AC38-93F10EF27A17}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Depends", "Depends", "{D8D353CC-1D2C-3A83-8EA0-A85D6CF14722}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{25456F37-E968-3921-80E5-1C0E141753B6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ALL_BUILD", "ALL_BUILD.vcxproj", "{40EA859D-1269-313F-A313-AA32B87C8935}" - ProjectSection(ProjectDependencies) = postProject - {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA} = {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA} - {14C478D6-D815-378F-81D1-B53BBD6CBE9A} = {14C478D6-D815-378F-81D1-B53BBD6CBE9A} - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {3A2B0858-3B92-3598-B679-2A437C1286E0} = {3A2B0858-3B92-3598-B679-2A437C1286E0} - {27ECEB5C-C396-32BE-93E6-4D4801692191} = {27ECEB5C-C396-32BE-93E6-4D4801692191} - {5F63101D-75FE-31BE-9D25-6641FBBFF959} = {5F63101D-75FE-31BE-9D25-6641FBBFF959} - {7D67495E-4C92-37BE-BEF8-174CA37ADD21} = {7D67495E-4C92-37BE-BEF8-174CA37ADD21} - {6152D284-A720-3556-A60A-7C13C89205AD} = {6152D284-A720-3556-A60A-7C13C89205AD} - {4049FF1D-8A65-3021-B550-0DE0E63F9577} = {4049FF1D-8A65-3021-B550-0DE0E63F9577} - {8CE562EE-798E-3C1B-975C-F49C6B5C84ED} = {8CE562EE-798E-3C1B-975C-F49C6B5C84ED} - {961FD68A-49A7-3F16-9F96-16AC8236D3A3} = {961FD68A-49A7-3F16-9F96-16AC8236D3A3} - {D3C67352-8290-3C4E-9F23-93DDE051AA37} = {D3C67352-8290-3C4E-9F23-93DDE051AA37} - {A0486456-80E4-3492-940E-6652FF2B45B9} = {A0486456-80E4-3492-940E-6652FF2B45B9} - {386966C3-DC46-3936-AD44-35E2470C6A28} = {386966C3-DC46-3936-AD44-35E2470C6A28} - {02D9B109-1602-3567-80C0-3BF354675829} = {02D9B109-1602-3567-80C0-3BF354675829} - {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA} = {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA} - {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515} = {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515} - {76B00654-E15A-3E4F-8C41-DDC63A14246A} = {76B00654-E15A-3E4F-8C41-DDC63A14246A} - {D7DF31C2-3247-31BA-A745-DF4095334504} = {D7DF31C2-3247-31BA-A745-DF4095334504} - {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204} = {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204} - {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5} = {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5} - {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB} = {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB} - {BAABB124-4999-3462-AF35-16DB3C974D7C} = {BAABB124-4999-3462-AF35-16DB3C974D7C} - {6F451C91-A082-3981-83D5-65844ED16BDA} = {6F451C91-A082-3981-83D5-65844ED16BDA} - {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80} = {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80} - {AB8FA0F9-1482-31F8-87E2-E3C7BB178053} = {AB8FA0F9-1482-31F8-87E2-E3C7BB178053} - {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212} = {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212} - {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20} = {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20} - {5347E62F-7AEB-3B7C-B480-161A35974C9E} = {5347E62F-7AEB-3B7C-B480-161A35974C9E} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {136AD85C-398C-329A-84AC-AD4481963950} = {136AD85C-398C-329A-84AC-AD4481963950} - {78DBE964-AC8C-3264-903B-2B102B46D476} = {78DBE964-AC8C-3264-903B-2B102B46D476} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {D3A6760C-34FD-3EE2-B9CC-24647168DC6A} = {D3A6760C-34FD-3EE2-B9CC-24647168DC6A} - {AFC95A6A-BDBB-35E2-9381-253284E1112D} = {AFC95A6A-BDBB-35E2-9381-253284E1112D} - {0AED7AC4-8C48-3205-AF43-3D536A60D815} = {0AED7AC4-8C48-3205-AF43-3D536A60D815} - {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96} = {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96} - {BA32E800-D5FA-3F4E-B91B-763CD4FE389C} = {BA32E800-D5FA-3F4E-B91B-763CD4FE389C} - {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7} = {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7} - {47842A81-7497-313E-B466-C60AE89334CB} = {47842A81-7497-313E-B466-C60AE89334CB} - {25303A98-8EE4-3355-8C68-CFA8B4116EF0} = {25303A98-8EE4-3355-8C68-CFA8B4116EF0} - {A80E6C37-1E31-3DDC-A4FE-B21553E580DB} = {A80E6C37-1E31-3DDC-A4FE-B21553E580DB} - {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA} = {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA} - {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD} = {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD} - {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B} = {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B} - {21572060-CA28-355B-A508-5675A4A2FAB3} = {21572060-CA28-355B-A508-5675A4A2FAB3} - {F1206958-458C-3F18-84D9-3EEE07B73862} = {F1206958-458C-3F18-84D9-3EEE07B73862} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3} = {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3} - {419297F2-C54C-3C4B-91AB-7B119D09E730} = {419297F2-C54C-3C4B-91AB-7B119D09E730} - {8F94C6B8-42CE-329C-B6A9-3E13C04350CF} = {8F94C6B8-42CE-329C-B6A9-3E13C04350CF} - {7FF993D7-A6D3-37CC-AE69-2906ECD89E03} = {7FF993D7-A6D3-37CC-AE69-2906ECD89E03} - {374D8559-CBBF-3F24-BEE1-8B11A184B7F8} = {374D8559-CBBF-3F24-BEE1-8B11A184B7F8} - {4E197970-E280-3B04-AD7D-E52DC551E902} = {4E197970-E280-3B04-AD7D-E52DC551E902} - {4E6C8BD2-2434-31DC-BDD2-8788D2547403} = {4E6C8BD2-2434-31DC-BDD2-8788D2547403} - {37629CF4-1B6A-312A-89B7-CF11593F51A4} = {37629CF4-1B6A-312A-89B7-CF11593F51A4} - {8D195538-264D-3C39-AB9A-653DA8A6F56E} = {8D195538-264D-3C39-AB9A-653DA8A6F56E} - {9302E53B-085D-3577-A3E2-EB51A51D084C} = {9302E53B-085D-3577-A3E2-EB51A51D084C} - {1C17AAAA-9E99-32C1-9FF6-E88C054A2646} = {1C17AAAA-9E99-32C1-9FF6-E88C054A2646} - {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} = {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} - {E36DC20B-AE7A-3449-B308-C932B9DD4290} = {E36DC20B-AE7A-3449-B308-C932B9DD4290} - {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121} = {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121} - {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3} = {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3} - {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2} = {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2} - {C080819A-4275-3D2A-84DE-7C21EDAE2BBA} = {C080819A-4275-3D2A-84DE-7C21EDAE2BBA} - {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F} = {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F} - {6579683E-AB4A-3B40-A145-1952047837D2} = {6579683E-AB4A-3B40-A145-1952047837D2} - {2FE38842-BDF7-3A93-9D06-1C9814B6B11B} = {2FE38842-BDF7-3A93-9D06-1C9814B6B11B} - {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C} = {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C} - {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4} = {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4} - {C884F97B-4C5C-3457-AF4D-BB4C05670662} = {C884F97B-4C5C-3457-AF4D-BB4C05670662} - {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D} = {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D} - {796760C3-71E4-32AD-A9C4-B984AFC97106} = {796760C3-71E4-32AD-A9C4-B984AFC97106} - {8054C91C-5221-314F-96C5-8FEC57BBEED1} = {8054C91C-5221-314F-96C5-8FEC57BBEED1} - {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} = {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} - {3B9F42C2-0060-329E-B123-7DEF1E91617D} = {3B9F42C2-0060-329E-B123-7DEF1E91617D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3dveins", "plugins\3dveins.vcxproj", "{B10F83BD-77CE-3CC2-A4D0-2B412287DFEA}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Continuous", "Continuous.vcxproj", "{D7C70C41-500D-35F8-A992-1351DDDCDA0C}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Experimental", "Experimental.vcxproj", "{474F765F-548E-3AAB-8D5B-66CF364BE4B2}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "INSTALL", "INSTALL.vcxproj", "{07ADCCA9-7D16-3F3D-AB6F-1BDA83D4E943}" - ProjectSection(ProjectDependencies) = postProject - {40EA859D-1269-313F-A313-AA32B87C8935} = {40EA859D-1269-313F-A313-AA32B87C8935} - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Nightly", "Nightly.vcxproj", "{246A2207-0D75-3894-8E4E-785344D8ABF4}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NightlyMemoryCheck", "NightlyMemoryCheck.vcxproj", "{93318712-66D7-31F1-B537-E229E2FD9AF0}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PACKAGE", "PACKAGE.vcxproj", "{F20BBC06-43D9-375A-A5A9-E717817CF640}" - ProjectSection(ProjectDependencies) = postProject - {40EA859D-1269-313F-A313-AA32B87C8935} = {40EA859D-1269-313F-A313-AA32B87C8935} - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RUN_TESTS", "RUN_TESTS.vcxproj", "{45641EBC-7207-3F33-8572-930EA9BD4C6B}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RemoteFortressReader", "plugins\remotefortressreader\RemoteFortressReader.vcxproj", "{14C478D6-D815-378F-81D1-B53BBD6CBE9A}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {69CB13F6-E5DD-3AC2-AF47-08A452514760} = {69CB13F6-E5DD-3AC2-AF47-08A452514760} - {9302E53B-085D-3577-A3E2-EB51A51D084C} = {9302E53B-085D-3577-A3E2-EB51A51D084C} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZERO_CHECK", "ZERO_CHECK.vcxproj", "{31277AF8-10A2-3494-B123-559421E08C26}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "add-spatter", "plugins\add-spatter.vcxproj", "{3A2B0858-3B92-3598-B679-2A437C1286E0}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autobutcher", "plugins\autobutcher.vcxproj", "{27ECEB5C-C396-32BE-93E6-4D4801692191}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autochop", "plugins\autochop.vcxproj", "{5F63101D-75FE-31BE-9D25-6641FBBFF959}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autoclothing", "plugins\autoclothing.vcxproj", "{7D67495E-4C92-37BE-BEF8-174CA37ADD21}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autodump", "plugins\autodump.vcxproj", "{6152D284-A720-3556-A60A-7C13C89205AD}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autofarm", "plugins\autofarm.vcxproj", "{4049FF1D-8A65-3021-B550-0DE0E63F9577}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autolabor", "plugins\autolabor\autolabor.vcxproj", "{8CE562EE-798E-3C1B-975C-F49C6B5C84ED}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autonestbox", "plugins\autonestbox.vcxproj", "{961FD68A-49A7-3F16-9F96-16AC8236D3A3}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "autoslab", "plugins\autoslab.vcxproj", "{D3C67352-8290-3C4E-9F23-93DDE051AA37}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "binpatch", "library\binpatch.vcxproj", "{A0486456-80E4-3492-940E-6652FF2B45B9}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {111D1A41-5C7F-397A-A62C-B19B0AEB044B} = {111D1A41-5C7F-397A-A62C-B19B0AEB044B} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blueprint", "plugins\blueprint.vcxproj", "{386966C3-DC46-3936-AD44-35E2470C6A28}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "buildingplan", "plugins\buildingplan\buildingplan.vcxproj", "{02D9B109-1602-3567-80C0-3BF354675829}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "changeitem", "plugins\changeitem.vcxproj", "{B6B32914-FA20-3991-AEDE-3FFA75FDF7DA}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "changelayer", "plugins\changelayer.vcxproj", "{C153A10F-47F2-3FF1-A27D-0CE7AA4B1515}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "changevein", "plugins\changevein.vcxproj", "{76B00654-E15A-3E4F-8C41-DDC63A14246A}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "channel-safely", "plugins\channel-safely\channel-safely.vcxproj", "{D7DF31C2-3247-31BA-A745-DF4095334504}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cleanconst", "plugins\cleanconst.vcxproj", "{2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cleaners", "plugins\cleaners.vcxproj", "{099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cleanowned", "plugins\cleanowned.vcxproj", "{D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "clsocket", "depends\clsocket\clsocket.vcxproj", "{39BD79E1-6088-33F3-AD4A-74F0E0EE785C}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "confirm", "plugins\confirm.vcxproj", "{BAABB124-4999-3462-AF35-16DB3C974D7C}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "createitem", "plugins\createitem.vcxproj", "{6F451C91-A082-3981-83D5-65844ED16BDA}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cursecheck", "plugins\cursecheck.vcxproj", "{C143DDD8-9AB8-368F-ACE4-BA4F7651DA80}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cxxrandom", "plugins\cxxrandom.vcxproj", "{AB8FA0F9-1482-31F8-87E2-E3C7BB178053}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "debug", "plugins\debug.vcxproj", "{CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {CD9E5829-45CA-308D-9ED7-C2C38139D69E} = {CD9E5829-45CA-308D-9ED7-C2C38139D69E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "deramp", "plugins\deramp.vcxproj", "{E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "design", "plugins\design.vcxproj", "{5347E62F-7AEB-3B7C-B480-161A35974C9E}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack", "library\dfhack.vcxproj", "{6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} = {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} - {111D1A41-5C7F-397A-A62C-B19B0AEB044B} = {111D1A41-5C7F-397A-A62C-B19B0AEB044B} - {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7} = {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7} - {19F34DB6-1C4F-36FD-A7A8-8E5077651209} = {19F34DB6-1C4F-36FD-A7A8-8E5077651209} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {F2136CA7-D3F2-3A3E-8D32-FE5A5E55E1EE} = {F2136CA7-D3F2-3A3E-8D32-FE5A5E55E1EE} - {A294D3AD-91C7-32D9-B361-D399900843E5} = {A294D3AD-91C7-32D9-B361-D399900843E5} - {CD9E5829-45CA-308D-9ED7-C2C38139D69E} = {CD9E5829-45CA-308D-9ED7-C2C38139D69E} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - {9302E53B-085D-3577-A3E2-EB51A51D084C} = {9302E53B-085D-3577-A3E2-EB51A51D084C} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack-client", "library\dfhack-client.vcxproj", "{136AD85C-398C-329A-84AC-AD4481963950}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} = {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {CD9E5829-45CA-308D-9ED7-C2C38139D69E} = {CD9E5829-45CA-308D-9ED7-C2C38139D69E} - {9302E53B-085D-3577-A3E2-EB51A51D084C} = {9302E53B-085D-3577-A3E2-EB51A51D084C} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack-lodepng", "depends\lodepng\dfhack-lodepng.vcxproj", "{8DB90A0E-6076-3C07-B890-7E5E886009EC}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack-md5", "depends\md5\dfhack-md5.vcxproj", "{111D1A41-5C7F-397A-A62C-B19B0AEB044B}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack-run", "library\dfhack-run.vcxproj", "{78DBE964-AC8C-3264-903B-2B102B46D476}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} = {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} - {136AD85C-398C-329A-84AC-AD4481963950} = {136AD85C-398C-329A-84AC-AD4481963950} - {CD9E5829-45CA-308D-9ED7-C2C38139D69E} = {CD9E5829-45CA-308D-9ED7-C2C38139D69E} - {9302E53B-085D-3577-A3E2-EB51A51D084C} = {9302E53B-085D-3577-A3E2-EB51A51D084C} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack-tinythread", "depends\tthread\dfhack-tinythread.vcxproj", "{D3A713C3-480C-3DF0-95FA-8B80D95DF8F7}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack-tinyxml", "depends\tinyxml\dfhack-tinyxml.vcxproj", "{19F34DB6-1C4F-36FD-A7A8-8E5077651209}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dfhack-version", "library\dfhack-version.vcxproj", "{5DC5A20B-821C-3008-A247-B08677276F56}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dig", "plugins\dig.vcxproj", "{D3A6760C-34FD-3EE2-B9CC-24647168DC6A}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dig-now", "plugins\dig-now.vcxproj", "{AFC95A6A-BDBB-35E2-9381-253284E1112D}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dist", "depends\libzip\dist.vcxproj", "{24F97336-D35B-3FBA-BEF8-64B2D5845D3F}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "distcheck", "depends\libzip\distcheck.vcxproj", "{86289ECD-3E29-3E01-93B2-829B5666A809}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {24F97336-D35B-3FBA-BEF8-64B2D5845D3F} = {24F97336-D35B-3FBA-BEF8-64B2D5845D3F} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dwarfvet", "plugins\dwarfvet.vcxproj", "{0AED7AC4-8C48-3205-AF43-3D536A60D815}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "eventful", "plugins\eventful.vcxproj", "{D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "expat", "depends\libexpat\expat\expat.vcxproj", "{BA32E800-D5FA-3F4E-B91B-763CD4FE389C}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fastdwarf", "plugins\fastdwarf.vcxproj", "{894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "faststart", "plugins\faststart.vcxproj", "{47842A81-7497-313E-B466-C60AE89334CB}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "filltraffic", "plugins\filltraffic.vcxproj", "{25303A98-8EE4-3355-8C68-CFA8B4116EF0}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flows", "plugins\flows.vcxproj", "{A80E6C37-1E31-3DDC-A4FE-B21553E580DB}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate_headers", "library\generate_headers.vcxproj", "{F2136CA7-D3F2-3A3E-8D32-FE5A5E55E1EE}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate_proto", "plugins\generate_proto.vcxproj", "{0AE42C92-16FF-3E69-B468-111535996095}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} = {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate_proto_RemoteFortressReader", "plugins\remotefortressreader\generate_proto_RemoteFortressReader.vcxproj", "{69CB13F6-E5DD-3AC2-AF47-08A452514760}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} = {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate_proto_core", "library\generate_proto_core.vcxproj", "{A294D3AD-91C7-32D9-B361-D399900843E5}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} = {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate_proto_stockpiles", "plugins\stockpiles\generate_proto_stockpiles.vcxproj", "{73A57BCF-3487-35DC-B448-FD328037CDF3}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} = {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "getplants", "plugins\getplants.vcxproj", "{E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hotkeys", "plugins\hotkeys.vcxproj", "{6F10CAC8-6D9F-357E-B574-5EC901BF4EAD}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jsoncpp_static", "depends\jsoncpp-sub\src\lib_json\jsoncpp_static.vcxproj", "{CD9E5829-45CA-308D-9ED7-C2C38139D69E}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lair", "plugins\lair.vcxproj", "{DA8EE8E6-6AE0-3DA6-AED9-316977621A0B}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liquids", "plugins\liquids.vcxproj", "{21572060-CA28-355B-A508-5675A4A2FAB3}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "logistics", "plugins\logistics.vcxproj", "{F1206958-458C-3F18-84D9-3EEE07B73862}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lua", "depends\lua\lua.vcxproj", "{6CA1FA88-B709-340C-8366-DCE4C1D1FB32}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "luasocket", "plugins\luasocket.vcxproj", "{4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} = {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7} = {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "misery", "plugins\misery.vcxproj", "{419297F2-C54C-3C4B-91AB-7B119D09E730}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nestboxes", "plugins\nestboxes.vcxproj", "{8F94C6B8-42CE-329C-B6A9-3E13C04350CF}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "orders", "plugins\orders.vcxproj", "{7FF993D7-A6D3-37CC-AE69-2906ECD89E03}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {CD9E5829-45CA-308D-9ED7-C2C38139D69E} = {CD9E5829-45CA-308D-9ED7-C2C38139D69E} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "overlay", "plugins\overlay.vcxproj", "{374D8559-CBBF-3F24-BEE1-8B11A184B7F8}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pathable", "plugins\pathable.vcxproj", "{4E197970-E280-3B04-AD7D-E52DC551E902}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "probe", "plugins\probe.vcxproj", "{4E6C8BD2-2434-31DC-BDD2-8788D2547403}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "prospector", "plugins\prospector.vcxproj", "{37629CF4-1B6A-312A-89B7-CF11593F51A4}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "protobuf", "depends\protobuf\protobuf.vcxproj", "{8D195538-264D-3C39-AB9A-653DA8A6F56E}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "protobuf-lite", "depends\protobuf\protobuf-lite.vcxproj", "{9302E53B-085D-3577-A3E2-EB51A51D084C}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "protoc", "depends\protobuf\protoc.vcxproj", "{1C17AAAA-9E99-32C1-9FF6-E88C054A2646}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {8D195538-264D-3C39-AB9A-653DA8A6F56E} = {8D195538-264D-3C39-AB9A-653DA8A6F56E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "protoc-bin", "depends\protobuf\protoc-bin.vcxproj", "{74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {8D195538-264D-3C39-AB9A-653DA8A6F56E} = {8D195538-264D-3C39-AB9A-653DA8A6F56E} - {1C17AAAA-9E99-32C1-9FF6-E88C054A2646} = {1C17AAAA-9E99-32C1-9FF6-E88C054A2646} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "regrass", "plugins\regrass.vcxproj", "{E36DC20B-AE7A-3449-B308-C932B9DD4290}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reveal", "plugins\reveal.vcxproj", "{C831208B-D7C3-3DD6-9F16-0EA8A5FF3121}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "seedwatch", "plugins\seedwatch.vcxproj", "{7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "showmood", "plugins\showmood.vcxproj", "{E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sort", "plugins\sort.vcxproj", "{C080819A-4275-3D2A-84DE-7C21EDAE2BBA}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stockpiles", "plugins\stockpiles\stockpiles.vcxproj", "{7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {73A57BCF-3487-35DC-B448-FD328037CDF3} = {73A57BCF-3487-35DC-B448-FD328037CDF3} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - {9302E53B-085D-3577-A3E2-EB51A51D084C} = {9302E53B-085D-3577-A3E2-EB51A51D084C} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "strangemood", "plugins\strangemood.vcxproj", "{6579683E-AB4A-3B40-A145-1952047837D2}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tailor", "plugins\tailor.vcxproj", "{2FE38842-BDF7-3A93-9D06-1C9814B6B11B}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiletypes", "plugins\tiletypes.vcxproj", "{B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "work-now", "plugins\work-now.vcxproj", "{2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "workflow", "plugins\workflow.vcxproj", "{C884F97B-4C5C-3457-AF4D-BB4C05670662}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xlsxio_read_STATIC", "depends\xlsxio\xlsxio_read_STATIC.vcxproj", "{85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {BA32E800-D5FA-3F4E-B91B-763CD4FE389C} = {BA32E800-D5FA-3F4E-B91B-763CD4FE389C} - {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} = {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xlsxio_write_STATIC", "depends\xlsxio\xlsxio_write_STATIC.vcxproj", "{796760C3-71E4-32AD-A9C4-B984AFC97106}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} = {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xlsxreader", "plugins\xlsxreader.vcxproj", "{8054C91C-5221-314F-96C5-8FEC57BBEED1}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {BA32E800-D5FA-3F4E-B91B-763CD4FE389C} = {BA32E800-D5FA-3F4E-B91B-763CD4FE389C} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D} = {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D} - {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} = {744BEFA7-C931-39C8-A1B4-1A9A88901B1D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zip", "depends\libzip\lib\zip.vcxproj", "{744BEFA7-C931-39C8-A1B4-1A9A88901B1D}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zone", "plugins\zone.vcxproj", "{3B9F42C2-0060-329E-B123-7DEF1E91617D}" - ProjectSection(ProjectDependencies) = postProject - {31277AF8-10A2-3494-B123-559421E08C26} = {31277AF8-10A2-3494-B123-559421E08C26} - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} = {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62} - {5DC5A20B-821C-3008-A247-B08677276F56} = {5DC5A20B-821C-3008-A247-B08677276F56} - {0AE42C92-16FF-3E69-B468-111535996095} = {0AE42C92-16FF-3E69-B468-111535996095} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Release|x64 = Release|x64 - RelWithDebInfo|x64 = RelWithDebInfo|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {40EA859D-1269-313F-A313-AA32B87C8935}.Release|x64.ActiveCfg = Release|x64 - {40EA859D-1269-313F-A313-AA32B87C8935}.Release|x64.Build.0 = Release|x64 - {40EA859D-1269-313F-A313-AA32B87C8935}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {40EA859D-1269-313F-A313-AA32B87C8935}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA}.Release|x64.ActiveCfg = Release|x64 - {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA}.Release|x64.Build.0 = Release|x64 - {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {D7C70C41-500D-35F8-A992-1351DDDCDA0C}.Release|x64.ActiveCfg = Release|x64 - {D7C70C41-500D-35F8-A992-1351DDDCDA0C}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {474F765F-548E-3AAB-8D5B-66CF364BE4B2}.Release|x64.ActiveCfg = Release|x64 - {474F765F-548E-3AAB-8D5B-66CF364BE4B2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {07ADCCA9-7D16-3F3D-AB6F-1BDA83D4E943}.Release|x64.ActiveCfg = Release|x64 - {07ADCCA9-7D16-3F3D-AB6F-1BDA83D4E943}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {246A2207-0D75-3894-8E4E-785344D8ABF4}.Release|x64.ActiveCfg = Release|x64 - {246A2207-0D75-3894-8E4E-785344D8ABF4}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {93318712-66D7-31F1-B537-E229E2FD9AF0}.Release|x64.ActiveCfg = Release|x64 - {93318712-66D7-31F1-B537-E229E2FD9AF0}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {F20BBC06-43D9-375A-A5A9-E717817CF640}.Release|x64.ActiveCfg = Release|x64 - {F20BBC06-43D9-375A-A5A9-E717817CF640}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {45641EBC-7207-3F33-8572-930EA9BD4C6B}.Release|x64.ActiveCfg = Release|x64 - {45641EBC-7207-3F33-8572-930EA9BD4C6B}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {14C478D6-D815-378F-81D1-B53BBD6CBE9A}.Release|x64.ActiveCfg = Release|x64 - {14C478D6-D815-378F-81D1-B53BBD6CBE9A}.Release|x64.Build.0 = Release|x64 - {14C478D6-D815-378F-81D1-B53BBD6CBE9A}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {14C478D6-D815-378F-81D1-B53BBD6CBE9A}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {31277AF8-10A2-3494-B123-559421E08C26}.Release|x64.ActiveCfg = Release|x64 - {31277AF8-10A2-3494-B123-559421E08C26}.Release|x64.Build.0 = Release|x64 - {31277AF8-10A2-3494-B123-559421E08C26}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {31277AF8-10A2-3494-B123-559421E08C26}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {3A2B0858-3B92-3598-B679-2A437C1286E0}.Release|x64.ActiveCfg = Release|x64 - {3A2B0858-3B92-3598-B679-2A437C1286E0}.Release|x64.Build.0 = Release|x64 - {3A2B0858-3B92-3598-B679-2A437C1286E0}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {3A2B0858-3B92-3598-B679-2A437C1286E0}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {27ECEB5C-C396-32BE-93E6-4D4801692191}.Release|x64.ActiveCfg = Release|x64 - {27ECEB5C-C396-32BE-93E6-4D4801692191}.Release|x64.Build.0 = Release|x64 - {27ECEB5C-C396-32BE-93E6-4D4801692191}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {27ECEB5C-C396-32BE-93E6-4D4801692191}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {5F63101D-75FE-31BE-9D25-6641FBBFF959}.Release|x64.ActiveCfg = Release|x64 - {5F63101D-75FE-31BE-9D25-6641FBBFF959}.Release|x64.Build.0 = Release|x64 - {5F63101D-75FE-31BE-9D25-6641FBBFF959}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {5F63101D-75FE-31BE-9D25-6641FBBFF959}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {7D67495E-4C92-37BE-BEF8-174CA37ADD21}.Release|x64.ActiveCfg = Release|x64 - {7D67495E-4C92-37BE-BEF8-174CA37ADD21}.Release|x64.Build.0 = Release|x64 - {7D67495E-4C92-37BE-BEF8-174CA37ADD21}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {7D67495E-4C92-37BE-BEF8-174CA37ADD21}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {6152D284-A720-3556-A60A-7C13C89205AD}.Release|x64.ActiveCfg = Release|x64 - {6152D284-A720-3556-A60A-7C13C89205AD}.Release|x64.Build.0 = Release|x64 - {6152D284-A720-3556-A60A-7C13C89205AD}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {6152D284-A720-3556-A60A-7C13C89205AD}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {4049FF1D-8A65-3021-B550-0DE0E63F9577}.Release|x64.ActiveCfg = Release|x64 - {4049FF1D-8A65-3021-B550-0DE0E63F9577}.Release|x64.Build.0 = Release|x64 - {4049FF1D-8A65-3021-B550-0DE0E63F9577}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {4049FF1D-8A65-3021-B550-0DE0E63F9577}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {8CE562EE-798E-3C1B-975C-F49C6B5C84ED}.Release|x64.ActiveCfg = Release|x64 - {8CE562EE-798E-3C1B-975C-F49C6B5C84ED}.Release|x64.Build.0 = Release|x64 - {8CE562EE-798E-3C1B-975C-F49C6B5C84ED}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {8CE562EE-798E-3C1B-975C-F49C6B5C84ED}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {961FD68A-49A7-3F16-9F96-16AC8236D3A3}.Release|x64.ActiveCfg = Release|x64 - {961FD68A-49A7-3F16-9F96-16AC8236D3A3}.Release|x64.Build.0 = Release|x64 - {961FD68A-49A7-3F16-9F96-16AC8236D3A3}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {961FD68A-49A7-3F16-9F96-16AC8236D3A3}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {D3C67352-8290-3C4E-9F23-93DDE051AA37}.Release|x64.ActiveCfg = Release|x64 - {D3C67352-8290-3C4E-9F23-93DDE051AA37}.Release|x64.Build.0 = Release|x64 - {D3C67352-8290-3C4E-9F23-93DDE051AA37}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {D3C67352-8290-3C4E-9F23-93DDE051AA37}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {A0486456-80E4-3492-940E-6652FF2B45B9}.Release|x64.ActiveCfg = Release|x64 - {A0486456-80E4-3492-940E-6652FF2B45B9}.Release|x64.Build.0 = Release|x64 - {A0486456-80E4-3492-940E-6652FF2B45B9}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {A0486456-80E4-3492-940E-6652FF2B45B9}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {386966C3-DC46-3936-AD44-35E2470C6A28}.Release|x64.ActiveCfg = Release|x64 - {386966C3-DC46-3936-AD44-35E2470C6A28}.Release|x64.Build.0 = Release|x64 - {386966C3-DC46-3936-AD44-35E2470C6A28}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {386966C3-DC46-3936-AD44-35E2470C6A28}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {02D9B109-1602-3567-80C0-3BF354675829}.Release|x64.ActiveCfg = Release|x64 - {02D9B109-1602-3567-80C0-3BF354675829}.Release|x64.Build.0 = Release|x64 - {02D9B109-1602-3567-80C0-3BF354675829}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {02D9B109-1602-3567-80C0-3BF354675829}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA}.Release|x64.ActiveCfg = Release|x64 - {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA}.Release|x64.Build.0 = Release|x64 - {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515}.Release|x64.ActiveCfg = Release|x64 - {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515}.Release|x64.Build.0 = Release|x64 - {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {76B00654-E15A-3E4F-8C41-DDC63A14246A}.Release|x64.ActiveCfg = Release|x64 - {76B00654-E15A-3E4F-8C41-DDC63A14246A}.Release|x64.Build.0 = Release|x64 - {76B00654-E15A-3E4F-8C41-DDC63A14246A}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {76B00654-E15A-3E4F-8C41-DDC63A14246A}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {D7DF31C2-3247-31BA-A745-DF4095334504}.Release|x64.ActiveCfg = Release|x64 - {D7DF31C2-3247-31BA-A745-DF4095334504}.Release|x64.Build.0 = Release|x64 - {D7DF31C2-3247-31BA-A745-DF4095334504}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {D7DF31C2-3247-31BA-A745-DF4095334504}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204}.Release|x64.ActiveCfg = Release|x64 - {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204}.Release|x64.Build.0 = Release|x64 - {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5}.Release|x64.ActiveCfg = Release|x64 - {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5}.Release|x64.Build.0 = Release|x64 - {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB}.Release|x64.ActiveCfg = Release|x64 - {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB}.Release|x64.Build.0 = Release|x64 - {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {39BD79E1-6088-33F3-AD4A-74F0E0EE785C}.Release|x64.ActiveCfg = Release|x64 - {39BD79E1-6088-33F3-AD4A-74F0E0EE785C}.Release|x64.Build.0 = Release|x64 - {39BD79E1-6088-33F3-AD4A-74F0E0EE785C}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {39BD79E1-6088-33F3-AD4A-74F0E0EE785C}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {BAABB124-4999-3462-AF35-16DB3C974D7C}.Release|x64.ActiveCfg = Release|x64 - {BAABB124-4999-3462-AF35-16DB3C974D7C}.Release|x64.Build.0 = Release|x64 - {BAABB124-4999-3462-AF35-16DB3C974D7C}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {BAABB124-4999-3462-AF35-16DB3C974D7C}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {6F451C91-A082-3981-83D5-65844ED16BDA}.Release|x64.ActiveCfg = Release|x64 - {6F451C91-A082-3981-83D5-65844ED16BDA}.Release|x64.Build.0 = Release|x64 - {6F451C91-A082-3981-83D5-65844ED16BDA}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {6F451C91-A082-3981-83D5-65844ED16BDA}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80}.Release|x64.ActiveCfg = Release|x64 - {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80}.Release|x64.Build.0 = Release|x64 - {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {AB8FA0F9-1482-31F8-87E2-E3C7BB178053}.Release|x64.ActiveCfg = Release|x64 - {AB8FA0F9-1482-31F8-87E2-E3C7BB178053}.Release|x64.Build.0 = Release|x64 - {AB8FA0F9-1482-31F8-87E2-E3C7BB178053}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {AB8FA0F9-1482-31F8-87E2-E3C7BB178053}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212}.Release|x64.ActiveCfg = Release|x64 - {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212}.Release|x64.Build.0 = Release|x64 - {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20}.Release|x64.ActiveCfg = Release|x64 - {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20}.Release|x64.Build.0 = Release|x64 - {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {5347E62F-7AEB-3B7C-B480-161A35974C9E}.Release|x64.ActiveCfg = Release|x64 - {5347E62F-7AEB-3B7C-B480-161A35974C9E}.Release|x64.Build.0 = Release|x64 - {5347E62F-7AEB-3B7C-B480-161A35974C9E}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {5347E62F-7AEB-3B7C-B480-161A35974C9E}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62}.Release|x64.ActiveCfg = Release|x64 - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62}.Release|x64.Build.0 = Release|x64 - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {6DA5B761-FD24-3B41-9DCA-C7B11FDEBC62}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {136AD85C-398C-329A-84AC-AD4481963950}.Release|x64.ActiveCfg = Release|x64 - {136AD85C-398C-329A-84AC-AD4481963950}.Release|x64.Build.0 = Release|x64 - {136AD85C-398C-329A-84AC-AD4481963950}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {136AD85C-398C-329A-84AC-AD4481963950}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {8DB90A0E-6076-3C07-B890-7E5E886009EC}.Release|x64.ActiveCfg = Release|x64 - {8DB90A0E-6076-3C07-B890-7E5E886009EC}.Release|x64.Build.0 = Release|x64 - {8DB90A0E-6076-3C07-B890-7E5E886009EC}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {8DB90A0E-6076-3C07-B890-7E5E886009EC}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {111D1A41-5C7F-397A-A62C-B19B0AEB044B}.Release|x64.ActiveCfg = Release|x64 - {111D1A41-5C7F-397A-A62C-B19B0AEB044B}.Release|x64.Build.0 = Release|x64 - {111D1A41-5C7F-397A-A62C-B19B0AEB044B}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {111D1A41-5C7F-397A-A62C-B19B0AEB044B}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {78DBE964-AC8C-3264-903B-2B102B46D476}.Release|x64.ActiveCfg = Release|x64 - {78DBE964-AC8C-3264-903B-2B102B46D476}.Release|x64.Build.0 = Release|x64 - {78DBE964-AC8C-3264-903B-2B102B46D476}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {78DBE964-AC8C-3264-903B-2B102B46D476}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7}.Release|x64.ActiveCfg = Release|x64 - {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7}.Release|x64.Build.0 = Release|x64 - {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {19F34DB6-1C4F-36FD-A7A8-8E5077651209}.Release|x64.ActiveCfg = Release|x64 - {19F34DB6-1C4F-36FD-A7A8-8E5077651209}.Release|x64.Build.0 = Release|x64 - {19F34DB6-1C4F-36FD-A7A8-8E5077651209}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {19F34DB6-1C4F-36FD-A7A8-8E5077651209}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {5DC5A20B-821C-3008-A247-B08677276F56}.Release|x64.ActiveCfg = Release|x64 - {5DC5A20B-821C-3008-A247-B08677276F56}.Release|x64.Build.0 = Release|x64 - {5DC5A20B-821C-3008-A247-B08677276F56}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {5DC5A20B-821C-3008-A247-B08677276F56}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {D3A6760C-34FD-3EE2-B9CC-24647168DC6A}.Release|x64.ActiveCfg = Release|x64 - {D3A6760C-34FD-3EE2-B9CC-24647168DC6A}.Release|x64.Build.0 = Release|x64 - {D3A6760C-34FD-3EE2-B9CC-24647168DC6A}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {D3A6760C-34FD-3EE2-B9CC-24647168DC6A}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {AFC95A6A-BDBB-35E2-9381-253284E1112D}.Release|x64.ActiveCfg = Release|x64 - {AFC95A6A-BDBB-35E2-9381-253284E1112D}.Release|x64.Build.0 = Release|x64 - {AFC95A6A-BDBB-35E2-9381-253284E1112D}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {AFC95A6A-BDBB-35E2-9381-253284E1112D}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {24F97336-D35B-3FBA-BEF8-64B2D5845D3F}.Release|x64.ActiveCfg = Release|x64 - {24F97336-D35B-3FBA-BEF8-64B2D5845D3F}.Release|x64.Build.0 = Release|x64 - {24F97336-D35B-3FBA-BEF8-64B2D5845D3F}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {24F97336-D35B-3FBA-BEF8-64B2D5845D3F}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {86289ECD-3E29-3E01-93B2-829B5666A809}.Release|x64.ActiveCfg = Release|x64 - {86289ECD-3E29-3E01-93B2-829B5666A809}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {0AED7AC4-8C48-3205-AF43-3D536A60D815}.Release|x64.ActiveCfg = Release|x64 - {0AED7AC4-8C48-3205-AF43-3D536A60D815}.Release|x64.Build.0 = Release|x64 - {0AED7AC4-8C48-3205-AF43-3D536A60D815}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {0AED7AC4-8C48-3205-AF43-3D536A60D815}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96}.Release|x64.ActiveCfg = Release|x64 - {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96}.Release|x64.Build.0 = Release|x64 - {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {BA32E800-D5FA-3F4E-B91B-763CD4FE389C}.Release|x64.ActiveCfg = Release|x64 - {BA32E800-D5FA-3F4E-B91B-763CD4FE389C}.Release|x64.Build.0 = Release|x64 - {BA32E800-D5FA-3F4E-B91B-763CD4FE389C}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {BA32E800-D5FA-3F4E-B91B-763CD4FE389C}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7}.Release|x64.ActiveCfg = Release|x64 - {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7}.Release|x64.Build.0 = Release|x64 - {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {47842A81-7497-313E-B466-C60AE89334CB}.Release|x64.ActiveCfg = Release|x64 - {47842A81-7497-313E-B466-C60AE89334CB}.Release|x64.Build.0 = Release|x64 - {47842A81-7497-313E-B466-C60AE89334CB}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {47842A81-7497-313E-B466-C60AE89334CB}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {25303A98-8EE4-3355-8C68-CFA8B4116EF0}.Release|x64.ActiveCfg = Release|x64 - {25303A98-8EE4-3355-8C68-CFA8B4116EF0}.Release|x64.Build.0 = Release|x64 - {25303A98-8EE4-3355-8C68-CFA8B4116EF0}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {25303A98-8EE4-3355-8C68-CFA8B4116EF0}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {A80E6C37-1E31-3DDC-A4FE-B21553E580DB}.Release|x64.ActiveCfg = Release|x64 - {A80E6C37-1E31-3DDC-A4FE-B21553E580DB}.Release|x64.Build.0 = Release|x64 - {A80E6C37-1E31-3DDC-A4FE-B21553E580DB}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {A80E6C37-1E31-3DDC-A4FE-B21553E580DB}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {F2136CA7-D3F2-3A3E-8D32-FE5A5E55E1EE}.Release|x64.ActiveCfg = Release|x64 - {F2136CA7-D3F2-3A3E-8D32-FE5A5E55E1EE}.Release|x64.Build.0 = Release|x64 - {F2136CA7-D3F2-3A3E-8D32-FE5A5E55E1EE}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {F2136CA7-D3F2-3A3E-8D32-FE5A5E55E1EE}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {0AE42C92-16FF-3E69-B468-111535996095}.Release|x64.ActiveCfg = Release|x64 - {0AE42C92-16FF-3E69-B468-111535996095}.Release|x64.Build.0 = Release|x64 - {0AE42C92-16FF-3E69-B468-111535996095}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {0AE42C92-16FF-3E69-B468-111535996095}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {69CB13F6-E5DD-3AC2-AF47-08A452514760}.Release|x64.ActiveCfg = Release|x64 - {69CB13F6-E5DD-3AC2-AF47-08A452514760}.Release|x64.Build.0 = Release|x64 - {69CB13F6-E5DD-3AC2-AF47-08A452514760}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {69CB13F6-E5DD-3AC2-AF47-08A452514760}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {A294D3AD-91C7-32D9-B361-D399900843E5}.Release|x64.ActiveCfg = Release|x64 - {A294D3AD-91C7-32D9-B361-D399900843E5}.Release|x64.Build.0 = Release|x64 - {A294D3AD-91C7-32D9-B361-D399900843E5}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {A294D3AD-91C7-32D9-B361-D399900843E5}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {73A57BCF-3487-35DC-B448-FD328037CDF3}.Release|x64.ActiveCfg = Release|x64 - {73A57BCF-3487-35DC-B448-FD328037CDF3}.Release|x64.Build.0 = Release|x64 - {73A57BCF-3487-35DC-B448-FD328037CDF3}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {73A57BCF-3487-35DC-B448-FD328037CDF3}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA}.Release|x64.ActiveCfg = Release|x64 - {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA}.Release|x64.Build.0 = Release|x64 - {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD}.Release|x64.ActiveCfg = Release|x64 - {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD}.Release|x64.Build.0 = Release|x64 - {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {CD9E5829-45CA-308D-9ED7-C2C38139D69E}.Release|x64.ActiveCfg = Release|x64 - {CD9E5829-45CA-308D-9ED7-C2C38139D69E}.Release|x64.Build.0 = Release|x64 - {CD9E5829-45CA-308D-9ED7-C2C38139D69E}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {CD9E5829-45CA-308D-9ED7-C2C38139D69E}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B}.Release|x64.ActiveCfg = Release|x64 - {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B}.Release|x64.Build.0 = Release|x64 - {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {21572060-CA28-355B-A508-5675A4A2FAB3}.Release|x64.ActiveCfg = Release|x64 - {21572060-CA28-355B-A508-5675A4A2FAB3}.Release|x64.Build.0 = Release|x64 - {21572060-CA28-355B-A508-5675A4A2FAB3}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {21572060-CA28-355B-A508-5675A4A2FAB3}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {F1206958-458C-3F18-84D9-3EEE07B73862}.Release|x64.ActiveCfg = Release|x64 - {F1206958-458C-3F18-84D9-3EEE07B73862}.Release|x64.Build.0 = Release|x64 - {F1206958-458C-3F18-84D9-3EEE07B73862}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {F1206958-458C-3F18-84D9-3EEE07B73862}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32}.Release|x64.ActiveCfg = Release|x64 - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32}.Release|x64.Build.0 = Release|x64 - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3}.Release|x64.ActiveCfg = Release|x64 - {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3}.Release|x64.Build.0 = Release|x64 - {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {419297F2-C54C-3C4B-91AB-7B119D09E730}.Release|x64.ActiveCfg = Release|x64 - {419297F2-C54C-3C4B-91AB-7B119D09E730}.Release|x64.Build.0 = Release|x64 - {419297F2-C54C-3C4B-91AB-7B119D09E730}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {419297F2-C54C-3C4B-91AB-7B119D09E730}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {8F94C6B8-42CE-329C-B6A9-3E13C04350CF}.Release|x64.ActiveCfg = Release|x64 - {8F94C6B8-42CE-329C-B6A9-3E13C04350CF}.Release|x64.Build.0 = Release|x64 - {8F94C6B8-42CE-329C-B6A9-3E13C04350CF}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {8F94C6B8-42CE-329C-B6A9-3E13C04350CF}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {7FF993D7-A6D3-37CC-AE69-2906ECD89E03}.Release|x64.ActiveCfg = Release|x64 - {7FF993D7-A6D3-37CC-AE69-2906ECD89E03}.Release|x64.Build.0 = Release|x64 - {7FF993D7-A6D3-37CC-AE69-2906ECD89E03}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {7FF993D7-A6D3-37CC-AE69-2906ECD89E03}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {374D8559-CBBF-3F24-BEE1-8B11A184B7F8}.Release|x64.ActiveCfg = Release|x64 - {374D8559-CBBF-3F24-BEE1-8B11A184B7F8}.Release|x64.Build.0 = Release|x64 - {374D8559-CBBF-3F24-BEE1-8B11A184B7F8}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {374D8559-CBBF-3F24-BEE1-8B11A184B7F8}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {4E197970-E280-3B04-AD7D-E52DC551E902}.Release|x64.ActiveCfg = Release|x64 - {4E197970-E280-3B04-AD7D-E52DC551E902}.Release|x64.Build.0 = Release|x64 - {4E197970-E280-3B04-AD7D-E52DC551E902}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {4E197970-E280-3B04-AD7D-E52DC551E902}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {4E6C8BD2-2434-31DC-BDD2-8788D2547403}.Release|x64.ActiveCfg = Release|x64 - {4E6C8BD2-2434-31DC-BDD2-8788D2547403}.Release|x64.Build.0 = Release|x64 - {4E6C8BD2-2434-31DC-BDD2-8788D2547403}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {4E6C8BD2-2434-31DC-BDD2-8788D2547403}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {37629CF4-1B6A-312A-89B7-CF11593F51A4}.Release|x64.ActiveCfg = Release|x64 - {37629CF4-1B6A-312A-89B7-CF11593F51A4}.Release|x64.Build.0 = Release|x64 - {37629CF4-1B6A-312A-89B7-CF11593F51A4}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {37629CF4-1B6A-312A-89B7-CF11593F51A4}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {8D195538-264D-3C39-AB9A-653DA8A6F56E}.Release|x64.ActiveCfg = Release|x64 - {8D195538-264D-3C39-AB9A-653DA8A6F56E}.Release|x64.Build.0 = Release|x64 - {8D195538-264D-3C39-AB9A-653DA8A6F56E}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {8D195538-264D-3C39-AB9A-653DA8A6F56E}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {9302E53B-085D-3577-A3E2-EB51A51D084C}.Release|x64.ActiveCfg = Release|x64 - {9302E53B-085D-3577-A3E2-EB51A51D084C}.Release|x64.Build.0 = Release|x64 - {9302E53B-085D-3577-A3E2-EB51A51D084C}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {9302E53B-085D-3577-A3E2-EB51A51D084C}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {1C17AAAA-9E99-32C1-9FF6-E88C054A2646}.Release|x64.ActiveCfg = Release|x64 - {1C17AAAA-9E99-32C1-9FF6-E88C054A2646}.Release|x64.Build.0 = Release|x64 - {1C17AAAA-9E99-32C1-9FF6-E88C054A2646}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {1C17AAAA-9E99-32C1-9FF6-E88C054A2646}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7}.Release|x64.ActiveCfg = Release|x64 - {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7}.Release|x64.Build.0 = Release|x64 - {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {E36DC20B-AE7A-3449-B308-C932B9DD4290}.Release|x64.ActiveCfg = Release|x64 - {E36DC20B-AE7A-3449-B308-C932B9DD4290}.Release|x64.Build.0 = Release|x64 - {E36DC20B-AE7A-3449-B308-C932B9DD4290}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {E36DC20B-AE7A-3449-B308-C932B9DD4290}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121}.Release|x64.ActiveCfg = Release|x64 - {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121}.Release|x64.Build.0 = Release|x64 - {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3}.Release|x64.ActiveCfg = Release|x64 - {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3}.Release|x64.Build.0 = Release|x64 - {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2}.Release|x64.ActiveCfg = Release|x64 - {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2}.Release|x64.Build.0 = Release|x64 - {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {C080819A-4275-3D2A-84DE-7C21EDAE2BBA}.Release|x64.ActiveCfg = Release|x64 - {C080819A-4275-3D2A-84DE-7C21EDAE2BBA}.Release|x64.Build.0 = Release|x64 - {C080819A-4275-3D2A-84DE-7C21EDAE2BBA}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {C080819A-4275-3D2A-84DE-7C21EDAE2BBA}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F}.Release|x64.ActiveCfg = Release|x64 - {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F}.Release|x64.Build.0 = Release|x64 - {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {6579683E-AB4A-3B40-A145-1952047837D2}.Release|x64.ActiveCfg = Release|x64 - {6579683E-AB4A-3B40-A145-1952047837D2}.Release|x64.Build.0 = Release|x64 - {6579683E-AB4A-3B40-A145-1952047837D2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {6579683E-AB4A-3B40-A145-1952047837D2}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {2FE38842-BDF7-3A93-9D06-1C9814B6B11B}.Release|x64.ActiveCfg = Release|x64 - {2FE38842-BDF7-3A93-9D06-1C9814B6B11B}.Release|x64.Build.0 = Release|x64 - {2FE38842-BDF7-3A93-9D06-1C9814B6B11B}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {2FE38842-BDF7-3A93-9D06-1C9814B6B11B}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C}.Release|x64.ActiveCfg = Release|x64 - {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C}.Release|x64.Build.0 = Release|x64 - {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4}.Release|x64.ActiveCfg = Release|x64 - {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4}.Release|x64.Build.0 = Release|x64 - {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {C884F97B-4C5C-3457-AF4D-BB4C05670662}.Release|x64.ActiveCfg = Release|x64 - {C884F97B-4C5C-3457-AF4D-BB4C05670662}.Release|x64.Build.0 = Release|x64 - {C884F97B-4C5C-3457-AF4D-BB4C05670662}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {C884F97B-4C5C-3457-AF4D-BB4C05670662}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D}.Release|x64.ActiveCfg = Release|x64 - {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D}.Release|x64.Build.0 = Release|x64 - {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {85B6988E-9C0B-3B6E-B35A-2AD1ABB5588D}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {796760C3-71E4-32AD-A9C4-B984AFC97106}.Release|x64.ActiveCfg = Release|x64 - {796760C3-71E4-32AD-A9C4-B984AFC97106}.Release|x64.Build.0 = Release|x64 - {796760C3-71E4-32AD-A9C4-B984AFC97106}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {796760C3-71E4-32AD-A9C4-B984AFC97106}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {8054C91C-5221-314F-96C5-8FEC57BBEED1}.Release|x64.ActiveCfg = Release|x64 - {8054C91C-5221-314F-96C5-8FEC57BBEED1}.Release|x64.Build.0 = Release|x64 - {8054C91C-5221-314F-96C5-8FEC57BBEED1}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {8054C91C-5221-314F-96C5-8FEC57BBEED1}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {744BEFA7-C931-39C8-A1B4-1A9A88901B1D}.Release|x64.ActiveCfg = Release|x64 - {744BEFA7-C931-39C8-A1B4-1A9A88901B1D}.Release|x64.Build.0 = Release|x64 - {744BEFA7-C931-39C8-A1B4-1A9A88901B1D}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {744BEFA7-C931-39C8-A1B4-1A9A88901B1D}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - {3B9F42C2-0060-329E-B123-7DEF1E91617D}.Release|x64.ActiveCfg = Release|x64 - {3B9F42C2-0060-329E-B123-7DEF1E91617D}.Release|x64.Build.0 = Release|x64 - {3B9F42C2-0060-329E-B123-7DEF1E91617D}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64 - {3B9F42C2-0060-329E-B123-7DEF1E91617D}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64 - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {40EA859D-1269-313F-A313-AA32B87C8935} = {28D9607F-8931-375B-9273-9E20D2F6347F} - {07ADCCA9-7D16-3F3D-AB6F-1BDA83D4E943} = {28D9607F-8931-375B-9273-9E20D2F6347F} - {F20BBC06-43D9-375A-A5A9-E717817CF640} = {28D9607F-8931-375B-9273-9E20D2F6347F} - {45641EBC-7207-3F33-8572-930EA9BD4C6B} = {28D9607F-8931-375B-9273-9E20D2F6347F} - {31277AF8-10A2-3494-B123-559421E08C26} = {28D9607F-8931-375B-9273-9E20D2F6347F} - {D7C70C41-500D-35F8-A992-1351DDDCDA0C} = {068CE9B1-E6DD-3864-AC38-93F10EF27A17} - {474F765F-548E-3AAB-8D5B-66CF364BE4B2} = {068CE9B1-E6DD-3864-AC38-93F10EF27A17} - {246A2207-0D75-3894-8E4E-785344D8ABF4} = {068CE9B1-E6DD-3864-AC38-93F10EF27A17} - {93318712-66D7-31F1-B537-E229E2FD9AF0} = {068CE9B1-E6DD-3864-AC38-93F10EF27A17} - {39BD79E1-6088-33F3-AD4A-74F0E0EE785C} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} - {8DB90A0E-6076-3C07-B890-7E5E886009EC} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} - {111D1A41-5C7F-397A-A62C-B19B0AEB044B} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} - {D3A713C3-480C-3DF0-95FA-8B80D95DF8F7} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} - {19F34DB6-1C4F-36FD-A7A8-8E5077651209} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} - {6CA1FA88-B709-340C-8366-DCE4C1D1FB32} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} - {8D195538-264D-3C39-AB9A-653DA8A6F56E} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} - {9302E53B-085D-3577-A3E2-EB51A51D084C} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} - {1C17AAAA-9E99-32C1-9FF6-E88C054A2646} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} - {74CBC9D0-87DE-34DC-AA46-FD7DD2A990E7} = {D8D353CC-1D2C-3A83-8EA0-A85D6CF14722} - {B10F83BD-77CE-3CC2-A4D0-2B412287DFEA} = {25456F37-E968-3921-80E5-1C0E141753B6} - {14C478D6-D815-378F-81D1-B53BBD6CBE9A} = {25456F37-E968-3921-80E5-1C0E141753B6} - {3A2B0858-3B92-3598-B679-2A437C1286E0} = {25456F37-E968-3921-80E5-1C0E141753B6} - {27ECEB5C-C396-32BE-93E6-4D4801692191} = {25456F37-E968-3921-80E5-1C0E141753B6} - {5F63101D-75FE-31BE-9D25-6641FBBFF959} = {25456F37-E968-3921-80E5-1C0E141753B6} - {7D67495E-4C92-37BE-BEF8-174CA37ADD21} = {25456F37-E968-3921-80E5-1C0E141753B6} - {6152D284-A720-3556-A60A-7C13C89205AD} = {25456F37-E968-3921-80E5-1C0E141753B6} - {4049FF1D-8A65-3021-B550-0DE0E63F9577} = {25456F37-E968-3921-80E5-1C0E141753B6} - {8CE562EE-798E-3C1B-975C-F49C6B5C84ED} = {25456F37-E968-3921-80E5-1C0E141753B6} - {961FD68A-49A7-3F16-9F96-16AC8236D3A3} = {25456F37-E968-3921-80E5-1C0E141753B6} - {D3C67352-8290-3C4E-9F23-93DDE051AA37} = {25456F37-E968-3921-80E5-1C0E141753B6} - {386966C3-DC46-3936-AD44-35E2470C6A28} = {25456F37-E968-3921-80E5-1C0E141753B6} - {02D9B109-1602-3567-80C0-3BF354675829} = {25456F37-E968-3921-80E5-1C0E141753B6} - {B6B32914-FA20-3991-AEDE-3FFA75FDF7DA} = {25456F37-E968-3921-80E5-1C0E141753B6} - {C153A10F-47F2-3FF1-A27D-0CE7AA4B1515} = {25456F37-E968-3921-80E5-1C0E141753B6} - {76B00654-E15A-3E4F-8C41-DDC63A14246A} = {25456F37-E968-3921-80E5-1C0E141753B6} - {D7DF31C2-3247-31BA-A745-DF4095334504} = {25456F37-E968-3921-80E5-1C0E141753B6} - {2B9B4415-E1BD-33F7-95FD-7DFA4F7B2204} = {25456F37-E968-3921-80E5-1C0E141753B6} - {099D780E-7F06-3EAA-98A8-2A9C7BBA3FD5} = {25456F37-E968-3921-80E5-1C0E141753B6} - {D65A7A3A-0A4D-361D-B093-CB7BF60BC5DB} = {25456F37-E968-3921-80E5-1C0E141753B6} - {BAABB124-4999-3462-AF35-16DB3C974D7C} = {25456F37-E968-3921-80E5-1C0E141753B6} - {6F451C91-A082-3981-83D5-65844ED16BDA} = {25456F37-E968-3921-80E5-1C0E141753B6} - {C143DDD8-9AB8-368F-ACE4-BA4F7651DA80} = {25456F37-E968-3921-80E5-1C0E141753B6} - {AB8FA0F9-1482-31F8-87E2-E3C7BB178053} = {25456F37-E968-3921-80E5-1C0E141753B6} - {CFC3621A-1CB4-3FC2-B1B7-FD3E6AC9B212} = {25456F37-E968-3921-80E5-1C0E141753B6} - {E3A6CF18-2D4A-3541-97FD-EA36D6A9DC20} = {25456F37-E968-3921-80E5-1C0E141753B6} - {5347E62F-7AEB-3B7C-B480-161A35974C9E} = {25456F37-E968-3921-80E5-1C0E141753B6} - {D3A6760C-34FD-3EE2-B9CC-24647168DC6A} = {25456F37-E968-3921-80E5-1C0E141753B6} - {AFC95A6A-BDBB-35E2-9381-253284E1112D} = {25456F37-E968-3921-80E5-1C0E141753B6} - {0AED7AC4-8C48-3205-AF43-3D536A60D815} = {25456F37-E968-3921-80E5-1C0E141753B6} - {D46EA8E6-D149-35E8-B2C3-A4FD5AE72B96} = {25456F37-E968-3921-80E5-1C0E141753B6} - {894B02CD-77FD-3B32-8A23-AFE5DFEFD7A7} = {25456F37-E968-3921-80E5-1C0E141753B6} - {47842A81-7497-313E-B466-C60AE89334CB} = {25456F37-E968-3921-80E5-1C0E141753B6} - {25303A98-8EE4-3355-8C68-CFA8B4116EF0} = {25456F37-E968-3921-80E5-1C0E141753B6} - {A80E6C37-1E31-3DDC-A4FE-B21553E580DB} = {25456F37-E968-3921-80E5-1C0E141753B6} - {E6EA4F63-3C22-3D4C-A201-F9E90BBB7FCA} = {25456F37-E968-3921-80E5-1C0E141753B6} - {6F10CAC8-6D9F-357E-B574-5EC901BF4EAD} = {25456F37-E968-3921-80E5-1C0E141753B6} - {DA8EE8E6-6AE0-3DA6-AED9-316977621A0B} = {25456F37-E968-3921-80E5-1C0E141753B6} - {21572060-CA28-355B-A508-5675A4A2FAB3} = {25456F37-E968-3921-80E5-1C0E141753B6} - {F1206958-458C-3F18-84D9-3EEE07B73862} = {25456F37-E968-3921-80E5-1C0E141753B6} - {4BEF77D9-B9D4-33A2-950A-48EB5CE10FB3} = {25456F37-E968-3921-80E5-1C0E141753B6} - {419297F2-C54C-3C4B-91AB-7B119D09E730} = {25456F37-E968-3921-80E5-1C0E141753B6} - {8F94C6B8-42CE-329C-B6A9-3E13C04350CF} = {25456F37-E968-3921-80E5-1C0E141753B6} - {7FF993D7-A6D3-37CC-AE69-2906ECD89E03} = {25456F37-E968-3921-80E5-1C0E141753B6} - {374D8559-CBBF-3F24-BEE1-8B11A184B7F8} = {25456F37-E968-3921-80E5-1C0E141753B6} - {4E197970-E280-3B04-AD7D-E52DC551E902} = {25456F37-E968-3921-80E5-1C0E141753B6} - {4E6C8BD2-2434-31DC-BDD2-8788D2547403} = {25456F37-E968-3921-80E5-1C0E141753B6} - {37629CF4-1B6A-312A-89B7-CF11593F51A4} = {25456F37-E968-3921-80E5-1C0E141753B6} - {E36DC20B-AE7A-3449-B308-C932B9DD4290} = {25456F37-E968-3921-80E5-1C0E141753B6} - {C831208B-D7C3-3DD6-9F16-0EA8A5FF3121} = {25456F37-E968-3921-80E5-1C0E141753B6} - {7B31A6BF-105F-3E5D-8FEF-1B9B86D51ED3} = {25456F37-E968-3921-80E5-1C0E141753B6} - {E1C04F8B-70DF-31A7-B06F-BD5CEDBA17C2} = {25456F37-E968-3921-80E5-1C0E141753B6} - {C080819A-4275-3D2A-84DE-7C21EDAE2BBA} = {25456F37-E968-3921-80E5-1C0E141753B6} - {7EE9C0CE-18BB-36A8-BE3E-EEE7F673B97F} = {25456F37-E968-3921-80E5-1C0E141753B6} - {6579683E-AB4A-3B40-A145-1952047837D2} = {25456F37-E968-3921-80E5-1C0E141753B6} - {2FE38842-BDF7-3A93-9D06-1C9814B6B11B} = {25456F37-E968-3921-80E5-1C0E141753B6} - {B8FB6F36-01B4-37A3-84F1-0E364DCA8F1C} = {25456F37-E968-3921-80E5-1C0E141753B6} - {2E73B9B9-ADD5-3FD1-8BCB-FD6A829934B4} = {25456F37-E968-3921-80E5-1C0E141753B6} - {C884F97B-4C5C-3457-AF4D-BB4C05670662} = {25456F37-E968-3921-80E5-1C0E141753B6} - {8054C91C-5221-314F-96C5-8FEC57BBEED1} = {25456F37-E968-3921-80E5-1C0E141753B6} - {3B9F42C2-0060-329E-B123-7DEF1E91617D} = {25456F37-E968-3921-80E5-1C0E141753B6} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {97344453-ACD8-397F-8291-084632F194C3} - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal From 9f4f14d0257c889396e6612031c87e3d1191fe8d Mon Sep 17 00:00:00 2001 From: shevernitskiy Date: Sun, 24 Sep 2023 13:18:58 +0300 Subject: [PATCH 027/100] put back unformatted hotkeys --- plugins/lua/hotkeys.lua | 168 +++++++++++++++++++--------------------- 1 file changed, 81 insertions(+), 87 deletions(-) diff --git a/plugins/lua/hotkeys.lua b/plugins/lua/hotkeys.lua index 30407a8fa..7173bed80 100644 --- a/plugins/lua/hotkeys.lua +++ b/plugins/lua/hotkeys.lua @@ -17,8 +17,8 @@ end function should_hide_armok(cmdline) local command = get_command(cmdline) return dfhack.getHideArmokTools() and - helpdb.is_entry(command) and - helpdb.get_entry_tags(command).armok + helpdb.is_entry(command) and + helpdb.get_entry_tags(command).armok end -- ----------------- -- @@ -26,11 +26,11 @@ end -- ----------------- -- HotspotMenuWidget = defclass(HotspotMenuWidget, overlay.OverlayWidget) -HotspotMenuWidget.ATTRS { - default_pos = { x = 5, y = 1 }, - default_enabled = true, - version = 2, - viewscreens = { +HotspotMenuWidget.ATTRS{ + default_pos={x=5,y=1}, + default_enabled=true, + version=2, + viewscreens={ 'adopt_region', 'choose_game_type', -- 'choose_start_site', -- conflicts with vanilla panel layouts @@ -48,51 +48,51 @@ HotspotMenuWidget.ATTRS { 'update_region', 'world' }, - frame = { w = 4, h = 3 } + frame={w=4, h=3} } function HotspotMenuWidget:init() local to_pen = dfhack.pen.parse local function tp(idx, ch) - return to_pen { - tile = function() return dfhack.textures.getTexposByHandle(logo_textures[idx]) end, - ch = ch, - fg = COLOR_GREY, + return to_pen{ + tile=function() return dfhack.textures.getTexposByHandle(logo_textures[idx]) end, + ch=ch, + fg=COLOR_GREY, } end local function tph(idx, ch) - return to_pen { - tile = function() return dfhack.textures.getTexposByHandle(logo_hovered_textures[idx]) end, - ch = ch, - fg = COLOR_WHITE, + return to_pen{ + tile=function() return dfhack.textures.getTexposByHandle(logo_hovered_textures[idx]) end, + ch=ch, + fg=COLOR_WHITE, } end local function get_tile_token(idx, ch) return { - tile = tp(idx, ch), - htile = tph(idx, ch), - width = 1, + tile=tp(idx, ch), + htile=tph(idx, ch), + width=1, } end - self:addviews { - widgets.Label { - text = { + self:addviews{ + widgets.Label{ + text={ get_tile_token(1, '!'), get_tile_token(2, 'D'), get_tile_token(3, 'F'), get_tile_token(4, '!'), NEWLINE, get_tile_token(5, '!'), get_tile_token(6, 'H'), get_tile_token(7, 'a'), get_tile_token(8, '!'), NEWLINE, get_tile_token(9, '!'), get_tile_token(10, 'c'), get_tile_token(11, 'k'), get_tile_token(12, '!'), }, - on_click = function() dfhack.run_command('hotkeys') end, + on_click=function() dfhack.run_command('hotkeys') end, }, } end function HotspotMenuWidget:overlay_trigger() - return MenuScreen { hotspot = self }:show() + return MenuScreen{hotspot=self}:show() end -- register the menu hotspot with the overlay -OVERLAY_WIDGETS = { menu = HotspotMenuWidget } +OVERLAY_WIDGETS = {menu=HotspotMenuWidget} -- ---- -- -- Menu -- @@ -103,15 +103,15 @@ local MAX_LIST_WIDTH = 45 local MAX_LIST_HEIGHT = 15 Menu = defclass(Menu, widgets.Panel) -Menu.ATTRS { - hotspot = DEFAULT_NIL, +Menu.ATTRS{ + hotspot=DEFAULT_NIL, } -- get a map from the binding string to a list of hotkey strings that all -- point to that binding local function get_bindings_to_hotkeys(hotkeys, bindings) local bindings_to_hotkeys = {} - for _, hotkey in ipairs(hotkeys) do + for _,hotkey in ipairs(hotkeys) do local binding = bindings[hotkey] table.insert(ensure_key(bindings_to_hotkeys, binding), hotkey) end @@ -126,17 +126,17 @@ local function get_choices(hotkeys, bindings, is_inverted) local bindings_to_hotkeys = get_bindings_to_hotkeys(hotkeys, bindings) -- build list choices - for _, hotkey in ipairs(hotkeys) do + for _,hotkey in ipairs(hotkeys) do local command = bindings[hotkey] if seen[command] then goto continue end seen[command] = true local hk_width, tokens = 0, {} - for _, hk in ipairs(bindings_to_hotkeys[command]) do + for _,hk in ipairs(bindings_to_hotkeys[command]) do if hk_width ~= 0 then table.insert(tokens, ', ') hk_width = hk_width + 2 end - table.insert(tokens, { text = hk, pen = COLOR_LIGHTGREEN }) + table.insert(tokens, {text=hk, pen=COLOR_LIGHTGREEN}) hk_width = hk_width + #hk end local command_str = command @@ -144,20 +144,16 @@ local function get_choices(hotkeys, bindings, is_inverted) local max_command_len = MAX_LIST_WIDTH - hk_width - LIST_BUFFER command_str = command:sub(1, max_command_len - 3) .. '...' end - table.insert(tokens, 1, { text = command_str }) - local choice = { - icon = ARROW, - command = command, - text = tokens, - hk_width = hk_width - } + table.insert(tokens, 1, {text=command_str}) + local choice = {icon=ARROW, command=command, text=tokens, + hk_width=hk_width} max_width = math.max(max_width, hk_width + #command_str + LIST_BUFFER) table.insert(choices, is_inverted and 1 or #choices + 1, choice) ::continue:: end -- adjust width of command fields so the hotkey tokens are right justified - for _, choice in ipairs(choices) do + for _,choice in ipairs(choices) do local command_token = choice.text[1] command_token.width = max_width - choice.hk_width - (LIST_BUFFER - 1) end @@ -168,19 +164,17 @@ end function Menu:init() local hotkeys, bindings = getHotkeys() if #hotkeys == 0 then - hotkeys = { '' } - bindings = { [''] = 'gui/launcher' } + hotkeys = {''} + bindings = {['']='gui/launcher'} end local is_inverted = not not self.hotspot.frame.b - local choices, list_width = get_choices(hotkeys, bindings, is_inverted) - - list_width = math.max(35, list_width) + local choices,list_width = get_choices(hotkeys, bindings, is_inverted) list_width = math.max(35, list_width) local list_frame = copyall(self.hotspot.frame) - local list_widget_frame = { h = math.min(#choices, MAX_LIST_HEIGHT) } + local list_widget_frame = {h=math.min(#choices, MAX_LIST_HEIGHT)} local quickstart_frame = {} list_frame.w = list_width + 2 list_frame.h = list_widget_frame.h + 4 @@ -199,51 +193,51 @@ function Menu:init() list_frame.r = math.max(0, list_frame.r + 5) end - local help_frame = { w = list_frame.w, l = list_frame.l, r = list_frame.r } + local help_frame = {w=list_frame.w, l=list_frame.l, r=list_frame.r} if list_frame.t then help_frame.t = list_frame.t + list_frame.h else help_frame.b = list_frame.b + list_frame.h end - self:addviews { - widgets.Panel { - view_id = 'list_panel', - frame = list_frame, - frame_style = gui.PANEL_FRAME, - frame_background = gui.CLEAR_PEN, - subviews = { - widgets.List { - view_id = 'list', - frame = list_widget_frame, - choices = choices, - icon_width = 2, - on_select = self:callback('onSelect'), - on_submit = self:callback('onSubmit'), - on_submit2 = self:callback('onSubmit2'), + self:addviews{ + widgets.Panel{ + view_id='list_panel', + frame=list_frame, + frame_style=gui.PANEL_FRAME, + frame_background=gui.CLEAR_PEN, + subviews={ + widgets.List{ + view_id='list', + frame=list_widget_frame, + choices=choices, + icon_width=2, + on_select=self:callback('onSelect'), + on_submit=self:callback('onSubmit'), + on_submit2=self:callback('onSubmit2'), }, - widgets.Panel { frame = { h = 1 } }, - widgets.HotkeyLabel { - frame = quickstart_frame, - label = 'Quickstart guide', - key = 'STRING_A063', - on_activate = function() - self:onSubmit(nil, { command = 'quickstart-guide' }) + widgets.Panel{frame={h=1}}, + widgets.HotkeyLabel{ + frame=quickstart_frame, + label='Quickstart guide', + key='STRING_A063', + on_activate=function() + self:onSubmit(nil, {command='quickstart-guide'}) end, }, }, }, - widgets.ResizingPanel { - view_id = 'help_panel', - autoarrange_subviews = true, - frame = help_frame, - frame_style = gui.PANEL_FRAME, - frame_background = gui.CLEAR_PEN, - subviews = { - widgets.WrappedLabel { - view_id = 'help', - text_to_wrap = '', - scroll_keys = {}, + widgets.ResizingPanel{ + view_id='help_panel', + autoarrange_subviews=true, + frame=help_frame, + frame_style=gui.PANEL_FRAME, + frame_background=gui.CLEAR_PEN, + subviews={ + widgets.WrappedLabel{ + view_id='help', + text_to_wrap='', + scroll_keys={}, }, }, }, @@ -258,7 +252,7 @@ function Menu:onSelect(_, choice) if not choice or #self.subviews == 0 then return end local command = get_command(choice.command) self.subviews.help.text_to_wrap = helpdb.is_entry(command) and - helpdb.get_entry_short_help(command) or 'Command not found' + helpdb.get_entry_short_help(command) or 'Command not found' self.subviews.help_panel:updateLayout() end @@ -308,7 +302,7 @@ end function Menu:getMouseFramePos() return self.subviews.list_panel:getMouseFramePos() or - self.subviews.help_panel:getMouseFramePos() + self.subviews.help_panel:getMouseFramePos() end function Menu:onRenderBody(dc) @@ -330,14 +324,14 @@ end MenuScreen = defclass(MenuScreen, gui.ZScreen) MenuScreen.ATTRS { - focus_path = 'hotkeys/menu', - initial_pause = false, - hotspot = DEFAULT_NIL, + focus_path='hotkeys/menu', + initial_pause=false, + hotspot=DEFAULT_NIL, } function MenuScreen:init() - self:addviews { - Menu { hotspot = self.hotspot }, + self:addviews{ + Menu{hotspot=self.hotspot}, } end @@ -345,4 +339,4 @@ function MenuScreen:onDismiss() cleanupHotkeys() end -return _ENV +return _ENV \ No newline at end of file From bb5e178756dd73f6075ff69cb743ca1990a92b21 Mon Sep 17 00:00:00 2001 From: shevernitskiy Date: Sun, 24 Sep 2023 13:19:48 +0300 Subject: [PATCH 028/100] fix eof --- plugins/lua/hotkeys.lua | 166 ++++++++++++++++++++-------------------- 1 file changed, 85 insertions(+), 81 deletions(-) diff --git a/plugins/lua/hotkeys.lua b/plugins/lua/hotkeys.lua index 7173bed80..4169d439a 100644 --- a/plugins/lua/hotkeys.lua +++ b/plugins/lua/hotkeys.lua @@ -17,8 +17,8 @@ end function should_hide_armok(cmdline) local command = get_command(cmdline) return dfhack.getHideArmokTools() and - helpdb.is_entry(command) and - helpdb.get_entry_tags(command).armok + helpdb.is_entry(command) and + helpdb.get_entry_tags(command).armok end -- ----------------- -- @@ -26,11 +26,11 @@ end -- ----------------- -- HotspotMenuWidget = defclass(HotspotMenuWidget, overlay.OverlayWidget) -HotspotMenuWidget.ATTRS{ - default_pos={x=5,y=1}, - default_enabled=true, - version=2, - viewscreens={ +HotspotMenuWidget.ATTRS { + default_pos = { x = 5, y = 1 }, + default_enabled = true, + version = 2, + viewscreens = { 'adopt_region', 'choose_game_type', -- 'choose_start_site', -- conflicts with vanilla panel layouts @@ -48,51 +48,51 @@ HotspotMenuWidget.ATTRS{ 'update_region', 'world' }, - frame={w=4, h=3} + frame = { w = 4, h = 3 } } function HotspotMenuWidget:init() local to_pen = dfhack.pen.parse local function tp(idx, ch) - return to_pen{ - tile=function() return dfhack.textures.getTexposByHandle(logo_textures[idx]) end, - ch=ch, - fg=COLOR_GREY, + return to_pen { + tile = function() return dfhack.textures.getTexposByHandle(logo_textures[idx]) end, + ch = ch, + fg = COLOR_GREY, } end local function tph(idx, ch) - return to_pen{ - tile=function() return dfhack.textures.getTexposByHandle(logo_hovered_textures[idx]) end, - ch=ch, - fg=COLOR_WHITE, + return to_pen { + tile = function() return dfhack.textures.getTexposByHandle(logo_hovered_textures[idx]) end, + ch = ch, + fg = COLOR_WHITE, } end local function get_tile_token(idx, ch) return { - tile=tp(idx, ch), - htile=tph(idx, ch), - width=1, + tile = tp(idx, ch), + htile = tph(idx, ch), + width = 1, } end - self:addviews{ - widgets.Label{ - text={ + self:addviews { + widgets.Label { + text = { get_tile_token(1, '!'), get_tile_token(2, 'D'), get_tile_token(3, 'F'), get_tile_token(4, '!'), NEWLINE, get_tile_token(5, '!'), get_tile_token(6, 'H'), get_tile_token(7, 'a'), get_tile_token(8, '!'), NEWLINE, get_tile_token(9, '!'), get_tile_token(10, 'c'), get_tile_token(11, 'k'), get_tile_token(12, '!'), }, - on_click=function() dfhack.run_command('hotkeys') end, + on_click = function() dfhack.run_command('hotkeys') end, }, } end function HotspotMenuWidget:overlay_trigger() - return MenuScreen{hotspot=self}:show() + return MenuScreen { hotspot = self }:show() end -- register the menu hotspot with the overlay -OVERLAY_WIDGETS = {menu=HotspotMenuWidget} +OVERLAY_WIDGETS = { menu = HotspotMenuWidget } -- ---- -- -- Menu -- @@ -103,15 +103,15 @@ local MAX_LIST_WIDTH = 45 local MAX_LIST_HEIGHT = 15 Menu = defclass(Menu, widgets.Panel) -Menu.ATTRS{ - hotspot=DEFAULT_NIL, +Menu.ATTRS { + hotspot = DEFAULT_NIL, } -- get a map from the binding string to a list of hotkey strings that all -- point to that binding local function get_bindings_to_hotkeys(hotkeys, bindings) local bindings_to_hotkeys = {} - for _,hotkey in ipairs(hotkeys) do + for _, hotkey in ipairs(hotkeys) do local binding = bindings[hotkey] table.insert(ensure_key(bindings_to_hotkeys, binding), hotkey) end @@ -126,17 +126,17 @@ local function get_choices(hotkeys, bindings, is_inverted) local bindings_to_hotkeys = get_bindings_to_hotkeys(hotkeys, bindings) -- build list choices - for _,hotkey in ipairs(hotkeys) do + for _, hotkey in ipairs(hotkeys) do local command = bindings[hotkey] if seen[command] then goto continue end seen[command] = true local hk_width, tokens = 0, {} - for _,hk in ipairs(bindings_to_hotkeys[command]) do + for _, hk in ipairs(bindings_to_hotkeys[command]) do if hk_width ~= 0 then table.insert(tokens, ', ') hk_width = hk_width + 2 end - table.insert(tokens, {text=hk, pen=COLOR_LIGHTGREEN}) + table.insert(tokens, { text = hk, pen = COLOR_LIGHTGREEN }) hk_width = hk_width + #hk end local command_str = command @@ -144,16 +144,20 @@ local function get_choices(hotkeys, bindings, is_inverted) local max_command_len = MAX_LIST_WIDTH - hk_width - LIST_BUFFER command_str = command:sub(1, max_command_len - 3) .. '...' end - table.insert(tokens, 1, {text=command_str}) - local choice = {icon=ARROW, command=command, text=tokens, - hk_width=hk_width} + table.insert(tokens, 1, { text = command_str }) + local choice = { + icon = ARROW, + command = command, + text = tokens, + hk_width = hk_width + } max_width = math.max(max_width, hk_width + #command_str + LIST_BUFFER) table.insert(choices, is_inverted and 1 or #choices + 1, choice) ::continue:: end -- adjust width of command fields so the hotkey tokens are right justified - for _,choice in ipairs(choices) do + for _, choice in ipairs(choices) do local command_token = choice.text[1] command_token.width = max_width - choice.hk_width - (LIST_BUFFER - 1) end @@ -164,17 +168,17 @@ end function Menu:init() local hotkeys, bindings = getHotkeys() if #hotkeys == 0 then - hotkeys = {''} - bindings = {['']='gui/launcher'} + hotkeys = { '' } + bindings = { [''] = 'gui/launcher' } end local is_inverted = not not self.hotspot.frame.b - local choices,list_width = get_choices(hotkeys, bindings, is_inverted) + local choices, list_width = get_choices(hotkeys, bindings, is_inverted) list_width = math.max(35, list_width) local list_frame = copyall(self.hotspot.frame) - local list_widget_frame = {h=math.min(#choices, MAX_LIST_HEIGHT)} + local list_widget_frame = { h = math.min(#choices, MAX_LIST_HEIGHT) } local quickstart_frame = {} list_frame.w = list_width + 2 list_frame.h = list_widget_frame.h + 4 @@ -193,51 +197,51 @@ function Menu:init() list_frame.r = math.max(0, list_frame.r + 5) end - local help_frame = {w=list_frame.w, l=list_frame.l, r=list_frame.r} + local help_frame = { w = list_frame.w, l = list_frame.l, r = list_frame.r } if list_frame.t then help_frame.t = list_frame.t + list_frame.h else help_frame.b = list_frame.b + list_frame.h end - self:addviews{ - widgets.Panel{ - view_id='list_panel', - frame=list_frame, - frame_style=gui.PANEL_FRAME, - frame_background=gui.CLEAR_PEN, - subviews={ - widgets.List{ - view_id='list', - frame=list_widget_frame, - choices=choices, - icon_width=2, - on_select=self:callback('onSelect'), - on_submit=self:callback('onSubmit'), - on_submit2=self:callback('onSubmit2'), + self:addviews { + widgets.Panel { + view_id = 'list_panel', + frame = list_frame, + frame_style = gui.PANEL_FRAME, + frame_background = gui.CLEAR_PEN, + subviews = { + widgets.List { + view_id = 'list', + frame = list_widget_frame, + choices = choices, + icon_width = 2, + on_select = self:callback('onSelect'), + on_submit = self:callback('onSubmit'), + on_submit2 = self:callback('onSubmit2'), }, - widgets.Panel{frame={h=1}}, - widgets.HotkeyLabel{ - frame=quickstart_frame, - label='Quickstart guide', - key='STRING_A063', - on_activate=function() - self:onSubmit(nil, {command='quickstart-guide'}) + widgets.Panel { frame = { h = 1 } }, + widgets.HotkeyLabel { + frame = quickstart_frame, + label = 'Quickstart guide', + key = 'STRING_A063', + on_activate = function() + self:onSubmit(nil, { command = 'quickstart-guide' }) end, }, }, }, - widgets.ResizingPanel{ - view_id='help_panel', - autoarrange_subviews=true, - frame=help_frame, - frame_style=gui.PANEL_FRAME, - frame_background=gui.CLEAR_PEN, - subviews={ - widgets.WrappedLabel{ - view_id='help', - text_to_wrap='', - scroll_keys={}, + widgets.ResizingPanel { + view_id = 'help_panel', + autoarrange_subviews = true, + frame = help_frame, + frame_style = gui.PANEL_FRAME, + frame_background = gui.CLEAR_PEN, + subviews = { + widgets.WrappedLabel { + view_id = 'help', + text_to_wrap = '', + scroll_keys = {}, }, }, }, @@ -252,7 +256,7 @@ function Menu:onSelect(_, choice) if not choice or #self.subviews == 0 then return end local command = get_command(choice.command) self.subviews.help.text_to_wrap = helpdb.is_entry(command) and - helpdb.get_entry_short_help(command) or 'Command not found' + helpdb.get_entry_short_help(command) or 'Command not found' self.subviews.help_panel:updateLayout() end @@ -302,7 +306,7 @@ end function Menu:getMouseFramePos() return self.subviews.list_panel:getMouseFramePos() or - self.subviews.help_panel:getMouseFramePos() + self.subviews.help_panel:getMouseFramePos() end function Menu:onRenderBody(dc) @@ -324,14 +328,14 @@ end MenuScreen = defclass(MenuScreen, gui.ZScreen) MenuScreen.ATTRS { - focus_path='hotkeys/menu', - initial_pause=false, - hotspot=DEFAULT_NIL, + focus_path = 'hotkeys/menu', + initial_pause = false, + hotspot = DEFAULT_NIL, } function MenuScreen:init() - self:addviews{ - Menu{hotspot=self.hotspot}, + self:addviews { + Menu { hotspot = self.hotspot }, } end @@ -339,4 +343,4 @@ function MenuScreen:onDismiss() cleanupHotkeys() end -return _ENV \ No newline at end of file +return _ENV From be26449ef77fe8538c793762d34510df0207798f Mon Sep 17 00:00:00 2001 From: shevernitskiy Date: Sun, 24 Sep 2023 13:22:20 +0300 Subject: [PATCH 029/100] ugh --- plugins/lua/hotkeys.lua | 164 ++++++++++++++++++++-------------------- 1 file changed, 80 insertions(+), 84 deletions(-) diff --git a/plugins/lua/hotkeys.lua b/plugins/lua/hotkeys.lua index 4169d439a..8eff17aae 100644 --- a/plugins/lua/hotkeys.lua +++ b/plugins/lua/hotkeys.lua @@ -17,8 +17,8 @@ end function should_hide_armok(cmdline) local command = get_command(cmdline) return dfhack.getHideArmokTools() and - helpdb.is_entry(command) and - helpdb.get_entry_tags(command).armok + helpdb.is_entry(command) and + helpdb.get_entry_tags(command).armok end -- ----------------- -- @@ -26,11 +26,11 @@ end -- ----------------- -- HotspotMenuWidget = defclass(HotspotMenuWidget, overlay.OverlayWidget) -HotspotMenuWidget.ATTRS { - default_pos = { x = 5, y = 1 }, - default_enabled = true, - version = 2, - viewscreens = { +HotspotMenuWidget.ATTRS{ + default_pos={x=5,y=1}, + default_enabled=true, + version=2, + viewscreens={ 'adopt_region', 'choose_game_type', -- 'choose_start_site', -- conflicts with vanilla panel layouts @@ -48,51 +48,51 @@ HotspotMenuWidget.ATTRS { 'update_region', 'world' }, - frame = { w = 4, h = 3 } + frame={w=4, h=3} } function HotspotMenuWidget:init() local to_pen = dfhack.pen.parse local function tp(idx, ch) - return to_pen { - tile = function() return dfhack.textures.getTexposByHandle(logo_textures[idx]) end, - ch = ch, - fg = COLOR_GREY, + return to_pen{ + tile=function() return dfhack.textures.getTexposByHandle(logo_textures[idx]) end, + ch=ch, + fg=COLOR_GREY, } end local function tph(idx, ch) - return to_pen { - tile = function() return dfhack.textures.getTexposByHandle(logo_hovered_textures[idx]) end, - ch = ch, - fg = COLOR_WHITE, + return to_pen{ + tile=function() return dfhack.textures.getTexposByHandle(logo_hovered_textures[idx]) end, + ch=ch, + fg=COLOR_WHITE, } end local function get_tile_token(idx, ch) return { - tile = tp(idx, ch), - htile = tph(idx, ch), - width = 1, + tile=tp(idx, ch), + htile=tph(idx, ch), + width=1, } end - self:addviews { - widgets.Label { - text = { + self:addviews{ + widgets.Label{ + text={ get_tile_token(1, '!'), get_tile_token(2, 'D'), get_tile_token(3, 'F'), get_tile_token(4, '!'), NEWLINE, get_tile_token(5, '!'), get_tile_token(6, 'H'), get_tile_token(7, 'a'), get_tile_token(8, '!'), NEWLINE, get_tile_token(9, '!'), get_tile_token(10, 'c'), get_tile_token(11, 'k'), get_tile_token(12, '!'), }, - on_click = function() dfhack.run_command('hotkeys') end, + on_click=function() dfhack.run_command('hotkeys') end, }, } end function HotspotMenuWidget:overlay_trigger() - return MenuScreen { hotspot = self }:show() + return MenuScreen{hotspot=self}:show() end -- register the menu hotspot with the overlay -OVERLAY_WIDGETS = { menu = HotspotMenuWidget } +OVERLAY_WIDGETS = {menu=HotspotMenuWidget} -- ---- -- -- Menu -- @@ -103,15 +103,15 @@ local MAX_LIST_WIDTH = 45 local MAX_LIST_HEIGHT = 15 Menu = defclass(Menu, widgets.Panel) -Menu.ATTRS { - hotspot = DEFAULT_NIL, +Menu.ATTRS{ + hotspot=DEFAULT_NIL, } -- get a map from the binding string to a list of hotkey strings that all -- point to that binding local function get_bindings_to_hotkeys(hotkeys, bindings) local bindings_to_hotkeys = {} - for _, hotkey in ipairs(hotkeys) do + for _,hotkey in ipairs(hotkeys) do local binding = bindings[hotkey] table.insert(ensure_key(bindings_to_hotkeys, binding), hotkey) end @@ -126,17 +126,17 @@ local function get_choices(hotkeys, bindings, is_inverted) local bindings_to_hotkeys = get_bindings_to_hotkeys(hotkeys, bindings) -- build list choices - for _, hotkey in ipairs(hotkeys) do + for _,hotkey in ipairs(hotkeys) do local command = bindings[hotkey] if seen[command] then goto continue end seen[command] = true local hk_width, tokens = 0, {} - for _, hk in ipairs(bindings_to_hotkeys[command]) do + for _,hk in ipairs(bindings_to_hotkeys[command]) do if hk_width ~= 0 then table.insert(tokens, ', ') hk_width = hk_width + 2 end - table.insert(tokens, { text = hk, pen = COLOR_LIGHTGREEN }) + table.insert(tokens, {text=hk, pen=COLOR_LIGHTGREEN}) hk_width = hk_width + #hk end local command_str = command @@ -144,20 +144,16 @@ local function get_choices(hotkeys, bindings, is_inverted) local max_command_len = MAX_LIST_WIDTH - hk_width - LIST_BUFFER command_str = command:sub(1, max_command_len - 3) .. '...' end - table.insert(tokens, 1, { text = command_str }) - local choice = { - icon = ARROW, - command = command, - text = tokens, - hk_width = hk_width - } + table.insert(tokens, 1, {text=command_str}) + local choice = {icon=ARROW, command=command, text=tokens, + hk_width=hk_width} max_width = math.max(max_width, hk_width + #command_str + LIST_BUFFER) table.insert(choices, is_inverted and 1 or #choices + 1, choice) ::continue:: end -- adjust width of command fields so the hotkey tokens are right justified - for _, choice in ipairs(choices) do + for _,choice in ipairs(choices) do local command_token = choice.text[1] command_token.width = max_width - choice.hk_width - (LIST_BUFFER - 1) end @@ -168,17 +164,17 @@ end function Menu:init() local hotkeys, bindings = getHotkeys() if #hotkeys == 0 then - hotkeys = { '' } - bindings = { [''] = 'gui/launcher' } + hotkeys = {''} + bindings = {['']='gui/launcher'} end local is_inverted = not not self.hotspot.frame.b - local choices, list_width = get_choices(hotkeys, bindings, is_inverted) + local choices,list_width = get_choices(hotkeys, bindings, is_inverted) list_width = math.max(35, list_width) local list_frame = copyall(self.hotspot.frame) - local list_widget_frame = { h = math.min(#choices, MAX_LIST_HEIGHT) } + local list_widget_frame = {h=math.min(#choices, MAX_LIST_HEIGHT)} local quickstart_frame = {} list_frame.w = list_width + 2 list_frame.h = list_widget_frame.h + 4 @@ -197,51 +193,51 @@ function Menu:init() list_frame.r = math.max(0, list_frame.r + 5) end - local help_frame = { w = list_frame.w, l = list_frame.l, r = list_frame.r } + local help_frame = {w=list_frame.w, l=list_frame.l, r=list_frame.r} if list_frame.t then help_frame.t = list_frame.t + list_frame.h else help_frame.b = list_frame.b + list_frame.h end - self:addviews { - widgets.Panel { - view_id = 'list_panel', - frame = list_frame, - frame_style = gui.PANEL_FRAME, - frame_background = gui.CLEAR_PEN, - subviews = { - widgets.List { - view_id = 'list', - frame = list_widget_frame, - choices = choices, - icon_width = 2, - on_select = self:callback('onSelect'), - on_submit = self:callback('onSubmit'), - on_submit2 = self:callback('onSubmit2'), + self:addviews{ + widgets.Panel{ + view_id='list_panel', + frame=list_frame, + frame_style=gui.PANEL_FRAME, + frame_background=gui.CLEAR_PEN, + subviews={ + widgets.List{ + view_id='list', + frame=list_widget_frame, + choices=choices, + icon_width=2, + on_select=self:callback('onSelect'), + on_submit=self:callback('onSubmit'), + on_submit2=self:callback('onSubmit2'), }, - widgets.Panel { frame = { h = 1 } }, - widgets.HotkeyLabel { - frame = quickstart_frame, - label = 'Quickstart guide', - key = 'STRING_A063', - on_activate = function() - self:onSubmit(nil, { command = 'quickstart-guide' }) + widgets.Panel{frame={h=1}}, + widgets.HotkeyLabel{ + frame=quickstart_frame, + label='Quickstart guide', + key='STRING_A063', + on_activate=function() + self:onSubmit(nil, {command='quickstart-guide'}) end, }, }, }, - widgets.ResizingPanel { - view_id = 'help_panel', - autoarrange_subviews = true, - frame = help_frame, - frame_style = gui.PANEL_FRAME, - frame_background = gui.CLEAR_PEN, - subviews = { - widgets.WrappedLabel { - view_id = 'help', - text_to_wrap = '', - scroll_keys = {}, + widgets.ResizingPanel{ + view_id='help_panel', + autoarrange_subviews=true, + frame=help_frame, + frame_style=gui.PANEL_FRAME, + frame_background=gui.CLEAR_PEN, + subviews={ + widgets.WrappedLabel{ + view_id='help', + text_to_wrap='', + scroll_keys={}, }, }, }, @@ -256,7 +252,7 @@ function Menu:onSelect(_, choice) if not choice or #self.subviews == 0 then return end local command = get_command(choice.command) self.subviews.help.text_to_wrap = helpdb.is_entry(command) and - helpdb.get_entry_short_help(command) or 'Command not found' + helpdb.get_entry_short_help(command) or 'Command not found' self.subviews.help_panel:updateLayout() end @@ -306,7 +302,7 @@ end function Menu:getMouseFramePos() return self.subviews.list_panel:getMouseFramePos() or - self.subviews.help_panel:getMouseFramePos() + self.subviews.help_panel:getMouseFramePos() end function Menu:onRenderBody(dc) @@ -328,14 +324,14 @@ end MenuScreen = defclass(MenuScreen, gui.ZScreen) MenuScreen.ATTRS { - focus_path = 'hotkeys/menu', - initial_pause = false, - hotspot = DEFAULT_NIL, + focus_path='hotkeys/menu', + initial_pause=false, + hotspot=DEFAULT_NIL, } function MenuScreen:init() - self:addviews { - Menu { hotspot = self.hotspot }, + self:addviews{ + Menu{hotspot=self.hotspot}, } end From b22ca57f50d6c3446af6e3cea5375305a3ea9065 Mon Sep 17 00:00:00 2001 From: Najeeb Al-Shabibi Date: Sun, 24 Sep 2023 12:15:46 +0100 Subject: [PATCH 030/100] added previous 'hidden' and 'no-auto' functionality as options, and adjusted how z-level options are specified --- docs/plugins/dig.rst | 25 +++++++++++++++++-------- plugins/dig.cpp | 21 +++++++++++++++------ 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/docs/plugins/dig.rst b/docs/plugins/dig.rst index d6b6451a6..9cb3cc505 100644 --- a/docs/plugins/dig.rst +++ b/docs/plugins/dig.rst @@ -50,7 +50,7 @@ Usage Designate circles. The diameter is the number of tiles across the center of the circle that you want to dig. See the `digcircle`_ section below for options. -``digtype [] [-p] [-z]`` +``digtype [] [-p] [--zup|-u] [--zdown|-zu] [--cur-zlevel|-z] [--hidden|-h] [--no-auto|-a]`` Designate all vein tiles of the same type as the selected tile. See the `digtype`_ section below for options. ``digexp [] [] [-p]`` @@ -119,9 +119,11 @@ the last selected parameters. digtype ------- -For every tile on the map of the same vein type as the selected tile, this -command designates it to have the same designation as the selected tile. If the -selected tile has no designation, they will be dig designated. +For every tile on the map of the same vein type as the selected tile, this command +designates it to have the same designation as the selected tile. If the selected +tile has no designation, they will be dig designated. By default, only designates +visible tiles, and in the case of dig designation, applies automatic mining to them +(designates uncovered neighbouring tiles of the same type to be dug). If an argument is given, the designation of the selected tile is ignored, and all appropriate tiles are set to the specified designation. @@ -143,10 +145,17 @@ Designation options: ``clear`` Clear any designations. -You can also pass a ``-z`` and/or a ``+z``` option, which restricts designations to the -current z-level and down/up. This is useful when you don't want to designate tiles on the -same z-levels as your carefully dug fort above/below. To dig only at the current z-level, -pass in both. +Other options: +``--zdown`` or ``-d`` + Only designates tiles on the cursor's z-level and below +``--zup`` or ``-u`` + Only designates tiles on the cursor's z-level and above +``--cur-zlevel`` or ``-z`` + Only designates tiles on the same z-level as the cursor +``--hidden`` or ``-h`` + Allows designation of hidden tiles, and using a hidden tile as the "palette" +``--no-auto`` or ``-a`` + No automatic mining mode designation - useful if you want to avoid dwarves digging where you don't want them digexp ------ diff --git a/plugins/dig.cpp b/plugins/dig.cpp index 1379bc3db..836f48e9d 100644 --- a/plugins/dig.cpp +++ b/plugins/dig.cpp @@ -1425,6 +1425,9 @@ command_result digtype (color_ostream &out, vector & parameters) Maps::getSize(xMax,yMax,zMax); uint32_t zMin = 0; + + bool hidden = false; + bool automine = true; int32_t targetDigType = -1; for (string parameter : parameters) { @@ -1442,10 +1445,16 @@ command_result digtype (color_ostream &out, vector & parameters) targetDigType = tile_dig_designation::DownStair; else if ( parameter == "up" ) targetDigType = tile_dig_designation::UpStair; - else if ( parameter == "-z" ) + else if ( parameter == "-z" || parameter == "--cur-zlevel" ) + {zMax = *window_z + 1; zMin = *window_z;} + else if ( parameter == "--zdown" || parameter == "-d") zMax = *window_z + 1; - else if ( parameter == "+z") + else if ( parameter == "--zup" || parameter == "-u") zMin = *window_z; + else if ( parameter == "--hidden" || parameter == "-h") + hidden = true; + else if ( parameter == "--no-auto" || parameter == "-a" ) + automine = false; else { out.printerr("Invalid parameter: '%s'.\n", parameter.c_str()); @@ -1466,8 +1475,8 @@ command_result digtype (color_ostream &out, vector & parameters) std::unique_ptr mCache = std::make_unique(); df::tile_designation baseDes = mCache->designationAt(xy); - if (baseDes.bits.hidden) { - out.printerr("Cursor is pointing at a hidden tile. Point the cursor at a visible tile"); + if (baseDes.bits.hidden && !hidden) { + out.printerr("Cursor is pointing at a hidden tile. Point the cursor at a visible tile when using the --hidden option.\n"); return CR_FAILURE; } @@ -1495,7 +1504,7 @@ command_result digtype (color_ostream &out, vector & parameters) } // Auto dig only works on default dig designation. Setting dig_auto for any other designation // prevents dwarves from digging that tile at all. - if (baseDes.bits.dig == tile_dig_designation::Default) baseOcc.bits.dig_auto = true; + if (baseDes.bits.dig == tile_dig_designation::Default && automine) baseOcc.bits.dig_auto = true; else baseOcc.bits.dig_auto = false; for( uint32_t z = zMin; z < zMax; z++ ) @@ -1523,7 +1532,7 @@ command_result digtype (color_ostream &out, vector & parameters) df::tile_designation designation = mCache->designationAt(current); - if (designation.bits.hidden) continue; + if (designation.bits.hidden && !hidden) continue; df::tile_occupancy occupancy = mCache->occupancyAt(current); designation.bits.dig = baseDes.bits.dig; From ff03fc1f2d085e981b52a89c1f552649584e3c2b Mon Sep 17 00:00:00 2001 From: Najeeb Al-Shabibi Date: Sun, 24 Sep 2023 12:17:50 +0100 Subject: [PATCH 031/100] trailing whitespace removed --- plugins/dig.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/dig.cpp b/plugins/dig.cpp index 836f48e9d..7be7b815f 100644 --- a/plugins/dig.cpp +++ b/plugins/dig.cpp @@ -1421,11 +1421,10 @@ command_result digtype (color_ostream &out, vector & parameters) return CR_FAILURE; } + uint32_t zMin = 0; uint32_t xMax,yMax,zMax; Maps::getSize(xMax,yMax,zMax); - uint32_t zMin = 0; - bool hidden = false; bool automine = true; From dff9edb26bc3affa85a0835ff6c117a2e65264e5 Mon Sep 17 00:00:00 2001 From: Najeeb Al-Shabibi Date: Sun, 24 Sep 2023 12:20:55 +0100 Subject: [PATCH 032/100] dig doc unexpected indentation fixed --- docs/plugins/dig.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/plugins/dig.rst b/docs/plugins/dig.rst index 9cb3cc505..91951434e 100644 --- a/docs/plugins/dig.rst +++ b/docs/plugins/dig.rst @@ -147,15 +147,15 @@ Designation options: Other options: ``--zdown`` or ``-d`` - Only designates tiles on the cursor's z-level and below + Only designates tiles on the cursor's z-level and below. ``--zup`` or ``-u`` - Only designates tiles on the cursor's z-level and above + Only designates tiles on the cursor's z-level and above. ``--cur-zlevel`` or ``-z`` - Only designates tiles on the same z-level as the cursor + Only designates tiles on the same z-level as the cursor. ``--hidden`` or ``-h`` - Allows designation of hidden tiles, and using a hidden tile as the "palette" + Allows designation of hidden tiles, and using a hidden tile as the "palette". ``--no-auto`` or ``-a`` - No automatic mining mode designation - useful if you want to avoid dwarves digging where you don't want them + No automatic mining mode designation - useful if you want to avoid dwarves digging where you don't want them. digexp ------ From 15ede64d9b0f3d614c5176596452d9c693e7d21d Mon Sep 17 00:00:00 2001 From: Najeeb Al-Shabibi Date: Sun, 24 Sep 2023 12:23:25 +0100 Subject: [PATCH 033/100] dig doc unexpected indentation actually fixed --- docs/plugins/dig.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/plugins/dig.rst b/docs/plugins/dig.rst index 91951434e..dd69a5f04 100644 --- a/docs/plugins/dig.rst +++ b/docs/plugins/dig.rst @@ -146,15 +146,15 @@ Designation options: Clear any designations. Other options: -``--zdown`` or ``-d`` +``--zdown``, ``-d`` Only designates tiles on the cursor's z-level and below. -``--zup`` or ``-u`` +``--zup``, ``-u`` Only designates tiles on the cursor's z-level and above. -``--cur-zlevel`` or ``-z`` +``--cur-zlevel``, ``-z`` Only designates tiles on the same z-level as the cursor. -``--hidden`` or ``-h`` +``--hidden``, ``-h`` Allows designation of hidden tiles, and using a hidden tile as the "palette". -``--no-auto`` or ``-a`` +``--no-auto``, ``-a`` No automatic mining mode designation - useful if you want to avoid dwarves digging where you don't want them. digexp From 437f96f3c03e7cecab8732f203a9c3e72d839aeb Mon Sep 17 00:00:00 2001 From: donhth <> Date: Sun, 24 Sep 2023 07:30:31 -0400 Subject: [PATCH 034/100] add changelog entry, remove unavailable tag for tubefill --- docs/changelog.txt | 2 ++ docs/plugins/tubefill.rst | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 044cb1ca4..eb54766f2 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -53,6 +53,8 @@ Template for new versions: ## New Tools +- `tubefill`: (reinstated) replenishes mined-out adamantine + ## New Features ## Fixes diff --git a/docs/plugins/tubefill.rst b/docs/plugins/tubefill.rst index a8684c765..80282f6d9 100644 --- a/docs/plugins/tubefill.rst +++ b/docs/plugins/tubefill.rst @@ -3,7 +3,7 @@ tubefill .. dfhack-tool:: :summary: Replenishes mined-out adamantine. - :tags: unavailable fort armok map + :tags: fort armok map Veins that were originally hollow will be left alone. From 26dd4e1f787ff80cad1345bc8d1430d18bed1b03 Mon Sep 17 00:00:00 2001 From: Najeeb Al-Shabibi Date: Sun, 24 Sep 2023 12:30:32 +0100 Subject: [PATCH 035/100] dig doc unexpected indentation actually fixed fr this time --- docs/plugins/dig.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/plugins/dig.rst b/docs/plugins/dig.rst index dd69a5f04..b098d5ac1 100644 --- a/docs/plugins/dig.rst +++ b/docs/plugins/dig.rst @@ -146,6 +146,7 @@ Designation options: Clear any designations. Other options: + ``--zdown``, ``-d`` Only designates tiles on the cursor's z-level and below. ``--zup``, ``-u`` From 7d9dad4688df1639f3ecfc8e6c23d9d77bf06e4c Mon Sep 17 00:00:00 2001 From: Najeeb Al-Shabibi Date: Sun, 24 Sep 2023 20:51:30 +0100 Subject: [PATCH 036/100] dig - doc rewording and added change to changelog --- docs/changelog.txt | 1 + docs/plugins/dig.rst | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 044cb1ca4..74522451d 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -58,6 +58,7 @@ Template for new versions: ## Fixes ## Misc Improvements +- `dig`: `digtype` command now has options to choose between designating only visible tiles or hidden tiles, as well as "auto" dig mode. Z-level options adjusted to allow choosing z-levels above, below, or the same as the cursor. ## Documentation diff --git a/docs/plugins/dig.rst b/docs/plugins/dig.rst index b098d5ac1..8d5c99536 100644 --- a/docs/plugins/dig.rst +++ b/docs/plugins/dig.rst @@ -154,7 +154,7 @@ Other options: ``--cur-zlevel``, ``-z`` Only designates tiles on the same z-level as the cursor. ``--hidden``, ``-h`` - Allows designation of hidden tiles, and using a hidden tile as the "palette". + Allows designation of hidden tiles, and picking a hidden tile as the target type. ``--no-auto``, ``-a`` No automatic mining mode designation - useful if you want to avoid dwarves digging where you don't want them. From d7d142c61604ffb070269d4fc7bf167c8989eecc Mon Sep 17 00:00:00 2001 From: Najeeb Al-Shabibi Date: Sun, 24 Sep 2023 21:13:04 +0100 Subject: [PATCH 037/100] Authors.rst master-spike added --- docs/about/Authors.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/about/Authors.rst b/docs/about/Authors.rst index e81649d8d..27b896f89 100644 --- a/docs/about/Authors.rst +++ b/docs/about/Authors.rst @@ -139,6 +139,7 @@ moversti moversti mrrho mrrho Murad Beybalaev Erquint Myk Taylor myk002 +Najeeb Al-Shabibi master-spike napagokc napagokc Neil Little nmlittle Nick Rart nickrart comestible From 0559af9f1343d5c5be04c03ed26770406f60b6e8 Mon Sep 17 00:00:00 2001 From: Kelly Kinkade Date: Sun, 24 Sep 2023 19:10:46 -0500 Subject: [PATCH 038/100] autolabor: fix #3812 make sure autolabor resets the work detail bypass flag whenever autolabor is unloaded for _any_ reason i tested `disable autolabor`, `unload autolabor`, and unloading a fort with autolabor enabled; in all cases the work detail bypass flag was cleared as desired closes #3812 --- docs/changelog.txt | 1 + plugins/autolabor/autolabor.cpp | 21 ++++++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 74522451d..638c01459 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -56,6 +56,7 @@ Template for new versions: ## New Features ## Fixes +- `autolabor`: now unconditionally clears ``game.external_flag`` when unloading a fort or the plugin ## Misc Improvements - `dig`: `digtype` command now has options to choose between designating only visible tiles or hidden tiles, as well as "auto" dig mode. Z-level options adjusted to allow choosing z-levels above, below, or the same as the cursor. diff --git a/plugins/autolabor/autolabor.cpp b/plugins/autolabor/autolabor.cpp index 72bb4d84e..8be035214 100644 --- a/plugins/autolabor/autolabor.cpp +++ b/plugins/autolabor/autolabor.cpp @@ -305,6 +305,7 @@ static void cleanup_state() { enable_autolabor = false; labor_infos.clear(); + game->external_flag &= ~1; // reinstate DF's work detail system } static void reset_labor(df::unit_labor labor) @@ -326,6 +327,8 @@ static void init_state() if (!enable_autolabor) return; + game->external_flag |= 1; // bypass DF's work detail system + auto cfg_haulpct = World::GetPersistentData("autolabor/haulpct"); if (cfg_haulpct.isValid()) { @@ -413,8 +416,17 @@ static void enable_plugin(color_ostream &out) cleanup_state(); init_state(); +} + +static void disable_plugin(color_ostream& out) +{ + if (config.isValid()) + setOptionEnabled(CF_ENABLED, false); - game->external_flag |= 1; // shut down DF's work detail system + enable_autolabor = false; + out << "Disabling autolabor." << std::endl; + + cleanup_state(); } DFhackCExport command_result plugin_init ( color_ostream &out, std::vector &commands) @@ -1081,12 +1093,7 @@ DFhackCExport command_result plugin_enable ( color_ostream &out, bool enable ) } else if(!enable && enable_autolabor) { - enable_autolabor = false; - setOptionEnabled(CF_ENABLED, false); - - game->external_flag &= ~1; // reenable DF's work detail system - - out << "Autolabor is disabled." << std::endl; + disable_plugin(out); } return CR_OK; From a721fee8cdf25606ee0b15be1fc184dd1c118533 Mon Sep 17 00:00:00 2001 From: Myk Date: Sun, 24 Sep 2023 17:21:28 -0700 Subject: [PATCH 039/100] Update docs/changelog.txt --- docs/changelog.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 638c01459..9efb86430 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -56,7 +56,7 @@ Template for new versions: ## New Features ## Fixes -- `autolabor`: now unconditionally clears ``game.external_flag`` when unloading a fort or the plugin +- `autolabor`: now unconditionally re-enables vanilla work details when the fort or the plugin is unloaded ## Misc Improvements - `dig`: `digtype` command now has options to choose between designating only visible tiles or hidden tiles, as well as "auto" dig mode. Z-level options adjusted to allow choosing z-levels above, below, or the same as the cursor. From 7e21d384ab4002d4dcf85c85e807ffb3daf42c09 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Mon, 25 Sep 2023 07:13:23 +0000 Subject: [PATCH 040/100] Auto-update submodules library/xml: master scripts: master --- library/xml | 2 +- scripts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/xml b/library/xml index 041493b22..e6d83ccae 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit 041493b221e0799c106abeac1f86df4535ab80d3 +Subproject commit e6d83ccaee5b5a3c663b56046ae55a7389742da8 diff --git a/scripts b/scripts index e0591830b..0ed4052ac 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit e0591830b72cdfaec5c9bdb1bf713a74fe744788 +Subproject commit 0ed4052ac9049151657e22831996800d0d3104bb From fd31d9eb03a51d6d8382b3212eeb7c5ed6f42adf Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 24 Sep 2023 15:07:05 -0700 Subject: [PATCH 041/100] enable fortress mode tests in CI --- ci/test.lua | 56 ++++++++++++++++++++++++++++++----------- test/plugins/orders.lua | 2 +- 2 files changed, 43 insertions(+), 15 deletions(-) diff --git a/ci/test.lua b/ci/test.lua index ac0e5718d..807572a70 100644 --- a/ci/test.lua +++ b/ci/test.lua @@ -189,39 +189,67 @@ local function ensure_title_screen() dfhack.gui.getCurFocus(true)[1])) end -local function is_fortress(focus_string) - focus_string = focus_string or dfhack.gui.getCurFocus(true) - return focus_string == 'dwarfmode/Default' +local function is_fortress() + return dfhack.gui.matchFocusString('dwarfmode/Default') +end + +local function click_top_title_button(scr) + local sw, sh = dfhack.screen.getWindowSize() + df.global.gps.mouse_x = sw // 2 + df.global.gps.precise_mouse_x = df.global.gps.mouse_x * df.global.gps.tile_pixel_x + if sh < 60 then + df.global.gps.mouse_y = 23 + else + df.global.gps.mouse_y = (sh // 2) + 1 + end + df.global.gps.precise_mouse_y = df.global.gps.mouse_y * df.global.gps.tile_pixel_y + df.global.enabler.tracking_on = 1 + df.global.enabler.mouse_lbut = 1 + df.global.enabler.mouse_lbut_down = 1 + dfhack.screen._doSimulateInput(scr, {}) +end + +local function load_first_save(scr) + if #scr.savegame_header == 0 then + qerror('no savegames available to load') + end + scr.mode = 2 + click_top_title_button(scr) + delay() + click_top_title_button(scr) + delay() end -- Requires that a fortress game is already loaded or is ready to be loaded via --- the "Continue Playing" option in the title screen. Otherwise the function +-- the "Continue active game" option in the title screen. Otherwise the function -- will time out and/or exit with error. local function ensure_fortress(config) - local focus_string = dfhack.gui.getCurFocus(true) for screen_timeout = 1,10 do - if is_fortress(focus_string) then + if is_fortress() then print('Loaded fortress map') -- pause the game (if it's not already paused) dfhack.gui.resetDwarfmodeView(true) return end - local scr = dfhack.gui.getCurViewscreen(true) - if focus_string == 'title' or - focus_string == 'dfhack/lua/load_screen' then + local scr = dfhack.gui.getDFViewscreen(true) + if dfhack.gui.matchFocusString('title') then + -- TODO: reinstate loading of a specified save dir; for now + -- just load the first possible save, which will at least let us + -- run fortress tests in CI -- qerror()'s on falure - dfhack.run_script('load-save', config.save_dir) - elseif focus_string ~= 'loadgame' then + -- dfhack.run_script('load-save', config.save_dir) + load_first_save(scr) + elseif dfhack.gui.matchFocusString('loadgame') then -- if we're not actively loading a game, hope we're in -- a screen where hitting ESC will get us to the game map -- or the title screen scr:feed_key(df.interface_key.LEAVESCREEN) end -- wait for current screen to change - local prev_focus_string = focus_string + local prev_focus_string = dfhack.gui.getCurFocus(true)[1] for frame_timeout = 1,100 do delay(10) - focus_string = dfhack.gui.getCurFocus(true) + local focus_string = dfhack.gui.getCurFocus(true)[1] if focus_string ~= prev_focus_string then goto next_screen end @@ -236,7 +264,7 @@ local function ensure_fortress(config) ::next_screen:: end qerror(string.format('Could not load fortress (timed out at %s)', - focus_string)) + table.concat(dfhack.gui.getCurFocus(), ' '))) end local MODES = { diff --git a/test/plugins/orders.lua b/test/plugins/orders.lua index c5fae8eb2..d851adb02 100644 --- a/test/plugins/orders.lua +++ b/test/plugins/orders.lua @@ -1,5 +1,5 @@ config.mode = 'fortress' ---config.target = 'orders' +config.target = 'orders' local FILE_PATH_PATTERN = 'dfhack-config/orders/%s.json' From b9a6d39b60027ddbe6efc37542b13a7227ed9f37 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 24 Sep 2023 16:00:19 -0700 Subject: [PATCH 042/100] enable testing on Linux --- .github/workflows/test.yml | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 40b30cd13..e0576dbf7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -67,15 +67,14 @@ jobs: compiler: msvc plugins: "default" config: "empty" - # TODO: uncomment once we have a linux build we can download from bay12 - # - os: ubuntu - # compiler: gcc-10 - # plugins: "default" - # config: "default" - # - os: ubuntu - # compiler: gcc-12 - # plugins: "all" - # config: "default" + - os: ubuntu + compiler: gcc-10 + plugins: "default" + config: "default" + - os: ubuntu + compiler: gcc-12 + plugins: "all" + config: "default" steps: - name: Set env shell: bash From 621d36fd3a28074aeb53a9c36430308ad0a2a1da Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 24 Sep 2023 16:16:21 -0700 Subject: [PATCH 043/100] tighen up screen matching --- ci/test.lua | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/ci/test.lua b/ci/test.lua index 807572a70..5860ef5ea 100644 --- a/ci/test.lua +++ b/ci/test.lua @@ -175,6 +175,9 @@ local function ensure_title_screen() prev_ms = now_ms end end + if df.viewscreen_dwarfmodest:is_instance(dfhack.gui.getDFViewscreen(true)) then + qerror('Cannot reach title screen from loaded fort') + end for i = 1, 100 do local scr = dfhack.gui.getCurViewscreen() if is_title_screen(scr) then @@ -193,6 +196,18 @@ local function is_fortress() return dfhack.gui.matchFocusString('dwarfmode/Default') end +-- error out if we're not running in a CI environment +-- the tests may corrupt saves, and we don't want to unexpectedly ruin a real player save +-- this heuristic is not perfect, but it should be able to detect most cases +local function ensure_ci_save(scr) + if #scr.savegame_header ~= 1 + or #scr.savegame_header_world ~= 1 + or not string.find(scr.savegame_header[0].fort_name, 'Dream') + then + qerror('Unexpected test save in slot 0; please manually load a fort for testing. note that tests may corrupt the game!') + end +end + local function click_top_title_button(scr) local sw, sh = dfhack.screen.getWindowSize() df.global.gps.mouse_x = sw // 2 @@ -232,14 +247,15 @@ local function ensure_fortress(config) return end local scr = dfhack.gui.getDFViewscreen(true) - if dfhack.gui.matchFocusString('title') then + if dfhack.gui.matchFocusString('title/Default') then -- TODO: reinstate loading of a specified save dir; for now -- just load the first possible save, which will at least let us -- run fortress tests in CI -- qerror()'s on falure -- dfhack.run_script('load-save', config.save_dir) + ensure_ci_save(scr) load_first_save(scr) - elseif dfhack.gui.matchFocusString('loadgame') then + elseif not dfhack.gui.matchFocusString('loadgame') then -- if we're not actively loading a game, hope we're in -- a screen where hitting ESC will get us to the game map -- or the title screen From 4ffa78c96c336c900801fe0d1fd88a1dfbd0342a Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 24 Sep 2023 16:23:30 -0700 Subject: [PATCH 044/100] fix DF extraction on Linux --- ci/download-df.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/ci/download-df.sh b/ci/download-df.sh index 12e9a41e3..399b75714 100755 --- a/ci/download-df.sh +++ b/ci/download-df.sh @@ -18,7 +18,7 @@ elif test "$OS_TARGET" = "ubuntu"; then WGET=wget df_url="${df_url}_linux.tar.bz2" df_archive_name="df.tar.bz2" - df_extract_cmd="tar -x -j --strip-components=1 -f" + df_extract_cmd="tar -x -j -C ${DF_FOLDER} -f" else echo "Unhandled OS target: ${OS_TARGET}" exit 1 @@ -29,22 +29,25 @@ if ! $WGET -v "$df_url" -O "$df_archive_name"; then exit 1 fi +md5sum "$df_archive_name" + save_url="https://dffd.bay12games.com/download.php?id=15434&f=dreamfort.7z" save_archive_name="test_save.7z" -save_extract_cmd="7z x -oDF/save" +save_extract_cmd="7z x -o${DF_FOLDER}/save" if ! $WGET -v "$save_url" -O "$save_archive_name"; then echo "Failed to download test save from $save_url" exit 1 fi +md5sum "$save_archive_name" + echo Extracting +mkdir -p ${DF_FOLDER} $df_extract_cmd "$df_archive_name" $save_extract_cmd "$save_archive_name" -mv DF/save/* DF/save/region1 +mv ${DF_FOLDER}/save/* ${DF_FOLDER}/save/region1 echo Done ls -l - -md5sum "$df_archive_name" "$save_archive_name" From 92b35e32cb7330e10e8661181854110353a0cc44 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 24 Sep 2023 17:01:06 -0700 Subject: [PATCH 045/100] wait for initial load when transitioning states --- ci/test.lua | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/ci/test.lua b/ci/test.lua index 5860ef5ea..06dee5a75 100644 --- a/ci/test.lua +++ b/ci/test.lua @@ -151,18 +151,14 @@ end test_envvars.require = clean_require test_envvars.reqscript = clean_reqscript -local function is_title_screen(scr) - scr = scr or dfhack.gui.getCurViewscreen() - return df.viewscreen_titlest:is_instance(scr) +local function is_title_screen() + return dfhack.gui.matchFocusString('title/Default') end --- This only handles pre-fortress-load screens. It will time out if the player --- has already loaded a fortress or is in any screen that can't get to the title --- screen by sending ESC keys. -local function ensure_title_screen() +local function wait_for_game_load() local start_ms = dfhack.getTickCount() local prev_ms = start_ms - while df.viewscreen_initial_prepst:is_instance(dfhack.gui.getCurViewscreen()) do + while df.viewscreen_initial_prepst:is_instance(dfhack.gui.getDFViewscreen()) do delay(10) -- wait up to 1 minute for the game to load and show the title screen local now_ms = dfhack.getTickCount() @@ -175,12 +171,19 @@ local function ensure_title_screen() prev_ms = now_ms end end +end + +-- This only handles pre-fortress-load screens. It will time out if the player +-- has already loaded a fortress or is in any screen that can't get to the title +-- screen by sending ESC keys. +local function ensure_title_screen() + wait_for_game_load() if df.viewscreen_dwarfmodest:is_instance(dfhack.gui.getDFViewscreen(true)) then qerror('Cannot reach title screen from loaded fort') end for i = 1, 100 do local scr = dfhack.gui.getCurViewscreen() - if is_title_screen(scr) then + if is_title_screen() then print('Found title screen') return end @@ -239,15 +242,17 @@ end -- the "Continue active game" option in the title screen. Otherwise the function -- will time out and/or exit with error. local function ensure_fortress(config) + wait_for_game_load() for screen_timeout = 1,10 do if is_fortress() then - print('Loaded fortress map') + print('Fortress map is loaded') -- pause the game (if it's not already paused) dfhack.gui.resetDwarfmodeView(true) return end local scr = dfhack.gui.getDFViewscreen(true) if dfhack.gui.matchFocusString('title/Default') then + print('Attempting to load the test fortress') -- TODO: reinstate loading of a specified save dir; for now -- just load the first possible save, which will at least let us -- run fortress tests in CI From 8b3a3d4ebbbec670bffc712c1753d948cb28aad7 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 24 Sep 2023 17:05:08 -0700 Subject: [PATCH 046/100] reduce tries to one so we don't lose stdout other option: save stdout after every run and concatenate at the end --- ci/run-tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/run-tests.py b/ci/run-tests.py index 3d646a2f7..257359324 100755 --- a/ci/run-tests.py +++ b/ci/run-tests.py @@ -31,7 +31,7 @@ if args.test_dir is not None: if not os.path.isdir(args.test_dir): print('ERROR: invalid test folder: %r' % args.test_dir) -MAX_TRIES = 5 +MAX_TRIES = 1 dfhack = 'Dwarf Fortress.exe' if sys.platform == 'win32' else './dfhack' test_status_file = 'test_status.json' From 32bd04f83e3498e1134d290283ece53e76d1c00b Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 24 Sep 2023 17:16:13 -0700 Subject: [PATCH 047/100] install SDL2 on Linux for DF --- .github/workflows/test.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e0576dbf7..fb7bcce7d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -79,6 +79,11 @@ jobs: - name: Set env shell: bash run: echo "DF_FOLDER=DF" >> $GITHUB_ENV + - name: Install dependencies + if: matrix.os == 'ubuntu' + run: | + sudo apt-get update + sudo apt-get install libsdl2-dev libsdl2-image-dev - name: Clone DFHack uses: actions/checkout@v3 with: From 0d7f9a401f7670d6e866de3096813ea0529421be Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 24 Sep 2023 17:54:10 -0700 Subject: [PATCH 048/100] output where we're clicking for debugging --- ci/test.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/test.lua b/ci/test.lua index 06dee5a75..57ed13124 100644 --- a/ci/test.lua +++ b/ci/test.lua @@ -220,6 +220,7 @@ local function click_top_title_button(scr) else df.global.gps.mouse_y = (sh // 2) + 1 end + print(('simulating click at screen coordinates %d, %d'):format(df.global.gps.mouse_x, df.global.gps.mouse_y)) df.global.gps.precise_mouse_y = df.global.gps.mouse_y * df.global.gps.tile_pixel_y df.global.enabler.tracking_on = 1 df.global.enabler.mouse_lbut = 1 From b3fdaa54c558e9ff72bd8bf51c973e5b09c07e9d Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 24 Sep 2023 22:00:03 -0700 Subject: [PATCH 049/100] install non-dev libs; start X server --- .github/workflows/test.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fb7bcce7d..d36ff49d4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -83,7 +83,9 @@ jobs: if: matrix.os == 'ubuntu' run: | sudo apt-get update - sudo apt-get install libsdl2-dev libsdl2-image-dev + sudo apt-get install \ + libsdl2-2.0-0 \ + libsdl2-image-2.0-0 - name: Clone DFHack uses: actions/checkout@v3 with: @@ -121,8 +123,13 @@ jobs: - name: Install DFHack shell: bash run: tar xjf test-${{ matrix.compiler }}.tar.bz2 -C ${{ env.DF_FOLDER }} + - name: Start X server + if: matrix.os == 'ubuntu' + run: Xvfb :0 -screen 0 1600x1200x32 & - name: Run lua tests timeout-minutes: 10 + env: + DISPLAY: :0 run: python ci/run-tests.py --keep-status "${{ env.DF_FOLDER }}" - name: Check RPC interface run: python ci/check-rpc.py "${{ env.DF_FOLDER }}/dfhack-rpc.txt" From e8f0de4078efbbdec0150823e8418d6006bfb9b4 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 24 Sep 2023 22:00:15 -0700 Subject: [PATCH 050/100] print screen dims --- ci/test.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/test.lua b/ci/test.lua index 57ed13124..34fcd97a6 100644 --- a/ci/test.lua +++ b/ci/test.lua @@ -213,6 +213,7 @@ end local function click_top_title_button(scr) local sw, sh = dfhack.screen.getWindowSize() + print(('screen dimensions: %d, %d'):format(sw. sh)) df.global.gps.mouse_x = sw // 2 df.global.gps.precise_mouse_x = df.global.gps.mouse_x * df.global.gps.tile_pixel_x if sh < 60 then From 8dc5f8e86b23746aea2912b02039f2de30a7d636 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 24 Sep 2023 23:23:49 -0700 Subject: [PATCH 051/100] fix screen depth and print syntax --- .github/workflows/test.yml | 2 +- ci/test.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d36ff49d4..fa59c5f2e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -125,7 +125,7 @@ jobs: run: tar xjf test-${{ matrix.compiler }}.tar.bz2 -C ${{ env.DF_FOLDER }} - name: Start X server if: matrix.os == 'ubuntu' - run: Xvfb :0 -screen 0 1600x1200x32 & + run: Xvfb :0 -screen 0 1600x1200x24 & - name: Run lua tests timeout-minutes: 10 env: diff --git a/ci/test.lua b/ci/test.lua index 34fcd97a6..193b89ce8 100644 --- a/ci/test.lua +++ b/ci/test.lua @@ -213,7 +213,7 @@ end local function click_top_title_button(scr) local sw, sh = dfhack.screen.getWindowSize() - print(('screen dimensions: %d, %d'):format(sw. sh)) + print(('screen dimensions: %d, %d'):format(sw, sh)) df.global.gps.mouse_x = sw // 2 df.global.gps.precise_mouse_x = df.global.gps.mouse_x * df.global.gps.tile_pixel_x if sh < 60 then From 989415cef08b420d6e19e8f81b9a7fd1d641baac Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 24 Sep 2023 23:45:43 -0700 Subject: [PATCH 052/100] use gui.simulateInput --- ci/test.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/test.lua b/ci/test.lua index 193b89ce8..dc814da19 100644 --- a/ci/test.lua +++ b/ci/test.lua @@ -2,6 +2,7 @@ --@ module = true local expect = require('test_util.expect') +local gui = require('gui') local helpdb = require('helpdb') local json = require('json') local mock = require('test_util.mock') @@ -226,7 +227,7 @@ local function click_top_title_button(scr) df.global.enabler.tracking_on = 1 df.global.enabler.mouse_lbut = 1 df.global.enabler.mouse_lbut_down = 1 - dfhack.screen._doSimulateInput(scr, {}) + gui.simulateInput(scr, '_MOUSE_L') end local function load_first_save(scr) From 9cd90589822cbc6bc2adee1e90b543293b27adcc Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 25 Sep 2023 00:04:29 -0700 Subject: [PATCH 053/100] set a TERM var --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fa59c5f2e..6255219e6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -130,6 +130,7 @@ jobs: timeout-minutes: 10 env: DISPLAY: :0 + TERM: xterm-256color run: python ci/run-tests.py --keep-status "${{ env.DF_FOLDER }}" - name: Check RPC interface run: python ci/check-rpc.py "${{ env.DF_FOLDER }}/dfhack-rpc.txt" From 0c1d73cfe63bd86e1061ae22eabe42619636a61a Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 25 Sep 2023 00:04:41 -0700 Subject: [PATCH 054/100] adjust settings to v50 norms --- ci/run-tests.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/ci/run-tests.py b/ci/run-tests.py index 257359324..f43c7efd4 100755 --- a/ci/run-tests.py +++ b/ci/run-tests.py @@ -65,14 +65,12 @@ if not os.path.exists(init_txt_path): shutil.copyfile(init_txt_path, init_txt_path + '.orig') with open(init_txt_path) as f: init_contents = f.read() -init_contents = change_setting(init_contents, 'INTRO', 'NO') init_contents = change_setting(init_contents, 'SOUND', 'NO') init_contents = change_setting(init_contents, 'WINDOWED', 'YES') -init_contents = change_setting(init_contents, 'WINDOWEDX', '80') -init_contents = change_setting(init_contents, 'WINDOWEDY', '25') -init_contents = change_setting(init_contents, 'FPS', 'YES') -if args.headless: - init_contents = change_setting(init_contents, 'PRINT_MODE', 'TEXT') +init_contents = change_setting(init_contents, 'WINDOWEDX', '1200') +init_contents = change_setting(init_contents, 'WINDOWEDY', '800') +#if args.headless: +# init_contents = change_setting(init_contents, 'PRINT_MODE', 'TEXT') init_path = 'dfhack-config/init' if not os.path.isdir('hack/init'): From cc49c07870d2585b0ec625354cb2020cb0193c23 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 25 Sep 2023 12:07:39 -0700 Subject: [PATCH 055/100] click on buttons to drive the UI --- ci/test.lua | 69 +++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 36 deletions(-) diff --git a/ci/test.lua b/ci/test.lua index dc814da19..3b5b041ba 100644 --- a/ci/test.lua +++ b/ci/test.lua @@ -156,19 +156,18 @@ local function is_title_screen() return dfhack.gui.matchFocusString('title/Default') end -local function wait_for_game_load() +local function wait_for(ms, desc, predicate) local start_ms = dfhack.getTickCount() local prev_ms = start_ms - while df.viewscreen_initial_prepst:is_instance(dfhack.gui.getDFViewscreen()) do + while not predicate() do delay(10) - -- wait up to 1 minute for the game to load and show the title screen local now_ms = dfhack.getTickCount() - if now_ms - start_ms > 60000 then - qerror(('Could not find title screen (timed out at %s)'):format( - dfhack.gui.getCurFocus(true)[1])) + if now_ms - start_ms > ms then + qerror(('%s took too long (timed out at %s)'):format( + desc, dfhack.gui.getCurFocus(true)[1])) end if now_ms - prev_ms > 1000 then - print('Waiting for game to load and show title screen...') + print(('Waiting for %s...'):format(desc)) prev_ms = now_ms end end @@ -178,7 +177,6 @@ end -- has already loaded a fortress or is in any screen that can't get to the title -- screen by sending ESC keys. local function ensure_title_screen() - wait_for_game_load() if df.viewscreen_dwarfmodest:is_instance(dfhack.gui.getDFViewscreen(true)) then qerror('Cannot reach title screen from loaded fort') end @@ -208,21 +206,21 @@ local function ensure_ci_save(scr) or #scr.savegame_header_world ~= 1 or not string.find(scr.savegame_header[0].fort_name, 'Dream') then - qerror('Unexpected test save in slot 0; please manually load a fort for testing. note that tests may corrupt the game!') + qerror('Unexpected test save in slot 0; please manually load a fort for ' .. + 'running fortress mode tests. note that tests may alter or corrupt the ' .. + 'fort! Do not save after running tests.') end end local function click_top_title_button(scr) local sw, sh = dfhack.screen.getWindowSize() - print(('screen dimensions: %d, %d'):format(sw, sh)) df.global.gps.mouse_x = sw // 2 df.global.gps.precise_mouse_x = df.global.gps.mouse_x * df.global.gps.tile_pixel_x if sh < 60 then - df.global.gps.mouse_y = 23 + df.global.gps.mouse_y = 25 else - df.global.gps.mouse_y = (sh // 2) + 1 + df.global.gps.mouse_y = (sh // 2) + 3 end - print(('simulating click at screen coordinates %d, %d'):format(df.global.gps.mouse_x, df.global.gps.mouse_y)) df.global.gps.precise_mouse_y = df.global.gps.mouse_y * df.global.gps.tile_pixel_y df.global.enabler.tracking_on = 1 df.global.enabler.mouse_lbut = 1 @@ -234,18 +232,25 @@ local function load_first_save(scr) if #scr.savegame_header == 0 then qerror('no savegames available to load') end - scr.mode = 2 + click_top_title_button(scr) - delay() + wait_for(1000, 'world list', function() + return scr.mode == 2 + end) click_top_title_button(scr) - delay() + wait_for(1000, 'savegame list', function() + return scr.mode == 3 + end) + click_top_title_button(scr) + wait_for(1000, 'loadgame progress bar', function() + return dfhack.gui.matchFocusString('loadgame') + end) end -- Requires that a fortress game is already loaded or is ready to be loaded via -- the "Continue active game" option in the title screen. Otherwise the function -- will time out and/or exit with error. local function ensure_fortress(config) - wait_for_game_load() for screen_timeout = 1,10 do if is_fortress() then print('Fortress map is loaded') @@ -253,8 +258,8 @@ local function ensure_fortress(config) dfhack.gui.resetDwarfmodeView(true) return end - local scr = dfhack.gui.getDFViewscreen(true) - if dfhack.gui.matchFocusString('title/Default') then + local scr = dfhack.gui.getCurViewscreen() + if dfhack.gui.matchFocusString('title/Default', scr) then print('Attempting to load the test fortress') -- TODO: reinstate loading of a specified save dir; for now -- just load the first possible save, which will at least let us @@ -263,29 +268,17 @@ local function ensure_fortress(config) -- dfhack.run_script('load-save', config.save_dir) ensure_ci_save(scr) load_first_save(scr) - elseif not dfhack.gui.matchFocusString('loadgame') then + elseif not dfhack.gui.matchFocusString('loadgame', scr) then -- if we're not actively loading a game, hope we're in -- a screen where hitting ESC will get us to the game map -- or the title screen scr:feed_key(df.interface_key.LEAVESCREEN) end -- wait for current screen to change - local prev_focus_string = dfhack.gui.getCurFocus(true)[1] - for frame_timeout = 1,100 do - delay(10) - local focus_string = dfhack.gui.getCurFocus(true)[1] - if focus_string ~= prev_focus_string then - goto next_screen - end - if frame_timeout % 10 == 0 then - print(string.format( - 'Loading fortress (currently at screen: %s)', - focus_string)) - end - end - print('Timed out waiting for screen to change') - break - ::next_screen:: + local prev_focus_string = dfhack.gui.getCurFocus()[1] + wait_for(60000, 'screen change', function() + return dfhack.gui.getCurFocus()[1] ~= prev_focus_string + end) end qerror(string.format('Could not load fortress (timed out at %s)', table.concat(dfhack.gui.getCurFocus(), ' '))) @@ -630,6 +623,10 @@ local function filter_tests(tests, config) end local function run_tests(tests, status, counts, config) + wait_for(60000, 'game load', function() + local scr = dfhack.gui.getDFViewscreen() + return not df.viewscreen_initial_prepst:is_instance(scr) + end) print(('Running %d tests'):format(#tests)) local start_ms = dfhack.getTickCount() local num_skipped = 0 From 30e3b695a17b215a9c10a11c51d29a91ac74f189 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 25 Sep 2023 17:34:38 -0700 Subject: [PATCH 056/100] skip crashing tests and mark them as failed --- ci/run-tests.py | 2 +- ci/test.lua | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ci/run-tests.py b/ci/run-tests.py index f43c7efd4..13eeb099c 100755 --- a/ci/run-tests.py +++ b/ci/run-tests.py @@ -31,7 +31,7 @@ if args.test_dir is not None: if not os.path.isdir(args.test_dir): print('ERROR: invalid test folder: %r' % args.test_dir) -MAX_TRIES = 1 +MAX_TRIES = 5 dfhack = 'Dwarf Fortress.exe' if sys.platform == 'win32' else './dfhack' test_status_file = 'test_status.json' diff --git a/ci/test.lua b/ci/test.lua index 3b5b041ba..372d8f262 100644 --- a/ci/test.lua +++ b/ci/test.lua @@ -645,12 +645,13 @@ local function run_tests(tests, status, counts, config) goto skip end end + -- pre-emptively mark the test as failed in case we induce a crash + status[test.full_name] = TestStatus.FAILED + save_test_status(status) if run_test(test, status, counts) then status[test.full_name] = TestStatus.PASSED - else - status[test.full_name] = TestStatus.FAILED + save_test_status(status) end - save_test_status(status) ::skip:: end local elapsed_ms = dfhack.getTickCount() - start_ms From 83137378332e02601b9ff4e267fca538b67eaae3 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Tue, 26 Sep 2023 07:13:08 +0000 Subject: [PATCH 057/100] Auto-update submodules scripts: master --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 0ed4052ac..a8aacf9b3 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 0ed4052ac9049151657e22831996800d0d3104bb +Subproject commit a8aacf9b3e8d71c338f8d087792ee8aa39a85220 From 932f3324d3efb09d160008b59bf25842cfa76b2a Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Tue, 26 Sep 2023 03:45:15 -0700 Subject: [PATCH 058/100] add detailed focus strings for setupdwarfgame --- library/modules/Gui.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/library/modules/Gui.cpp b/library/modules/Gui.cpp index 9eee284ac..58763262f 100644 --- a/library/modules/Gui.cpp +++ b/library/modules/Gui.cpp @@ -87,6 +87,7 @@ using namespace DFHack; #include "df/viewscreen_dwarfmodest.h" #include "df/viewscreen_legendsst.h" #include "df/viewscreen_new_regionst.h" +#include "df/viewscreen_setupdwarfgamest.h" #include "df/viewscreen_titlest.h" #include "df/world.h" @@ -174,6 +175,45 @@ DEFINE_GET_FOCUS_STRING_HANDLER(new_region) focusStrings.push_back(baseFocus); } +DEFINE_GET_FOCUS_STRING_HANDLER(setupdwarfgame) +{ + if (screen->doing_custom_settings) + focusStrings.push_back(baseFocus + "/CustomSettings"); + else if (game->main_interface.options.open) + focusStrings.push_back(baseFocus + "/Abort"); + else if (screen->initial_selection == 1) + focusStrings.push_back(baseFocus + "/Default"); + else if (game->main_interface.name_creator.open) { + switch (game->main_interface.name_creator.context) { + case df::name_creator_context_type::EMBARK_FORT_NAME: + focusStrings.push_back(baseFocus + "/FortName"); + break; + case df::name_creator_context_type::EMBARK_GROUP_NAME: + focusStrings.push_back(baseFocus + "/GroupName"); + break; + default: + break; + } + } + else if (game->main_interface.image_creator.open) { + focusStrings.push_back(baseFocus + "/GroupSymbol"); + } + else if (screen->viewing_objections != 0) + focusStrings.push_back(baseFocus + "/Objections"); + else { + switch (screen->mode) { + case 0: focusStrings.push_back(baseFocus + "/Dwarves"); break; + case 1: focusStrings.push_back(baseFocus + "/Items"); break; + case 2: focusStrings.push_back(baseFocus + "/Animals"); break; + default: + break; + } + } + + if (focusStrings.empty()) + focusStrings.push_back(baseFocus + "/Default"); +} + DEFINE_GET_FOCUS_STRING_HANDLER(legends) { if (screen->init_stage != -1) From eefd38c66cc78d3159a7e85096bcade24dd441a7 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Tue, 26 Sep 2023 03:52:24 -0700 Subject: [PATCH 059/100] align mouse button semantics to DF we, um, had it backwards --- docs/changelog.txt | 1 + docs/dev/Lua API.rst | 4 +- library/LuaTools.cpp | 72 +++++++++---------- library/lua/gui.lua | 23 ++---- library/lua/gui/dialogs.lua | 8 +-- library/lua/gui/widgets.lua | 37 +++++----- library/modules/Screen.cpp | 10 +++ plugins/lua/buildingplan/inspectoroverlay.lua | 4 +- plugins/lua/buildingplan/itemselection.lua | 4 +- plugins/lua/buildingplan/planneroverlay.lua | 8 +-- plugins/lua/hotkeys.lua | 8 +-- plugins/lua/overlay.lua | 3 - plugins/lua/sort.lua | 4 +- plugins/lua/zone.lua | 9 ++- test/library/gui/widgets.EditField.lua | 6 +- test/library/gui/widgets.Scrollbar.lua | 18 ++--- test/library/gui/widgets.lua | 4 +- 17 files changed, 110 insertions(+), 113 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 9efb86430..9e377dd4f 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -66,6 +66,7 @@ Template for new versions: ## API ## Lua +- mouse key events are now aligned with internal DF semantics: ``_MOUSE_L`` indicates that the left mouse button has just been pressed and ``_MOUSE_L_DOWN`` indicates that the left mouse button is being held down. similar for ``_MOUSE_R`` and ``_MOUSE_M``. 3rd party scripts may have to adjust. ## Removed diff --git a/docs/dev/Lua API.rst b/docs/dev/Lua API.rst index 1cba8284e..6eeb2dbe7 100644 --- a/docs/dev/Lua API.rst +++ b/docs/dev/Lua API.rst @@ -2528,10 +2528,10 @@ Supported callbacks and fields are: Maps to an integer in range 0-255. Duplicates a separate "STRING_A???" code for convenience. ``_MOUSE_L, _MOUSE_R, _MOUSE_M`` - If the left, right, and/or middle mouse button is being pressed. + If the left, right, and/or middle mouse button was just pressed. ``_MOUSE_L_DOWN, _MOUSE_R_DOWN, _MOUSE_M_DOWN`` - If the left, right, and/or middle mouse button was just pressed. + If the left, right, and/or middle mouse button is being held down. If this method is omitted, the screen is dismissed on reception of the ``LEAVESCREEN`` key. diff --git a/library/LuaTools.cpp b/library/LuaTools.cpp index ffeb4980a..87699641d 100644 --- a/library/LuaTools.cpp +++ b/library/LuaTools.cpp @@ -131,12 +131,12 @@ void DFHack::Lua::GetVector(lua_State *state, std::vector &pvec, in } } -static bool trigger_inhibit_l_down = false; -static bool trigger_inhibit_r_down = false; -static bool trigger_inhibit_m_down = false; -static bool inhibit_l_down = false; -static bool inhibit_r_down = false; -static bool inhibit_m_down = false; +static bool trigger_inhibit_l = false; +static bool trigger_inhibit_r = false; +static bool trigger_inhibit_m = false; +static bool inhibit_l = false; +static bool inhibit_r = false; +static bool inhibit_m = false; void DFHack::Lua::PushInterfaceKeys(lua_State *L, const std::set &keys) { @@ -161,32 +161,32 @@ void DFHack::Lua::PushInterfaceKeys(lua_State *L, } if (df::global::enabler) { - if (!inhibit_l_down && df::global::enabler->mouse_lbut_down) { + if (!inhibit_l && df::global::enabler->mouse_lbut) { lua_pushboolean(L, true); - lua_setfield(L, -2, "_MOUSE_L_DOWN"); - trigger_inhibit_l_down = true; + lua_setfield(L, -2, "_MOUSE_L"); + trigger_inhibit_l = true; } - if (!inhibit_r_down && df::global::enabler->mouse_rbut_down) { + if (!inhibit_r && df::global::enabler->mouse_rbut) { lua_pushboolean(L, true); - lua_setfield(L, -2, "_MOUSE_R_DOWN"); - trigger_inhibit_r_down = true; + lua_setfield(L, -2, "_MOUSE_R"); + trigger_inhibit_r = true; } - if (!inhibit_m_down && df::global::enabler->mouse_mbut_down) { + if (!inhibit_m && df::global::enabler->mouse_mbut) { lua_pushboolean(L, true); - lua_setfield(L, -2, "_MOUSE_M_DOWN"); - trigger_inhibit_m_down = true; + lua_setfield(L, -2, "_MOUSE_M"); + trigger_inhibit_m = true; } - if (df::global::enabler->mouse_lbut) { + if (df::global::enabler->mouse_lbut_down) { lua_pushboolean(L, true); - lua_setfield(L, -2, "_MOUSE_L"); + lua_setfield(L, -2, "_MOUSE_L_DOWN"); } - if (df::global::enabler->mouse_rbut) { + if (df::global::enabler->mouse_rbut_down) { lua_pushboolean(L, true); - lua_setfield(L, -2, "_MOUSE_R"); + lua_setfield(L, -2, "_MOUSE_R_DOWN"); } - if (df::global::enabler->mouse_mbut) { + if (df::global::enabler->mouse_mbut_down) { lua_pushboolean(L, true); - lua_setfield(L, -2, "_MOUSE_M"); + lua_setfield(L, -2, "_MOUSE_M_DOWN"); } } } @@ -2159,25 +2159,25 @@ void DFHack::Lua::Core::Reset(color_ostream &out, const char *where) lua_settop(State, 0); } - if (trigger_inhibit_l_down) { - trigger_inhibit_l_down = false; - inhibit_l_down = true; + if (trigger_inhibit_l) { + trigger_inhibit_l = false; + inhibit_l = true; } - if (trigger_inhibit_r_down) { - trigger_inhibit_r_down = false; - inhibit_r_down = true; + if (trigger_inhibit_r) { + trigger_inhibit_r = false; + inhibit_r = true; } - if (trigger_inhibit_m_down) { - trigger_inhibit_m_down = false; - inhibit_m_down = true; + if (trigger_inhibit_m) { + trigger_inhibit_m = false; + inhibit_m = true; } if (df::global::enabler) { - if (!df::global::enabler->mouse_lbut) - inhibit_l_down = false; - if (!df::global::enabler->mouse_rbut) - inhibit_r_down = false; - if (!df::global::enabler->mouse_mbut) - inhibit_m_down = false; + if (!df::global::enabler->mouse_lbut_down) + inhibit_l = false; + if (!df::global::enabler->mouse_rbut_down) + inhibit_r = false; + if (!df::global::enabler->mouse_mbut_down) + inhibit_m = false; } } diff --git a/library/lua/gui.lua b/library/lua/gui.lua index bba7222b9..ba49e0cdc 100644 --- a/library/lua/gui.lua +++ b/library/lua/gui.lua @@ -696,16 +696,12 @@ end DEFAULT_INITIAL_PAUSE = true -local zscreen_inhibit_mouse_l = false - -- ensure underlying DF screens don't also react to handled clicks function markMouseClicksHandled(keys) - if keys._MOUSE_L_DOWN then - -- note we can't clear mouse_lbut here. otherwise we break dragging, - df.global.enabler.mouse_lbut_down = 0 - zscreen_inhibit_mouse_l = true + if keys._MOUSE_L then + df.global.enabler.mouse_lbut = 0 end - if keys._MOUSE_R_DOWN then + if keys._MOUSE_R then df.global.enabler.mouse_rbut_down = 0 df.global.enabler.mouse_rbut = 0 end @@ -789,7 +785,7 @@ function ZScreen:onInput(keys) local has_mouse = self:isMouseOver() if not self:hasFocus() then if has_mouse and - (keys._MOUSE_L_DOWN or keys._MOUSE_R_DOWN or + (keys._MOUSE_L or keys._MOUSE_R or keys.CONTEXT_SCROLL_UP or keys.CONTEXT_SCROLL_DOWN or keys.CONTEXT_SCROLL_PAGEUP or keys.CONTEXT_SCROLL_PAGEDOWN) then self:raise() @@ -804,22 +800,15 @@ function ZScreen:onInput(keys) return end - if self.pass_mouse_clicks and keys._MOUSE_L_DOWN and not has_mouse then + if self.pass_mouse_clicks and keys._MOUSE_L and not has_mouse then self.defocused = self.defocusable self:sendInputToParent(keys) return - elseif keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + elseif keys.LEAVESCREEN or keys._MOUSE_R then self:dismiss() markMouseClicksHandled(keys) return else - if zscreen_inhibit_mouse_l then - if keys._MOUSE_L then - return - else - zscreen_inhibit_mouse_l = false - end - end local passit = self.pass_pause and keys.D_PAUSE if not passit and self.pass_mouse_clicks then if keys.CONTEXT_SCROLL_UP or keys.CONTEXT_SCROLL_DOWN or diff --git a/library/lua/gui/dialogs.lua b/library/lua/gui/dialogs.lua index 499fa6305..95a56d0c4 100644 --- a/library/lua/gui/dialogs.lua +++ b/library/lua/gui/dialogs.lua @@ -57,11 +57,11 @@ function MessageBox:onDestroy() end function MessageBox:onInput(keys) - if keys.SELECT or keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + if keys.SELECT or keys.LEAVESCREEN or keys._MOUSE_R then self:dismiss() if keys.SELECT and self.on_accept then self.on_accept() - elseif (keys.LEAVESCREEN or keys._MOUSE_R_DOWN) and self.on_cancel then + elseif (keys.LEAVESCREEN or keys._MOUSE_R) and self.on_cancel then self.on_cancel() end gui.markMouseClicksHandled(keys) @@ -129,7 +129,7 @@ function InputBox:onInput(keys) self.on_input(self.subviews.edit.text) end return true - elseif keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + elseif keys.LEAVESCREEN or keys._MOUSE_R then self:dismiss() if self.on_cancel then self.on_cancel() @@ -231,7 +231,7 @@ function ListBox:getWantedFrameSize() end function ListBox:onInput(keys) - if keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + if keys.LEAVESCREEN or keys._MOUSE_R then self:dismiss() if self.on_cancel then self.on_cancel() diff --git a/library/lua/gui/widgets.lua b/library/lua/gui/widgets.lua index 6a0a0091b..05d237f35 100644 --- a/library/lua/gui/widgets.lua +++ b/library/lua/gui/widgets.lua @@ -273,7 +273,7 @@ end function Panel:onInput(keys) if self.kbd_get_pos then - if keys.SELECT or keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + if keys.SELECT or keys.LEAVESCREEN or keys._MOUSE_R then Panel_end_drag(self, not keys.SELECT and self.saved_frame or nil, not not keys.SELECT) return true @@ -281,7 +281,6 @@ function Panel:onInput(keys) for code in pairs(keys) do local dx, dy = guidm.get_movement_delta(code, 1, 10) if dx then - local frame_rect = self.frame_rect local kbd_pos = self.kbd_get_pos() kbd_pos.x = kbd_pos.x + dx kbd_pos.y = kbd_pos.y + dy @@ -292,9 +291,9 @@ function Panel:onInput(keys) return end if self.drag_offset then - if keys._MOUSE_R_DOWN then + if keys._MOUSE_R then Panel_end_drag(self, self.saved_frame) - elseif keys._MOUSE_L then + elseif keys._MOUSE_L_DOWN then Panel_update_frame(self, Panel_make_frame(self)) end return true @@ -302,7 +301,7 @@ function Panel:onInput(keys) if Panel.super.onInput(self, keys) then return true end - if not keys._MOUSE_L_DOWN then return end + if not keys._MOUSE_L then return end local x,y = self:getMouseFramePos() if not x then return end @@ -489,7 +488,7 @@ function Panel:onRenderFrame(dc, rect) dc:seek(pos.x, pos.y):pen(pen):char(string.char(0xDB)) end if self.drag_offset and not self.kbd_get_pos - and df.global.enabler.mouse_lbut == 0 then + and df.global.enabler.mouse_lbut_down == 0 then Panel_end_drag(self, nil, true) end end @@ -718,7 +717,7 @@ function EditField:onInput(keys) end end - if self.key and (keys.LEAVESCREEN or keys._MOUSE_R_DOWN) then + if self.key and (keys.LEAVESCREEN or keys._MOUSE_R) then self:setText(self.saved_text) self:setFocus(false) return true @@ -740,8 +739,8 @@ function EditField:onInput(keys) end end return not not self.key - elseif keys._MOUSE_L then - local mouse_x, mouse_y = self:getMousePos() + elseif keys._MOUSE_L_DOWN then + local mouse_x = self:getMousePos() if mouse_x then self:setCursor(self.start_pos + mouse_x - (self.text_offset or 0)) return true @@ -986,7 +985,7 @@ function Scrollbar:onRenderBody(dc) if self.is_dragging then scrollbar_do_drag(self) end - if df.global.enabler.mouse_lbut == 0 then + if df.global.enabler.mouse_lbut_down == 0 then self.last_scroll_ms = 0 self.is_dragging = false self.scroll_spec = nil @@ -1023,7 +1022,7 @@ function Scrollbar:onInput(keys) return true end end - if not keys._MOUSE_L_DOWN then return false end + if not keys._MOUSE_L then return false end local _,y = self:getMousePos() if not y then return false end local scroll_spec = nil @@ -1386,11 +1385,11 @@ function Label:onInput(keys) if self:inputToSubviews(keys) then return true end - if keys._MOUSE_L_DOWN and self:getMousePos() and self.on_click then + if keys._MOUSE_L and self:getMousePos() and self.on_click then self.on_click() return true end - if keys._MOUSE_R_DOWN and self:getMousePos() and self.on_rclick then + if keys._MOUSE_R and self:getMousePos() and self.on_rclick then self.on_rclick() return true end @@ -1498,7 +1497,7 @@ end function HotkeyLabel:onInput(keys) if HotkeyLabel.super.onInput(self, keys) then return true - elseif keys._MOUSE_L_DOWN and self:getMousePos() and self.on_activate + elseif keys._MOUSE_L and self:getMousePos() and self.on_activate and not is_disabled(self) then self.on_activate() return true @@ -1658,7 +1657,7 @@ end function CycleHotkeyLabel:onInput(keys) if CycleHotkeyLabel.super.onInput(self, keys) then return true - elseif keys._MOUSE_L_DOWN and self:getMousePos() and not is_disabled(self) then + elseif keys._MOUSE_L and self:getMousePos() and not is_disabled(self) then self:cycle() return true end @@ -1962,7 +1961,7 @@ function List:onInput(keys) return self:submit() elseif keys.CUSTOM_SHIFT_ENTER then return self:submit2() - elseif keys._MOUSE_L_DOWN then + elseif keys._MOUSE_L then local idx = self:getIdxUnderMouse() if idx then local now_ms = dfhack.getTickCount() @@ -2317,7 +2316,7 @@ end function Tab:onInput(keys) if Tab.super.onInput(self, keys) then return true end - if keys._MOUSE_L_DOWN and self:getMousePos() then + if keys._MOUSE_L and self:getMousePos() then self.on_select(self.id) return true end @@ -2419,7 +2418,7 @@ local function rangeslider_get_width_per_idx(self) end function RangeSlider:onInput(keys) - if not keys._MOUSE_L_DOWN then return false end + if not keys._MOUSE_L then return false end local x = self:getMousePos() if not x then return false end local left_idx, right_idx = self.get_left_idx_fn(), self.get_right_idx_fn() @@ -2527,7 +2526,7 @@ function RangeSlider:onRenderBody(dc, rect) if self.is_dragging_target then rangeslider_do_drag(self, width_per_idx) end - if df.global.enabler.mouse_lbut == 0 then + if df.global.enabler.mouse_lbut_down == 0 then self.is_dragging_target = nil self.is_dragging_idx = nil end diff --git a/library/modules/Screen.cpp b/library/modules/Screen.cpp index 5f98c40e5..a5b347493 100644 --- a/library/modules/Screen.cpp +++ b/library/modules/Screen.cpp @@ -1004,6 +1004,8 @@ dfhack_lua_viewscreen::~dfhack_lua_viewscreen() void dfhack_lua_viewscreen::render() { + using df::global::enabler; + if (Screen::isDismissed(this)) { if (parent) @@ -1011,6 +1013,14 @@ void dfhack_lua_viewscreen::render() return; } + if (enabler && + (enabler->mouse_lbut_down || enabler->mouse_rbut_down || enabler->mouse_mbut_down)) + { + // synthesize feed events for held mouse buttons + std::set keys; + feed(&keys); + } + dfhack_viewscreen::render(); safe_call_lua(do_render, 0, 0); diff --git a/plugins/lua/buildingplan/inspectoroverlay.lua b/plugins/lua/buildingplan/inspectoroverlay.lua index 1fcf19028..3c6f0ed5e 100644 --- a/plugins/lua/buildingplan/inspectoroverlay.lua +++ b/plugins/lua/buildingplan/inspectoroverlay.lua @@ -127,9 +127,9 @@ function InspectorOverlay:onInput(keys) if not require('plugins.buildingplan').isPlannedBuilding(dfhack.gui.getSelectedBuilding(true)) then return false end - if keys._MOUSE_L_DOWN and mouse_is_over_resume_button(self.frame_parent_rect) then + if keys._MOUSE_L and mouse_is_over_resume_button(self.frame_parent_rect) then return true - elseif keys._MOUSE_L_DOWN or keys._MOUSE_R_DOWN or keys.LEAVESCREEN then + elseif keys._MOUSE_L or keys._MOUSE_R or keys.LEAVESCREEN then self:reset() end return InspectorOverlay.super.onInput(self, keys) diff --git a/plugins/lua/buildingplan/itemselection.lua b/plugins/lua/buildingplan/itemselection.lua index 84e866502..9dfd0cc69 100644 --- a/plugins/lua/buildingplan/itemselection.lua +++ b/plugins/lua/buildingplan/itemselection.lua @@ -366,10 +366,10 @@ function ItemSelection:submit(choices) end function ItemSelection:onInput(keys) - if keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + if keys.LEAVESCREEN or keys._MOUSE_R then self.on_cancel() return true - elseif keys._MOUSE_L_DOWN then + elseif keys._MOUSE_L then local list = self.subviews.flist.list local idx = list:getIdxUnderMouse() if idx then diff --git a/plugins/lua/buildingplan/planneroverlay.lua b/plugins/lua/buildingplan/planneroverlay.lua index ebd8e6e02..2cc15dfde 100644 --- a/plugins/lua/buildingplan/planneroverlay.lua +++ b/plugins/lua/buildingplan/planneroverlay.lua @@ -272,7 +272,7 @@ function ItemLine:reset() end function ItemLine:onInput(keys) - if keys._MOUSE_L_DOWN and self:getMousePos() then + if keys._MOUSE_L and self:getMousePos() then self.on_select(self.idx) end return ItemLine.super.onInput(self, keys) @@ -739,7 +739,7 @@ end function PlannerOverlay:onInput(keys) if not is_plannable() then return false end - if keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + if keys.LEAVESCREEN or keys._MOUSE_R then if uibs.selection_pos:isValid() then uibs.selection_pos:clear() return true @@ -758,7 +758,7 @@ function PlannerOverlay:onInput(keys) return true end if self:is_minimized() then return false end - if keys._MOUSE_L_DOWN then + if keys._MOUSE_L then if is_over_options_panel() then return false end local detect_rect = copyall(self.frame_rect) detect_rect.height = self.subviews.main.frame_rect.height + @@ -828,7 +828,7 @@ function PlannerOverlay:onInput(keys) end end end - return keys._MOUSE_L or keys.SELECT + return keys._MOUSE_L_DOWN or keys.SELECT end function PlannerOverlay:render(dc) diff --git a/plugins/lua/hotkeys.lua b/plugins/lua/hotkeys.lua index 8eff17aae..80f8816e8 100644 --- a/plugins/lua/hotkeys.lua +++ b/plugins/lua/hotkeys.lua @@ -269,24 +269,24 @@ function Menu:onSubmit2(_, choice) end function Menu:onInput(keys) - if keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + if keys.LEAVESCREEN or keys._MOUSE_R then return false elseif keys.KEYBOARD_CURSOR_RIGHT then self:onSubmit2(self.subviews.list:getSelected()) return true - elseif keys._MOUSE_L_DOWN then + elseif keys._MOUSE_L then local list = self.subviews.list local x = list:getMousePos() if x == 0 then -- clicked on icon self:onSubmit2(list:getSelected()) - df.global.enabler.mouse_lbut = 0 + gui.markMouseClicksHandled(keys) return true end if not self:getMouseFramePos() then self.parent_view:dismiss() return true end - df.global.enabler.mouse_lbut = 0 + gui.markMouseClicksHandled(keys) end self:inputToSubviews(keys) return true -- we're modal diff --git a/plugins/lua/overlay.lua b/plugins/lua/overlay.lua index d3f0b9c9d..cd5286d0d 100644 --- a/plugins/lua/overlay.lua +++ b/plugins/lua/overlay.lua @@ -507,9 +507,6 @@ function feed_viewscreen_widgets(vs_name, vs, keys) return false end gui.markMouseClicksHandled(keys) - if keys._MOUSE_L_DOWN then - df.global.enabler.mouse_lbut = 0 - end return true end diff --git a/plugins/lua/sort.lua b/plugins/lua/sort.lua index 15d9ebabb..cc24d2e3e 100644 --- a/plugins/lua/sort.lua +++ b/plugins/lua/sort.lua @@ -1148,9 +1148,7 @@ function SquadAssignmentOverlay:refresh_list(sort_widget, sort_fn) end function SquadAssignmentOverlay:onInput(keys) - if keys._MOUSE_R_DOWN or - keys._MOUSE_L_DOWN and not self:getMouseFramePos() - then + if keys._MOUSE_R or (keys._MOUSE_L and not self:getMouseFramePos()) then -- if any click is made outside of our window, we may need to refresh our list self.dirty = true end diff --git a/plugins/lua/zone.lua b/plugins/lua/zone.lua index 3c07b609f..13182cef1 100644 --- a/plugins/lua/zone.lua +++ b/plugins/lua/zone.lua @@ -801,10 +801,12 @@ end function AssignAnimalScreen:onInput(keys) local handled = AssignAnimalScreen.super.onInput(self, keys) if not self.is_valid_ui_state() then - view:dismiss() + if view then + view:dismiss() + end return end - if keys._MOUSE_L_DOWN then + if keys._MOUSE_L then -- if any click is made outside of our window, we need to recheck unit properties local window = self.subviews[1] if not window:getMouseFramePos() then @@ -818,7 +820,7 @@ function AssignAnimalScreen:onInput(keys) end function AssignAnimalScreen:onRenderFrame() - if not self.is_valid_ui_state() then + if view and not self.is_valid_ui_state() then view:dismiss() end end @@ -1072,6 +1074,7 @@ function CageChainOverlay:init() frame={t=0, l=0, r=0, h=1}, label='DFHack assign', key='CUSTOM_CTRL_T', + visible=is_valid_building, on_activate=function() view = view and view:raise() or show_cage_chain_screen() end, }, } diff --git a/test/library/gui/widgets.EditField.lua b/test/library/gui/widgets.EditField.lua index 88625a7bf..8418b67d4 100644 --- a/test/library/gui/widgets.EditField.lua +++ b/test/library/gui/widgets.EditField.lua @@ -42,17 +42,17 @@ function test.editfield_click() expect.eq(5, e.cursor) mock.patch(e, 'getMousePos', mock.func(0), function() - e:onInput{_MOUSE_L=true} + e:onInput{_MOUSE_L_DOWN=true} expect.eq(1, e.cursor) end) mock.patch(e, 'getMousePos', mock.func(20), function() - e:onInput{_MOUSE_L=true} + e:onInput{_MOUSE_L_DOWN=true} expect.eq(5, e.cursor, 'should only seek to end of text') end) mock.patch(e, 'getMousePos', mock.func(2), function() - e:onInput{_MOUSE_L=true} + e:onInput{_MOUSE_L_DOWN=true} expect.eq(3, e.cursor) end) end diff --git a/test/library/gui/widgets.Scrollbar.lua b/test/library/gui/widgets.Scrollbar.lua index 548792b3d..dd490256c 100644 --- a/test/library/gui/widgets.Scrollbar.lua +++ b/test/library/gui/widgets.Scrollbar.lua @@ -59,37 +59,37 @@ function test.onInput() s:update(23, 10, 50) expect.false_(s:onInput{}, 'no mouse down') - expect.false_(s:onInput{_MOUSE_L_DOWN=true}, 'no y coord') + expect.false_(s:onInput{_MOUSE_L=true}, 'no y coord') spec, y = nil, 0 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.eq('up_small', spec, 'on up arrow') spec, y = nil, 1 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.eq('up_large', spec, 'on body above bar') spec, y = nil, 44 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.eq('up_large', spec, 'on body just above bar') spec, y = nil, 45 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.nil_(spec, 'on top of bar') spec, y = nil, 63 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.nil_(spec, 'on bottom of bar') spec, y = nil, 64 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.eq('down_large', spec, 'on body just below bar') spec, y = nil, 98 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.eq('down_large', spec, 'on body below bar') spec, y = nil, 99 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.eq('down_small', spec, 'on down arrow') end diff --git a/test/library/gui/widgets.lua b/test/library/gui/widgets.lua index 88d3ac952..b37fbe04d 100644 --- a/test/library/gui/widgets.lua +++ b/test/library/gui/widgets.lua @@ -7,7 +7,7 @@ function test.hotkeylabel_click() local l = widgets.HotkeyLabel{key='SELECT', on_activate=func} mock.patch(l, 'getMousePos', mock.func(0), function() - l:onInput{_MOUSE_L_DOWN=true} + l:onInput{_MOUSE_L=true} expect.eq(1, func.call_count) end) end @@ -33,7 +33,7 @@ function test.togglehotkeylabel_click() local l = widgets.ToggleHotkeyLabel{} expect.true_(l:getOptionValue()) mock.patch(l, 'getMousePos', mock.func(0), function() - l:onInput{_MOUSE_L_DOWN=true} + l:onInput{_MOUSE_L=true} expect.false_(l:getOptionValue()) end) end From 49c05aa3982e78b265d055517ac0d7d65bd0980d Mon Sep 17 00:00:00 2001 From: Mikhail Panov Date: Tue, 26 Sep 2023 17:54:34 +0300 Subject: [PATCH 060/100] Updated changelog.txt --- docs/changelog.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.txt b/docs/changelog.txt index 9efb86430..f5907f4cc 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -75,6 +75,9 @@ Template for new versions: - Linux launcher: allow Steam Overlay and game streaming to function - `autobutcher`: don't ignore semi-wild units when marking units for slaughter +## Misc Improvements +- 'sort': Improve combat skill scale thresholds + # 50.09-r4 ## New Features From e25364266081bad2f612df062c5208a146c8c1ce Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Wed, 27 Sep 2023 02:23:08 +0000 Subject: [PATCH 061/100] Auto-update submodules library/xml: master scripts: master --- library/xml | 2 +- scripts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/xml b/library/xml index e6d83ccae..52fe6b277 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit e6d83ccaee5b5a3c663b56046ae55a7389742da8 +Subproject commit 52fe6b27723ba7e3064ae03c1a7ae5712c3dc0ec diff --git a/scripts b/scripts index a8aacf9b3..4032be431 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit a8aacf9b3e8d71c338f8d087792ee8aa39a85220 +Subproject commit 4032be431a669ac822583dc3ccca3c6c07c8e3aa From de5b88c8c76541bff29831fc336bcc3dbd46101e Mon Sep 17 00:00:00 2001 From: Mikhail Panov Date: Wed, 27 Sep 2023 22:47:05 +0300 Subject: [PATCH 062/100] Added info about workorder-recheck removal to Removed.rst. --- docs/about/Removed.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/about/Removed.rst b/docs/about/Removed.rst index 4b61c951e..4d8f8fc6e 100644 --- a/docs/about/Removed.rst +++ b/docs/about/Removed.rst @@ -10,6 +10,13 @@ work (e.g. links from the `changelog`). :local: :depth: 1 +.. _workorder-recheck: + +workorder-recheck +================= +Tool to set 'Checking' status of the selected work order forcing manager to reevaluate its +conditions. Merged into `orders`. + .. _autohauler: autohauler From 32a2d9f9b5c94e3651943542d84c89a82ff4b77f Mon Sep 17 00:00:00 2001 From: Mikhail Date: Mon, 18 Sep 2023 12:49:36 +0300 Subject: [PATCH 063/100] Removed redundant uppercase in mental stability formula. Reworked thresholds for combat skill effectiveness formulas to have a higher 100 cap (more descriptive about very strong warriors). --- plugins/lua/sort.lua | 74 ++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/plugins/lua/sort.lua b/plugins/lua/sort.lua index 15d9ebabb..778bc87b9 100644 --- a/plugins/lua/sort.lua +++ b/plugins/lua/sort.lua @@ -212,7 +212,7 @@ local function melee_skill_effectiveness(unit) end local function get_melee_skill_effectiveness_rating(unit) - return get_rating(melee_skill_effectiveness(unit), 350000, 2350000, 78, 64, 49, 35) + return get_rating(melee_skill_effectiveness(unit), 350000, 2750000, 64, 52, 40, 28) end local function make_sort_by_melee_skill_effectiveness_desc() @@ -272,7 +272,7 @@ local function ranged_skill_effectiveness(unit) end local function get_ranged_skill_effectiveness_rating(unit) - return get_rating(ranged_skill_effectiveness(unit), 0, 500000, 90, 62, 44, 27) + return get_rating(ranged_skill_effectiveness(unit), 0, 800000, 72, 52, 31, 11) end local function make_sort_by_ranged_skill_effectiveness_desc(list) @@ -345,41 +345,41 @@ end -- Statistical rating that is higher for dwarves that are mentally stable local function get_mental_stability(unit) - local ALTRUISM = unit.status.current_soul.personality.traits.ALTRUISM - local ANXIETY_PROPENSITY = unit.status.current_soul.personality.traits.ANXIETY_PROPENSITY - local BRAVERY = unit.status.current_soul.personality.traits.BRAVERY - local CHEER_PROPENSITY = unit.status.current_soul.personality.traits.CHEER_PROPENSITY - local CURIOUS = unit.status.current_soul.personality.traits.CURIOUS - local DISCORD = unit.status.current_soul.personality.traits.DISCORD - local DUTIFULNESS = unit.status.current_soul.personality.traits.DUTIFULNESS - local EMOTIONALLY_OBSESSIVE = unit.status.current_soul.personality.traits.EMOTIONALLY_OBSESSIVE - local HUMOR = unit.status.current_soul.personality.traits.HUMOR - local LOVE_PROPENSITY = unit.status.current_soul.personality.traits.LOVE_PROPENSITY - local PERSEVERENCE = unit.status.current_soul.personality.traits.PERSEVERENCE - local POLITENESS = unit.status.current_soul.personality.traits.POLITENESS - local PRIVACY = unit.status.current_soul.personality.traits.PRIVACY - local STRESS_VULNERABILITY = unit.status.current_soul.personality.traits.STRESS_VULNERABILITY - local TOLERANT = unit.status.current_soul.personality.traits.TOLERANT - - local CRAFTSMANSHIP = setbelief.getUnitBelief(unit, df.value_type['CRAFTSMANSHIP']) - local FAMILY = setbelief.getUnitBelief(unit, df.value_type['FAMILY']) - local HARMONY = setbelief.getUnitBelief(unit, df.value_type['HARMONY']) - local INDEPENDENCE = setbelief.getUnitBelief(unit, df.value_type['INDEPENDENCE']) - local KNOWLEDGE = setbelief.getUnitBelief(unit, df.value_type['KNOWLEDGE']) - local LEISURE_TIME = setbelief.getUnitBelief(unit, df.value_type['LEISURE_TIME']) - local NATURE = setbelief.getUnitBelief(unit, df.value_type['NATURE']) - local SKILL = setbelief.getUnitBelief(unit, df.value_type['SKILL']) - - -- Calculate the rating using the defined variables - local rating = (CRAFTSMANSHIP * -0.01) + (FAMILY * -0.09) + (HARMONY * 0.05) - + (INDEPENDENCE * 0.06) + (KNOWLEDGE * -0.30) + (LEISURE_TIME * 0.24) - + (NATURE * 0.27) + (SKILL * -0.21) + (ALTRUISM * 0.13) - + (ANXIETY_PROPENSITY * -0.06) + (BRAVERY * 0.06) - + (CHEER_PROPENSITY * 0.41) + (CURIOUS * -0.06) + (DISCORD * 0.14) - + (DUTIFULNESS * -0.03) + (EMOTIONALLY_OBSESSIVE * -0.13) - + (HUMOR * -0.05) + (LOVE_PROPENSITY * 0.15) + (PERSEVERENCE * -0.07) - + (POLITENESS * -0.14) + (PRIVACY * 0.03) + (STRESS_VULNERABILITY * -0.20) - + (TOLERANT * -0.11) + local altruism = unit.status.current_soul.personality.traits.ALTRUISM + local anxiety_propensity = unit.status.current_soul.personality.traits.ANXIETY_PROPENSITY + local bravery = unit.status.current_soul.personality.traits.BRAVERY + local cheer_propensity = unit.status.current_soul.personality.traits.CHEER_PROPENSITY + local curious = unit.status.current_soul.personality.traits.CURIOUS + local discord = unit.status.current_soul.personality.traits.DISCORD + local dutifulness = unit.status.current_soul.personality.traits.DUTIFULNESS + local emotionally_obsessive = unit.status.current_soul.personality.traits.EMOTIONALLY_OBSESSIVE + local humor = unit.status.current_soul.personality.traits.HUMOR + local love_propensity = unit.status.current_soul.personality.traits.LOVE_PROPENSITY + local perseverence = unit.status.current_soul.personality.traits.PERSEVERENCE + local politeness = unit.status.current_soul.personality.traits.POLITENESS + local privacy = unit.status.current_soul.personality.traits.PRIVACY + local stress_vulnerability = unit.status.current_soul.personality.traits.STRESS_VULNERABILITY + local tolerant = unit.status.current_soul.personality.traits.TOLERANT + + local craftsmanship = setbelief.getUnitBelief(unit, df.value_type['CRAFTSMANSHIP']) + local family = setbelief.getUnitBelief(unit, df.value_type['FAMILY']) + local harmony = setbelief.getUnitBelief(unit, df.value_type['HARMONY']) + local independence = setbelief.getUnitBelief(unit, df.value_type['INDEPENDENCE']) + local knowledge = setbelief.getUnitBelief(unit, df.value_type['KNOWLEDGE']) + local leisure_time = setbelief.getUnitBelief(unit, df.value_type['LEISURE_TIME']) + local nature = setbelief.getUnitBelief(unit, df.value_type['NATURE']) + local skill = setbelief.getUnitBelief(unit, df.value_type['SKILL']) + + -- calculate the rating using the defined variables + local rating = (craftsmanship * -0.01) + (family * -0.09) + (harmony * 0.05) + + (independence * 0.06) + (knowledge * -0.30) + (leisure_time * 0.24) + + (nature * 0.27) + (skill * -0.21) + (altruism * 0.13) + + (anxiety_propensity * -0.06) + (bravery * 0.06) + + (cheer_propensity * 0.41) + (curious * -0.06) + (discord * 0.14) + + (dutifulness * -0.03) + (emotionally_obsessive * -0.13) + + (humor * -0.05) + (love_propensity * 0.15) + (perseverence * -0.07) + + (politeness * -0.14) + (privacy * 0.03) + (stress_vulnerability * -0.20) + + (tolerant * -0.11) return rating end From 73fed1e833b6ce5d76459721d77bd08c1c3660c6 Mon Sep 17 00:00:00 2001 From: Mikhail Panov Date: Tue, 26 Sep 2023 17:54:34 +0300 Subject: [PATCH 064/100] Updated changelog.txt --- docs/changelog.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.txt b/docs/changelog.txt index 9efb86430..f5907f4cc 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -75,6 +75,9 @@ Template for new versions: - Linux launcher: allow Steam Overlay and game streaming to function - `autobutcher`: don't ignore semi-wild units when marking units for slaughter +## Misc Improvements +- 'sort': Improve combat skill scale thresholds + # 50.09-r4 ## New Features From 6ad724b4831f19f46ae62bede574e1817c3ba21c Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Tue, 26 Sep 2023 03:45:15 -0700 Subject: [PATCH 065/100] add detailed focus strings for setupdwarfgame --- library/modules/Gui.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/library/modules/Gui.cpp b/library/modules/Gui.cpp index 9eee284ac..58763262f 100644 --- a/library/modules/Gui.cpp +++ b/library/modules/Gui.cpp @@ -87,6 +87,7 @@ using namespace DFHack; #include "df/viewscreen_dwarfmodest.h" #include "df/viewscreen_legendsst.h" #include "df/viewscreen_new_regionst.h" +#include "df/viewscreen_setupdwarfgamest.h" #include "df/viewscreen_titlest.h" #include "df/world.h" @@ -174,6 +175,45 @@ DEFINE_GET_FOCUS_STRING_HANDLER(new_region) focusStrings.push_back(baseFocus); } +DEFINE_GET_FOCUS_STRING_HANDLER(setupdwarfgame) +{ + if (screen->doing_custom_settings) + focusStrings.push_back(baseFocus + "/CustomSettings"); + else if (game->main_interface.options.open) + focusStrings.push_back(baseFocus + "/Abort"); + else if (screen->initial_selection == 1) + focusStrings.push_back(baseFocus + "/Default"); + else if (game->main_interface.name_creator.open) { + switch (game->main_interface.name_creator.context) { + case df::name_creator_context_type::EMBARK_FORT_NAME: + focusStrings.push_back(baseFocus + "/FortName"); + break; + case df::name_creator_context_type::EMBARK_GROUP_NAME: + focusStrings.push_back(baseFocus + "/GroupName"); + break; + default: + break; + } + } + else if (game->main_interface.image_creator.open) { + focusStrings.push_back(baseFocus + "/GroupSymbol"); + } + else if (screen->viewing_objections != 0) + focusStrings.push_back(baseFocus + "/Objections"); + else { + switch (screen->mode) { + case 0: focusStrings.push_back(baseFocus + "/Dwarves"); break; + case 1: focusStrings.push_back(baseFocus + "/Items"); break; + case 2: focusStrings.push_back(baseFocus + "/Animals"); break; + default: + break; + } + } + + if (focusStrings.empty()) + focusStrings.push_back(baseFocus + "/Default"); +} + DEFINE_GET_FOCUS_STRING_HANDLER(legends) { if (screen->init_stage != -1) From 5c670d20db0b7d1387c60c9d4ecb32d488f20792 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Tue, 26 Sep 2023 03:52:24 -0700 Subject: [PATCH 066/100] align mouse button semantics to DF we, um, had it backwards --- docs/changelog.txt | 1 + docs/dev/Lua API.rst | 4 +- library/LuaTools.cpp | 72 +++++++++---------- library/lua/gui.lua | 23 ++---- library/lua/gui/dialogs.lua | 8 +-- library/lua/gui/widgets.lua | 37 +++++----- library/modules/Screen.cpp | 10 +++ plugins/lua/buildingplan/inspectoroverlay.lua | 4 +- plugins/lua/buildingplan/itemselection.lua | 4 +- plugins/lua/buildingplan/planneroverlay.lua | 8 +-- plugins/lua/hotkeys.lua | 8 +-- plugins/lua/overlay.lua | 3 - plugins/lua/sort.lua | 4 +- plugins/lua/zone.lua | 9 ++- test/library/gui/widgets.EditField.lua | 6 +- test/library/gui/widgets.Scrollbar.lua | 18 ++--- test/library/gui/widgets.lua | 4 +- 17 files changed, 110 insertions(+), 113 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index f5907f4cc..aec12a96f 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -66,6 +66,7 @@ Template for new versions: ## API ## Lua +- mouse key events are now aligned with internal DF semantics: ``_MOUSE_L`` indicates that the left mouse button has just been pressed and ``_MOUSE_L_DOWN`` indicates that the left mouse button is being held down. similar for ``_MOUSE_R`` and ``_MOUSE_M``. 3rd party scripts may have to adjust. ## Removed diff --git a/docs/dev/Lua API.rst b/docs/dev/Lua API.rst index 1cba8284e..6eeb2dbe7 100644 --- a/docs/dev/Lua API.rst +++ b/docs/dev/Lua API.rst @@ -2528,10 +2528,10 @@ Supported callbacks and fields are: Maps to an integer in range 0-255. Duplicates a separate "STRING_A???" code for convenience. ``_MOUSE_L, _MOUSE_R, _MOUSE_M`` - If the left, right, and/or middle mouse button is being pressed. + If the left, right, and/or middle mouse button was just pressed. ``_MOUSE_L_DOWN, _MOUSE_R_DOWN, _MOUSE_M_DOWN`` - If the left, right, and/or middle mouse button was just pressed. + If the left, right, and/or middle mouse button is being held down. If this method is omitted, the screen is dismissed on reception of the ``LEAVESCREEN`` key. diff --git a/library/LuaTools.cpp b/library/LuaTools.cpp index ffeb4980a..87699641d 100644 --- a/library/LuaTools.cpp +++ b/library/LuaTools.cpp @@ -131,12 +131,12 @@ void DFHack::Lua::GetVector(lua_State *state, std::vector &pvec, in } } -static bool trigger_inhibit_l_down = false; -static bool trigger_inhibit_r_down = false; -static bool trigger_inhibit_m_down = false; -static bool inhibit_l_down = false; -static bool inhibit_r_down = false; -static bool inhibit_m_down = false; +static bool trigger_inhibit_l = false; +static bool trigger_inhibit_r = false; +static bool trigger_inhibit_m = false; +static bool inhibit_l = false; +static bool inhibit_r = false; +static bool inhibit_m = false; void DFHack::Lua::PushInterfaceKeys(lua_State *L, const std::set &keys) { @@ -161,32 +161,32 @@ void DFHack::Lua::PushInterfaceKeys(lua_State *L, } if (df::global::enabler) { - if (!inhibit_l_down && df::global::enabler->mouse_lbut_down) { + if (!inhibit_l && df::global::enabler->mouse_lbut) { lua_pushboolean(L, true); - lua_setfield(L, -2, "_MOUSE_L_DOWN"); - trigger_inhibit_l_down = true; + lua_setfield(L, -2, "_MOUSE_L"); + trigger_inhibit_l = true; } - if (!inhibit_r_down && df::global::enabler->mouse_rbut_down) { + if (!inhibit_r && df::global::enabler->mouse_rbut) { lua_pushboolean(L, true); - lua_setfield(L, -2, "_MOUSE_R_DOWN"); - trigger_inhibit_r_down = true; + lua_setfield(L, -2, "_MOUSE_R"); + trigger_inhibit_r = true; } - if (!inhibit_m_down && df::global::enabler->mouse_mbut_down) { + if (!inhibit_m && df::global::enabler->mouse_mbut) { lua_pushboolean(L, true); - lua_setfield(L, -2, "_MOUSE_M_DOWN"); - trigger_inhibit_m_down = true; + lua_setfield(L, -2, "_MOUSE_M"); + trigger_inhibit_m = true; } - if (df::global::enabler->mouse_lbut) { + if (df::global::enabler->mouse_lbut_down) { lua_pushboolean(L, true); - lua_setfield(L, -2, "_MOUSE_L"); + lua_setfield(L, -2, "_MOUSE_L_DOWN"); } - if (df::global::enabler->mouse_rbut) { + if (df::global::enabler->mouse_rbut_down) { lua_pushboolean(L, true); - lua_setfield(L, -2, "_MOUSE_R"); + lua_setfield(L, -2, "_MOUSE_R_DOWN"); } - if (df::global::enabler->mouse_mbut) { + if (df::global::enabler->mouse_mbut_down) { lua_pushboolean(L, true); - lua_setfield(L, -2, "_MOUSE_M"); + lua_setfield(L, -2, "_MOUSE_M_DOWN"); } } } @@ -2159,25 +2159,25 @@ void DFHack::Lua::Core::Reset(color_ostream &out, const char *where) lua_settop(State, 0); } - if (trigger_inhibit_l_down) { - trigger_inhibit_l_down = false; - inhibit_l_down = true; + if (trigger_inhibit_l) { + trigger_inhibit_l = false; + inhibit_l = true; } - if (trigger_inhibit_r_down) { - trigger_inhibit_r_down = false; - inhibit_r_down = true; + if (trigger_inhibit_r) { + trigger_inhibit_r = false; + inhibit_r = true; } - if (trigger_inhibit_m_down) { - trigger_inhibit_m_down = false; - inhibit_m_down = true; + if (trigger_inhibit_m) { + trigger_inhibit_m = false; + inhibit_m = true; } if (df::global::enabler) { - if (!df::global::enabler->mouse_lbut) - inhibit_l_down = false; - if (!df::global::enabler->mouse_rbut) - inhibit_r_down = false; - if (!df::global::enabler->mouse_mbut) - inhibit_m_down = false; + if (!df::global::enabler->mouse_lbut_down) + inhibit_l = false; + if (!df::global::enabler->mouse_rbut_down) + inhibit_r = false; + if (!df::global::enabler->mouse_mbut_down) + inhibit_m = false; } } diff --git a/library/lua/gui.lua b/library/lua/gui.lua index bba7222b9..ba49e0cdc 100644 --- a/library/lua/gui.lua +++ b/library/lua/gui.lua @@ -696,16 +696,12 @@ end DEFAULT_INITIAL_PAUSE = true -local zscreen_inhibit_mouse_l = false - -- ensure underlying DF screens don't also react to handled clicks function markMouseClicksHandled(keys) - if keys._MOUSE_L_DOWN then - -- note we can't clear mouse_lbut here. otherwise we break dragging, - df.global.enabler.mouse_lbut_down = 0 - zscreen_inhibit_mouse_l = true + if keys._MOUSE_L then + df.global.enabler.mouse_lbut = 0 end - if keys._MOUSE_R_DOWN then + if keys._MOUSE_R then df.global.enabler.mouse_rbut_down = 0 df.global.enabler.mouse_rbut = 0 end @@ -789,7 +785,7 @@ function ZScreen:onInput(keys) local has_mouse = self:isMouseOver() if not self:hasFocus() then if has_mouse and - (keys._MOUSE_L_DOWN or keys._MOUSE_R_DOWN or + (keys._MOUSE_L or keys._MOUSE_R or keys.CONTEXT_SCROLL_UP or keys.CONTEXT_SCROLL_DOWN or keys.CONTEXT_SCROLL_PAGEUP or keys.CONTEXT_SCROLL_PAGEDOWN) then self:raise() @@ -804,22 +800,15 @@ function ZScreen:onInput(keys) return end - if self.pass_mouse_clicks and keys._MOUSE_L_DOWN and not has_mouse then + if self.pass_mouse_clicks and keys._MOUSE_L and not has_mouse then self.defocused = self.defocusable self:sendInputToParent(keys) return - elseif keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + elseif keys.LEAVESCREEN or keys._MOUSE_R then self:dismiss() markMouseClicksHandled(keys) return else - if zscreen_inhibit_mouse_l then - if keys._MOUSE_L then - return - else - zscreen_inhibit_mouse_l = false - end - end local passit = self.pass_pause and keys.D_PAUSE if not passit and self.pass_mouse_clicks then if keys.CONTEXT_SCROLL_UP or keys.CONTEXT_SCROLL_DOWN or diff --git a/library/lua/gui/dialogs.lua b/library/lua/gui/dialogs.lua index 499fa6305..95a56d0c4 100644 --- a/library/lua/gui/dialogs.lua +++ b/library/lua/gui/dialogs.lua @@ -57,11 +57,11 @@ function MessageBox:onDestroy() end function MessageBox:onInput(keys) - if keys.SELECT or keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + if keys.SELECT or keys.LEAVESCREEN or keys._MOUSE_R then self:dismiss() if keys.SELECT and self.on_accept then self.on_accept() - elseif (keys.LEAVESCREEN or keys._MOUSE_R_DOWN) and self.on_cancel then + elseif (keys.LEAVESCREEN or keys._MOUSE_R) and self.on_cancel then self.on_cancel() end gui.markMouseClicksHandled(keys) @@ -129,7 +129,7 @@ function InputBox:onInput(keys) self.on_input(self.subviews.edit.text) end return true - elseif keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + elseif keys.LEAVESCREEN or keys._MOUSE_R then self:dismiss() if self.on_cancel then self.on_cancel() @@ -231,7 +231,7 @@ function ListBox:getWantedFrameSize() end function ListBox:onInput(keys) - if keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + if keys.LEAVESCREEN or keys._MOUSE_R then self:dismiss() if self.on_cancel then self.on_cancel() diff --git a/library/lua/gui/widgets.lua b/library/lua/gui/widgets.lua index 6a0a0091b..05d237f35 100644 --- a/library/lua/gui/widgets.lua +++ b/library/lua/gui/widgets.lua @@ -273,7 +273,7 @@ end function Panel:onInput(keys) if self.kbd_get_pos then - if keys.SELECT or keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + if keys.SELECT or keys.LEAVESCREEN or keys._MOUSE_R then Panel_end_drag(self, not keys.SELECT and self.saved_frame or nil, not not keys.SELECT) return true @@ -281,7 +281,6 @@ function Panel:onInput(keys) for code in pairs(keys) do local dx, dy = guidm.get_movement_delta(code, 1, 10) if dx then - local frame_rect = self.frame_rect local kbd_pos = self.kbd_get_pos() kbd_pos.x = kbd_pos.x + dx kbd_pos.y = kbd_pos.y + dy @@ -292,9 +291,9 @@ function Panel:onInput(keys) return end if self.drag_offset then - if keys._MOUSE_R_DOWN then + if keys._MOUSE_R then Panel_end_drag(self, self.saved_frame) - elseif keys._MOUSE_L then + elseif keys._MOUSE_L_DOWN then Panel_update_frame(self, Panel_make_frame(self)) end return true @@ -302,7 +301,7 @@ function Panel:onInput(keys) if Panel.super.onInput(self, keys) then return true end - if not keys._MOUSE_L_DOWN then return end + if not keys._MOUSE_L then return end local x,y = self:getMouseFramePos() if not x then return end @@ -489,7 +488,7 @@ function Panel:onRenderFrame(dc, rect) dc:seek(pos.x, pos.y):pen(pen):char(string.char(0xDB)) end if self.drag_offset and not self.kbd_get_pos - and df.global.enabler.mouse_lbut == 0 then + and df.global.enabler.mouse_lbut_down == 0 then Panel_end_drag(self, nil, true) end end @@ -718,7 +717,7 @@ function EditField:onInput(keys) end end - if self.key and (keys.LEAVESCREEN or keys._MOUSE_R_DOWN) then + if self.key and (keys.LEAVESCREEN or keys._MOUSE_R) then self:setText(self.saved_text) self:setFocus(false) return true @@ -740,8 +739,8 @@ function EditField:onInput(keys) end end return not not self.key - elseif keys._MOUSE_L then - local mouse_x, mouse_y = self:getMousePos() + elseif keys._MOUSE_L_DOWN then + local mouse_x = self:getMousePos() if mouse_x then self:setCursor(self.start_pos + mouse_x - (self.text_offset or 0)) return true @@ -986,7 +985,7 @@ function Scrollbar:onRenderBody(dc) if self.is_dragging then scrollbar_do_drag(self) end - if df.global.enabler.mouse_lbut == 0 then + if df.global.enabler.mouse_lbut_down == 0 then self.last_scroll_ms = 0 self.is_dragging = false self.scroll_spec = nil @@ -1023,7 +1022,7 @@ function Scrollbar:onInput(keys) return true end end - if not keys._MOUSE_L_DOWN then return false end + if not keys._MOUSE_L then return false end local _,y = self:getMousePos() if not y then return false end local scroll_spec = nil @@ -1386,11 +1385,11 @@ function Label:onInput(keys) if self:inputToSubviews(keys) then return true end - if keys._MOUSE_L_DOWN and self:getMousePos() and self.on_click then + if keys._MOUSE_L and self:getMousePos() and self.on_click then self.on_click() return true end - if keys._MOUSE_R_DOWN and self:getMousePos() and self.on_rclick then + if keys._MOUSE_R and self:getMousePos() and self.on_rclick then self.on_rclick() return true end @@ -1498,7 +1497,7 @@ end function HotkeyLabel:onInput(keys) if HotkeyLabel.super.onInput(self, keys) then return true - elseif keys._MOUSE_L_DOWN and self:getMousePos() and self.on_activate + elseif keys._MOUSE_L and self:getMousePos() and self.on_activate and not is_disabled(self) then self.on_activate() return true @@ -1658,7 +1657,7 @@ end function CycleHotkeyLabel:onInput(keys) if CycleHotkeyLabel.super.onInput(self, keys) then return true - elseif keys._MOUSE_L_DOWN and self:getMousePos() and not is_disabled(self) then + elseif keys._MOUSE_L and self:getMousePos() and not is_disabled(self) then self:cycle() return true end @@ -1962,7 +1961,7 @@ function List:onInput(keys) return self:submit() elseif keys.CUSTOM_SHIFT_ENTER then return self:submit2() - elseif keys._MOUSE_L_DOWN then + elseif keys._MOUSE_L then local idx = self:getIdxUnderMouse() if idx then local now_ms = dfhack.getTickCount() @@ -2317,7 +2316,7 @@ end function Tab:onInput(keys) if Tab.super.onInput(self, keys) then return true end - if keys._MOUSE_L_DOWN and self:getMousePos() then + if keys._MOUSE_L and self:getMousePos() then self.on_select(self.id) return true end @@ -2419,7 +2418,7 @@ local function rangeslider_get_width_per_idx(self) end function RangeSlider:onInput(keys) - if not keys._MOUSE_L_DOWN then return false end + if not keys._MOUSE_L then return false end local x = self:getMousePos() if not x then return false end local left_idx, right_idx = self.get_left_idx_fn(), self.get_right_idx_fn() @@ -2527,7 +2526,7 @@ function RangeSlider:onRenderBody(dc, rect) if self.is_dragging_target then rangeslider_do_drag(self, width_per_idx) end - if df.global.enabler.mouse_lbut == 0 then + if df.global.enabler.mouse_lbut_down == 0 then self.is_dragging_target = nil self.is_dragging_idx = nil end diff --git a/library/modules/Screen.cpp b/library/modules/Screen.cpp index 5f98c40e5..a5b347493 100644 --- a/library/modules/Screen.cpp +++ b/library/modules/Screen.cpp @@ -1004,6 +1004,8 @@ dfhack_lua_viewscreen::~dfhack_lua_viewscreen() void dfhack_lua_viewscreen::render() { + using df::global::enabler; + if (Screen::isDismissed(this)) { if (parent) @@ -1011,6 +1013,14 @@ void dfhack_lua_viewscreen::render() return; } + if (enabler && + (enabler->mouse_lbut_down || enabler->mouse_rbut_down || enabler->mouse_mbut_down)) + { + // synthesize feed events for held mouse buttons + std::set keys; + feed(&keys); + } + dfhack_viewscreen::render(); safe_call_lua(do_render, 0, 0); diff --git a/plugins/lua/buildingplan/inspectoroverlay.lua b/plugins/lua/buildingplan/inspectoroverlay.lua index 1fcf19028..3c6f0ed5e 100644 --- a/plugins/lua/buildingplan/inspectoroverlay.lua +++ b/plugins/lua/buildingplan/inspectoroverlay.lua @@ -127,9 +127,9 @@ function InspectorOverlay:onInput(keys) if not require('plugins.buildingplan').isPlannedBuilding(dfhack.gui.getSelectedBuilding(true)) then return false end - if keys._MOUSE_L_DOWN and mouse_is_over_resume_button(self.frame_parent_rect) then + if keys._MOUSE_L and mouse_is_over_resume_button(self.frame_parent_rect) then return true - elseif keys._MOUSE_L_DOWN or keys._MOUSE_R_DOWN or keys.LEAVESCREEN then + elseif keys._MOUSE_L or keys._MOUSE_R or keys.LEAVESCREEN then self:reset() end return InspectorOverlay.super.onInput(self, keys) diff --git a/plugins/lua/buildingplan/itemselection.lua b/plugins/lua/buildingplan/itemselection.lua index 84e866502..9dfd0cc69 100644 --- a/plugins/lua/buildingplan/itemselection.lua +++ b/plugins/lua/buildingplan/itemselection.lua @@ -366,10 +366,10 @@ function ItemSelection:submit(choices) end function ItemSelection:onInput(keys) - if keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + if keys.LEAVESCREEN or keys._MOUSE_R then self.on_cancel() return true - elseif keys._MOUSE_L_DOWN then + elseif keys._MOUSE_L then local list = self.subviews.flist.list local idx = list:getIdxUnderMouse() if idx then diff --git a/plugins/lua/buildingplan/planneroverlay.lua b/plugins/lua/buildingplan/planneroverlay.lua index ebd8e6e02..2cc15dfde 100644 --- a/plugins/lua/buildingplan/planneroverlay.lua +++ b/plugins/lua/buildingplan/planneroverlay.lua @@ -272,7 +272,7 @@ function ItemLine:reset() end function ItemLine:onInput(keys) - if keys._MOUSE_L_DOWN and self:getMousePos() then + if keys._MOUSE_L and self:getMousePos() then self.on_select(self.idx) end return ItemLine.super.onInput(self, keys) @@ -739,7 +739,7 @@ end function PlannerOverlay:onInput(keys) if not is_plannable() then return false end - if keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + if keys.LEAVESCREEN or keys._MOUSE_R then if uibs.selection_pos:isValid() then uibs.selection_pos:clear() return true @@ -758,7 +758,7 @@ function PlannerOverlay:onInput(keys) return true end if self:is_minimized() then return false end - if keys._MOUSE_L_DOWN then + if keys._MOUSE_L then if is_over_options_panel() then return false end local detect_rect = copyall(self.frame_rect) detect_rect.height = self.subviews.main.frame_rect.height + @@ -828,7 +828,7 @@ function PlannerOverlay:onInput(keys) end end end - return keys._MOUSE_L or keys.SELECT + return keys._MOUSE_L_DOWN or keys.SELECT end function PlannerOverlay:render(dc) diff --git a/plugins/lua/hotkeys.lua b/plugins/lua/hotkeys.lua index 8eff17aae..80f8816e8 100644 --- a/plugins/lua/hotkeys.lua +++ b/plugins/lua/hotkeys.lua @@ -269,24 +269,24 @@ function Menu:onSubmit2(_, choice) end function Menu:onInput(keys) - if keys.LEAVESCREEN or keys._MOUSE_R_DOWN then + if keys.LEAVESCREEN or keys._MOUSE_R then return false elseif keys.KEYBOARD_CURSOR_RIGHT then self:onSubmit2(self.subviews.list:getSelected()) return true - elseif keys._MOUSE_L_DOWN then + elseif keys._MOUSE_L then local list = self.subviews.list local x = list:getMousePos() if x == 0 then -- clicked on icon self:onSubmit2(list:getSelected()) - df.global.enabler.mouse_lbut = 0 + gui.markMouseClicksHandled(keys) return true end if not self:getMouseFramePos() then self.parent_view:dismiss() return true end - df.global.enabler.mouse_lbut = 0 + gui.markMouseClicksHandled(keys) end self:inputToSubviews(keys) return true -- we're modal diff --git a/plugins/lua/overlay.lua b/plugins/lua/overlay.lua index d3f0b9c9d..cd5286d0d 100644 --- a/plugins/lua/overlay.lua +++ b/plugins/lua/overlay.lua @@ -507,9 +507,6 @@ function feed_viewscreen_widgets(vs_name, vs, keys) return false end gui.markMouseClicksHandled(keys) - if keys._MOUSE_L_DOWN then - df.global.enabler.mouse_lbut = 0 - end return true end diff --git a/plugins/lua/sort.lua b/plugins/lua/sort.lua index 778bc87b9..6d8c8a298 100644 --- a/plugins/lua/sort.lua +++ b/plugins/lua/sort.lua @@ -1148,9 +1148,7 @@ function SquadAssignmentOverlay:refresh_list(sort_widget, sort_fn) end function SquadAssignmentOverlay:onInput(keys) - if keys._MOUSE_R_DOWN or - keys._MOUSE_L_DOWN and not self:getMouseFramePos() - then + if keys._MOUSE_R or (keys._MOUSE_L and not self:getMouseFramePos()) then -- if any click is made outside of our window, we may need to refresh our list self.dirty = true end diff --git a/plugins/lua/zone.lua b/plugins/lua/zone.lua index 3c07b609f..13182cef1 100644 --- a/plugins/lua/zone.lua +++ b/plugins/lua/zone.lua @@ -801,10 +801,12 @@ end function AssignAnimalScreen:onInput(keys) local handled = AssignAnimalScreen.super.onInput(self, keys) if not self.is_valid_ui_state() then - view:dismiss() + if view then + view:dismiss() + end return end - if keys._MOUSE_L_DOWN then + if keys._MOUSE_L then -- if any click is made outside of our window, we need to recheck unit properties local window = self.subviews[1] if not window:getMouseFramePos() then @@ -818,7 +820,7 @@ function AssignAnimalScreen:onInput(keys) end function AssignAnimalScreen:onRenderFrame() - if not self.is_valid_ui_state() then + if view and not self.is_valid_ui_state() then view:dismiss() end end @@ -1072,6 +1074,7 @@ function CageChainOverlay:init() frame={t=0, l=0, r=0, h=1}, label='DFHack assign', key='CUSTOM_CTRL_T', + visible=is_valid_building, on_activate=function() view = view and view:raise() or show_cage_chain_screen() end, }, } diff --git a/test/library/gui/widgets.EditField.lua b/test/library/gui/widgets.EditField.lua index 88625a7bf..8418b67d4 100644 --- a/test/library/gui/widgets.EditField.lua +++ b/test/library/gui/widgets.EditField.lua @@ -42,17 +42,17 @@ function test.editfield_click() expect.eq(5, e.cursor) mock.patch(e, 'getMousePos', mock.func(0), function() - e:onInput{_MOUSE_L=true} + e:onInput{_MOUSE_L_DOWN=true} expect.eq(1, e.cursor) end) mock.patch(e, 'getMousePos', mock.func(20), function() - e:onInput{_MOUSE_L=true} + e:onInput{_MOUSE_L_DOWN=true} expect.eq(5, e.cursor, 'should only seek to end of text') end) mock.patch(e, 'getMousePos', mock.func(2), function() - e:onInput{_MOUSE_L=true} + e:onInput{_MOUSE_L_DOWN=true} expect.eq(3, e.cursor) end) end diff --git a/test/library/gui/widgets.Scrollbar.lua b/test/library/gui/widgets.Scrollbar.lua index 548792b3d..dd490256c 100644 --- a/test/library/gui/widgets.Scrollbar.lua +++ b/test/library/gui/widgets.Scrollbar.lua @@ -59,37 +59,37 @@ function test.onInput() s:update(23, 10, 50) expect.false_(s:onInput{}, 'no mouse down') - expect.false_(s:onInput{_MOUSE_L_DOWN=true}, 'no y coord') + expect.false_(s:onInput{_MOUSE_L=true}, 'no y coord') spec, y = nil, 0 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.eq('up_small', spec, 'on up arrow') spec, y = nil, 1 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.eq('up_large', spec, 'on body above bar') spec, y = nil, 44 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.eq('up_large', spec, 'on body just above bar') spec, y = nil, 45 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.nil_(spec, 'on top of bar') spec, y = nil, 63 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.nil_(spec, 'on bottom of bar') spec, y = nil, 64 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.eq('down_large', spec, 'on body just below bar') spec, y = nil, 98 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.eq('down_large', spec, 'on body below bar') spec, y = nil, 99 - expect.true_(s:onInput{_MOUSE_L_DOWN=true}) + expect.true_(s:onInput{_MOUSE_L=true}) expect.eq('down_small', spec, 'on down arrow') end diff --git a/test/library/gui/widgets.lua b/test/library/gui/widgets.lua index 88d3ac952..b37fbe04d 100644 --- a/test/library/gui/widgets.lua +++ b/test/library/gui/widgets.lua @@ -7,7 +7,7 @@ function test.hotkeylabel_click() local l = widgets.HotkeyLabel{key='SELECT', on_activate=func} mock.patch(l, 'getMousePos', mock.func(0), function() - l:onInput{_MOUSE_L_DOWN=true} + l:onInput{_MOUSE_L=true} expect.eq(1, func.call_count) end) end @@ -33,7 +33,7 @@ function test.togglehotkeylabel_click() local l = widgets.ToggleHotkeyLabel{} expect.true_(l:getOptionValue()) mock.patch(l, 'getMousePos', mock.func(0), function() - l:onInput{_MOUSE_L_DOWN=true} + l:onInput{_MOUSE_L=true} expect.false_(l:getOptionValue()) end) end From 888c88dfcf7399663ae4066dd419292c9e836b70 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Wed, 27 Sep 2023 02:23:08 +0000 Subject: [PATCH 067/100] Auto-update submodules library/xml: master scripts: master --- library/xml | 2 +- scripts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/xml b/library/xml index e6d83ccae..52fe6b277 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit e6d83ccaee5b5a3c663b56046ae55a7389742da8 +Subproject commit 52fe6b27723ba7e3064ae03c1a7ae5712c3dc0ec diff --git a/scripts b/scripts index a8aacf9b3..4032be431 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit a8aacf9b3e8d71c338f8d087792ee8aa39a85220 +Subproject commit 4032be431a669ac822583dc3ccca3c6c07c8e3aa From f5aab7ee45f2d14542b793a6972271d95e84408d Mon Sep 17 00:00:00 2001 From: Najeeb Al-Shabibi Date: Wed, 27 Sep 2023 20:32:46 +0100 Subject: [PATCH 068/100] pulled event handler calls out of the loops over global vectors to avoid potential iterator invalidation by an event callback, and did some tidying --- library/modules/EventManager.cpp | 279 ++++++++++++++++++------------- 1 file changed, 164 insertions(+), 115 deletions(-) diff --git a/library/modules/EventManager.cpp b/library/modules/EventManager.cpp index 02b1892e9..ddc46942d 100644 --- a/library/modules/EventManager.cpp +++ b/library/modules/EventManager.cpp @@ -43,6 +43,7 @@ #include #include #include +#include namespace DFHack { DBG_DECLARE(eventmanager, log, DebugCategory::LINFO); @@ -246,6 +247,15 @@ static int32_t reportToRelevantUnitsTime = -1; //interaction static int32_t lastReportInteraction; +struct hash_pair { + template + size_t operator()(const std::pair& p) const { + auto h1 = std::hash{}(p.first); + auto h2 = std::hash{}(p.second); + return h1 ^ (h2 << 1); + } +}; + void DFHack::EventManager::onStateChange(color_ostream& out, state_change_event event) { static bool doOnce = false; // const string eventNames[] = {"world loaded", "world unloaded", "map loaded", "map unloaded", "viewscreen changed", "core initialized", "begin unload", "paused", "unpaused"}; @@ -276,9 +286,9 @@ void DFHack::EventManager::onStateChange(color_ostream& out, state_change_event gameLoaded = false; multimap copy(handlers[EventType::UNLOAD].begin(), handlers[EventType::UNLOAD].end()); - for (auto &key_value : copy) { + for (auto &[_,handle] : copy) { DEBUG(log,out).print("calling handler for map unloaded state change event\n"); - key_value.second.eventHandler(out, nullptr); + handle.eventHandler(out, nullptr); } } else if ( event == DFHack::SC_MAP_LOADED ) { /* @@ -375,8 +385,7 @@ void DFHack::EventManager::manageEvents(color_ostream& out) { continue; int32_t eventFrequency = -100; if ( a != EventType::TICK ) - for (auto &key_value : handlers[a]) { - EventHandler &handle = key_value.second; + for (auto &[_,handle] : handlers[a]) { if (handle.freq < eventFrequency || eventFrequency == -100 ) eventFrequency = handle.freq; } @@ -439,8 +448,7 @@ static void manageJobInitiatedEvent(color_ostream& out) { continue; if ( link->item->id <= lastJobId ) continue; - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; + for (auto &[_,handle] : copy) { DEBUG(log,out).print("calling handler for job initiated event\n"); handle.eventHandler(out, (void*)link->item); } @@ -455,18 +463,21 @@ static void manageJobStartedEvent(color_ostream& out) { static unordered_set startedJobs; + vector new_started_jobs; // iterate event handler callbacks multimap copy(handlers[EventType::JOB_STARTED].begin(), handlers[EventType::JOB_STARTED].end()); for (df::job_list_link* link = df::global::world->jobs.list.next; link != nullptr; link = link->next) { df::job* job = link->item; if (job && Job::getWorker(job) && !startedJobs.count(job->id)) { startedJobs.emplace(job->id); - for (auto &key_value : copy) { - auto &handler = key_value.second; - // the jobs must have a worker to start - DEBUG(log,out).print("calling handler for job started event\n"); - handler.eventHandler(out, job); - } + new_started_jobs.emplace_back(job); + } + } + for (df::job* job : new_started_jobs) { + for (auto &[_,handle] : copy) { + // the jobs must have a worker to start + DEBUG(log,out).print("calling handler for job started event\n"); + handle.eventHandler(out, job); } } } @@ -556,6 +567,8 @@ static void manageJobCompletedEvent(color_ostream& out) { } #endif + vector new_jobs_completed; + vector new_jobs_completed_repeats; for (auto &prevJob : prevJobs) { //if it happened within a tick, must have been cancelled by the user or a plugin: not completed if ( tick1 <= tick0 ) @@ -573,11 +586,7 @@ static void manageJobCompletedEvent(color_ostream& out) { continue; //still false positive if cancelled at EXACTLY the right time, but experiments show this doesn't happen - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; - DEBUG(log,out).print("calling handler for repeated job completed event\n"); - handle.eventHandler(out, (void*)&job0); - } + new_jobs_completed_repeats.emplace_back(&job0); continue; } @@ -586,10 +595,19 @@ static void manageJobCompletedEvent(color_ostream& out) { if ( job0.flags.bits.repeat || job0.completion_timer != 0 ) continue; - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; + new_jobs_completed.emplace_back(&job0); + } + + for (df::job* job : new_jobs_completed_repeats) { + for (auto &[_,handle] : copy) { + DEBUG(log,out).print("calling handler for repeated job completed event\n"); + handle.eventHandler(out, (void*) job); + } + } + for (df::job* job : new_jobs_completed) { + for (auto &[_,handle] : copy) { DEBUG(log,out).print("calling handler for job completed event\n"); - handle.eventHandler(out, (void*)&job0); + handle.eventHandler(out, (void*) job); } } @@ -617,15 +635,17 @@ static void manageNewUnitActiveEvent(color_ostream& out) { multimap copy(handlers[EventType::UNIT_NEW_ACTIVE].begin(), handlers[EventType::UNIT_NEW_ACTIVE].end()); // iterate event handler callbacks - for (auto &key_value : copy) { - auto &handler = key_value.second; - for (df::unit* unit : df::global::world->units.active) { - int32_t id = unit->id; - if (!activeUnits.count(id)) { - activeUnits.emplace(id); - DEBUG(log,out).print("calling handler for new unit event\n"); - handler.eventHandler(out, (void*) intptr_t(id)); // intptr_t() avoids cast from smaller type warning - } + vector new_active_unit_ids; + for (df::unit* unit : df::global::world->units.active) { + if (!activeUnits.count(unit->id)) { + activeUnits.emplace(unit->id); + new_active_unit_ids.emplace_back(unit->id); + } + } + for (int32_t unit_id : new_active_unit_ids) { + for (auto &[_,handle] : copy) { + DEBUG(log,out).print("calling handler for new unit event\n"); + handle.eventHandler(out, (void*) intptr_t(unit_id)); // intptr_t() avoids cast from smaller type warning } } } @@ -635,6 +655,7 @@ static void manageUnitDeathEvent(color_ostream& out) { if (!df::global::world) return; multimap copy(handlers[EventType::UNIT_DEATH].begin(), handlers[EventType::UNIT_DEATH].end()); + vector dead_unit_ids; for (auto unit : df::global::world->units.all) { //if ( unit->counters.death_id == -1 ) { if ( Units::isActive(unit) ) { @@ -644,13 +665,15 @@ static void manageUnitDeathEvent(color_ostream& out) { //dead: if dead since last check, trigger events if ( livingUnits.find(unit->id) == livingUnits.end() ) continue; + livingUnits.erase(unit->id); + dead_unit_ids.emplace_back(unit->id); + } - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; + for (int32_t unit_id : dead_unit_ids) { + for (auto &[_,handle] : copy) { DEBUG(log,out).print("calling handler for unit death event\n"); - handle.eventHandler(out, (void*)intptr_t(unit->id)); + handle.eventHandler(out, (void*)intptr_t(unit_id)); } - livingUnits.erase(unit->id); } } @@ -666,6 +689,8 @@ static void manageItemCreationEvent(color_ostream& out) { multimap copy(handlers[EventType::ITEM_CREATED].begin(), handlers[EventType::ITEM_CREATED].end()); size_t index = df::item::binsearch_index(df::global::world->items.all, nextItem, false); if ( index != 0 ) index--; + + std::vector created_items; for ( size_t a = index; a < df::global::world->items.all.size(); a++ ) { df::item* item = df::global::world->items.all[a]; //already processed @@ -683,12 +708,17 @@ static void manageItemCreationEvent(color_ostream& out) { //spider webs don't count if ( item->flags.bits.spider_web ) continue; - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; + created_items.push_back(item->id); + } + + // handle all created items + for (int32_t item_id : created_items) { + for (auto &[_,handle] : copy) { DEBUG(log,out).print("calling handler for item created event\n"); - handle.eventHandler(out, (void*)intptr_t(item->id)); + handle.eventHandler(out, (void*)intptr_t(item_id)); } } + nextItem = *df::global::item_next_id; } @@ -703,6 +733,7 @@ static void manageBuildingEvent(color_ostream& out) { **/ multimap copy(handlers[EventType::BUILDING].begin(), handlers[EventType::BUILDING].end()); //first alert people about new buildings + vector new_buildings; for ( int32_t a = nextBuilding; a < *df::global::building_next_id; a++ ) { int32_t index = df::building::binsearch_index(df::global::world->buildings.all, a); if ( index == -1 ) { @@ -711,29 +742,32 @@ static void manageBuildingEvent(color_ostream& out) { continue; } buildings.insert(a); - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; - DEBUG(log,out).print("calling handler for created building event\n"); - handle.eventHandler(out, (void*)intptr_t(a)); - } + new_buildings.emplace_back(a); + } nextBuilding = *df::global::building_next_id; + std::for_each(new_buildings.begin(), new_buildings.end(), [&](int32_t building){ + for (auto &[_,handle] : copy) { + DEBUG(log,out).print("calling handler for created building event\n"); + handle.eventHandler(out, (void*)intptr_t(building)); + } + }); + //now alert people about destroyed buildings - for ( auto a = buildings.begin(); a != buildings.end(); ) { - int32_t id = *a; + for ( auto it = buildings.begin(); it != buildings.end(); ) { + int32_t id = *it; int32_t index = df::building::binsearch_index(df::global::world->buildings.all,id); if ( index != -1 ) { - a++; + ++it; continue; } - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; + for (auto &[_,handle] : copy) { DEBUG(log,out).print("calling handler for destroyed building event\n"); handle.eventHandler(out, (void*)intptr_t(id)); } - a = buildings.erase(a); + it = buildings.erase(it); } } @@ -743,35 +777,41 @@ static void manageConstructionEvent(color_ostream& out) { //unordered_set constructionsNow(df::global::world->constructions.begin(), df::global::world->constructions.end()); multimap copy(handlers[EventType::CONSTRUCTION].begin(), handlers[EventType::CONSTRUCTION].end()); - // find & send construction removals - for (auto iter = constructions.begin(); iter != constructions.end();) { - auto &construction = *iter; - // if we can't find it, it was removed - if (df::construction::find(construction.pos) != nullptr) { - ++iter; - continue; + + unordered_set next_construction_set; // will be swapped with constructions + next_construction_set.reserve(constructions.bucket_count()); + vector new_constructions; + + // find new constructions - swapping found constructions over from constructions to next_construction_set + for (auto c : df::global::world->constructions) { + auto &construction = *c; + auto it = constructions.find(construction); + if (it == constructions.end()) { + // handle new construction event later + new_constructions.emplace_back(construction); } - // send construction to handlers, because it was removed - for (const auto &key_value: copy) { - EventHandler handle = key_value.second; + else { + constructions.erase(it); + } + next_construction_set.emplace(construction); + } + + constructions.swap(next_construction_set); + + // now next_construction_set contains all the constructions that were removed (not found in df::global::world->constructions) + for (auto& construction : next_construction_set) { + // handle construction removed event + for (const auto &[_,handle]: copy) { DEBUG(log,out).print("calling handler for destroyed construction event\n"); handle.eventHandler(out, (void*) &construction); } - // erase from existent constructions - iter = constructions.erase(iter); } - // find & send construction additions - for (auto c: df::global::world->constructions) { - auto &construction = *c; - // add construction to constructions, if it isn't already present - if (constructions.emplace(construction).second) { - // send construction to handlers, because it is new - for (const auto &key_value: copy) { - EventHandler handle = key_value.second; - DEBUG(log,out).print("calling handler for created construction event\n"); - handle.eventHandler(out, (void*) &construction); - } + // now handle all the new constructions + for (auto& construction : new_constructions) { + for (const auto &[_,handle]: copy) { + DEBUG(log,out).print("calling handler for created construction event\n"); + handle.eventHandler(out, (void*) &construction); } } } @@ -781,6 +821,8 @@ static void manageSyndromeEvent(color_ostream& out) { return; multimap copy(handlers[EventType::SYNDROME].begin(), handlers[EventType::SYNDROME].end()); int32_t highestTime = -1; + + std::vector new_syndrome_data; for (auto unit : df::global::world->units.all) { /* @@ -795,14 +837,16 @@ static void manageSyndromeEvent(color_ostream& out) { if ( startTime <= lastSyndromeTime ) continue; - SyndromeData data(unit->id, b); - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; - DEBUG(log,out).print("calling handler for syndrome event\n"); - handle.eventHandler(out, (void*)&data); - } + new_syndrome_data.emplace_back(unit->id, b); + } + } + for (auto& data : new_syndrome_data) { + for (auto &[_,handle] : copy) { + DEBUG(log,out).print("calling handler for syndrome event\n"); + handle.eventHandler(out, (void*)&data); } } + lastSyndromeTime = highestTime; } @@ -815,8 +859,7 @@ static void manageInvasionEvent(color_ostream& out) { return; nextInvasion = df::global::plotinfo->invasions.next_id; - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; + for (auto &[_,handle] : copy) { DEBUG(log,out).print("calling handler for invasion event\n"); handle.eventHandler(out, (void*)intptr_t(nextInvasion-1)); } @@ -829,6 +872,11 @@ static void manageEquipmentEvent(color_ostream& out) { unordered_map itemIdToInventoryItem; unordered_set currentlyEquipped; + + vector equipment_pickups; + vector equipment_drops; + vector equipment_changes; + for (auto unit : df::global::world->units.all) { itemIdToInventoryItem.clear(); currentlyEquipped.clear(); @@ -856,12 +904,7 @@ static void manageEquipmentEvent(color_ostream& out) { auto c = itemIdToInventoryItem.find(dfitem_new->item->id); if ( c == itemIdToInventoryItem.end() ) { //new item equipped (probably just picked up) - InventoryChangeData data(unit->id, nullptr, &item_new); - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; - DEBUG(log,out).print("calling handler for new item equipped inventory change event\n"); - handle.eventHandler(out, (void*)&data); - } + equipment_pickups.emplace_back(unit->id, nullptr, &item_new); continue; } InventoryItem item_old = (*c).second; @@ -872,24 +915,14 @@ static void manageEquipmentEvent(color_ostream& out) { continue; //some sort of change in how it's equipped - InventoryChangeData data(unit->id, &item_old, &item_new); - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; - DEBUG(log,out).print("calling handler for inventory change event\n"); - handle.eventHandler(out, (void*)&data); - } + equipment_changes.emplace_back(unit->id, nullptr, &item_new); } //check for dropped items for (auto i : v) { if ( currentlyEquipped.find(i.itemId) != currentlyEquipped.end() ) continue; //TODO: delete ptr if invalid - InventoryChangeData data(unit->id, &i, nullptr); - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; - DEBUG(log,out).print("calling handler for dropped item inventory change event\n"); - handle.eventHandler(out, (void*)&data); - } + equipment_drops.emplace_back(unit->id, &i, nullptr); } if ( !hadEquipment ) delete temp; @@ -902,6 +935,26 @@ static void manageEquipmentEvent(color_ostream& out) { equipment.push_back(item); } } + + // now handle events + std::for_each(equipment_pickups.begin(), equipment_drops.end(), [&](InventoryChangeData& data) { + for (auto &[_, handle] : copy) { + DEBUG(log,out).print("calling handler for new item equipped inventory change event\n"); + handle.eventHandler(out, (void*) &data); + } + }); + std::for_each(equipment_drops.begin(), equipment_drops.end(), [&](InventoryChangeData& data) { + for (auto &[_, handle] : copy) { + DEBUG(log,out).print("calling handler for dropped item inventory change event\n"); + handle.eventHandler(out, (void*) &data); + } + }); + std::for_each(equipment_changes.begin(), equipment_changes.end(), [&](InventoryChangeData& data) { + for (auto &[_, handle] : copy) { + DEBUG(log,out).print("calling handler for inventory change event\n"); + handle.eventHandler(out, (void*) &data); + } + }); } static void updateReportToRelevantUnits() { @@ -939,8 +992,7 @@ static void manageReportEvent(color_ostream& out) { for ( ; idx < reports.size(); idx++ ) { df::report* report = reports[idx]; - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; + for (auto &[_,handle] : copy) { DEBUG(log,out).print("calling handler for report event\n"); handle.eventHandler(out, (void*)intptr_t(report->id)); } @@ -981,7 +1033,7 @@ static void manageUnitAttackEvent(color_ostream& out) { if ( strikeReports.empty() ) return; updateReportToRelevantUnits(); - map > alreadyDone; + unordered_set, hash_pair> already_done; for (int reportId : strikeReports) { df::report* report = df::report::find(reportId); if ( !report ) @@ -1011,27 +1063,25 @@ static void manageUnitAttackEvent(color_ostream& out) { UnitAttackData data{}; data.report_id = report->id; - if ( wound1 && !alreadyDone[unit1->id][unit2->id] ) { + if ( wound1 && already_done.find(std::make_pair(unit1->id,unit2->id)) == already_done.end() ) { data.attacker = unit1->id; data.defender = unit2->id; data.wound = wound1->id; - alreadyDone[data.attacker][data.defender] = 1; - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; + already_done.emplace(unit1->id, unit2->id); + for (auto &[_,handle] : copy) { DEBUG(log,out).print("calling handler for unit1 attack unit attack event\n"); handle.eventHandler(out, (void*)&data); } } - if ( wound2 && !alreadyDone[unit1->id][unit2->id] ) { + if ( wound2 && already_done.find(std::make_pair(unit1->id,unit2->id)) == already_done.end() ) { data.attacker = unit2->id; data.defender = unit1->id; data.wound = wound2->id; - alreadyDone[data.attacker][data.defender] = 1; - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; + already_done.emplace(unit1->id, unit2->id); + for (auto &[_,handle] : copy) { DEBUG(log,out).print("calling handler for unit2 attack unit attack event\n"); handle.eventHandler(out, (void*)&data); } @@ -1041,9 +1091,9 @@ static void manageUnitAttackEvent(color_ostream& out) { data.attacker = unit2->id; data.defender = unit1->id; data.wound = -1; - alreadyDone[data.attacker][data.defender] = 1; - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; + + already_done.emplace(unit1->id, unit2->id); + for (auto &[_,handle] : copy) { DEBUG(log,out).print("calling handler for unit1 killed unit attack event\n"); handle.eventHandler(out, (void*)&data); } @@ -1053,9 +1103,9 @@ static void manageUnitAttackEvent(color_ostream& out) { data.attacker = unit1->id; data.defender = unit2->id; data.wound = -1; - alreadyDone[data.attacker][data.defender] = 1; - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; + + already_done.emplace(unit1->id, unit2->id); + for (auto &[_,handle] : copy) { DEBUG(log,out).print("calling handler for unit2 killed unit attack event\n"); handle.eventHandler(out, (void*)&data); } @@ -1313,8 +1363,7 @@ static void manageInteractionEvent(color_ostream& out) { lastAttacker = df::unit::find(data.attacker); //lastDefender = df::unit::find(data.defender); //fire event - for (auto &key_value : copy) { - EventHandler &handle = key_value.second; + for (auto &[_,handle] : copy) { DEBUG(log,out).print("calling handler for interaction event\n"); handle.eventHandler(out, (void*)&data); } From 78bea2a55089d08173d955a750fd778cc214c4f8 Mon Sep 17 00:00:00 2001 From: Najeeb Al-Shabibi Date: Wed, 27 Sep 2023 23:34:19 +0100 Subject: [PATCH 069/100] fixed a typo brain fart moment --- library/modules/EventManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/modules/EventManager.cpp b/library/modules/EventManager.cpp index ddc46942d..cb3f3e76f 100644 --- a/library/modules/EventManager.cpp +++ b/library/modules/EventManager.cpp @@ -937,7 +937,7 @@ static void manageEquipmentEvent(color_ostream& out) { } // now handle events - std::for_each(equipment_pickups.begin(), equipment_drops.end(), [&](InventoryChangeData& data) { + std::for_each(equipment_pickups.begin(), equipment_pickups.end(), [&](InventoryChangeData& data) { for (auto &[_, handle] : copy) { DEBUG(log,out).print("calling handler for new item equipped inventory change event\n"); handle.eventHandler(out, (void*) &data); From d44499b970fc7fe0b4581b117ca8a0a7e9d85407 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Thu, 28 Sep 2023 07:13:26 +0000 Subject: [PATCH 070/100] Auto-update submodules library/xml: master scripts: master --- library/xml | 2 +- scripts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/xml b/library/xml index 52fe6b277..9312906c5 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit 52fe6b27723ba7e3064ae03c1a7ae5712c3dc0ec +Subproject commit 9312906c5a33feea50c0c32cd683ad22fb87822c diff --git a/scripts b/scripts index 4032be431..76f5a2b10 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 4032be431a669ac822583dc3ccca3c6c07c8e3aa +Subproject commit 76f5a2b101f0817857c9dfa8dd3d9f076137aafc From 70ff728fba68e18d1eb4f0a3146dbc9146d4eaaf Mon Sep 17 00:00:00 2001 From: Najeeb Al-Shabibi Date: Thu, 28 Sep 2023 16:19:32 +0100 Subject: [PATCH 071/100] manageJobStartedEvent handle moved to inner loop and iterates from previous in linked list in case it is removed. fix a bug with item change events and using invalidated stack pointer as item data. swapped order of destroyed and created building event calls, and a couple other improvements --- library/modules/EventManager.cpp | 98 ++++++++++++++++++-------------- 1 file changed, 56 insertions(+), 42 deletions(-) diff --git a/library/modules/EventManager.cpp b/library/modules/EventManager.cpp index cb3f3e76f..14fac42b3 100644 --- a/library/modules/EventManager.cpp +++ b/library/modules/EventManager.cpp @@ -466,18 +466,22 @@ static void manageJobStartedEvent(color_ostream& out) { vector new_started_jobs; // iterate event handler callbacks multimap copy(handlers[EventType::JOB_STARTED].begin(), handlers[EventType::JOB_STARTED].end()); - for (df::job_list_link* link = df::global::world->jobs.list.next; link != nullptr; link = link->next) { - df::job* job = link->item; + + for (df::job_list_link* link = &df::global::world->jobs.list; link->next != nullptr; link = link->next) { + df::job* job = link->next->item; + int32_t j_id = job->id; if (job && Job::getWorker(job) && !startedJobs.count(job->id)) { startedJobs.emplace(job->id); - new_started_jobs.emplace_back(job); + for (auto &[_,handle] : copy) { + // the jobs must have a worker to start + DEBUG(log,out).print("calling handler for job started event\n"); + handle.eventHandler(out, job); + } } - } - for (df::job* job : new_started_jobs) { - for (auto &[_,handle] : copy) { - // the jobs must have a worker to start - DEBUG(log,out).print("calling handler for job started event\n"); - handle.eventHandler(out, job); + if (link->next == nullptr || link->next->item->id != j_id) { + if ( Once::doOnce("EventManager jobstarted job removed") ) { + out.print("%s,%d: job %u removed from jobs linked list\n", __FILE__, __LINE__, j_id); + } } } } @@ -498,11 +502,11 @@ static void manageJobCompletedEvent(color_ostream& out) { int32_t tick1 = df::global::world->frame_counter; multimap copy(handlers[EventType::JOB_COMPLETED].begin(), handlers[EventType::JOB_COMPLETED].end()); - map nowJobs; + unordered_map nowJobs; for ( df::job_list_link* link = &df::global::world->jobs.list; link != nullptr; link = link->next ) { if ( link->item == nullptr ) continue; - nowJobs[link->item->id] = link->item; + nowJobs.emplace(link->item->id, link->item); } #if 0 @@ -567,8 +571,6 @@ static void manageJobCompletedEvent(color_ostream& out) { } #endif - vector new_jobs_completed; - vector new_jobs_completed_repeats; for (auto &prevJob : prevJobs) { //if it happened within a tick, must have been cancelled by the user or a plugin: not completed if ( tick1 <= tick0 ) @@ -586,7 +588,10 @@ static void manageJobCompletedEvent(color_ostream& out) { continue; //still false positive if cancelled at EXACTLY the right time, but experiments show this doesn't happen - new_jobs_completed_repeats.emplace_back(&job0); + for (auto &[_,handle] : copy) { + DEBUG(log,out).print("calling handler for repeated job completed event\n"); + handle.eventHandler(out, (void*) &job0); + } continue; } @@ -595,37 +600,27 @@ static void manageJobCompletedEvent(color_ostream& out) { if ( job0.flags.bits.repeat || job0.completion_timer != 0 ) continue; - new_jobs_completed.emplace_back(&job0); - } - - for (df::job* job : new_jobs_completed_repeats) { - for (auto &[_,handle] : copy) { - DEBUG(log,out).print("calling handler for repeated job completed event\n"); - handle.eventHandler(out, (void*) job); - } - } - for (df::job* job : new_jobs_completed) { for (auto &[_,handle] : copy) { DEBUG(log,out).print("calling handler for job completed event\n"); - handle.eventHandler(out, (void*) job); + handle.eventHandler(out, (void*) &job0); } } //erase old jobs, copy over possibly altered jobs - for (auto &prevJob : prevJobs) { - Job::deleteJobStruct(prevJob.second, true); + for (auto &[_,prev_job] : prevJobs) { + Job::deleteJobStruct(prev_job, true); } prevJobs.clear(); //create new jobs - for (auto &nowJob : nowJobs) { + for (auto &[_,now_job] : nowJobs) { /*map::iterator i = prevJobs.find((*j).first); if ( i != prevJobs.end() ) { continue; }*/ - df::job* newJob = Job::cloneJobStruct(nowJob.second, true); - prevJobs[newJob->id] = newJob; + df::job* newJob = Job::cloneJobStruct(now_job, true); + prevJobs.emplace(newJob->id, newJob); } } @@ -662,6 +657,7 @@ static void manageUnitDeathEvent(color_ostream& out) { livingUnits.insert(unit->id); continue; } + if (!Units::isDead(unit)) continue; // for units that have left the map but aren't dead //dead: if dead since last check, trigger events if ( livingUnits.find(unit->id) == livingUnits.end() ) continue; @@ -747,13 +743,6 @@ static void manageBuildingEvent(color_ostream& out) { } nextBuilding = *df::global::building_next_id; - std::for_each(new_buildings.begin(), new_buildings.end(), [&](int32_t building){ - for (auto &[_,handle] : copy) { - DEBUG(log,out).print("calling handler for created building event\n"); - handle.eventHandler(out, (void*)intptr_t(building)); - } - }); - //now alert people about destroyed buildings for ( auto it = buildings.begin(); it != buildings.end(); ) { int32_t id = *it; @@ -769,6 +758,14 @@ static void manageBuildingEvent(color_ostream& out) { } it = buildings.erase(it); } + + //alert people about newly created buildings + std::for_each(new_buildings.begin(), new_buildings.end(), [&](int32_t building){ + for (auto &[_,handle] : copy) { + DEBUG(log,out).print("calling handler for created building event\n"); + handle.eventHandler(out, (void*)intptr_t(building)); + } + }); } static void manageConstructionEvent(color_ostream& out) { @@ -877,6 +874,13 @@ static void manageEquipmentEvent(color_ostream& out) { vector equipment_drops; vector equipment_changes; + + // This vector stores the pointers to newly created changed items + // needed as the stack allocated temporary (in the loop) is lost when we go to + // handle the event calls, so we move that data to the heap if its needed, + // and then once we are done we delete everything. + vector changed_items; + for (auto unit : df::global::world->units.all) { itemIdToInventoryItem.clear(); currentlyEquipped.clear(); @@ -904,25 +908,30 @@ static void manageEquipmentEvent(color_ostream& out) { auto c = itemIdToInventoryItem.find(dfitem_new->item->id); if ( c == itemIdToInventoryItem.end() ) { //new item equipped (probably just picked up) - equipment_pickups.emplace_back(unit->id, nullptr, &item_new); + changed_items.emplace_back(new InventoryItem(item_new)); + equipment_pickups.emplace_back(unit->id, nullptr, changed_items.back()); continue; } - InventoryItem item_old = (*c).second; + InventoryItem item_old = c->second; df::unit_inventory_item& item0 = item_old.item; df::unit_inventory_item& item1 = item_new.item; if ( item0.mode == item1.mode && item0.body_part_id == item1.body_part_id && item0.wound_id == item1.wound_id ) continue; //some sort of change in how it's equipped - - equipment_changes.emplace_back(unit->id, nullptr, &item_new); + changed_items.emplace_back(new InventoryItem(item_new)); + InventoryItem* item_new_ptr = changed_items.back(); + changed_items.emplace_back(new InventoryItem(item_old)); + InventoryItem* item_old_ptr = changed_items.back(); + equipment_changes.emplace_back(unit->id, item_old_ptr, item_new_ptr); } //check for dropped items for (auto i : v) { if ( currentlyEquipped.find(i.itemId) != currentlyEquipped.end() ) continue; //TODO: delete ptr if invalid - equipment_drops.emplace_back(unit->id, &i, nullptr); + changed_items.emplace_back(new InventoryItem(i)); + equipment_drops.emplace_back(unit->id, changed_items.back(), nullptr); } if ( !hadEquipment ) delete temp; @@ -955,6 +964,11 @@ static void manageEquipmentEvent(color_ostream& out) { handle.eventHandler(out, (void*) &data); } }); + + // clean up changed items list + std::for_each(changed_items.begin(), changed_items.end(), [](InventoryItem* p){ + delete p; + }); } static void updateReportToRelevantUnits() { From 09129ddec06dac85e919a515f1b0fef55fa9e458 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Thu, 28 Sep 2023 13:56:11 -0700 Subject: [PATCH 072/100] brighten ascii logo on hover as was originally intended. why is fg "de-bolded" by pens? --- docs/changelog.txt | 1 + plugins/lua/hotkeys.lua | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/changelog.txt b/docs/changelog.txt index aec12a96f..1859a7f79 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -60,6 +60,7 @@ Template for new versions: ## Misc Improvements - `dig`: `digtype` command now has options to choose between designating only visible tiles or hidden tiles, as well as "auto" dig mode. Z-level options adjusted to allow choosing z-levels above, below, or the same as the cursor. +- `hotkeys`: make the DFHack logo brighten on hover in ascii mode to indicate that it is clickable ## Documentation diff --git a/plugins/lua/hotkeys.lua b/plugins/lua/hotkeys.lua index 80f8816e8..71fda3d86 100644 --- a/plugins/lua/hotkeys.lua +++ b/plugins/lua/hotkeys.lua @@ -65,6 +65,7 @@ function HotspotMenuWidget:init() tile=function() return dfhack.textures.getTexposByHandle(logo_hovered_textures[idx]) end, ch=ch, fg=COLOR_WHITE, + bold=true, } end local function get_tile_token(idx, ch) From bff1b5e7b09cf77cb51a4bb2ef8e0596aaf6a9d2 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Thu, 28 Sep 2023 14:41:30 -0700 Subject: [PATCH 073/100] make the ascii DFHack logo easier to read --- docs/changelog.txt | 1 + plugins/lua/hotkeys.lua | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 1859a7f79..0c6b35fab 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -61,6 +61,7 @@ Template for new versions: ## Misc Improvements - `dig`: `digtype` command now has options to choose between designating only visible tiles or hidden tiles, as well as "auto" dig mode. Z-level options adjusted to allow choosing z-levels above, below, or the same as the cursor. - `hotkeys`: make the DFHack logo brighten on hover in ascii mode to indicate that it is clickable +- `hotkeys`: use vertical bars instead of "!" symbols for the DFHack logo to make it easier to read ## Documentation diff --git a/plugins/lua/hotkeys.lua b/plugins/lua/hotkeys.lua index 71fda3d86..6335de5e5 100644 --- a/plugins/lua/hotkeys.lua +++ b/plugins/lua/hotkeys.lua @@ -79,9 +79,9 @@ function HotspotMenuWidget:init() self:addviews{ widgets.Label{ text={ - get_tile_token(1, '!'), get_tile_token(2, 'D'), get_tile_token(3, 'F'), get_tile_token(4, '!'), NEWLINE, - get_tile_token(5, '!'), get_tile_token(6, 'H'), get_tile_token(7, 'a'), get_tile_token(8, '!'), NEWLINE, - get_tile_token(9, '!'), get_tile_token(10, 'c'), get_tile_token(11, 'k'), get_tile_token(12, '!'), + get_tile_token(1, 179), get_tile_token(2, 'D'), get_tile_token(3, 'F'), get_tile_token(4, 179), NEWLINE, + get_tile_token(5, 179), get_tile_token(6, 'H'), get_tile_token(7, 'a'), get_tile_token(8, 179), NEWLINE, + get_tile_token(9, 179), get_tile_token(10, 'c'), get_tile_token(11, 'k'), get_tile_token(12, 179), }, on_click=function() dfhack.run_command('hotkeys') end, }, From 13f83d2f95104bb03f8c8a4eb09b29e393506797 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Thu, 28 Sep 2023 16:35:29 -0700 Subject: [PATCH 074/100] protect against bad values in TranslateName --- docs/changelog.txt | 1 + library/modules/Translation.cpp | 49 +++++++++++++++++++++++++++------ plugins/autoslab.cpp | 20 +------------- 3 files changed, 42 insertions(+), 28 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 1859a7f79..c9e24e70f 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -60,6 +60,7 @@ Template for new versions: ## Misc Improvements - `dig`: `digtype` command now has options to choose between designating only visible tiles or hidden tiles, as well as "auto" dig mode. Z-level options adjusted to allow choosing z-levels above, below, or the same as the cursor. +- ``dfhack.TranslateName``: protect against bad language indices added by mods - `hotkeys`: make the DFHack logo brighten on hover in ascii mode to indicate that it is clickable ## Documentation diff --git a/library/modules/Translation.cpp b/library/modules/Translation.cpp index 282039c02..af06eeb49 100644 --- a/library/modules/Translation.cpp +++ b/library/modules/Translation.cpp @@ -131,6 +131,37 @@ void Translation::setNickname(df::language_name *name, std::string nick) } } +static string translate_word(const df::language_name * name, size_t word_idx) { + CHECK_NULL_POINTER(name); + + auto translation = vector_get(world->raws.language.translations, name->language); + if (!translation) + return ""; + + auto word = vector_get(translation->words, word_idx); + if (!word) + return ""; + + return *word; +} + +static string translate_english_word(const df::language_name * name, size_t part_idx) { + CHECK_NULL_POINTER(name); + + if (part_idx >= 7) + return ""; + + auto words = vector_get(world->raws.language.words, name->words[part_idx]); + if (!words) + return ""; + + df::part_of_speech part = name->parts_of_speech[part_idx]; + if (part < df::part_of_speech::Noun || part > df::part_of_speech::VerbGerund) + return ""; + + return words->forms[part]; +} + string Translation::TranslateName(const df::language_name * name, bool inEnglish, bool onlyLastPart) { CHECK_NULL_POINTER(name); @@ -166,20 +197,20 @@ string Translation::TranslateName(const df::language_name * name, bool inEnglish { word.clear(); if (name->words[0] >= 0) - word.append(*world->raws.language.translations[name->language]->words[name->words[0]]); + word.append(translate_word(name, name->words[0])); if (name->words[1] >= 0) - word.append(*world->raws.language.translations[name->language]->words[name->words[1]]); + word.append(translate_word(name, name->words[1])); addNameWord(out, word); } word.clear(); for (int i = 2; i <= 5; i++) if (name->words[i] >= 0) - word.append(*world->raws.language.translations[name->language]->words[name->words[i]]); + word.append(translate_word(name, name->words[i])); addNameWord(out, word); if (name->words[6] >= 0) { word.clear(); - word.append(*world->raws.language.translations[name->language]->words[name->words[6]]); + word.append(translate_word(name, name->words[6])); addNameWord(out, word); } } @@ -189,9 +220,9 @@ string Translation::TranslateName(const df::language_name * name, bool inEnglish { word.clear(); if (name->words[0] >= 0) - word.append(world->raws.language.words[name->words[0]]->forms[name->parts_of_speech[0]]); + word.append(translate_english_word(name, 0)); if (name->words[1] >= 0) - word.append(world->raws.language.words[name->words[1]]->forms[name->parts_of_speech[1]]); + word.append(translate_english_word(name, 1)); addNameWord(out, word); } if (name->words[2] >= 0 || name->words[3] >= 0 || name->words[4] >= 0 || name->words[5] >= 0) @@ -201,10 +232,10 @@ string Translation::TranslateName(const df::language_name * name, bool inEnglish else out.append("The"); } - for (int i = 2; i <= 5; i++) + for (size_t i = 2; i <= 5; i++) { if (name->words[i] >= 0) - addNameWord(out, world->raws.language.words[name->words[i]]->forms[name->parts_of_speech[i]]); + addNameWord(out, translate_english_word(name, i)); } if (name->words[6] >= 0) { @@ -213,7 +244,7 @@ string Translation::TranslateName(const df::language_name * name, bool inEnglish else out.append("Of"); - addNameWord(out, world->raws.language.words[name->words[6]]->forms[name->parts_of_speech[6]]); + addNameWord(out, translate_english_word(name, 6)); } } diff --git a/plugins/autoslab.cpp b/plugins/autoslab.cpp index e78314bfd..32382a217 100644 --- a/plugins/autoslab.cpp +++ b/plugins/autoslab.cpp @@ -151,24 +151,6 @@ DFhackCExport command_result plugin_onupdate(color_ostream &out) return CR_OK; } -// Name functions taken from manipulator.cpp -static std::string get_first_name(df::unit *unit) -{ - return Translation::capitalize(unit->name.first_name); -} - -static std::string get_last_name(df::unit *unit) -{ - df::language_name name = unit->name; - std::string ret = ""; - for (int i = 0; i < 2; i++) - { - if (name.words[i] >= 0) - ret += *world->raws.language.translations[name.language]->words[name.words[i]]; - } - return Translation::capitalize(ret); -} - // Queue up a single order to engrave the slab for the given unit static void createSlabJob(df::unit *unit) { @@ -212,7 +194,7 @@ static void checkslabs(color_ostream &out) ) { createSlabJob(ghost); - auto fullName = get_first_name(ghost) + " " + get_last_name(ghost); + auto fullName = Translation::capitalize(Translation::TranslateName(&ghost->name, false), true); out.print("Added slab order for ghost %s\n", fullName.c_str()); } } From af65f185a1be7cf992fc17fe5d8d58dd9fa77855 Mon Sep 17 00:00:00 2001 From: Myk Date: Thu, 28 Sep 2023 17:43:06 -0700 Subject: [PATCH 075/100] Remove unneeded capitalize --- plugins/autoslab.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/autoslab.cpp b/plugins/autoslab.cpp index 32382a217..82333c822 100644 --- a/plugins/autoslab.cpp +++ b/plugins/autoslab.cpp @@ -194,7 +194,7 @@ static void checkslabs(color_ostream &out) ) { createSlabJob(ghost); - auto fullName = Translation::capitalize(Translation::TranslateName(&ghost->name, false), true); + auto fullName = Translation::TranslateName(&ghost->name, false); out.print("Added slab order for ghost %s\n", fullName.c_str()); } } From e1bf8c47fa2ec7bb30e6b07c4ac056b7e83aa098 Mon Sep 17 00:00:00 2001 From: Myk Date: Thu, 28 Sep 2023 20:12:40 -0700 Subject: [PATCH 076/100] Update docs/changelog.txt Co-authored-by: Alan --- docs/changelog.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index c9e24e70f..d6377e1ec 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -60,7 +60,7 @@ Template for new versions: ## Misc Improvements - `dig`: `digtype` command now has options to choose between designating only visible tiles or hidden tiles, as well as "auto" dig mode. Z-level options adjusted to allow choosing z-levels above, below, or the same as the cursor. -- ``dfhack.TranslateName``: protect against bad language indices added by mods +- ``dfhack.TranslateName()``: fixed crash on certain invalid names, which affected `warn-starving` - `hotkeys`: make the DFHack logo brighten on hover in ascii mode to indicate that it is clickable ## Documentation From 965c453b9b7c701b7fef5338bf53693210c09d11 Mon Sep 17 00:00:00 2001 From: Myk Date: Thu, 28 Sep 2023 20:13:55 -0700 Subject: [PATCH 077/100] Update changelog.txt --- docs/changelog.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index d6377e1ec..7f1944d08 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -57,10 +57,10 @@ Template for new versions: ## Fixes - `autolabor`: now unconditionally re-enables vanilla work details when the fort or the plugin is unloaded +- ``dfhack.TranslateName()``: fixed crash on certain invalid names, which affected `warn-starving` ## Misc Improvements - `dig`: `digtype` command now has options to choose between designating only visible tiles or hidden tiles, as well as "auto" dig mode. Z-level options adjusted to allow choosing z-levels above, below, or the same as the cursor. -- ``dfhack.TranslateName()``: fixed crash on certain invalid names, which affected `warn-starving` - `hotkeys`: make the DFHack logo brighten on hover in ascii mode to indicate that it is clickable ## Documentation From 51173fb9fea6002c8777ea3ceb30f5a4b674080e Mon Sep 17 00:00:00 2001 From: Mikhail Panov Date: Fri, 29 Sep 2023 17:34:48 +0300 Subject: [PATCH 078/100] Removed material and job type sortings. --- docs/plugins/orders.rst | 10 --- plugins/lua/orders.lua | 26 ++----- plugins/orders.cpp | 150 ---------------------------------------- 3 files changed, 6 insertions(+), 180 deletions(-) diff --git a/docs/plugins/orders.rst b/docs/plugins/orders.rst index 9bf220a06..d8d3fe585 100644 --- a/docs/plugins/orders.rst +++ b/docs/plugins/orders.rst @@ -28,16 +28,6 @@ Usage Sorts current manager orders by repeat frequency so repeating orders don't prevent one-time orders from ever being completed. The sorting order is: one-time orders first, then yearly, seasonally, monthly, and finally, daily. -``orders sort_type`` - Sorts current manager orders by job type, making it easier to locate orders - that produce similar items. The sorting is done by reaction name, job type - and item subtype. If orders are equal by these fields the sorting falls back - to sort by frequency. -``orders sort_material`` - Sorts current manager orders by material, making it easier to locate orders - that produce items of the same material. The sorting is done by material type - and material category. If orders are equal by these fields the sorting falls back - to sort by job type. You can keep your orders automatically sorted by adding the following command to your ``dfhack-config/init/onMapLoad.init`` file:: diff --git a/plugins/lua/orders.lua b/plugins/lua/orders.lua index c84dfa5f7..1a3208336 100644 --- a/plugins/lua/orders.lua +++ b/plugins/lua/orders.lua @@ -79,7 +79,7 @@ OrdersOverlay.ATTRS{ default_pos={x=53,y=-6}, default_enabled=true, viewscreens='dwarfmode/Info/WORK_ORDERS/Default', - frame={w=73, h=4}, + frame={w=46, h=4}, } function OrdersOverlay:init() @@ -114,31 +114,17 @@ function OrdersOverlay:init() }, widgets.HotkeyLabel{ frame={t=1, l=15}, - label='clear', - key='CUSTOM_CTRL_C', - auto_width=true, - on_activate=do_clear, - }, - widgets.HotkeyLabel{ - frame={t=0, l=30}, - label='sort by freq', + label='sort', key='CUSTOM_CTRL_O', auto_width=true, on_activate=do_sort, }, widgets.HotkeyLabel{ - frame={t=1, l=30}, - label='sort by type', - key='CUSTOM_CTRL_J', - auto_width=true, - on_activate=do_sort_type, - }, - widgets.HotkeyLabel{ - frame={t=0, l=52}, - label='sort by mat', - key='CUSTOM_CTRL_T', + frame={t=0, l=31}, + label='clear', + key='CUSTOM_CTRL_C', auto_width=true, - on_activate=do_sort_mat, + on_activate=do_clear, }, }, } diff --git a/plugins/orders.cpp b/plugins/orders.cpp index 77e8d5fa8..a84f14172 100644 --- a/plugins/orders.cpp +++ b/plugins/orders.cpp @@ -67,8 +67,6 @@ static command_result orders_export_command(color_ostream & out, const std::stri static command_result orders_import_command(color_ostream & out, const std::string & name); static command_result orders_clear_command(color_ostream & out); static command_result orders_sort_command(color_ostream & out); -static command_result orders_sort_type_command(color_ostream & out); -static command_result orders_sort_material_command(color_ostream & out); static command_result orders_recheck_command(color_ostream & out); static command_result orders_recheck_current_command(color_ostream & out); @@ -118,16 +116,6 @@ static command_result orders_command(color_ostream & out, std::vectorfrequency != b->frequency) - { - return compare_freq(a, b); - } - - // Determine if only one order has reaction_name - bool a_has_reaction_name = !a->reaction_name.empty(); - bool b_has_reaction_name = !b->reaction_name.empty(); - - if (a_has_reaction_name != b_has_reaction_name) - { - return a_has_reaction_name; - } - else if (a_has_reaction_name && b_has_reaction_name) - { - if (a->reaction_name != b->reaction_name) - { - return a->reaction_name < b->reaction_name; - } - } - - // Compare job_type - if (enum_item_key(a->job_type) != enum_item_key(b->job_type)) - { - return enum_item_key(a->job_type) < enum_item_key(b->job_type); - } - - // Compare item subtype - bool a_has_item_subtype = (a->item_subtype != -1); - bool b_has_item_subtype = (b->item_subtype != -1); - - if (a_has_item_subtype != b_has_item_subtype) - { - return a_has_item_subtype; - } - else if (a_has_item_subtype && b_has_item_subtype) - { - if (a->item_subtype != b->item_subtype) - { - return a->item_subtype < b->item_subtype; - } - } - - // By default orders are the same - return false; -} - -static command_result orders_sort_type_command(color_ostream & out) -{ - CoreSuspender suspend; - if (!std::is_sorted(world->manager_orders.begin(), - world->manager_orders.end(), - compare_type)) - { - std::stable_sort(world->manager_orders.begin(), - world->manager_orders.end(), - compare_type); - out << "Manager orders are sorted by job type." << std::endl; - } - - return CR_OK; -} - -static bool compare_material(df::manager_order *a, df::manager_order *b) -{ - // Goal: Sort orders to easily find them in the list and to see dupclicated orders. - // Sorting by materials - - // Divide orders by frequency first - if (a->frequency != b->frequency) - { - return compare_freq(a, b); - } - - // Determine if only one of the orders has mat_type - bool a_has_material = (a->mat_type != -1 || a->mat_index != -1); - bool b_has_material = (b->mat_type != -1 || b->mat_index != -1); - - if (a_has_material != b_has_material) - { - return a_has_material; - } - else if (a_has_material && b_has_material) - { - // Compare mat_type using MaterialInfo - if (MaterialInfo(a).getToken() != MaterialInfo(b).getToken()) - { - return MaterialInfo(a).getToken() < MaterialInfo(b).getToken(); - } - } - - // Determine if only one order has material_category - bool a_has_material_category = (a->material_category.whole != 0); - bool b_has_material_category = (b->material_category.whole != 0); - - if (a_has_material_category != b_has_material_category) - { - return a_has_material_category; - } - else if (a_has_material_category && b_has_material_category) - { - std::vector a_mats, b_mats; - bitfield_to_string(&a_mats, a->material_category); - bitfield_to_string(&b_mats, b->material_category); - - // Checking that mats are not empty just in case - if (!a_mats.empty() && !b_mats.empty() && a_mats[0] != b_mats[0]) - { - return a_mats[0] < b_mats[0]; - } - } - - // Fall back to material sort - return compare_type(a, b); -} - -static command_result orders_sort_material_command(color_ostream & out) -{ - CoreSuspender suspend; - if (!std::is_sorted(world->manager_orders.begin(), - world->manager_orders.end(), - compare_material)) - { - std::stable_sort(world->manager_orders.begin(), - world->manager_orders.end(), - compare_material); - out << "Manager orders are sorted by material." << std::endl; - } - - return CR_OK; -} - static command_result orders_recheck_command(color_ostream & out) { for (auto it : world->manager_orders) From feaf0d6bb35d1e81bb7f70a40c4512913687a914 Mon Sep 17 00:00:00 2001 From: Najeeb Al-Shabibi Date: Fri, 29 Sep 2023 15:36:16 +0100 Subject: [PATCH 079/100] update changelog --- docs/changelog.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.txt b/docs/changelog.txt index f819587de..315f37841 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -58,11 +58,14 @@ Template for new versions: ## Fixes - `autolabor`: now unconditionally re-enables vanilla work details when the fort or the plugin is unloaded - ``dfhack.TranslateName()``: fixed crash on certain invalid names, which affected `warn-starving` +- EventManager: Unit death event no longer misfires on units leaving the map ## Misc Improvements - `dig`: `digtype` command now has options to choose between designating only visible tiles or hidden tiles, as well as "auto" dig mode. Z-level options adjusted to allow choosing z-levels above, below, or the same as the cursor. - `hotkeys`: make the DFHack logo brighten on hover in ascii mode to indicate that it is clickable - `hotkeys`: use vertical bars instead of "!" symbols for the DFHack logo to make it easier to read +- EventManager: guarded against potential iterator invalidation if one of the event listeners modified the global data structure being iterated over +- EventManager: changed firing order of building created and building destroyed events to improve performance in the building location cache. ## Documentation From e868612985ca2608409e042dbb8d33f88b76c732 Mon Sep 17 00:00:00 2001 From: Mikhail Panov Date: Fri, 29 Sep 2023 17:41:18 +0300 Subject: [PATCH 080/100] Rephrased description in rst files. --- docs/about/Removed.rst | 4 ++-- docs/plugins/orders.rst | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/about/Removed.rst b/docs/about/Removed.rst index 4d8f8fc6e..86d7e0f75 100644 --- a/docs/about/Removed.rst +++ b/docs/about/Removed.rst @@ -14,8 +14,8 @@ work (e.g. links from the `changelog`). workorder-recheck ================= -Tool to set 'Checking' status of the selected work order forcing manager to reevaluate its -conditions. Merged into `orders`. +Tool to set 'Checking' status of the selected work order, allowing conditions to be +reevaluated. Merged into `orders`. .. _autohauler: diff --git a/docs/plugins/orders.rst b/docs/plugins/orders.rst index d8d3fe585..acb25fe99 100644 --- a/docs/plugins/orders.rst +++ b/docs/plugins/orders.rst @@ -18,9 +18,9 @@ Usage ``orders clear`` Deletes all manager orders in the current embark. ``orders recheck [this]`` - Sets the status to ``Checking`` (from ``Active``) of all work orders or one - currently viewed if 'this' option is passed. Work order conditions screen - should be open in this case. This makes the manager reevaluate its conditions. + Sets the status to ``Checking`` (from ``Active``) for all work orders. if the + "this" option is passed, only sets the status for the workorder whose condition + details page is open. This makes the manager reevaluate its conditions. This is especially useful for an order that had its conditions met when it was started, but the requisite items have since disappeared and the workorder is now generating job cancellation spam. From 7b8721965753f19cf07c391f960a046b8048a1b5 Mon Sep 17 00:00:00 2001 From: Myk Date: Fri, 29 Sep 2023 09:40:52 -0700 Subject: [PATCH 081/100] Update plugins/lua/orders.lua --- plugins/lua/orders.lua | 8 -------- 1 file changed, 8 deletions(-) diff --git a/plugins/lua/orders.lua b/plugins/lua/orders.lua index 1a3208336..df8710739 100644 --- a/plugins/lua/orders.lua +++ b/plugins/lua/orders.lua @@ -66,14 +66,6 @@ local function do_recheck() dfhack.run_command('orders', 'recheck') end -local function do_sort_type() - dfhack.run_command('orders', 'sort_type') -end - -local function do_sort_mat() - dfhack.run_command('orders', 'sort_material') -end - OrdersOverlay = defclass(OrdersOverlay, overlay.OverlayWidget) OrdersOverlay.ATTRS{ default_pos={x=53,y=-6}, From a52386474ae7b8133ec5b9761f71be13152d2b39 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Fri, 29 Sep 2023 16:42:47 +0000 Subject: [PATCH 082/100] Auto-update submodules scripts: master --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 76f5a2b10..73eac0413 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 76f5a2b101f0817857c9dfa8dd3d9f076137aafc +Subproject commit 73eac04134b3e7d89b7be1bc355dddab38c5656d From c6ad1dd24d86439a89d1c9840a733bc56fdcb575 Mon Sep 17 00:00:00 2001 From: Myk Date: Fri, 29 Sep 2023 09:58:33 -0700 Subject: [PATCH 083/100] Update tubefill.rst --- docs/plugins/tubefill.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/plugins/tubefill.rst b/docs/plugins/tubefill.rst index 80282f6d9..ff668f8df 100644 --- a/docs/plugins/tubefill.rst +++ b/docs/plugins/tubefill.rst @@ -5,7 +5,11 @@ tubefill :summary: Replenishes mined-out adamantine. :tags: fort armok map -Veins that were originally hollow will be left alone. +This tool replaces mined-out tiles of adamantine spires with fresh, undug +adamantine walls, ready to be re-harvested. Empty tiles within the spire that +used to contain special gemstones, obsidian, water, or magma will also be +replaced with fresh adamantine. Adamantine spires that were originally hollow +will be left hollow. See below for more details. Usage ----- From ffd166a41fc01ae76ad8fbc890a7c7abb00e483d Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Fri, 29 Sep 2023 18:26:00 +0000 Subject: [PATCH 084/100] Auto-update submodules library/xml: master --- library/xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/xml b/library/xml index 9312906c5..bcfb0fb3b 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit 9312906c5a33feea50c0c32cd683ad22fb87822c +Subproject commit bcfb0fb3ba82939f353bda9908d39877661d9c81 From 56e782d9bb10bb9c02376f5e37edb25763b88721 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Sat, 30 Sep 2023 04:47:59 +0000 Subject: [PATCH 085/100] Auto-update submodules library/xml: master scripts: master --- library/xml | 2 +- scripts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/xml b/library/xml index bcfb0fb3b..dc1d5c80f 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit bcfb0fb3ba82939f353bda9908d39877661d9c81 +Subproject commit dc1d5c80f03a68f6d58ff4f8dbbdf6855a7e9781 diff --git a/scripts b/scripts index 73eac0413..57c859394 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 73eac04134b3e7d89b7be1bc355dddab38c5656d +Subproject commit 57c859394936f9183d95426f75a5d3e9b305dd2a From b672e40851cb862f8ab1277de6aee1fc56341c7f Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sat, 30 Sep 2023 22:37:27 -0700 Subject: [PATCH 086/100] clean up changelog --- docs/changelog.txt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 4db2bbf77..8d3d45778 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -58,23 +58,24 @@ Template for new versions: ## New Features ## Fixes -- `autolabor`: now unconditionally re-enables vanilla work details when the fort or the plugin is unloaded +- `autolabor`: ensure vanilla work details are reinstated when the fort or the plugin is unloaded - ``dfhack.TranslateName()``: fixed crash on certain invalid names, which affected `warn-starving` - EventManager: Unit death event no longer misfires on units leaving the map ## Misc Improvements -- `dig`: `digtype` command now has options to choose between designating only visible tiles or hidden tiles, as well as "auto" dig mode. Z-level options adjusted to allow choosing z-levels above, below, or the same as the cursor. +- `digtype`: designate only visible tiles by default, and use "auto" dig mode for following veins +- `digtype`: added options for designating only current z-level, this z-level and above, and this z-level and below - `hotkeys`: make the DFHack logo brighten on hover in ascii mode to indicate that it is clickable -- `hotkeys`: use vertical bars instead of "!" symbols for the DFHack logo to make it easier to read -- EventManager: guarded against potential iterator invalidation if one of the event listeners modified the global data structure being iterated over -- EventManager: changed firing order of building created and building destroyed events to improve performance in the building location cache. +- `hotkeys`: use vertical bars instead of "!" symbols for the DFHack logo in ascii mode to make it easier to read +- EventManager: guard against potential iterator invalidation if one of the event listeners were to modify the global data structure being iterated over +- EventManager: for ``onBuildingCreatedDestroyed`` events, changed firing order of events so destroyed events come before created events ## Documentation ## API ## Lua -- mouse key events are now aligned with internal DF semantics: ``_MOUSE_L`` indicates that the left mouse button has just been pressed and ``_MOUSE_L_DOWN`` indicates that the left mouse button is being held down. similar for ``_MOUSE_R`` and ``_MOUSE_M``. 3rd party scripts may have to adjust. +- mouse key events are now aligned with internal DF semantics: ``_MOUSE_L`` indicates that the left mouse button has just been pressed and ``_MOUSE_L_DOWN`` indicates that the left mouse button is being held down. similarly for ``_MOUSE_R`` and ``_MOUSE_M``. 3rd party scripts may have to adjust. ## Removed From 6e2adaa3a92cf6981bed18ca8282a1e715c1e774 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sat, 30 Sep 2023 23:31:56 -0700 Subject: [PATCH 087/100] don't conflict with macro recording key --- plugins/lua/orders.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/lua/orders.lua b/plugins/lua/orders.lua index df8710739..102580fab 100644 --- a/plugins/lua/orders.lua +++ b/plugins/lua/orders.lua @@ -100,7 +100,7 @@ function OrdersOverlay:init() widgets.HotkeyLabel{ frame={t=0, l=15}, label='recheck', - key='CUSTOM_CTRL_R', + key='CUSTOM_CTRL_K', auto_width=true, on_activate=do_recheck, }, From cd12e41fd7aa7d7a52c9e9cab97d89273bef0764 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sat, 30 Sep 2023 23:54:25 -0700 Subject: [PATCH 088/100] update enabler mouse state when mouse clicks are handled in dialogs --- library/lua/gui/dialogs.lua | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/library/lua/gui/dialogs.lua b/library/lua/gui/dialogs.lua index 95a56d0c4..5778cc767 100644 --- a/library/lua/gui/dialogs.lua +++ b/library/lua/gui/dialogs.lua @@ -67,7 +67,10 @@ function MessageBox:onInput(keys) gui.markMouseClicksHandled(keys) return true end - return self:inputToSubviews(keys) + if self:inputToSubviews(keys) then + gui.markMouseClicksHandled(keys) + return true + end end function showMessage(title, text, tcolor, on_close) @@ -137,7 +140,10 @@ function InputBox:onInput(keys) gui.markMouseClicksHandled(keys) return true end - return self:inputToSubviews(keys) + if self:inputToSubviews(keys) then + gui.markMouseClicksHandled(keys) + return true + end end function showInputPrompt(title, text, tcolor, input, on_input, on_cancel, min_width) @@ -239,7 +245,10 @@ function ListBox:onInput(keys) gui.markMouseClicksHandled(keys) return true end - return self:inputToSubviews(keys) + if self:inputToSubviews(keys) then + gui.markMouseClicksHandled(keys) + return true + end end function showListPrompt(title, text, tcolor, choices, on_select, on_cancel, min_width, filter) From a5fbd791cd943f64f7fca6ec13e45460c89f4149 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Sun, 1 Oct 2023 07:13:02 +0000 Subject: [PATCH 089/100] Auto-update submodules scripts: master --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index 57c859394..55d0463cd 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 57c859394936f9183d95426f75a5d3e9b305dd2a +Subproject commit 55d0463cdb67165f746a3f2c0f4dd87c6ef86eec From 211b34c618cdafdafd1bc756bce3ea3c7622cbf6 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Sun, 1 Oct 2023 08:35:42 +0000 Subject: [PATCH 090/100] Auto-update submodules library/xml: master scripts: master --- library/xml | 2 +- scripts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/xml b/library/xml index dc1d5c80f..b313b69ad 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit dc1d5c80f03a68f6d58ff4f8dbbdf6855a7e9781 +Subproject commit b313b69adafef0bc3597df285504b729c44bea86 diff --git a/scripts b/scripts index 55d0463cd..8259d95e9 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 55d0463cdb67165f746a3f2c0f4dd87c6ef86eec +Subproject commit 8259d95e9ee9d88c88f32b22608d0d8c977aac18 From 0dba8919932102195857fbc32ef2df96830fb002 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 1 Oct 2023 08:43:59 -0700 Subject: [PATCH 091/100] clean out some unused dependencies --- library/lua/gui/buildings.lua | 2 -- library/lua/gui/materials.lua | 1 - 2 files changed, 3 deletions(-) diff --git a/library/lua/gui/buildings.lua b/library/lua/gui/buildings.lua index 8871346f2..433afb1ba 100644 --- a/library/lua/gui/buildings.lua +++ b/library/lua/gui/buildings.lua @@ -4,8 +4,6 @@ local _ENV = mkmodule('gui.buildings') local gui = require('gui') local widgets = require('gui.widgets') -local dlg = require('gui.dialogs') -local utils = require('utils') ARROW = string.char(26) diff --git a/library/lua/gui/materials.lua b/library/lua/gui/materials.lua index eea881768..aa070ea73 100644 --- a/library/lua/gui/materials.lua +++ b/library/lua/gui/materials.lua @@ -5,7 +5,6 @@ local _ENV = mkmodule('gui.materials') local gui = require('gui') local widgets = require('gui.widgets') local dlg = require('gui.dialogs') -local utils = require('utils') ARROW = string.char(26) From a50013af26680351e283dde2a2f6d18d23bc5515 Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Sun, 1 Oct 2023 18:57:06 +0000 Subject: [PATCH 092/100] Auto-update submodules library/xml: master scripts: master --- library/xml | 2 +- scripts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/xml b/library/xml index b313b69ad..22d59be19 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit b313b69adafef0bc3597df285504b729c44bea86 +Subproject commit 22d59be193d833bc822ae9b3f45d5c0639dbe886 diff --git a/scripts b/scripts index 8259d95e9..4250c075d 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 8259d95e9ee9d88c88f32b22608d0d8c977aac18 +Subproject commit 4250c075d237b4da1efed8a9fd4af302b3f0c8c4 From 66b363b2918556470bb9a65ba726af8c7917757b Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Sun, 1 Oct 2023 20:24:16 +0000 Subject: [PATCH 093/100] Auto-update submodules library/xml: master scripts: master --- library/xml | 2 +- scripts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/xml b/library/xml index 22d59be19..ab5c2aff1 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit 22d59be193d833bc822ae9b3f45d5c0639dbe886 +Subproject commit ab5c2aff11c5f8c9c0f38820073be9ba51b8edce diff --git a/scripts b/scripts index 4250c075d..7911f7589 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 4250c075d237b4da1efed8a9fd4af302b3f0c8c4 +Subproject commit 7911f758979f1a8e9bf4d2ca893a3c1d9c9a43aa From 942cbe2015e6ef3f352a9df1b1db963a5141b109 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 1 Oct 2023 13:35:29 -0700 Subject: [PATCH 094/100] bump 50.11-r1 --- CMakeLists.txt | 2 +- docs/changelog.txt | 25 +++++++++++++++++-------- library/xml | 2 +- scripts | 2 +- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 74c37d4c7..c09fc6b71 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ cmake_policy(SET CMP0074 NEW) project(dfhack) # set up versioning. -set(DF_VERSION "50.10") +set(DF_VERSION "50.11") set(DFHACK_RELEASE "r1") set(DFHACK_PRERELEASE FALSE) diff --git a/docs/changelog.txt b/docs/changelog.txt index 8d3d45778..db9fe5d88 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -53,10 +53,25 @@ Template for new versions: ## New Tools -- `tubefill`: (reinstated) replenishes mined-out adamantine - ## New Features +## Fixes + +## Misc Improvements + +## Documentation + +## API + +## Lua + +## Removed + +# 50.11-r1 + +## New Tools +- `tubefill`: (reinstated) replenishes mined-out adamantine + ## Fixes - `autolabor`: ensure vanilla work details are reinstated when the fort or the plugin is unloaded - ``dfhack.TranslateName()``: fixed crash on certain invalid names, which affected `warn-starving` @@ -70,15 +85,9 @@ Template for new versions: - EventManager: guard against potential iterator invalidation if one of the event listeners were to modify the global data structure being iterated over - EventManager: for ``onBuildingCreatedDestroyed`` events, changed firing order of events so destroyed events come before created events -## Documentation - -## API - ## Lua - mouse key events are now aligned with internal DF semantics: ``_MOUSE_L`` indicates that the left mouse button has just been pressed and ``_MOUSE_L_DOWN`` indicates that the left mouse button is being held down. similarly for ``_MOUSE_R`` and ``_MOUSE_M``. 3rd party scripts may have to adjust. -## Removed - # 50.10-r1 ## Fixes diff --git a/library/xml b/library/xml index ab5c2aff1..f38f3c495 160000 --- a/library/xml +++ b/library/xml @@ -1 +1 @@ -Subproject commit ab5c2aff11c5f8c9c0f38820073be9ba51b8edce +Subproject commit f38f3c4955d604f2b5a8e0d952e676a0ab05c053 diff --git a/scripts b/scripts index 7911f7589..bcfbfe51b 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 7911f758979f1a8e9bf4d2ca893a3c1d9c9a43aa +Subproject commit bcfbfe51ba2256b0cfe3f172f51dea29d370cd82 From 8ed48901605a051c4b6a7312352a4b54648a9de3 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 1 Oct 2023 16:21:25 -0700 Subject: [PATCH 095/100] put highlights first in the release notes template --- .github/release_template.md | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/.github/release_template.md b/.github/release_template.md index eb1c43146..9431a4e18 100644 --- a/.github/release_template.md +++ b/.github/release_template.md @@ -12,45 +12,45 @@ This release is compatible with all distributions of Dwarf Fortress: [Steam](htt Please report any issues (or feature requests) on the DFHack [GitHub issue tracker](https://github.com/DFHack/dfhack/issues). When reporting issues, please upload a zip file of your savegame and a zip file of your `mods` directory to the cloud and add links to the GitHub issue. Make sure your files are downloadable by "everyone with the link". We need your savegame to reproduce the problem and test the fix, and we need your active mods so we can load your savegame. Issues with savegames and mods attached get fixed first! -Announcements +Highlights ----------------------------------
-Annc 1, PSAs - -### Annc 1 +Highlight 1, Highlight 2 -Text +### Highlight 1 -### PSAs +Demo screenshot/vidcap -As always, remember that, just like the vanilla DF game, DFHack tools can also have bugs. It is a good idea to **save often and keep backups** of the forts that you care about. +Text -Many DFHack tools that worked in previous (pre-Steam) versions of DF have not been updated yet and are marked with the "unavailable" tag in their docs. If you try to run them, they will show a warning and exit immediately. You can run the command again to override the warning (though of course the tools may not work). We make no guarantees of reliability for the tools that are marked as "unavailable". +### Highlight 2 -The in-game interface for running DFHack commands (`gui/launcher`) will not show "unavailable" tools by default. You can still run them if you know their names, or you can turn on dev mode by hitting Ctrl-D while in `gui/launcher` and they will be added to the autocomplete list. Some tools do not compile yet and are not available at all, even when in dev mode. +Demo screenshot/vidcap -If you see a tool complaining about the lack of a cursor, know that it's referring to the **keyboard** cursor (which used to be the only real option in Dwarf Fortress). You can enable the keyboard cursor by entering mining mode or selecting the dump/forbid tool and hitting Alt-K (the DFHack keybinding for `toggle-kbd-cursor`. We're working on making DFHack tools more mouse-aware and accessible so this step isn't necessary in the future. +Text
-Highlights +Announcements ----------------------------------
-Highlight 1, Highlight 2 - -### Highlight 1 +Annc 1, PSAs -Demo screenshot/vidcap +### Annc 1 Text -### Highlight 2 +### PSAs -Demo screenshot/vidcap +As always, remember that, just like the vanilla DF game, DFHack tools can also have bugs. It is a good idea to **save often and keep backups** of the forts that you care about. -Text +Many DFHack tools that worked in previous (pre-Steam) versions of DF have not been updated yet and are marked with the "unavailable" tag in their docs. If you try to run them, they will show a warning and exit immediately. You can run the command again to override the warning (though of course the tools may not work). We make no guarantees of reliability for the tools that are marked as "unavailable". + +The in-game interface for running DFHack commands (`gui/launcher`) will not show "unavailable" tools by default. You can still run them if you know their names, or you can turn on dev mode by hitting Ctrl-D while in `gui/launcher` and they will be added to the autocomplete list. Some tools do not compile yet and are not available at all, even when in dev mode. + +If you see a tool complaining about the lack of a cursor, know that it's referring to the **keyboard** cursor (which used to be the only real option in Dwarf Fortress). You can enable the keyboard cursor by entering mining mode or selecting the dump/forbid tool and hitting Alt-K (the DFHack keybinding for `toggle-kbd-cursor`. We're working on making DFHack tools more mouse-aware and accessible so this step isn't necessary in the future.
@@ -61,5 +61,4 @@ Generated release notes New tools, fixes, and improvements %RELEASE_NOTES% - From 5d295400d25b5fe14bce27262af6e4ba7e68a3d9 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 1 Oct 2023 16:28:18 -0700 Subject: [PATCH 096/100] centralize management of mouse state --- ci/test.lua | 3 --- docs/dev/Lua API.rst | 8 +++++++ library/include/modules/Screen.h | 1 + library/lua/gui.lua | 40 +++++++++++++------------------- library/lua/gui/dialogs.lua | 18 +++----------- library/modules/Screen.cpp | 18 +++++++++++++- plugins/lua/hotkeys.lua | 2 -- plugins/lua/overlay.lua | 1 - plugins/overlay.cpp | 2 +- 9 files changed, 46 insertions(+), 47 deletions(-) diff --git a/ci/test.lua b/ci/test.lua index 372d8f262..9a7c0d345 100644 --- a/ci/test.lua +++ b/ci/test.lua @@ -222,9 +222,6 @@ local function click_top_title_button(scr) df.global.gps.mouse_y = (sh // 2) + 3 end df.global.gps.precise_mouse_y = df.global.gps.mouse_y * df.global.gps.tile_pixel_y - df.global.enabler.tracking_on = 1 - df.global.enabler.mouse_lbut = 1 - df.global.enabler.mouse_lbut_down = 1 gui.simulateInput(scr, '_MOUSE_L') end diff --git a/docs/dev/Lua API.rst b/docs/dev/Lua API.rst index 6eeb2dbe7..99dcabf7e 100644 --- a/docs/dev/Lua API.rst +++ b/docs/dev/Lua API.rst @@ -3952,6 +3952,14 @@ Misc of keycodes to *true* or *false*. For instance, it is possible to use the table passed as argument to ``onInput``. + You can send mouse clicks as will by setting the ``_MOUSE_L`` key or other + mouse-related pseudo-keys documented with the ``screen:onInput(keys)`` + function above. Note that if you are simulating a click at a specific spot on + the screen, you must set ``df.global.gps.mouse_x`` and + ``df.global.gps.mouse_y`` if you are clicking on the interface layer or + ``df.global.gps.precise_mouse_x`` and ``df.global.gps.precise_mouse_y`` if + you are clickin on the map. + * ``mkdims_xy(x1,y1,x2,y2)`` Returns a table containing the arguments as fields, and also ``width`` and diff --git a/library/include/modules/Screen.h b/library/include/modules/Screen.h index 681398f89..96f1f6642 100644 --- a/library/include/modules/Screen.h +++ b/library/include/modules/Screen.h @@ -391,6 +391,7 @@ namespace DFHack virtual ~dfhack_lua_viewscreen(); static df::viewscreen *get_pointer(lua_State *L, int idx, bool make); + static void markInputAsHandled(); virtual bool is_lua_screen() { return true; } virtual bool isFocused() { return !defocused; } diff --git a/library/lua/gui.lua b/library/lua/gui.lua index ba49e0cdc..bb29124a5 100644 --- a/library/lua/gui.lua +++ b/library/lua/gui.lua @@ -15,8 +15,8 @@ TRANSPARENT_PEN = to_pen{tile=0, ch=0} KEEP_LOWER_PEN = to_pen{ch=32, fg=0, bg=0, keep_lower=true} local MOUSE_KEYS = { - _MOUSE_L = true, - _MOUSE_R = true, + _MOUSE_L = function(is_set) df.global.enabler.mouse_lbut = is_set and 1 or 0 end, + _MOUSE_R = function(is_set) df.global.enabler.mouse_rbut = is_set and 1 or 0 end, _MOUSE_M = true, _MOUSE_L_DOWN = true, _MOUSE_R_DOWN = true, @@ -27,7 +27,7 @@ local FAKE_INPUT_KEYS = copyall(MOUSE_KEYS) FAKE_INPUT_KEYS._STRING = true function simulateInput(screen,...) - local keys = {} + local keys, enabled_mouse_keys = {}, {} local function push_key(arg) local kv = arg if type(arg) == 'string' then @@ -35,6 +35,10 @@ function simulateInput(screen,...) if kv == nil and not FAKE_INPUT_KEYS[arg] then error('Invalid keycode: '..arg) end + if MOUSE_KEYS[arg] then + df.global.enabler.tracking_on = 1 + enabled_mouse_keys[arg] = true + end end if type(kv) == 'number' then keys[#keys+1] = kv @@ -57,6 +61,11 @@ function simulateInput(screen,...) end end end + for mk, fn in pairs(MOUSE_KEYS) do + if type(fn) == 'function' then + fn(enabled_mouse_keys[mk]) + end + end dscreen._doSimulateInput(screen, keys) end @@ -696,17 +705,6 @@ end DEFAULT_INITIAL_PAUSE = true --- ensure underlying DF screens don't also react to handled clicks -function markMouseClicksHandled(keys) - if keys._MOUSE_L then - df.global.enabler.mouse_lbut = 0 - end - if keys._MOUSE_R then - df.global.enabler.mouse_rbut_down = 0 - df.global.enabler.mouse_rbut = 0 - end -end - ZScreen = defclass(ZScreen, Screen) ZScreen.ATTRS{ defocusable=true, @@ -791,23 +789,17 @@ function ZScreen:onInput(keys) self:raise() else self:sendInputToParent(keys) - return + return true end end if ZScreen.super.onInput(self, keys) then - markMouseClicksHandled(keys) - return - end - - if self.pass_mouse_clicks and keys._MOUSE_L and not has_mouse then + -- noop + elseif self.pass_mouse_clicks and keys._MOUSE_L and not has_mouse then self.defocused = self.defocusable self:sendInputToParent(keys) - return elseif keys.LEAVESCREEN or keys._MOUSE_R then self:dismiss() - markMouseClicksHandled(keys) - return else local passit = self.pass_pause and keys.D_PAUSE if not passit and self.pass_mouse_clicks then @@ -829,8 +821,8 @@ function ZScreen:onInput(keys) if passit then self:sendInputToParent(keys) end - return end + return true end function ZScreen:raise() diff --git a/library/lua/gui/dialogs.lua b/library/lua/gui/dialogs.lua index 5778cc767..7a0f86b3f 100644 --- a/library/lua/gui/dialogs.lua +++ b/library/lua/gui/dialogs.lua @@ -64,13 +64,9 @@ function MessageBox:onInput(keys) elseif (keys.LEAVESCREEN or keys._MOUSE_R) and self.on_cancel then self.on_cancel() end - gui.markMouseClicksHandled(keys) - return true - end - if self:inputToSubviews(keys) then - gui.markMouseClicksHandled(keys) return true end + return self:inputToSubviews(keys) end function showMessage(title, text, tcolor, on_close) @@ -137,13 +133,9 @@ function InputBox:onInput(keys) if self.on_cancel then self.on_cancel() end - gui.markMouseClicksHandled(keys) - return true - end - if self:inputToSubviews(keys) then - gui.markMouseClicksHandled(keys) return true end + return self:inputToSubviews(keys) end function showInputPrompt(title, text, tcolor, input, on_input, on_cancel, min_width) @@ -242,13 +234,9 @@ function ListBox:onInput(keys) if self.on_cancel then self.on_cancel() end - gui.markMouseClicksHandled(keys) - return true - end - if self:inputToSubviews(keys) then - gui.markMouseClicksHandled(keys) return true end + return self:inputToSubviews(keys) end function showListPrompt(title, text, tcolor, choices, on_select, on_cancel, min_width, filter) diff --git a/library/modules/Screen.cpp b/library/modules/Screen.cpp index a5b347493..dee7e2b75 100644 --- a/library/modules/Screen.cpp +++ b/library/modules/Screen.cpp @@ -956,6 +956,18 @@ int dfhack_lua_viewscreen::do_notify(lua_State *L) return 1; } +void dfhack_lua_viewscreen::markInputAsHandled() { + if (!enabler) + return; + + // clear text buffer + enabler->last_text_input[0] = '\0'; + + // mark clicked mouse buttons as handled + enabler->mouse_lbut = 0; + enabler->mouse_rbut = 0; +} + int dfhack_lua_viewscreen::do_input(lua_State *L) { auto self = get_self(L); @@ -977,7 +989,11 @@ int dfhack_lua_viewscreen::do_input(lua_State *L) lua_pushvalue(L, -2); Lua::PushInterfaceKeys(L, Screen::normalize_text_keys(*keys)); - lua_call(L, 2, 0); + lua_call(L, 2, 1); + if (lua_toboolean(L, -1)) + markInputAsHandled(); + lua_pop(L, 1); + self->update_focus(L, -1); return 0; } diff --git a/plugins/lua/hotkeys.lua b/plugins/lua/hotkeys.lua index 6335de5e5..4c33f93ca 100644 --- a/plugins/lua/hotkeys.lua +++ b/plugins/lua/hotkeys.lua @@ -280,14 +280,12 @@ function Menu:onInput(keys) local x = list:getMousePos() if x == 0 then -- clicked on icon self:onSubmit2(list:getSelected()) - gui.markMouseClicksHandled(keys) return true end if not self:getMouseFramePos() then self.parent_view:dismiss() return true end - gui.markMouseClicksHandled(keys) end self:inputToSubviews(keys) return true -- we're modal diff --git a/plugins/lua/overlay.lua b/plugins/lua/overlay.lua index cd5286d0d..9751561a8 100644 --- a/plugins/lua/overlay.lua +++ b/plugins/lua/overlay.lua @@ -506,7 +506,6 @@ function feed_viewscreen_widgets(vs_name, vs, keys) not _feed_viewscreen_widgets('all', nil, keys) then return false end - gui.markMouseClicksHandled(keys) return true end diff --git a/plugins/overlay.cpp b/plugins/overlay.cpp index 3fec6091b..c94397956 100644 --- a/plugins/overlay.cpp +++ b/plugins/overlay.cpp @@ -86,7 +86,7 @@ struct viewscreen_overlay : T { if (!input_is_handled) INTERPOSE_NEXT(feed)(input); else - enabler->last_text_input[0] = '\0'; + dfhack_lua_viewscreen::markInputAsHandled(); } DEFINE_VMETHOD_INTERPOSE(void, render, ()) { INTERPOSE_NEXT(render)(); From c22ac294a0ba1e233fc2fa989492a162cc3d7537 Mon Sep 17 00:00:00 2001 From: lethosor Date: Sun, 1 Oct 2023 22:57:24 -0400 Subject: [PATCH 097/100] Re-add tags in embark-tools docs They appear to have accidentally been removed in 2627820bfa3df3841d78e79f9895f166346d0041 (no other plugins were affected) --- docs/plugins/embark-tools.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plugins/embark-tools.rst b/docs/plugins/embark-tools.rst index f320706ff..0c76b887f 100644 --- a/docs/plugins/embark-tools.rst +++ b/docs/plugins/embark-tools.rst @@ -3,7 +3,7 @@ embark-tools .. dfhack-tool:: :summary: Extend the embark screen functionality. - + :tags: unavailable embark fort interface Usage ----- From cf7ca401902b3b8c3cda464c5b023785483d9dfc Mon Sep 17 00:00:00 2001 From: Myk Date: Sun, 1 Oct 2023 23:10:54 -0700 Subject: [PATCH 098/100] Update docs/dev/Lua API.rst Co-authored-by: Alan --- docs/dev/Lua API.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dev/Lua API.rst b/docs/dev/Lua API.rst index 99dcabf7e..49f0b3633 100644 --- a/docs/dev/Lua API.rst +++ b/docs/dev/Lua API.rst @@ -3958,7 +3958,7 @@ Misc the screen, you must set ``df.global.gps.mouse_x`` and ``df.global.gps.mouse_y`` if you are clicking on the interface layer or ``df.global.gps.precise_mouse_x`` and ``df.global.gps.precise_mouse_y`` if - you are clickin on the map. + you are clicking on the map. * ``mkdims_xy(x1,y1,x2,y2)`` From b0bbe2bd5af35839c1274833688059d41570c95b Mon Sep 17 00:00:00 2001 From: DFHack-Urist via GitHub Actions <63161697+DFHack-Urist@users.noreply.github.com> Date: Mon, 2 Oct 2023 07:13:30 +0000 Subject: [PATCH 099/100] Auto-update submodules scripts: master --- scripts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts b/scripts index bcfbfe51b..d2ad86165 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit bcfbfe51ba2256b0cfe3f172f51dea29d370cd82 +Subproject commit d2ad86165e89dc3b0f262eea00db8e2347cc4421 From 4e7725c1478de41395af1b38adc66b938f02b3d3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 3 Oct 2023 05:43:36 +0000 Subject: [PATCH 100/100] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/python-jsonschema/check-jsonschema: 0.26.3 → 0.27.0](https://github.com/python-jsonschema/check-jsonschema/compare/0.26.3...0.27.0) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d9c148058..00228be82 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -20,7 +20,7 @@ repos: args: ['--fix=lf'] - id: trailing-whitespace - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.26.3 + rev: 0.27.0 hooks: - id: check-github-workflows - repo: https://github.com/Lucas-C/pre-commit-hooks