New tweak: "eggs-fertile"
							parent
							
								
									5fc8a1f51f
								
							
						
					
					
						commit
						ffac2f1795
					
				@ -0,0 +1,66 @@
 | 
			
		||||
#include "df/building_nest_boxst.h"
 | 
			
		||||
#include "df/item_eggst.h"
 | 
			
		||||
#include "df/viewscreen_dwarfmodest.h"
 | 
			
		||||
 | 
			
		||||
using namespace DFHack;
 | 
			
		||||
using namespace df::enums;
 | 
			
		||||
 | 
			
		||||
using df::global::world;
 | 
			
		||||
using df::global::ui;
 | 
			
		||||
 | 
			
		||||
struct egg_fertile_hook : df::viewscreen_dwarfmodest {
 | 
			
		||||
    typedef df::viewscreen_dwarfmodest interpose_base;
 | 
			
		||||
 | 
			
		||||
    df::building_nest_boxst* getNestBox()
 | 
			
		||||
    {
 | 
			
		||||
        if (ui->main.mode != ui_sidebar_mode::QueryBuilding &&
 | 
			
		||||
            ui->main.mode != ui_sidebar_mode::BuildingItems)
 | 
			
		||||
            return NULL;
 | 
			
		||||
        return virtual_cast<df::building_nest_boxst>(world->selected_building);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    DEFINE_VMETHOD_INTERPOSE(void, render, ())
 | 
			
		||||
    {
 | 
			
		||||
        INTERPOSE_NEXT(render)();
 | 
			
		||||
        df::building_nest_boxst* nest_box = getNestBox();
 | 
			
		||||
        if (nest_box)
 | 
			
		||||
        {
 | 
			
		||||
            auto dims = Gui::getDwarfmodeViewDims();
 | 
			
		||||
            bool has_eggs = false;
 | 
			
		||||
            bool fertile = false;
 | 
			
		||||
            int idx = 0;
 | 
			
		||||
            for (auto iter = nest_box->contained_items.begin();
 | 
			
		||||
                 iter != nest_box->contained_items.end(); ++iter)
 | 
			
		||||
            {
 | 
			
		||||
                df::item_eggst* egg = virtual_cast<df::item_eggst>((*iter)->item);
 | 
			
		||||
                if (egg)
 | 
			
		||||
                {
 | 
			
		||||
                    has_eggs = true;
 | 
			
		||||
                    if (egg->egg_flags.bits.fertile)
 | 
			
		||||
                        fertile = true;
 | 
			
		||||
                    if (ui->main.mode == ui_sidebar_mode::BuildingItems)
 | 
			
		||||
                    {
 | 
			
		||||
                        Screen::paintString(
 | 
			
		||||
                            Screen::Pen(' ', fertile ? COLOR_LIGHTGREEN : COLOR_LIGHTRED),
 | 
			
		||||
                            dims.menu_x2 - (fertile ? 4 : 6),
 | 
			
		||||
                            dims.y1 + idx + 3,
 | 
			
		||||
                            fertile ? "Fert" : "N.Fert"
 | 
			
		||||
                        );
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                ++idx;
 | 
			
		||||
            }
 | 
			
		||||
            if (has_eggs && ui->main.mode == ui_sidebar_mode::QueryBuilding)
 | 
			
		||||
            {
 | 
			
		||||
                Screen::paintString(
 | 
			
		||||
                    Screen::Pen(' ', fertile ? COLOR_LIGHTGREEN : COLOR_LIGHTRED),
 | 
			
		||||
                    dims.menu_x1 + 1,
 | 
			
		||||
                    dims.y1 + 5,
 | 
			
		||||
                    fertile ? "Eggs Fertile" : "Eggs infertile"
 | 
			
		||||
                );
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
IMPLEMENT_VMETHOD_INTERPOSE(egg_fertile_hook, render);
 | 
			
		||||
		Loading…
	
		Reference in New Issue