From 811bd191d5f28b25ef240ff759b5111d41f68fcb Mon Sep 17 00:00:00 2001 From: Anuradha Dissanayake Date: Sun, 14 Apr 2013 22:29:27 +1200 Subject: [PATCH] Add wear filter --- plugins/autotrade.cpp | 2 +- plugins/stocks.cpp | 57 +++++++++++++++++++++++++++++++++++++------ 2 files changed, 50 insertions(+), 9 deletions(-) diff --git a/plugins/autotrade.cpp b/plugins/autotrade.cpp index be9615ef0..62f7c05c0 100644 --- a/plugins/autotrade.cpp +++ b/plugins/autotrade.cpp @@ -25,7 +25,7 @@ using df::global::ui; using df::building_stockpilest; DFHACK_PLUGIN("autotrade"); -#define PLUGIN_VERSION 0.1 +#define PLUGIN_VERSION 0.2 /* diff --git a/plugins/stocks.cpp b/plugins/stocks.cpp index b9e864f57..7ac50fec8 100644 --- a/plugins/stocks.cpp +++ b/plugins/stocks.cpp @@ -12,6 +12,7 @@ #include "df/unit.h" #include "df/world.h" #include "df/item_quality.h" +#include "df/caravan_state.h" #include "modules/Gui.h" #include "modules/Items.h" @@ -53,6 +54,23 @@ static string getQualityName(const df::item_quality quality) return ENUM_KEY_STR(item_quality, quality); } +static bool can_trade() +{ + if (df::global::ui->caravans.size() == 0) + return false; + + for (auto it = df::global::ui->caravans.begin(); it != df::global::ui->caravans.end(); it++) + { + auto caravan = *it; + auto trade_state = caravan->trade_state; + auto time_remaining = caravan->time_remaining; + if ((trade_state != 1 && trade_state != 2) || time_remaining == 0) + return false; + } + + return true; +} + template class StockListColumn : public ListColumn { @@ -64,7 +82,7 @@ class StockListColumn : public ListColumn OutputString(COLOR_LIGHTBLUE, x, y, " "); if (item->flags.bits.rotten) - OutputString(COLOR_CYAN, x, y, "N"); + OutputString(COLOR_CYAN, x, y, "X"); else OutputString(COLOR_LIGHTBLUE, x, y, " "); @@ -214,7 +232,7 @@ public: hide_flags.bits.in_job = !hide_flags.bits.in_job; populateItems(); } - else if (input->count(interface_key::CUSTOM_SHIFT_T)) + else if (input->count(interface_key::CUSTOM_SHIFT_X)) { hide_flags.bits.rotten = !hide_flags.bits.rotten; populateItems(); @@ -296,6 +314,14 @@ public: populateItems(); } } + else if (input->count(interface_key::CUSTOM_SHIFT_W)) + { + ++min_wear; + if (min_wear > 3) + min_wear = 0; + + populateItems(); + } else if (input->count(interface_key::CUSTOM_SHIFT_Z)) { @@ -389,7 +415,7 @@ public: OutputString(COLOR_BROWN, x, y, "Filters", true, left_margin); OutputString(COLOR_LIGHTRED, x, y, "Press Shift-Hotkey to Toggle", true, left_margin); OutputFilterString(x, y, "In Job", "J", !hide_flags.bits.in_job, true, left_margin, COLOR_LIGHTBLUE); - OutputFilterString(x, y, "Rotten", "T", !hide_flags.bits.rotten, true, left_margin, COLOR_CYAN); + OutputFilterString(x, y, "Rotten", "X", !hide_flags.bits.rotten, true, left_margin, COLOR_CYAN); OutputFilterString(x, y, "Foreign Made", "G", !hide_flags.bits.foreign, true, left_margin, COLOR_BROWN); OutputFilterString(x, y, "Owned", "O", !hide_flags.bits.owned, true, left_margin, COLOR_GREEN); OutputFilterString(x, y, "Forbidden", "F", !hide_flags.bits.forbid, true, left_margin, COLOR_RED); @@ -407,10 +433,10 @@ public: OutputHotkeyString(x, y, "Max Qual: ", "/*"); OutputString(COLOR_BROWN, x, y, getQualityName(max_quality), true, left_margin); + ++y; OutputHotkeyString(x, y, "Min Wear: ", "Shift-W"); OutputString(COLOR_BROWN, x, y, int_to_string(min_wear), true, left_margin); - - + ++y; OutputString(COLOR_BROWN, x, y, "Actions ("); OutputString(COLOR_LIGHTGREEN, x, y, int_to_string(items_column.getDisplayedListSize())); @@ -561,10 +587,25 @@ private: auto label = Items::getDescription(item, 0, false); if (wear > 0) { - string wearX = ""; - for (int i = 0; i < wear; i++) + string wearX; + switch (wear) { - wearX += "X"; + case 1: + wearX = "x"; + break; + + case 2: + wearX = "X"; + break; + + case 3: + wearX = "xX"; + break; + + default: + wearX = "XX"; + break; + } label = wearX + label + wearX;