From 21dc3afede209419a7c218b95a5f9146cd78a4d1 Mon Sep 17 00:00:00 2001 From: Alexander Gavrilov Date: Thu, 20 Jun 2013 17:20:04 +0400 Subject: [PATCH 1/4] Find cur_year_tick_advmode in devel/find-offsets.lua --- scripts/devel/find-offsets.lua | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/scripts/devel/find-offsets.lua b/scripts/devel/find-offsets.lua index 2f7f1287c..ea5450a58 100644 --- a/scripts/devel/find-offsets.lua +++ b/scripts/devel/find-offsets.lua @@ -1306,6 +1306,27 @@ local function find_cur_year_tick() ms.found_offset('cur_year_tick', addr) end +local function find_cur_year_tick_advmode() + stop_autosave() + + local feed = dwarfmode_to_top() + local addr = searcher:find_interactive( + 'Searching for cur_year_tick_advmode.', + 'int32_t', + function(idx) + if idx > 0 then + if not step_n_frames(1, feed) then + return false + end + end + return true, nil, 144 + end, + 20 + ) + + ms.found_offset('cur_year_tick_advmode', addr) +end + -- -- cur_season_tick -- @@ -1499,6 +1520,7 @@ print('\nUnpausing globals:\n') exec_finder(find_cur_year, 'cur_year') exec_finder(find_cur_year_tick, 'cur_year_tick') +exec_finder(find_cur_year_tick_advmode, 'cur_year_tick_advmode') exec_finder(find_cur_season_tick, 'cur_season_tick') exec_finder(find_cur_season, 'cur_season') exec_finder(find_process_jobs, 'process_jobs') From e15f5c451fa3105ed628f9f30f4078278bbd8d87 Mon Sep 17 00:00:00 2001 From: Alexander Gavrilov Date: Thu, 20 Jun 2013 18:18:02 +0400 Subject: [PATCH 2/4] Fix search for cur_season_tick and cur_season in devel/find-offsets. It seems the one-off error is a problem with the original save I used, and not the result of some general behavior. --- scripts/devel/find-offsets.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/devel/find-offsets.lua b/scripts/devel/find-offsets.lua index ea5450a58..1ce7a4425 100644 --- a/scripts/devel/find-offsets.lua +++ b/scripts/devel/find-offsets.lua @@ -1350,7 +1350,7 @@ menu, then do as instructed below:]], return false end end - return true, math.floor(((df.global.cur_year_tick+10)%100800)/10) + return true, math.floor((df.global.cur_year_tick%100800)/10) end ) ms.found_offset('cur_season_tick', addr) @@ -1382,7 +1382,7 @@ menu, then do as instructed below:]], return false end end - return true, math.floor((df.global.cur_year_tick+10)/100800)%4 + return true, math.floor(df.global.cur_year_tick/100800)%4 end ) ms.found_offset('cur_season', addr) From 50073ae406474e270a37d262f9aab9652413a3f0 Mon Sep 17 00:00:00 2001 From: jj Date: Mon, 24 Jun 2013 00:45:45 +0200 Subject: [PATCH 3/4] rendermax: make citizen glow --- plugins/rendermax/renderer_light.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/plugins/rendermax/renderer_light.cpp b/plugins/rendermax/renderer_light.cpp index 187b3d2d8..05f1d2c96 100644 --- a/plugins/rendermax/renderer_light.cpp +++ b/plugins/rendermax/renderer_light.cpp @@ -2,12 +2,14 @@ #include #include +#include #include "Types.h" #include "modules/Gui.h" #include "modules/Screen.h" #include "modules/Maps.h" +#include "modules/Units.h" #include "df/graphic.h" #include "df/viewscreen_dwarfmodest.h" @@ -503,4 +505,15 @@ void lightingEngineViewscreen::doOcupancyAndLights() int tile=getIndex(wx,wy); addLight(tile,cursor); } -} \ No newline at end of file + lightSource citizen(lightCell(0.80f,0.80f,0.90f),6); + for (int i=0;iunits.active.size();++i) + { + df::unit *u = df::global::world->units.active[i]; + if (u->pos.z != window_z || + (u->pos.x < window_x || u->pos.x >= window_x+vpW) || + (u->pos.y < window_y || u->pos.y >= window_y+vpH)) + continue; + if (DFHack::Units::isCitizen(u)) + addLight(getIndex(u->pos.x-window_x+1, u->pos.y-window_y+1),citizen); + } +} From fb5d248720f0de4d2971b09fb3ab8fd408ec383a Mon Sep 17 00:00:00 2001 From: jj Date: Mon, 24 Jun 2013 01:54:09 +0200 Subject: [PATCH 4/4] rendermax: basic daylight --- plugins/rendermax/renderer_light.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/plugins/rendermax/renderer_light.cpp b/plugins/rendermax/renderer_light.cpp index 05f1d2c96..633871e2a 100644 --- a/plugins/rendermax/renderer_light.cpp +++ b/plugins/rendermax/renderer_light.cpp @@ -253,13 +253,16 @@ void lightingEngineViewscreen::initRawSpecific() static size_t max_list_size = 100000; // Avoid iterating over huge lists void lightingEngineViewscreen::doOcupancyAndLights() { - lightSource sun(lightCell(1,1,1),15); + // TODO better curve (+red dawn ?) + float daycol = abs((*df::global::cur_year_tick % 1200) - 600.0) / 600.0; + lightCell sky_col(daycol, daycol, daycol); + lightSource sky(sky_col, 15); + lightSource lava(lightCell(0.8f,0.2f,0.2f),5); lightSource candle(lightCell(0.96f,0.84f,0.03f),5); lightSource torch(lightCell(0.9f,0.75f,0.3f),8); rect2d vp=getMapViewport(); - - + int window_x=*df::global::window_x; int window_y=*df::global::window_y; int window_z=*df::global::window_z; @@ -277,7 +280,7 @@ void lightingEngineViewscreen::doOcupancyAndLights() for(int block_x = 0; block_x < 16; block_x++) for(int block_y = 0; block_y < 16; block_y++) { - cellArray[block_x][block_y] = lightCell(1,1,1); + cellArray[block_x][block_y] = sky_col; } int totalBlank = 0; int topLevel = df::global::world->map.z_count-1; @@ -347,7 +350,7 @@ void lightingEngineViewscreen::doOcupancyAndLights() if(!type) { //unallocated, do sky - addLight(tile,sun); + addLight(tile,sky); continue; } df::tiletype_shape shape = ENUM_ATTR(tiletype,shape,*type); @@ -438,7 +441,7 @@ void lightingEngineViewscreen::doOcupancyAndLights() } if(d->bits.outside && d->bits.flow_size==0) { - addLight(tile,sun); + addLight(tile,sky); } }