@@ -1116,60 +1116,48 @@ void dfhack_lua_viewscreen::onDismiss()
1116
1116
safe_call_lua (do_notify, 1 , 0 );
1117
1117
}
1118
1118
1119
- df::unit *dfhack_lua_viewscreen::getSelectedUnit ()
1119
+ template <typename T>
1120
+ T* dfhack_lua_viewscreen::getSelected (const char * method_name)
1120
1121
{
1121
1122
Lua::StackUnwinder frame (Lua::Core::State);
1122
- lua_pushstring (Lua::Core::State, " onGetSelectedUnit " );
1123
+ lua_pushstring (Lua::Core::State, method_name );
1123
1124
safe_call_lua (do_notify, 1 , 1 );
1124
- return Lua::GetDFObject<df::unit>(Lua::Core::State, -1 );
1125
+ return Lua::GetDFObject<T>(Lua::Core::State, -1 );
1126
+ }
1127
+
1128
+ df::unit* dfhack_lua_viewscreen::getSelectedUnit ()
1129
+ {
1130
+ return getSelected<df::unit>(" onGetSelectedUnit" );
1125
1131
}
1126
1132
1127
1133
df::item *dfhack_lua_viewscreen::getSelectedItem ()
1128
1134
{
1129
- Lua::StackUnwinder frame (Lua::Core::State);
1130
- lua_pushstring (Lua::Core::State, " onGetSelectedItem" );
1131
- safe_call_lua (do_notify, 1 , 1 );
1132
- return Lua::GetDFObject<df::item>(Lua::Core::State, -1 );
1135
+ return getSelected<df::item>(" onGetSelectedItem" );
1133
1136
}
1134
1137
1135
1138
df::job *dfhack_lua_viewscreen::getSelectedJob ()
1136
1139
{
1137
- Lua::StackUnwinder frame (Lua::Core::State);
1138
- lua_pushstring (Lua::Core::State, " onGetSelectedJob" );
1139
- safe_call_lua (do_notify, 1 , 1 );
1140
- return Lua::GetDFObject<df::job>(Lua::Core::State, -1 );
1140
+ return getSelected<df::job>(" onGetSelectedJob" );
1141
1141
}
1142
1142
1143
1143
df::building *dfhack_lua_viewscreen::getSelectedBuilding ()
1144
1144
{
1145
- Lua::StackUnwinder frame (Lua::Core::State);
1146
- lua_pushstring (Lua::Core::State, " onGetSelectedBuilding" );
1147
- safe_call_lua (do_notify, 1 , 1 );
1148
- return Lua::GetDFObject<df::building>(Lua::Core::State, -1 );
1145
+ return getSelected<df::building>(" onGetSelectedBuilding" );
1149
1146
}
1150
1147
1151
1148
df::building_stockpilest *dfhack_lua_viewscreen::getSelectedStockpile ()
1152
1149
{
1153
- Lua::StackUnwinder frame (Lua::Core::State);
1154
- lua_pushstring (Lua::Core::State, " onGetSelectedStockpile" );
1155
- safe_call_lua (do_notify, 1 , 1 );
1156
- return Lua::GetDFObject<df::building_stockpilest>(Lua::Core::State, -1 );
1150
+ return getSelected<df::building_stockpilest>(" onGetSelectedStockpile" );
1157
1151
}
1158
1152
1159
1153
df::building_civzonest *dfhack_lua_viewscreen::getSelectedCivZone ()
1160
1154
{
1161
- Lua::StackUnwinder frame (Lua::Core::State);
1162
- lua_pushstring (Lua::Core::State, " onGetSelectedCivZone" );
1163
- safe_call_lua (do_notify, 1 , 1 );
1164
- return Lua::GetDFObject<df::building_civzonest>(Lua::Core::State, -1 );
1155
+ return getSelected<df::building_civzonest>(" onGetSelectedCivZone" );
1165
1156
}
1166
1157
1167
1158
df::plant *dfhack_lua_viewscreen::getSelectedPlant ()
1168
1159
{
1169
- Lua::StackUnwinder frame (Lua::Core::State);
1170
- lua_pushstring (Lua::Core::State, " onGetSelectedPlant" );
1171
- safe_call_lua (do_notify, 1 , 1 );
1172
- return Lua::GetDFObject<df::plant>(Lua::Core::State, -1 );
1160
+ return getSelected<df::plant>(" onGetSelectedPlant" );
1173
1161
}
1174
1162
1175
1163
#include " DataStaticsFields.inc"
0 commit comments