diff --git a/CMakeLists.txt b/CMakeLists.txt index e7d57636f..78790a4f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,13 +53,18 @@ if(MSVC) add_definitions( "/wd4819" ) # Disable use of POSIX name warnings -add_definitions ( "/D_CRT_NONSTDC_NO_WARNINGS") +add_definitions ( "/D_CRT_NONSTDC_NO_WARNINGS /D_CRT_SECURE_NO_WARNINGS") # supress C4503 - VC++ dislikes if a name is too long. If you get # weird and mysterious linking errors, you can disable this, but you'll have to # deal with a LOT of compiler noise over it # see https://msdn.microsoft.com/en-us/library/074af4b6.aspx add_definitions( "/wd4503") + +# suppress C4267 - VC++ complains whenever we implicitly convert an integer to +# a smaller type, and most of the time this is just conversion from 64 to 32 bits +# for things like vector sizes, which are never that big anyway. +add_definitions( "/wd4267") endif() # Automatically detect architecture based on Visual Studio generator diff --git a/depends/clsocket b/depends/clsocket index 0f0ad78c4..f638c8ea7 160000 --- a/depends/clsocket +++ b/depends/clsocket @@ -1 +1 @@ -Subproject commit 0f0ad78c4fd429caacd0694b5c868dbeacea16b6 +Subproject commit f638c8ea7f9c50fe7f64159c9f173846856f87a6 diff --git a/depends/lua/CMakeLists.txt b/depends/lua/CMakeLists.txt index 8b9ce8e2e..7dcae8068 100644 --- a/depends/lua/CMakeLists.txt +++ b/depends/lua/CMakeLists.txt @@ -7,7 +7,7 @@ SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DLUA_USE_ ADD_DEFINITIONS(-DLUA_COMPAT_BITLIB) IF(WIN32) - ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE ) + ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE /wd4334 ) ELSE() ADD_DEFINITIONS ( -DLUA_USE_POSIX -DLUA_USE_DLOPEN ) SET ( LIBS m dl ) diff --git a/depends/md5/md5.cpp b/depends/md5/md5.cpp index 5ee4fb45f..044df259e 100644 --- a/depends/md5/md5.cpp +++ b/depends/md5/md5.cpp @@ -135,7 +135,7 @@ void MD5Final(unsigned char digest[16], MD5Context *ctx) MD5Transform(ctx->buf, (uint32_t *) ctx->in); byteReverse((unsigned char *) ctx->buf, 4); memcpy(digest, ctx->buf, 16); - memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */ + memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */ } diff --git a/depends/md5/md5wrapper.cpp b/depends/md5/md5wrapper.cpp index 7feb25035..7e64f7914 100644 --- a/depends/md5/md5wrapper.cpp +++ b/depends/md5/md5wrapper.cpp @@ -16,10 +16,6 @@ * Petr Mrázek */ -#if defined(_MSC_VER) && _MSC_VER >= 1400 -#define _CRT_SECURE_NO_WARNINGS -#endif - //---------------------------------------------------------------------- //basic includes #include diff --git a/depends/protobuf/CMakeLists.txt b/depends/protobuf/CMakeLists.txt index 24bac7988..206cfc1a9 100644 --- a/depends/protobuf/CMakeLists.txt +++ b/depends/protobuf/CMakeLists.txt @@ -191,7 +191,7 @@ LIST(APPEND LIBPROTOBUF_FULL_SRCS ${LIBPROTOBUF_LITE_SRCS}) IF(CMAKE_COMPILER_IS_GNUCC) SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -Wno-sign-compare") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-result") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-result -Wno-unused-local-typedefs -Wno-misleading-indentation") ELSEIF(MSVC) # Disable warnings for integer conversion to smaller type SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267") diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 020a38c4d..6caab0a76 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -244,6 +244,10 @@ ADD_CUSTOM_COMMAND( DEPENDS protoc-bin ${PROJECT_PROTOS} ) +IF(UNIX) + SET_SOURCE_FILES_PROPERTIES(${PROJECT_PROTO_SRCS} PROPERTIES COMPILE_FLAGS "-Wno-misleading-indentation") +ENDIF() + ADD_CUSTOM_TARGET(generate_proto_core DEPENDS ${PROJECT_PROTO_TMP_FILES}) # Merge headers into sources diff --git a/library/Console-posix.cpp b/library/Console-posix.cpp index 8ef879d48..ef74e67d2 100644 --- a/library/Console-posix.cpp +++ b/library/Console-posix.cpp @@ -532,7 +532,7 @@ namespace DFHack } if (seq[1] == 'D') { - left_arrow: + /* left arrow */ if (raw_cursor > 0) { raw_cursor--; @@ -541,7 +541,6 @@ namespace DFHack } else if ( seq[1] == 'C') { - right_arrow: /* right arrow */ if (size_t(raw_cursor) != raw_buffer.size()) { @@ -636,7 +635,7 @@ namespace DFHack prompt_refresh(); break; case 11: // Ctrl+k, delete from current to end of line. - if (raw_cursor < raw_buffer.size()) + if (size_t(raw_cursor) < raw_buffer.size()) yank_buffer = raw_buffer.substr(raw_cursor); raw_buffer.erase(raw_cursor); prompt_refresh(); @@ -652,7 +651,7 @@ namespace DFHack case 20: // Ctrl+t, transpose current and previous characters if (raw_buffer.size() >= 2 && raw_cursor > 0) { - if (raw_cursor == raw_buffer.size()) + if (size_t(raw_cursor) == raw_buffer.size()) raw_cursor--; std::swap(raw_buffer[raw_cursor - 1], raw_buffer[raw_cursor]); raw_cursor++; diff --git a/library/LuaApi.cpp b/library/LuaApi.cpp index 0bf19e93e..852f4e29d 100644 --- a/library/LuaApi.cpp +++ b/library/LuaApi.cpp @@ -1504,8 +1504,18 @@ static const luaL_Reg dfhack_gui_funcs[] = { /***** Job module *****/ -static bool jobEqual(df::job *job1, df::job *job2) { return *job1 == *job2; } -static bool jobItemEqual(df::job_item *job1, df::job_item *job2) { return *job1 == *job2; } +static bool jobEqual(const df::job *job1, const df::job *job2) +{ + CHECK_NULL_POINTER(job1); + CHECK_NULL_POINTER(job2); + return *job1 == *job2; +} +static bool jobItemEqual(const df::job_item *job1, const df::job_item *job2) +{ + CHECK_NULL_POINTER(job1); + CHECK_NULL_POINTER(job2); + return *job1 == *job2; +} static const LuaWrapper::FunctionReg dfhack_job_module[] = { WRAPM(Job,cloneJobStruct), diff --git a/library/Process-linux.cpp b/library/Process-linux.cpp index 7a72171ca..fa06d28e4 100644 --- a/library/Process-linux.cpp +++ b/library/Process-linux.cpp @@ -176,22 +176,6 @@ int Process::adjustOffset(int offset, bool /*to_file*/) return offset; } -static int getdir (string dir, vector &files) -{ - DIR *dp; - struct dirent *dirp; - if((dp = opendir(dir.c_str())) == NULL) - { - cout << "Error(" << errno << ") opening " << dir << endl; - return errno; - } - while ((dirp = readdir(dp)) != NULL) { - files.push_back(string(dirp->d_name)); - } - closedir(dp); - return 0; -} - uint32_t Process::getTickCount() { struct timeval tp; diff --git a/library/include/DataDefs.h b/library/include/DataDefs.h index bf5782812..f964455a8 100644 --- a/library/include/DataDefs.h +++ b/library/include/DataDefs.h @@ -438,12 +438,15 @@ namespace df using DFHack::BitArray; using DFHack::DfArray; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdelete-non-virtual-dtor" template void *allocator_fn(void *out, const void *in) { if (out) { *(T*)out = *(const T*)in; return out; } else if (in) { delete (T*)in; return (T*)in; } else return new T(); } +#pragma GCC diagnostic pop template void *allocator_nodel_fn(void *out, const void *in) { diff --git a/library/modules/EventManager.cpp b/library/modules/EventManager.cpp index 8ce2c97f4..92a4f3f94 100644 --- a/library/modules/EventManager.cpp +++ b/library/modules/EventManager.cpp @@ -395,10 +395,10 @@ static void manageJobInitiatedEvent(color_ostream& out) { } //helper function for manageJobCompletedEvent -static int32_t getWorkerID(df::job* job) { - auto ref = findRef(job->general_refs, general_ref_type::UNIT_WORKER); - return ref ? ref->getID() : -1; -} +//static int32_t getWorkerID(df::job* job) { +// auto ref = findRef(job->general_refs, general_ref_type::UNIT_WORKER); +// return ref ? ref->getID() : -1; +//} /* TODO: consider checking item creation / experience gain just in case @@ -1150,7 +1150,7 @@ static void manageInteractionEvent(color_ostream& out) { df::report* lastAttackEvent = NULL; df::unit* lastAttacker = NULL; - df::unit* lastDefender = NULL; + //df::unit* lastDefender = NULL; unordered_map > history; for ( ; a < reports.size(); a++ ) { df::report* report = reports[a]; @@ -1164,7 +1164,7 @@ static void manageInteractionEvent(color_ostream& out) { if ( attack ) { lastAttackEvent = report; lastAttacker = NULL; - lastDefender = NULL; + //lastDefender = NULL; } vector relevantUnits = gatherRelevantUnits(out, lastAttackEvent, report); InteractionData data = getAttacker(out, lastAttackEvent, lastAttacker, attack ? NULL : report, relevantUnits); @@ -1201,7 +1201,7 @@ static void manageInteractionEvent(color_ostream& out) { } //out.print("%s,%d\n",__FILE__,__LINE__); lastAttacker = df::unit::find(data.attacker); - lastDefender = df::unit::find(data.defender); + //lastDefender = df::unit::find(data.defender); //fire event for ( auto b = copy.begin(); b != copy.end(); b++ ) { EventHandler handle = (*b).second; diff --git a/library/modules/Gui.cpp b/library/modules/Gui.cpp index e3cebd45e..53bacb129 100644 --- a/library/modules/Gui.cpp +++ b/library/modules/Gui.cpp @@ -917,11 +917,13 @@ df::unit *Gui::getAnyUnit(df::viewscreen *top) if (VIRTUAL_CAST_VAR(screen, df::viewscreen_petst, top)) { + df::viewscreen_petst::T_animal animal_default; + animal_default.unit = NULL; switch (screen->mode) { case df::viewscreen_petst::List: if (!vector_get(screen->is_vermin, screen->cursor)) - return vector_get(screen->animal, screen->cursor).unit; + return vector_get(screen->animal, screen->cursor, animal_default).unit; return NULL; case df::viewscreen_petst::SelectTrainer: diff --git a/library/modules/Job.cpp b/library/modules/Job.cpp index 132dcfc4b..7673737b2 100644 --- a/library/modules/Job.cpp +++ b/library/modules/Job.cpp @@ -129,9 +129,6 @@ void DFHack::Job::deleteJobStruct(df::job *job, bool keptEverything) bool DFHack::operator== (const df::job_item &a, const df::job_item &b) { - CHECK_NULL_POINTER(&a); - CHECK_NULL_POINTER(&b); - if (!(CMP(item_type) && CMP(item_subtype) && CMP(mat_type) && CMP(mat_index) && CMP(flags1.whole) && CMP(quantity) && CMP(vector_id) && @@ -152,9 +149,6 @@ bool DFHack::operator== (const df::job_item &a, const df::job_item &b) bool DFHack::operator== (const df::job &a, const df::job &b) { - CHECK_NULL_POINTER(&a); - CHECK_NULL_POINTER(&b); - if (!(CMP(job_type) && CMP(job_subtype) && CMP(mat_type) && CMP(mat_index) && CMP(item_subtype) && CMP(item_category.whole) && @@ -514,7 +508,7 @@ bool DFHack::Job::removePostings(df::job *job, bool remove_all) bool removed = false; if (!remove_all) { - if (job->posting_index >= 0 && job->posting_index < world->jobs.postings.size()) + if (job->posting_index >= 0 && size_t(job->posting_index) < world->jobs.postings.size()) { world->jobs.postings[job->posting_index]->flags.bits.dead = true; removed = true; diff --git a/library/modules/MapCache.cpp b/library/modules/MapCache.cpp index ffb9fc769..c0a2e4bed 100644 --- a/library/modules/MapCache.cpp +++ b/library/modules/MapCache.cpp @@ -929,6 +929,7 @@ t_matpair MapExtras::BlockInfo::getBaseMaterial(df::tiletype tt, df::coord2d pos case CONSTRUCTION: // just a fallback case MAGMA: case HFS: + case UNDERWORLD_GATE: // use generic 'rock' break; diff --git a/library/modules/Screen.cpp b/library/modules/Screen.cpp index 96f385d8d..6ac39aa05 100644 --- a/library/modules/Screen.cpp +++ b/library/modules/Screen.cpp @@ -511,8 +511,8 @@ void PenArray::draw(unsigned int x, unsigned int y, unsigned int width, unsigned { for (unsigned int gridy = y; gridy < y + height; gridy++) { - if (gridx >= gps->dimx || - gridy >= gps->dimy || + if (gridx >= unsigned(gps->dimx) || + gridy >= unsigned(gps->dimy) || gridx - x + bufx >= dimx || gridy - y + bufy >= dimy) continue; diff --git a/plugins/Brushes.h b/plugins/Brushes.h index eaf4240ea..6095a03da 100644 --- a/plugins/Brushes.h +++ b/plugins/Brushes.h @@ -130,7 +130,7 @@ public: while (mc.testCoord(start)) { df::tiletype tt = mc.tiletypeAt(start); - if(DFHack::LowPassable(tt) || juststarted && DFHack::HighPassable(tt)) + if(DFHack::LowPassable(tt) || (juststarted && DFHack::HighPassable(tt))) { v.push_back(start); juststarted = false; diff --git a/plugins/Plugins.cmake b/plugins/Plugins.cmake index fe167ccb3..b97db055d 100644 --- a/plugins/Plugins.cmake +++ b/plugins/Plugins.cmake @@ -73,42 +73,79 @@ MACRO(DFHACK_PLUGIN) CAR(PLUGIN_NAME ${PLUGIN_DEFAULT_ARGS}) CDR(PLUGIN_SOURCES ${PLUGIN_DEFAULT_ARGS}) - SET(PLUGIN_PROTOCPP) + SET(PLUGIN_PROTOS) FOREACH(pbuf ${PLUGIN_PROTOBUFS}) - SET(PLUGIN_SOURCES ${PLUGIN_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/proto/${pbuf}.pb.cc) - SET(PLUGIN_SOURCES ${PLUGIN_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/proto/${pbuf}.proto) - SET(PLUGIN_PROTOCPP ${PLUGIN_PROTOCPP} ${CMAKE_CURRENT_SOURCE_DIR}/proto/${pbuf}.pb.cc) + LIST(APPEND PLUGIN_PROTOS ${CMAKE_CURRENT_SOURCE_DIR}/proto/${pbuf}.proto) ENDFOREACH() - # Tell CMake the source won't be available until build time. - SET_SOURCE_FILES_PROPERTIES(${PLUGIN_PROTOCPP} PROPERTIES GENERATED 1) + LIST(LENGTH PLUGIN_PROTOS NUM_PROTO) + IF(NUM_PROTO) + STRING(REPLACE ".proto" ".pb.cc" PLUGIN_PROTO_SRCS "${PLUGIN_PROTOS}") + STRING(REPLACE ".proto" ".pb.h" PLUGIN_PROTO_HDRS "${PLUGIN_PROTOS}") + STRING(REPLACE "/proto/" "/proto/tmp/" PLUGIN_PROTO_TMP_FILES "${PLUGIN_PROTO_SRCS};${PLUGIN_PROTO_HDRS}") + SET_SOURCE_FILES_PROPERTIES(${PLUGIN_PROTO_SRCS} ${PLUGIN_PROTO_HDRS} PROPERTIES GENERATED TRUE) + + # Force a re-gen if any *.pb.* files are missing + # (only runs when cmake is run, but better than nothing) + FOREACH(file IN LISTS PLUGIN_PROTO_SRCS PLUGIN_PROTO_HDRS) + IF(NOT EXISTS ${file}) + # MESSAGE("Resetting generate_proto_${PLUGIN_NAME} because '${file}' is missing") + FILE(REMOVE ${PLUGIN_PROTO_TMP_FILES}) + BREAK() + ENDIF() + ENDFOREACH() + + ADD_CUSTOM_COMMAND( + OUTPUT ${PLUGIN_PROTO_TMP_FILES} + COMMAND protoc-bin -I=${CMAKE_CURRENT_SOURCE_DIR}/proto/ + --cpp_out=${CMAKE_CURRENT_SOURCE_DIR}/proto/tmp/ + ${PLUGIN_PROTOS} + COMMAND ${PERL_EXECUTABLE} ${CMAKE_SOURCE_DIR}/depends/copy-if-different.pl + ${PLUGIN_PROTO_TMP_FILES} + ${CMAKE_CURRENT_SOURCE_DIR}/proto/ + COMMENT "Generating plugin ${PLUGIN_NAME} protobufs" + DEPENDS protoc-bin ${PLUGIN_PROTOS} + ) - ADD_LIBRARY(${PLUGIN_NAME} MODULE ${PLUGIN_SOURCES}) - IDE_FOLDER(${PLUGIN_NAME} "Plugins") + IF(UNIX) + SET_SOURCE_FILES_PROPERTIES(${PLUGIN_PROTO_SRCS} PROPERTIES COMPILE_FLAGS "-Wno-misleading-indentation") + ENDIF() - ADD_DEPENDENCIES(${PLUGIN_NAME} dfhack-version) + ADD_CUSTOM_TARGET(generate_proto_${PLUGIN_NAME} DEPENDS ${PLUGIN_PROTO_TMP_FILES}) - # Make sure the source is generated before the executable builds. - ADD_DEPENDENCIES(${PLUGIN_NAME} generate_proto) + # Merge headers into sources + SET_SOURCE_FILES_PROPERTIES( ${PLUGIN_PROTO_HDRS} PROPERTIES HEADER_FILE_ONLY TRUE ) + LIST(APPEND PLUGIN_SOURCES ${PLUGIN_PROTO_HDRS}) + LIST(APPEND PLUGIN_SOURCES ${PLUGIN_PROTO_SRCS}) - LIST(LENGTH PLUGIN_PROTOBUFS NUM_PROTO) - IF(NUM_PROTO) - TARGET_LINK_LIBRARIES(${PLUGIN_NAME} dfhack protobuf-lite dfhack-version ${PLUGIN_LINK_LIBRARIES}) IF(UNIX) - SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES COMPILE_FLAGS "-include Export.h") + SET(PLUGIN_COMPILE_FLAGS "${PLUGIN_COMPILE_FLAGS} -include Export.h") ELSE() - SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES COMPILE_FLAGS "/FI\"Export.h\"") + SET(PLUGIN_COMPILE_FLAGS "${PLUGIN_COMPILE_FLAGS} /FI\"Export.h\"") ENDIF() + ENDIF() + + ADD_LIBRARY(${PLUGIN_NAME} MODULE ${PLUGIN_SOURCES}) + IDE_FOLDER(${PLUGIN_NAME} "Plugins") + + IF(NUM_PROTO) + ADD_DEPENDENCIES(${PLUGIN_NAME} generate_proto_${PLUGIN_NAME}) + TARGET_LINK_LIBRARIES(${PLUGIN_NAME} dfhack protobuf-lite dfhack-version ${PLUGIN_LINK_LIBRARIES}) ELSE() TARGET_LINK_LIBRARIES(${PLUGIN_NAME} dfhack dfhack-version ${PLUGIN_LINK_LIBRARIES}) ENDIF() - SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES COMPILE_FLAGS "${PLUGIN_COMPILE_FLAGS}") + ADD_DEPENDENCIES(${PLUGIN_NAME} dfhack-version) + + # Make sure the source is generated before the executable builds. + ADD_DEPENDENCIES(${PLUGIN_NAME} generate_proto) + IF(UNIX) - SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES COMPILE_FLAGS "${PLUGIN_COMPILE_FLAGS_GCC}") + SET(PLUGIN_COMPILE_FLAGS "${PLUGIN_COMPILE_FLAGS} ${PLUGIN_COMPILE_FLAGS_GCC}") ELSE() - SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES COMPILE_FLAGS "${PLUGIN_COMPILE_FLAGS_MSVC}") + SET(PLUGIN_COMPILE_FLAGS "${PLUGIN_COMPILE_FLAGS} ${PLUGIN_COMPILE_FLAGS_MSVC}") ENDIF() + SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES COMPILE_FLAGS "${PLUGIN_COMPILE_FLAGS}") IF(APPLE) SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES SUFFIX .plug.dylib PREFIX "") diff --git a/plugins/autochop.cpp b/plugins/autochop.cpp index a2a863540..858989a97 100644 --- a/plugins/autochop.cpp +++ b/plugins/autochop.cpp @@ -267,10 +267,8 @@ static bool skip_plant(const df::plant * plant, bool *restricted) if (skip.food_trees || skip.cook_trees) { - df::material * mat; - for (int idx = 0; idx < plant_raw->material.size(); idx++) + for (df::material * mat : plant_raw->material) { - mat = plant_raw->material[idx]; if (skip.food_trees && mat->flags.is_set(material_flags::EDIBLE_RAW)) { if (restricted) diff --git a/plugins/autohauler.cpp b/plugins/autohauler.cpp index 62914c784..c43ec110e 100644 --- a/plugins/autohauler.cpp +++ b/plugins/autohauler.cpp @@ -624,7 +624,7 @@ static void init_state() df::unit_labor labor = (df::unit_labor) atoi(key.substr(strlen("autohauler/labors/")).c_str()); // Ensure that the labor is defined in the existing list - if (labor >= 0 && labor <= labor_infos.size()) + if (labor >= 0 && size_t(labor) < labor_infos.size()) { // Link the labor treatment with the associated persistent data item labor_infos[labor].set_config(*p); @@ -635,7 +635,7 @@ static void init_state() } // Add default labors for those not in save - for (int i = 0; i < ARRAY_COUNT(default_labor_infos); i++) { + for (size_t i = 0; i < ARRAY_COUNT(default_labor_infos); i++) { // Determine if the labor is already present. If so, exit the for loop if (labor_infos[i].config.isValid()) @@ -806,7 +806,7 @@ DFhackCExport command_result plugin_onupdate ( color_ostream &out ) // Scan the world and look for any citizens in the player's civilization. // Add these to the list of dwarves. // xxx Does it need to be ++i? - for (int i = 0; i < world->units.active.size(); ++i) + for (size_t i = 0; i < world->units.active.size(); ++i) { df::unit* cre = world->units.active[i]; if (Units::isCitizen(cre)) @@ -895,7 +895,7 @@ DFhackCExport command_result plugin_onupdate ( color_ostream &out ) else { int job = dwarfs[dwarf]->job.current_job->job_type; - if (job >= 0 && job < ARRAY_COUNT(dwarf_states)) + if (job >= 0 && size_t(job) < ARRAY_COUNT(dwarf_states)) dwarf_info[dwarf].state = dwarf_states[job]; else { @@ -960,7 +960,7 @@ DFhackCExport command_result plugin_onupdate ( color_ostream &out ) continue; // For every dwarf... - for(int dwarf = 0; dwarf < dwarfs.size(); dwarf++) + for(size_t dwarf = 0; dwarf < dwarfs.size(); dwarf++) { if (!Units::isValidLabor(dwarfs[dwarf], labor)) continue; @@ -1138,7 +1138,7 @@ command_result autohauler (color_ostream &out, std::vector & param return CR_FAILURE; } - for (int i = 0; i < labor_infos.size(); i++) + for (size_t i = 0; i < labor_infos.size(); i++) { reset_labor((df::unit_labor) i); } diff --git a/plugins/autolabor.cpp b/plugins/autolabor.cpp index a894a2891..936ce4022 100644 --- a/plugins/autolabor.cpp +++ b/plugins/autolabor.cpp @@ -606,7 +606,7 @@ static void init_state() { string key = p->key(); df::unit_labor labor = (df::unit_labor) atoi(key.substr(strlen("autolabor/labors/")).c_str()); - if (labor >= 0 && labor <= labor_infos.size()) + if (labor >= 0 && size_t(labor) < labor_infos.size()) { labor_infos[labor].config = *p; labor_infos[labor].is_exclusive = default_labor_infos[labor].is_exclusive; @@ -615,7 +615,7 @@ static void init_state() } // Add default labors for those not in save - for (int i = 0; i < ARRAY_COUNT(default_labor_infos); i++) { + for (size_t i = 0; i < ARRAY_COUNT(default_labor_infos); i++) { if (labor_infos[i].config.isValid()) continue; @@ -960,7 +960,7 @@ static void assign_labor(unit_labor::unit_labor labor, * Military and children/nobles will not have labors assigned. * Dwarfs with the "health management" responsibility are always assigned DIAGNOSIS. */ - for (int i = 0; i < candidates.size() && labor_infos[labor].active_dwarfs < max_dwarfs; i++) + for (size_t i = 0; i < candidates.size() && labor_infos[labor].active_dwarfs < max_dwarfs; i++) { int dwarf = candidates[i]; @@ -1048,7 +1048,7 @@ DFhackCExport command_result plugin_onupdate ( color_ostream &out ) bool has_fishery = false; bool trader_requested = false; - for (int i = 0; i < world->buildings.all.size(); ++i) + for (size_t i = 0; i < world->buildings.all.size(); ++i) { df::building *build = world->buildings.all[i]; auto type = build->getType(); @@ -1074,7 +1074,7 @@ DFhackCExport command_result plugin_onupdate ( color_ostream &out ) } } - for (int i = 0; i < world->units.active.size(); ++i) + for (size_t i = 0; i < world->units.active.size(); ++i) { df::unit* cre = world->units.active[i]; if (Units::isCitizen(cre)) @@ -1105,7 +1105,7 @@ DFhackCExport command_result plugin_onupdate ( color_ostream &out ) df::historical_figure* hf = df::historical_figure::find(dwarfs[dwarf]->hist_figure_id); if(hf!=NULL) //can be NULL. E.g. script created citizens - for (int i = 0; i < hf->entity_links.size(); i++) + for (size_t i = 0; i < hf->entity_links.size(); i++) { df::histfig_entity_link* hfelink = hf->entity_links.at(i); if (hfelink->getType() == df::histfig_entity_link_type::POSITION) @@ -1140,7 +1140,7 @@ DFhackCExport command_result plugin_onupdate ( color_ostream &out ) // identify dwarfs who are needed for meetings and mark them for exclusion - for (int i = 0; i < ui->activities.size(); ++i) + for (size_t i = 0; i < ui->activities.size(); ++i) { df::activity_info *act = ui->activities[i]; if (!act) continue; @@ -1230,7 +1230,7 @@ DFhackCExport command_result plugin_onupdate ( color_ostream &out ) else { int job = dwarfs[dwarf]->job.current_job->job_type; - if (job >= 0 && job < ARRAY_COUNT(dwarf_states)) + if (job >= 0 && size_t(job) < ARRAY_COUNT(dwarf_states)) dwarf_info[dwarf].state = dwarf_states[job]; else { @@ -1341,7 +1341,7 @@ DFhackCExport command_result plugin_onupdate ( color_ostream &out ) for (int i = 0; i < num_haulers; i++) { - assert(i < hauler_ids.size()); + assert(size_t(i) < hauler_ids.size()); int dwarf = hauler_ids[i]; @@ -1357,7 +1357,7 @@ DFhackCExport command_result plugin_onupdate ( color_ostream &out ) out.print("Dwarf %i \"%s\" assigned %s: hauler\n", dwarf, dwarfs[dwarf]->name.first_name.c_str(), ENUM_KEY_STR(unit_labor, labor).c_str()); } - for (int i = num_haulers; i < hauler_ids.size(); i++) + for (size_t i = num_haulers; i < hauler_ids.size(); i++) { assert(i < hauler_ids.size()); @@ -1517,7 +1517,7 @@ command_result autolabor (color_ostream &out, std::vector & parame return CR_FAILURE; } - for (int i = 0; i < labor_infos.size(); i++) + for (size_t i = 0; i < labor_infos.size(); i++) { reset_labor((df::unit_labor) i); } diff --git a/plugins/automaterial.cpp b/plugins/automaterial.cpp index cfbc95ae7..40dc2bb48 100644 --- a/plugins/automaterial.cpp +++ b/plugins/automaterial.cpp @@ -69,12 +69,6 @@ struct MaterialDescriptor } }; - -static command_result automaterial_cmd(color_ostream &out, vector & parameters) -{ - return CR_OK; -} - DFhackCExport command_result plugin_shutdown ( color_ostream &out ) { return CR_OK; @@ -1124,6 +1118,7 @@ struct jobutils_hook : public df::viewscreen_dwarfmodest break; case SELECT_SECOND: + { OutputString(COLOR_GREEN, x, y, "Choose second corner", true, left_margin); int32_t curr_x, curr_y, curr_z; @@ -1137,6 +1132,11 @@ struct jobutils_hook : public df::viewscreen_dwarfmodest int cx = box_first.x; int cy = box_first.y; OutputString(COLOR_BROWN, cx, cy, "X", false, 0, 0, true /* map */); + break; + } + + default: + break; } OutputString(COLOR_BROWN, x, ++y, "Ignore Building Restrictions", true, left_margin); diff --git a/plugins/blueprint.cpp b/plugins/blueprint.cpp index badc094c9..6ef56722a 100644 --- a/plugins/blueprint.cpp +++ b/plugins/blueprint.cpp @@ -106,9 +106,9 @@ string get_tile_build(uint32_t x, uint32_t y, df::building* b) { if (! b) return " "; - bool at_nw_corner = x == b->x1 && y == b->y1; - bool at_se_corner = x == b->x2 && y == b->y2; - bool at_center = x == b->centerx && y == b->centery; + bool at_nw_corner = int32_t(x) == b->x1 && int32_t(y) == b->y1; + bool at_se_corner = int32_t(x) == b->x2 && int32_t(y) == b->y2; + bool at_center = int32_t(x) == b->centerx && int32_t(y) == b->centery; pair size = get_building_size(b); stringstream out;// = stringstream(); switch(b->getType()) @@ -227,7 +227,10 @@ string get_tile_build(uint32_t x, uint32_t y, df::building* b) return "wy"; case workshop_type::Dyers: return "wd"; + case workshop_type::Kennels: + return "k"; case workshop_type::Custom: + case workshop_type::Tool: //can't do anything with custom workshop return "`"; } @@ -261,6 +264,8 @@ string get_tile_build(uint32_t x, uint32_t y, df::building* b) case building_type::Construction: switch (((df::building_constructionst*) b)->type) { + case construction_type::NONE: + return "`"; case construction_type::Fortification: return "CF"; case construction_type::Wall: @@ -482,7 +487,7 @@ string get_tile_place(uint32_t x, uint32_t y, df::building* b) { if (! b || b->getType() != building_type::Stockpile) return " "; - if (b->x1 != x || b->y1 != y) + if (b->x1 != int32_t(x) || b->y1 != int32_t(y)) return "`"; pair size = get_building_size(b); df::building_stockpilest* sp = (df::building_stockpilest*) b; diff --git a/plugins/building-hacks.cpp b/plugins/building-hacks.cpp index bc989df30..17390cd5a 100644 --- a/plugins/building-hacks.cpp +++ b/plugins/building-hacks.cpp @@ -287,7 +287,7 @@ struct work_hook : df::building_workshopst{ } int w=db->x2-db->x1+1; std::vector &cur_frame=def->frames[frame]; - for(int i=0;i=0) { diff --git a/plugins/buildingplan-lib.cpp b/plugins/buildingplan-lib.cpp index 93efd60f6..f6023d2d7 100644 --- a/plugins/buildingplan-lib.cpp +++ b/plugins/buildingplan-lib.cpp @@ -17,7 +17,7 @@ void enable_quickfort_fn(pair& pair) { pair.secon * Material Choice Screen */ -static std::string material_to_string_fn(DFHack::MaterialInfo m) { return m.toString(); } +std::string material_to_string_fn(DFHack::MaterialInfo m) { return m.toString(); } bool ItemFilter::matchesMask(DFHack::MaterialInfo &mat) { @@ -131,7 +131,7 @@ void ItemFilter::clear() materials.clear(); } -static DFHack::MaterialInfo &material_info_identity_fn(DFHack::MaterialInfo &m) { return m; } +DFHack::MaterialInfo &material_info_identity_fn(DFHack::MaterialInfo &m) { return m; } ViewscreenChooseMaterial::ViewscreenChooseMaterial(ItemFilter *filter) { @@ -386,7 +386,7 @@ void RoomMonitor::reset(color_ostream &out) } -static void delete_item_fn(df::job_item *x) { delete x; } +void delete_item_fn(df::job_item *x) { delete x; } // START Planning @@ -654,3 +654,12 @@ void Planner::cycleDefaultQuality(df::building_type type) if (*quality == item_quality::Artifact) (*quality) = item_quality::Ordinary; } + +map planmode_enabled, saved_planmodes; + +bool show_debugging = false; +bool show_help = false; + +Planner planner; + +RoomMonitor roomMonitor; diff --git a/plugins/buildingplan-lib.h b/plugins/buildingplan-lib.h index 6975960d2..9720d5421 100644 --- a/plugins/buildingplan-lib.h +++ b/plugins/buildingplan-lib.h @@ -65,7 +65,7 @@ struct MaterialDescriptor #define MAX_MATERIAL 21 #define SIDEBAR_WIDTH 30 -static bool canReserveRoom(df::building *building) +static inline bool canReserveRoom(df::building *building) { if (!building) return false; @@ -76,7 +76,7 @@ static bool canReserveRoom(df::building *building) return building->is_room; } -static std::vector getUniqueNoblePositions(df::unit *unit) +static inline std::vector getUniqueNoblePositions(df::unit *unit) { std::vector np; Units::getNoblePositions(&np, unit); @@ -92,19 +92,19 @@ static std::vector getUniqueNoblePositions(df::unit *unit) return np; } -static void delete_item_fn(df::job_item *x); +void delete_item_fn(df::job_item *x); -static MaterialInfo &material_info_identity_fn(MaterialInfo &m); +MaterialInfo &material_info_identity_fn(MaterialInfo &m); -static map planmode_enabled, saved_planmodes; +extern map planmode_enabled, saved_planmodes; void enable_quickfort_fn(pair& pair); void debug(const std::string &msg); -static std::string material_to_string_fn(MaterialInfo m); +std::string material_to_string_fn(MaterialInfo m); -static bool show_debugging = false; -static bool show_help = false; +extern bool show_debugging; +extern bool show_help; struct ItemFilter { @@ -387,7 +387,7 @@ class Planner public: bool in_dummmy_screen; - Planner() : quickfort_mode(false), in_dummmy_screen(false) { } + Planner() : in_dummmy_screen(false), quickfort_mode(false) { } bool isPlanableBuilding(const df::building_type type) const { @@ -491,8 +491,8 @@ private: } }; -static Planner planner; +extern Planner planner; -static RoomMonitor roomMonitor; +extern RoomMonitor roomMonitor; #endif diff --git a/plugins/buildingplan.cpp b/plugins/buildingplan.cpp index 747e5cfb7..eb6d2a661 100644 --- a/plugins/buildingplan.cpp +++ b/plugins/buildingplan.cpp @@ -194,7 +194,7 @@ struct buildingplan_hook : public df::viewscreen_dwarfmodest df::interface_key last_token = get_string_key(input); if (last_token >= interface_key::STRING_A048 && last_token <= interface_key::STRING_A058) { - int selection = last_token - interface_key::STRING_A048; + size_t selection = last_token - interface_key::STRING_A048; if (np.size() < selection) return false; roomMonitor.toggleRoomForPosition(world->selected_building->id, np.at(selection-1).position->code); @@ -317,7 +317,7 @@ struct buildingplan_hook : public df::viewscreen_dwarfmodest int y = 24; OutputString(COLOR_BROWN, x, y, "DFHack", true, left_margin); OutputString(COLOR_WHITE, x, y, "Auto-allocate to:", true, left_margin); - for (int i = 0; i < np.size() && i < 9; i++) + for (size_t i = 0; i < np.size() && i < 9; i++) { bool enabled = (roomMonitor.getReservedNobleCode(world->selected_building->id) == np[i].position->code); diff --git a/plugins/changelayer.cpp b/plugins/changelayer.cpp index 27e4c12e6..cf7d4fdbc 100644 --- a/plugins/changelayer.cpp +++ b/plugins/changelayer.cpp @@ -227,7 +227,7 @@ command_result changelayer (color_ostream &out, std::vector & para { if(verbose) out << "---Biome: " << i; - if(!all_biomes && i!=biome) + if(!all_biomes && uint32_t(i)!=biome) { if(verbose) out << "-skipping" << endl; @@ -257,7 +257,7 @@ command_result changelayer (color_ostream &out, std::vector & para out << "geoindex: " << geoindex << endl; bool skip = false; - for(int g=0; gdisplay_frames; gps->display_frames=0; @@ -172,7 +172,7 @@ void viewscreen_commandpromptst::render() if(cursor_pos < (dim.x - 10)) { Screen::paintString(Screen::Pen(' ', 7, 0), 10,0 , entry); - if (entry.size() > dim.x - 10) + if (int16_t(entry.size()) > dim.x - 10) Screen::paintTile(Screen::Pen('\032', 7, 0), dim.x - 1, 0); if (cursor != " ") Screen::paintString(Screen::Pen(' ', 10, 0), 10 + cursor_pos, 0, cursor); @@ -243,7 +243,7 @@ void viewscreen_commandpromptst::feed(std::set *events) entry.erase(cursor_pos - 1, 1); cursor_pos--; } - if(cursor_pos > entry.size()) + if(size_t(cursor_pos) > entry.size()) cursor_pos = entry.size(); continue; } @@ -260,7 +260,7 @@ void viewscreen_commandpromptst::feed(std::set *events) if(events->count(interface_key::CURSOR_RIGHT)) { cursor_pos++; - if (cursor_pos > entry.size()) + if (size_t(cursor_pos) > entry.size()) cursor_pos = entry.size(); } else if(events->count(interface_key::CURSOR_LEFT)) @@ -294,10 +294,10 @@ void viewscreen_commandpromptst::feed(std::set *events) } else if(events->count(interface_key::CURSOR_DOWN)) { - if (history_idx < command_history.size() - 1) + if (size_t(history_idx) < command_history.size() - 1) { history_idx++; - if (history_idx >= command_history.size()) + if (size_t(history_idx) >= command_history.size()) history_idx = command_history.size() - 1; entry = get_entry(); cursor_pos = entry.size(); diff --git a/plugins/createitem.cpp b/plugins/createitem.cpp index 1f2e8a5c4..70794e38c 100644 --- a/plugins/createitem.cpp +++ b/plugins/createitem.cpp @@ -92,7 +92,7 @@ bool makeItem (df::reaction_product_itemst *prod, df::unit *unit, bool second_it return false; // if we asked to make shoes and we got twice as many as we asked, then we're okay // otherwise, make a second set because shoes are normally made in pairs - if (is_shoes && out_items.size() == prod->count * 2) + if (is_shoes && out_items.size() == size_t(prod->count * 2)) is_shoes = false; MapExtras::MapCache mc; diff --git a/plugins/dig.cpp b/plugins/dig.cpp index d18176f5a..83ca2ef2d 100644 --- a/plugins/dig.cpp +++ b/plugins/dig.cpp @@ -812,14 +812,14 @@ bool stamp_pattern (uint32_t bx, uint32_t by, int z_level, int x = 0,mx = 16; if(bx == 0) x = 1; - if(bx == x_max - 1) + if(int(bx) == x_max - 1) mx = 15; for(; x < mx; x++) { int y = 0,my = 16; if(by == 0) y = 1; - if(by == y_max - 1) + if(int(by) == y_max - 1) my = 15; for(; y < my; y++) { @@ -838,8 +838,8 @@ bool stamp_pattern (uint32_t bx, uint32_t by, int z_level, if(dm[y][x]) { if(what == EXPLO_ALL - || des.bits.dig == tile_dig_designation::Default && what == EXPLO_DESIGNATED - || des.bits.hidden && what == EXPLO_HIDDEN) + || (des.bits.dig == tile_dig_designation::Default && what == EXPLO_DESIGNATED) + || (des.bits.hidden && what == EXPLO_HIDDEN)) { des.bits.dig = tile_dig_designation::Default; } @@ -948,7 +948,7 @@ command_result digexp (color_ostream &out, vector & parameters) int which; for(uint32_t x = 0; x < x_max; x++) { - for(int32_t y = 0 ; y < y_max; y++) + for(uint32_t y = 0 ; y < y_max; y++) { which = (4*x + y) % 5; stamp_pattern(x,y_max - 1 - y, z_level, diag5[which], @@ -961,7 +961,7 @@ command_result digexp (color_ostream &out, vector & parameters) int which; for(uint32_t x = 0; x < x_max; x++) { - for(int32_t y = 0 ; y < y_max; y++) + for(uint32_t y = 0 ; y < y_max; y++) { which = (4*x + 1000-y) % 5; stamp_pattern(x,y_max - 1 - y, z_level, diag5r[which], @@ -975,7 +975,7 @@ command_result digexp (color_ostream &out, vector & parameters) for(uint32_t x = 0; x < x_max; x++) { which = x % 3; - for(int32_t y = 0 ; y < y_max; y++) + for(uint32_t y = 0 ; y < y_max; y++) { stamp_pattern(x, y, z_level, ladder[which], how, what, x_max, y_max); @@ -985,7 +985,7 @@ command_result digexp (color_ostream &out, vector & parameters) else if(how == EXPLO_LADDERR) { int which; - for(int32_t y = 0 ; y < y_max; y++) + for(uint32_t y = 0 ; y < y_max; y++) { which = y % 3; for(uint32_t x = 0; x < x_max; x++) @@ -1023,7 +1023,7 @@ command_result digexp (color_ostream &out, vector & parameters) } else for(uint32_t x = 0; x < x_max; x++) { - for(int32_t y = 0 ; y < y_max; y++) + for(uint32_t y = 0 ; y < y_max; y++) { stamp_pattern(x, y, z_level, all_tiles, how, what, x_max, y_max); @@ -1075,7 +1075,7 @@ command_result digv (color_ostream &out, vector & parameters) return CR_FAILURE; } DFHack::DFCoord xy ((uint32_t)cx,(uint32_t)cy,cz); - if(xy.x == 0 || xy.x == tx_max - 1 || xy.y == 0 || xy.y == ty_max - 1) + if(xy.x == 0 || xy.x == int32_t(tx_max) - 1 || xy.y == 0 || xy.y == int32_t(ty_max) - 1) { con.printerr("I won't dig the borders. That would be cheating!\n"); return CR_FAILURE; @@ -1136,10 +1136,10 @@ command_result digv (color_ostream &out, vector & parameters) { MCache->setTagAt(current, 1); - if(current.x < tx_max - 2) + if(current.x < int32_t(tx_max) - 2) { flood.push(DFHack::DFCoord(current.x + 1, current.y, current.z)); - if(current.y < ty_max - 2) + if(current.y < int32_t(ty_max) - 2) { flood.push(DFHack::DFCoord(current.x + 1, current.y + 1,current.z)); flood.push(DFHack::DFCoord(current.x, current.y + 1,current.z)); @@ -1153,7 +1153,7 @@ command_result digv (color_ostream &out, vector & parameters) if(current.x > 1) { flood.push(DFHack::DFCoord(current.x - 1, current.y,current.z)); - if(current.y < ty_max - 2) + if(current.y < int32_t(ty_max) - 2) { flood.push(DFHack::DFCoord(current.x - 1, current.y + 1,current.z)); flood.push(DFHack::DFCoord(current.x, current.y + 1,current.z)); @@ -1178,7 +1178,7 @@ command_result digv (color_ostream &out, vector & parameters) des.bits.dig = tile_dig_designation::DownStair; } - if(current.z < z_max - 1 && above && vmat_plus == vmat2) + if(current.z < int32_t(z_max) - 1 && above && vmat_plus == vmat2) { flood.push(current+ 1); @@ -1262,7 +1262,7 @@ command_result digl (color_ostream &out, vector & parameters) return CR_FAILURE; } DFHack::DFCoord xy ((uint32_t)cx,(uint32_t)cy,cz); - if(xy.x == 0 || xy.x == tx_max - 1 || xy.y == 0 || xy.y == ty_max - 1) + if(xy.x == 0 || xy.x == int32_t(tx_max) - 1 || xy.y == 0 || xy.y == int32_t(ty_max) - 1) { con.printerr("I won't dig the borders. That would be cheating!\n"); return CR_FAILURE; @@ -1320,10 +1320,10 @@ command_result digl (color_ostream &out, vector & parameters) if(MCache->testCoord(current)) { MCache->setTagAt(current, 1); - if(current.x < tx_max - 2) + if(current.x < int32_t(tx_max) - 2) { flood.push(DFHack::DFCoord(current.x + 1, current.y, current.z)); - if(current.y < ty_max - 2) + if(current.y < int32_t(ty_max) - 2) { flood.push(DFHack::DFCoord(current.x + 1, current.y + 1, current.z)); flood.push(DFHack::DFCoord(current.x, current.y + 1, current.z)); @@ -1337,7 +1337,7 @@ command_result digl (color_ostream &out, vector & parameters) if(current.x > 1) { flood.push(DFHack::DFCoord(current.x - 1, current.y, current.z)); - if(current.y < ty_max - 2) + if(current.y < int32_t(ty_max) - 2) { flood.push(DFHack::DFCoord(current.x - 1, current.y + 1, current.z)); flood.push(DFHack::DFCoord(current.x, current.y + 1, current.z)); @@ -1389,7 +1389,7 @@ command_result digl (color_ostream &out, vector & parameters) des.bits.dig = tile_dig_designation::DownStair; } - if(current.z < z_max - 1 && above && vmat_plus == -1 && bmat_plus == basemat) + if(current.z < int32_t(z_max) - 1 && above && vmat_plus == -1 && bmat_plus == basemat) { flood.push(current+ 1); @@ -1438,7 +1438,7 @@ command_result digtype (color_ostream &out, vector & parameters) return CR_FAILURE; } - uint32_t targetDigType; + int32_t targetDigType; if ( parameters.size() == 1 ) { string parameter = parameters[0]; @@ -1526,7 +1526,6 @@ command_result digtype (color_ostream &out, vector & parameters) continue; //designate it for digging - df::tile_designation des = mCache->designationAt(current); if ( !mCache->testCoord(current) ) { out.printerr("testCoord failed at (%d,%d,%d)\n", x, y, z); diff --git a/plugins/digFlood.cpp b/plugins/digFlood.cpp index ada6213a6..2556d25ac 100644 --- a/plugins/digFlood.cpp +++ b/plugins/digFlood.cpp @@ -137,7 +137,7 @@ void maybeExplore(color_ostream& out, MapExtras::MapCache& cache, df::coord pt, uint32_t xMax,yMax,zMax; Maps::getSize(xMax,yMax,zMax); - if ( pt.x == 0 || pt.y == 0 || pt.x+1 == xMax*16 || pt.y+1 == yMax*16 ) + if ( pt.x == 0 || pt.y == 0 || pt.x+1 == int32_t(xMax)*16 || pt.y+1 == int32_t(yMax)*16 ) return; if ( jobLocations.find(pt) != jobLocations.end() ) { return; diff --git a/plugins/diggingInvaders/assignJob.cpp b/plugins/diggingInvaders/assignJob.cpp index cdd3e6fc5..2b780bd63 100644 --- a/plugins/diggingInvaders/assignJob.cpp +++ b/plugins/diggingInvaders/assignJob.cpp @@ -68,8 +68,6 @@ int32_t assignJob(color_ostream& out, Edge firstImportantEdge, unordered_map (%d,%d,%d)\n", pt1.x,pt1.y,pt1.z, pt2.x,pt2.y,pt2.z); - int32_t jobId = -1; - df::map_block* block1 = Maps::getTileBlock(pt1); df::map_block* block2 = Maps::getTileBlock(pt2); bool passable1 = block1->walkable[pt1.x&0xF][pt1.y&0xF]; @@ -111,7 +109,6 @@ int32_t assignJob(color_ostream& out, Edge firstImportantEdge, unordered_mapjobs.clear(); building->jobs.push_back(job); Job::linkIntoWorld(job); - jobId = job->id; job->completion_timer = abilities.jobDelay[CostDimension::DestroyBuilding]; } else { df::tiletype* type1 = Maps::getTileType(pt1); @@ -136,7 +133,6 @@ int32_t assignJob(color_ostream& out, Edge firstImportantEdge, unordered_mapjob.hunt_target = NULL; firstInvader->job.destroy_target = NULL; Job::linkIntoWorld(job); - jobId = job->id; df::construction* constr = df::construction::find(pt2); bool smooth = constr != NULL && constr->item_type != df::enums::item_type::BOULDER; if ( smooth ) @@ -204,7 +200,6 @@ int32_t assignJob(color_ostream& out, Edge firstImportantEdge, unordered_mappath.path.y.clear(); firstInvader->path.path.z.clear(); Job::linkIntoWorld(job); - jobId = job->id; job->completion_timer = abilities.jobDelay[CostDimension::Dig]; //TODO: test if he already has a pick diff --git a/plugins/diggingInvaders/edgeCost.cpp b/plugins/diggingInvaders/edgeCost.cpp index b08227d94..cd52f4e17 100644 --- a/plugins/diggingInvaders/edgeCost.cpp +++ b/plugins/diggingInvaders/edgeCost.cpp @@ -246,7 +246,7 @@ cost_t getEdgeCost(color_ostream& out, df::coord pt1, df::coord pt2, DigAbilitie bool forbidden = false; if ( building1 && building1->getType() == df::building_type::Hatch ) { df::building_hatchst* hatch = (df::building_hatchst*)building1; - if ( hatch->door_flags.bits.forbidden || hatch->door_flags.bits.closed && hatch->door_flags.bits.operated_by_mechanisms ) + if ( hatch->door_flags.bits.forbidden || ( hatch->door_flags.bits.closed && hatch->door_flags.bits.operated_by_mechanisms ) ) forbidden = true; } diff --git a/plugins/dwarfvet.cpp b/plugins/dwarfvet.cpp index 604f399a7..19f00e888 100644 --- a/plugins/dwarfvet.cpp +++ b/plugins/dwarfvet.cpp @@ -370,7 +370,7 @@ void AnimalHospital::processPatients(color_ostream &out) { // Where the magic happens for (vector::iterator patient = this->accepted_patients.begin(); patient != this->accepted_patients.end(); patient++) { int id = (*patient)->getID(); - df::unit * real_unit; + df::unit * real_unit = nullptr; // Appears the health bits can get freed/realloced too -_-;, Find the unit from the main // index and check it there. auto units = world->units.all; @@ -383,7 +383,7 @@ void AnimalHospital::processPatients(color_ostream &out) { } // Check to make sure the unit hasn't expired before assigning a job, or if they've been healed - if (real_unit->flags1.bits.dead || !real_unit->health->flags.bits.needs_healthcare) { + if (!real_unit || real_unit->flags1.bits.dead || !real_unit->health->flags.bits.needs_healthcare) { // discharge the patient from the hospital this->dischargePatient(*patient, out); return; @@ -459,7 +459,7 @@ bool compareAnimalHospitalZones(df::building * hospital1, df::building * hospita hospital1->x2 == hospital2->x2 && hospital1->y1 == hospital2->y1 && hospital1->y2 == hospital2->y2 && - hospital1->z == hospital1->z) { + hospital1->z == hospital2->z) { return true; } @@ -733,16 +733,12 @@ processUnits: // The master list handles all patients which are accepted // Check if this is a unit we're already aware of - bool patient_accepted = false; - for (vector::iterator animal_hospital = animal_hospital_zones.begin(); animal_hospital != animal_hospital_zones.end();) { - if ((*animal_hospital)->acceptPatient(unit->id, out)) { - out.print("Accepted patient %d at hospital %d\n", unit->id, (*animal_hospital)->getID()); - patient_accepted = true; + for (auto animal_hospital : animal_hospital_zones) { + if (animal_hospital->acceptPatient(unit->id, out)) { + out.print("Accepted patient %d at hospital %d\n", unit->id, animal_hospital->getID()); tracked_units.push_back(unit->id); break; } - - } } } diff --git a/plugins/embark-assistant/finder_ui.cpp b/plugins/embark-assistant/finder_ui.cpp index 80380ca60..8f8a2599d 100644 --- a/plugins/embark-assistant/finder_ui.cpp +++ b/plugins/embark-assistant/finder_ui.cpp @@ -151,7 +151,7 @@ namespace embark_assist { fields i = first_fields; while (true) { - for (int k = 0; k < state->ui[static_cast(i)]->list.size(); k++) { + for (size_t k = 0; k < state->ui[static_cast(i)]->list.size(); k++) { if (state->ui[static_cast(i)]->current_value == state->ui[static_cast(i)]->list[k].key) { fprintf(outfile, "[%s:%s]\n", state->finder_list[static_cast(i)].text.c_str(), state->ui[static_cast(i)]->list[k].text.c_str()); break; @@ -185,9 +185,7 @@ namespace embark_assist { bool found; while (true) { - - fgets(line, count, infile); - if (line[0] != '[') { + if (!fgets(line, count, infile) || line[0] != '[') { out.printerr("Failed to find token start '[' at line %i\n", static_cast(i)); fclose(infile); return; @@ -205,7 +203,7 @@ namespace embark_assist { found = false; - for (int l = 0; l < state->ui[static_cast(i)]->list.size(); l++) { + for (size_t l = 0; l < state->ui[static_cast(i)]->list.size(); l++) { for (int m = k + 1; m < count; m++) { if (state->ui[static_cast(i)]->list[l].text.c_str()[m - (k + 1)] != line[m]) { if (state->ui[static_cast(i)]->list[l].text.c_str()[m - (k + 1)] == '\0' && @@ -251,14 +249,17 @@ namespace embark_assist { i = first_fields; while (true) { - fgets(line, count, infile); + if (!fgets(line, count, infile)) + { + break; + } for (int k = 1; k < count; k++) { if (line[k] == ':') { found = false; - for (int l = 0; l < state->ui[static_cast(i)]->list.size(); l++) { + for (size_t l = 0; l < state->ui[static_cast(i)]->list.size(); l++) { for (int m = k + 1; m < count; m++) { if (state->ui[static_cast(i)]->list[l].text.c_str()[m - (k + 1)] != line[m]) { if (state->ui[static_cast(i)]->list[l].text.c_str()[m - (k + 1)] == '\0' && @@ -1333,7 +1334,7 @@ namespace embark_assist { } // Implement scrolling lists if they don't fit on the screen. - if (state->ui[state->finder_list_focus]->list.size() > screen_size.y - 3) { + if (int32_t(state->ui[state->finder_list_focus]->list.size()) > screen_size.y - 3) { offset = (screen_size.y - 3) / 2; if (state->ui[state->finder_list_focus]->current_index < offset) { offset = 0; @@ -1342,7 +1343,7 @@ namespace embark_assist { offset = state->ui[state->finder_list_focus]->current_index - offset; } - if (state->ui[state->finder_list_focus]->list.size() - offset < screen_size.y - 3) { + if (int32_t(state->ui[state->finder_list_focus]->list.size() - offset) < screen_size.y - 3) { offset = static_cast(state->ui[state->finder_list_focus]->list.size()) - (screen_size.y - 3); } } diff --git a/plugins/embark-assistant/help_ui.cpp b/plugins/embark-assistant/help_ui.cpp index fb5d05969..32fb28dbb 100644 --- a/plugins/embark-assistant/help_ui.cpp +++ b/plugins/embark-assistant/help_ui.cpp @@ -89,7 +89,6 @@ namespace embark_assist{ void ViewscreenHelpUi::render() { color_ostream_proxy out(Core::getInstance().getConsole()); - auto screen_size = DFHack::Screen::getWindowSize(); Screen::Pen pen(' ', COLOR_WHITE); Screen::Pen site_pen = Screen::Pen(' ', COLOR_YELLOW, COLOR_BLACK, false); Screen::Pen pen_lr(' ', COLOR_LIGHTRED); diff --git a/plugins/embark-assistant/matcher.cpp b/plugins/embark-assistant/matcher.cpp index eb73eda2c..d4a2f8ee3 100644 --- a/plugins/embark-assistant/matcher.cpp +++ b/plugins/embark-assistant/matcher.cpp @@ -41,7 +41,7 @@ namespace embark_assist { uint16_t aquifer_count = 0; bool river_found = false; bool waterfall_found = false; - uint16_t river_elevation; + uint16_t river_elevation = 0xffff; uint16_t elevation = mlt->at(start_x).at(start_y).elevation; bool clay_found = false; bool sand_found = false; @@ -394,7 +394,6 @@ namespace embark_assist { df::world_data *world_data = world->world_data; embark_assist::defs::region_tile_datum *tile = &survey_results->at(x).at(y); const uint16_t embark_size = finder->x_dim * finder->y_dim; - uint16_t count; bool found; if (tile->surveyed) { @@ -750,7 +749,6 @@ namespace embark_assist { finder->mineral_1 != -1 || finder->mineral_2 != -1 || finder->mineral_3 != -1) { - count = 0; bool metal_1 = finder->metal_1 == -1; bool metal_2 = finder->metal_2 == -1; bool metal_3 = finder->metal_3 == -1; @@ -1104,7 +1102,6 @@ namespace embark_assist { finder->mineral_1 != -1 || finder->mineral_2 != -1 || finder->mineral_3 != -1) { - count = 0; bool metal_1 = finder->metal_1 == -1; bool metal_2 = finder->metal_2 == -1; bool metal_3 = finder->metal_3 == -1; @@ -1285,7 +1282,7 @@ uint16_t embark_assist::matcher::find(embark_assist::defs::match_iterators *iter auto screen = Gui::getViewscreenByType(0); uint16_t x_end; uint16_t y_end; - bool turn; + bool turn = false; uint16_t count; uint16_t preliminary_matches; diff --git a/plugins/embark-assistant/overlay.cpp b/plugins/embark-assistant/overlay.cpp index 4df74b18e..13bbb4fc1 100644 --- a/plugins/embark-assistant/overlay.cpp +++ b/plugins/embark-assistant/overlay.cpp @@ -179,7 +179,7 @@ namespace embark_assist { } } - for (auto i = 0; i < state->embark_info.size(); i++) { + for (size_t i = 0; i < state->embark_info.size(); i++) { embark_assist::screen::paintString(state->embark_info[i].pen, 1, i + 19, state->embark_info[i].text, false); } diff --git a/plugins/embark-assistant/screen.cpp b/plugins/embark-assistant/screen.cpp index 477e5c63c..34a0d815c 100644 --- a/plugins/embark-assistant/screen.cpp +++ b/plugins/embark-assistant/screen.cpp @@ -13,7 +13,7 @@ bool embark_assist::screen::paintString(const DFHack::Screen::Pen &pen, int x, i return false; // Won't paint outside of the screen or on the frame } - if (x + text.length() - 1 < screen_size.x - 2) { + if (x + int32_t(text.length()) - 1 < screen_size.x - 2) { DFHack::Screen::paintString(pen, x, y, text, map); } else if (x < screen_size.x - 2) { diff --git a/plugins/embark-assistant/survey.cpp b/plugins/embark-assistant/survey.cpp index 9de42e57f..4b0d883e3 100644 --- a/plugins/embark-assistant/survey.cpp +++ b/plugins/embark-assistant/survey.cpp @@ -1002,7 +1002,7 @@ void embark_assist::survey::survey_embark(embark_assist::defs::mid_level_tiles * // color_ostream_proxy out(Core::getInstance().getConsole()); auto screen = Gui::getViewscreenByType(0); - int16_t elevation; + int16_t elevation = 0; uint16_t x = screen->location.region_pos.x; uint16_t y = screen->location.region_pos.y; bool river_found = false; diff --git a/plugins/embark-tools.cpp b/plugins/embark-tools.cpp index 81f7dd6cd..34613cafb 100644 --- a/plugins/embark-tools.cpp +++ b/plugins/embark-tools.cpp @@ -268,6 +268,8 @@ public: case df::interface_key::CURSOR_DOWNRIGHT_FAST: is_motion = true; break; + default: + break; } if (is_motion && !moved_position) { @@ -284,7 +286,7 @@ protected: // Used for event handling int prev_x; int prev_y; - bool prev_lbut; + int8_t prev_lbut; // Used for controls bool base_max_x; bool base_max_y; @@ -304,7 +306,7 @@ protected: return in_local_move || in_local_edge_resize_x || in_local_edge_resize_y || in_local_corner_resize; } - void lbut_press(start_sitest* screen, bool pressed, int x, int y) + void lbut_press(start_sitest* screen, int8_t pressed, int x, int y) { GET_EMBARK_POS(screen, x1, x2, y1, y2, width, height); in_local_move = in_local_edge_resize_x = in_local_edge_resize_y = @@ -460,7 +462,7 @@ public: :EmbarkTool(), prev_x(0), prev_y(0), - prev_lbut(false), + prev_lbut(0), base_max_x(false), base_max_y(false), in_local_move(false), @@ -681,7 +683,7 @@ struct choose_start_site_hook : df::viewscreen_choose_start_sitest if (parts.size()) { std::string label = join_strings(", ", parts); - if (label.size() > dim.x - x - 1) + if (int16_t(label.size()) > dim.x - x - 1) { label.resize(dim.x - x - 1 - 3); label.append("..."); diff --git a/plugins/eventful.cpp b/plugins/eventful.cpp index f4056a3d5..5d8dfdb59 100644 --- a/plugins/eventful.cpp +++ b/plugins/eventful.cpp @@ -78,17 +78,6 @@ struct ReactionInfo { static std::map reactions; static std::map products; -static ReactionInfo *find_reaction(const std::string &name) -{ - auto it = reactions.find(name); - return (it != reactions.end()) ? &it->second : NULL; -} - -static bool is_lua_hook(const std::string &name) -{ - return name.size() > 9 && memcmp(name.data(), "LUA_HOOK_", 9) == 0; -} - /* * Hooks */ @@ -158,12 +147,12 @@ void ev_mng_jobCompleted(color_ostream& out, void* job) } void ev_mng_unitDeath(color_ostream& out, void* ptr) { - int32_t myId=*(int32_t*)&ptr; + int32_t myId=(int32_t)(intptr_t)ptr; onUnitDeath(out,myId); } void ev_mng_itemCreate(color_ostream& out, void* ptr) { - int32_t myId=*(int32_t*)&ptr; + int32_t myId=(int32_t)(intptr_t)ptr; onItemCreated(out,myId); } void ev_mng_construction(color_ostream& out, void* ptr) @@ -178,12 +167,12 @@ void ev_mng_syndrome(color_ostream& out, void* ptr) } void ev_mng_invasion(color_ostream& out, void* ptr) { - int32_t myId=*(int32_t*)&ptr; + int32_t myId=(int32_t)(intptr_t)ptr; onInvasion(out,myId); } static void ev_mng_building(color_ostream& out, void* ptr) { - int32_t id = *((int32_t*)ptr); + int32_t id=(int32_t)(intptr_t)ptr; onBuildingCreatedDestroyed(out, id); } static void ev_mng_inventory(color_ostream& out, void* ptr) @@ -204,7 +193,7 @@ static void ev_mng_inventory(color_ostream& out, void* ptr) onInventoryChange(out,unitId,itemId,item_old,item_new); } static void ev_mng_report(color_ostream& out, void* ptr) { - onReport(out,*(int32_t*)&ptr); + onReport(out,(int32_t)(intptr_t)ptr); } static void ev_mng_unitAttack(color_ostream& out, void* ptr) { EventManager::UnitAttackData* data = (EventManager::UnitAttackData*)ptr; diff --git a/plugins/fastdwarf.cpp b/plugins/fastdwarf.cpp index e8ae85c99..09d831e26 100644 --- a/plugins/fastdwarf.cpp +++ b/plugins/fastdwarf.cpp @@ -120,6 +120,8 @@ DFhackCExport command_result plugin_onupdate ( color_ostream &out ) df::unit_action *action = unit->actions[i]; switch (action->type) { + case unit_action_type::None: + break; case unit_action_type::Move: action->data.move.timer = 1; break; @@ -171,6 +173,13 @@ DFhackCExport command_result plugin_onupdate ( color_ostream &out ) case unit_action_type::SuckBlood: action->data.suckblood.timer = 1; break; + case unit_action_type::Jump: + case unit_action_type::ReleaseTerrain: + case unit_action_type::Parry: + case unit_action_type::Block: + case unit_action_type::HoldItem: + case unit_action_type::ReleaseItem: + break; } } } diff --git a/plugins/filltraffic.cpp b/plugins/filltraffic.cpp index 0f9a7bb6f..ddb5ef877 100644 --- a/plugins/filltraffic.cpp +++ b/plugins/filltraffic.cpp @@ -215,7 +215,7 @@ command_result filltraffic(color_ostream &out, std::vector & params { flood.push(DFCoord(xy.x - 1, xy.y, xy.z)); } - if (xy.x < tx_max - 1) + if (xy.x < int32_t(tx_max) - 1) { flood.push(DFCoord(xy.x + 1, xy.y, xy.z)); } @@ -223,7 +223,7 @@ command_result filltraffic(color_ostream &out, std::vector & params { flood.push(DFCoord(xy.x, xy.y - 1, xy.z)); } - if (xy.y < ty_max - 1) + if (xy.y < int32_t(ty_max) - 1) { flood.push(DFCoord(xy.x, xy.y + 1, xy.z)); } @@ -234,7 +234,7 @@ command_result filltraffic(color_ostream &out, std::vector & params { flood.push(DFCoord(xy.x, xy.y, xy.z - 1)); } - if (xy.z < z_max && HighPassable(tt)) + if (xy.z < int32_t(z_max) && HighPassable(tt)) { flood.push(DFCoord(xy.x, xy.y, xy.z + 1)); } @@ -337,11 +337,11 @@ command_result setAllMatching(color_ostream &out, checkTile checkProc, out.print("Setting traffic...\n"); //Loop through every single tile - for(uint32_t x = minCoord.x; x <= maxCoord.x; x++) + for(int32_t x = minCoord.x; x <= maxCoord.x; x++) { - for(uint32_t y = minCoord.y; y <= maxCoord.y; y++) + for(int32_t y = minCoord.y; y <= maxCoord.y; y++) { - for(uint32_t z = minCoord.z; z <= maxCoord.z; z++) + for(int32_t z = minCoord.z; z <= maxCoord.z; z++) { DFCoord tile = DFCoord(x, y, z); checkProc(tile, MCache); diff --git a/plugins/fix-unit-occupancy.cpp b/plugins/fix-unit-occupancy.cpp index 8b7be0c0f..b3cac47c5 100644 --- a/plugins/fix-unit-occupancy.cpp +++ b/plugins/fix-unit-occupancy.cpp @@ -21,26 +21,13 @@ DFHACK_PLUGIN_IS_ENABLED(is_enabled); REQUIRE_GLOBAL(cursor); REQUIRE_GLOBAL(world); -static int run_interval = 1200; // daily +static unsigned run_interval = 1200; // daily inline float getClock() { return (float)clock() / (float)CLOCKS_PER_SEC; } -static std::string get_unit_description(df::unit *unit) -{ - if (!unit) - return ""; - std::string desc; - auto name = Units::getVisibleName(unit); - if (name->has_name) - desc = Translation::TranslateName(name, false); - desc += (desc.size() ? ", " : "") + Units::getProfessionName(unit); // Check animal type too - - return desc; -} - struct uo_buf { uint32_t dim_x, dim_y, dim_z; size_t size; diff --git a/plugins/follow.cpp b/plugins/follow.cpp index 7a17f89d0..21a297bd1 100644 --- a/plugins/follow.cpp +++ b/plugins/follow.cpp @@ -116,8 +116,8 @@ DFhackCExport command_result plugin_onupdate ( color_ostream &out ) y_max *= 16; //Calculate a new screen position centered on the selected unit - x = unitPos.x + w/2 >= x_max ? x_max-w : (unitPos.x >= w/2 ? unitPos.x - w/2 : 0); - y = unitPos.y + h/2 >= y_max ? y_max-h : (unitPos.y >= h/2 ? unitPos.y - h/2 : 0); + x = unitPos.x + w/2 >= int32_t(x_max) ? x_max-w : (unitPos.x >= w/2 ? unitPos.x - w/2 : 0); + y = unitPos.y + h/2 >= int32_t(y_max) ? y_max-h : (unitPos.y >= h/2 ? unitPos.y - h/2 : 0); z = unitPos.z; //Set the new screen position! diff --git a/plugins/forceequip.cpp b/plugins/forceequip.cpp index da6f1aff4..19c1202d6 100644 --- a/plugins/forceequip.cpp +++ b/plugins/forceequip.cpp @@ -274,7 +274,7 @@ static bool moveToInventory(MapExtras::MapCache &mc, df::item *item, df::unit *u // Step 2: Try to find a bodypart which is eligible to receive equipment AND which is appropriate for the specified item df::body_part_raw * confirmedBodyPart = NULL; - int bpIndex; + size_t bpIndex; for(bpIndex = 0; bpIndex < unit->body.body_plan->body_parts.size(); bpIndex++) { df::body_part_raw * currPart = unit->body.body_plan->body_parts[bpIndex]; @@ -358,10 +358,9 @@ static bool moveToInventory(MapExtras::MapCache &mc, df::item *item, df::unit *u { confirmedBodyPart = currPart; // Assume that the bodypart is valid; we'll invalidate it if we detect too many collisions while looping int collisions = 0; - for (int inventoryID=0; inventoryID < unit->inventory.size(); inventoryID++) + for (df::unit_inventory_item * currInvItem : unit->inventory) { - df::unit_inventory_item * currInvItem = unit->inventory[inventoryID]; - if (currInvItem->body_part_id == bpIndex) + if (currInvItem->body_part_id == int32_t(bpIndex)) { // Collision detected; have we reached the limit? if (++collisions >= multiEquipLimit) @@ -415,6 +414,7 @@ command_result df_forceequip(color_ostream &out, vector & parameters) // The "here" option is hardcoded to true, because the plugin currently doesn't support // equip-at-a-distance (e.g. grab items within 10 squares of the targeted unit) bool here = true; + (void)here; // For balance (anti-cheating) reasons, the plugin applies a limit on the number of // item that can be equipped on any bodypart. This limit defaults to 1 but can be // overridden with cmdline switches. @@ -512,7 +512,7 @@ command_result df_forceequip(color_ostream &out, vector & parameters) pos_cursor = DFCoord(cx,cy,cz); // Iterate over all units, process the first one whose pos == pos_cursor - df::unit * targetUnit; + df::unit * targetUnit = nullptr; size_t numUnits = world->units.all.size(); for(size_t i=0; i< numUnits; i++) { @@ -522,11 +522,13 @@ command_result df_forceequip(color_ostream &out, vector & parameters) if (pos_unit == pos_cursor) break; - if (i + 1 == numUnits) - { - out.printerr("No unit found at cursor!\n"); - return CR_FAILURE; - } + targetUnit = nullptr; + } + + if (!targetUnit) + { + out.printerr("No unit found at cursor!\n"); + return CR_FAILURE; } // Assert: unit found. @@ -534,7 +536,7 @@ command_result df_forceequip(color_ostream &out, vector & parameters) // If a specific bodypart was included in the command arguments, then search for it now df::body_part_raw * targetBodyPart = NULL; if (targetBodyPartCode.size() > 0) { - for (int bpIndex = 0; bpIndex < targetUnit->body.body_plan->body_parts.size(); bpIndex ++) + for (size_t bpIndex = 0; bpIndex < targetUnit->body.body_plan->body_parts.size(); bpIndex ++) { // Tentatively assume that the part is a match targetBodyPart = targetUnit->body.body_plan->body_parts.at(bpIndex); diff --git a/plugins/fortplan.cpp b/plugins/fortplan.cpp index a1934c4ab..8609cb13c 100644 --- a/plugins/fortplan.cpp +++ b/plugins/fortplan.cpp @@ -165,7 +165,7 @@ command_result fortplan(color_ostream &out, vector & params) { con.print("Loading file '%s'...\n",filename.c_str()); try { layout = tokenizeFile(filename); - } catch (int e) { + } catch (int) { con.print("Could not open the file.\n"); return CR_FAILURE; } diff --git a/plugins/generated-creature-renamer.cpp b/plugins/generated-creature-renamer.cpp index 49444eaf4..e70324dd2 100644 --- a/plugins/generated-creature-renamer.cpp +++ b/plugins/generated-creature-renamer.cpp @@ -115,7 +115,7 @@ DFhackCExport command_result plugin_onstatechange(color_ostream &out, state_chan int creatureCount = 0; - for (int i = 0; i < world->raws.creatures.all.size(); i++) + for (size_t i = 0; i < world->raws.creatures.all.size(); i++) { auto creatureRaw = world->raws.creatures.all[i]; if (!creatureRaw->flags.is_set(df::enums::creature_raw_flags::GENERATED)) @@ -150,7 +150,7 @@ DFhackCExport command_result plugin_onstatechange(color_ostream &out, state_chan auto descriptor = descriptors[foundIndex]; - for (int j = 0; j < descriptor.size(); j++) + for (size_t j = 0; j < descriptor.size(); j++) { if (descriptor[j] == ' ') descriptor[j] = '_'; @@ -194,7 +194,7 @@ command_result list_creatures(color_ostream &out, std::vector & pa } CoreSuspender suspend; - for (int i = 0; i < world->raws.creatures.all.size(); i++) + for (size_t i = 0; i < world->raws.creatures.all.size(); i++) { auto creatureRaw = world->raws.creatures.all[i]; if (!creatureRaw->flags.is_set(df::enums::creature_raw_flags::GENERATED)) @@ -223,7 +223,7 @@ command_result save_generated_raw(color_ostream &out, std::vector int tileHeight = 24; std::string fileName = "graphics_procedural_creatures"; std::string pageName = "PROCEDURAL_FRIENDLY"; - int repeats = 128; + size_t repeats = 128; std::ofstream outputFile(fileName + ".txt", std::ios::out | std::ios::trunc); @@ -244,7 +244,7 @@ command_result save_generated_raw(color_ostream &out, std::vector { auto descriptor = descriptors[descIndex]; - for (int j = 0; j < descriptor.size(); j++) + for (size_t j = 0; j < descriptor.size(); j++) { if (descriptor[j] == ' ') descriptor[j] = '_'; diff --git a/plugins/hotkeys.cpp b/plugins/hotkeys.cpp index 6ec281143..d3ee600e3 100644 --- a/plugins/hotkeys.cpp +++ b/plugins/hotkeys.cpp @@ -17,13 +17,6 @@ static map current_bindings; static vector sorted_keys; static bool show_usage = false; -static void send_key(const df::interface_key &key) -{ - set< df::interface_key > keys; - keys.insert(key); - Gui::getCurViewscreen(true)->feed(&keys); -} - static bool can_invoke(string cmdline, df::viewscreen *screen) { vector cmd_parts; @@ -116,7 +109,7 @@ static bool close_hotkeys_screen() } -static void invoke_command(const int index) +static void invoke_command(const size_t index) { if (sorted_keys.size() <= index) return; @@ -147,12 +140,12 @@ public: { hotkeys_column.clear(); - int max_key_length = 0; + size_t max_key_length = 0; for_each_(sorted_keys, [&] (const string &sym) { if (sym.length() > max_key_length) { max_key_length = sym.length(); } }); int padding = max_key_length + 2; - for (int i = 0; i < sorted_keys.size(); i++) + for (size_t i = 0; i < sorted_keys.size(); i++) { string text = pad_string(sorted_keys[i], padding, false); text += current_bindings[sorted_keys[i]]; @@ -230,7 +223,7 @@ public: Plugin *plugin = Core::getInstance().getPluginManager()->getPluginByCommand(first); if (plugin) { - for (auto i = 0; i < plugin->size(); i++) + for (size_t i = 0; i < plugin->size(); i++) { auto pc = plugin->operator[](i); if (pc.name == first) @@ -278,7 +271,7 @@ private: { vector result; string excess; - if (str.length() > width) + if (int(str.length()) > width) { auto cut_space = str.rfind(' ', width-1); int excess_start; diff --git a/plugins/isoworldremote.cpp b/plugins/isoworldremote.cpp index 017fb45f6..651f89700 100644 --- a/plugins/isoworldremote.cpp +++ b/plugins/isoworldremote.cpp @@ -225,7 +225,7 @@ bool gather_embark_tile(int EmbX, int EmbY, EmbarkTile * tile, MapExtras::MapCac tile->set_current_year(*cur_year); tile->set_current_season(*cur_season); int num_valid_layers = 0; - for(int z = 0; z < MP->maxZ(); z++) + for(uint32_t z = 0; z < MP->maxZ(); z++) { EmbarkTileLayer * tile_layer = tile->add_tile_layer(); num_valid_layers += gather_embark_tile_layer(EmbX, EmbY, z, tile_layer, MP); @@ -351,11 +351,11 @@ static command_result GetRawNames(color_ostream &stream, const MapRequest *in, R } } out->set_available(true); - for(int i = 0; i < world->raws.inorganics.size(); i++){ + for(size_t i = 0; i < world->raws.inorganics.size(); i++){ out->add_inorganic(world->raws.inorganics[i]->id); } - for(int i = 0; i < world->raws.plants.all.size(); i++){ + for(size_t i = 0; i < world->raws.plants.all.size(); i++){ out->add_organic(world->raws.plants.all[i]->id); } return CR_OK; diff --git a/plugins/labormanager/joblabormapper.cpp b/plugins/labormanager/joblabormapper.cpp index f47077134..2328e14ef 100644 --- a/plugins/labormanager/joblabormapper.cpp +++ b/plugins/labormanager/joblabormapper.cpp @@ -210,8 +210,8 @@ static df::unit_labor construction_build_labor(df::building_actual* b) df::item* i = 0; for (auto p = b->contained_items.begin(); p != b->contained_items.end(); p++) - if (b->construction_stage > 0 && (*p)->use_mode == 2 || - b->construction_stage == 0 && (*p)->use_mode == 0) + if ((b->construction_stage > 0 && (*p)->use_mode == 2) || + (b->construction_stage == 0 && (*p)->use_mode == 0)) i = (*p)->item; MaterialInfo matinfo; @@ -229,6 +229,7 @@ static df::unit_labor construction_build_labor(df::building_actual* b) class jlfunc { public: + virtual ~jlfunc() {} virtual df::unit_labor get_labor(df::job* j) = 0; }; @@ -294,6 +295,8 @@ public: df::building* bld = get_building_from_job(j); switch (bld->getType()) { + case df::building_type::NONE: + return df::unit_labor::NONE; case df::building_type::Hive: return df::unit_labor::BEEKEEPING; case df::building_type::Workshop: @@ -398,6 +401,8 @@ public: switch (bld->getType()) { + case df::building_type::NONE: + return df::unit_labor::NONE; case df::building_type::Hive: return df::unit_labor::BEEKEEPING; case df::building_type::Workshop: diff --git a/plugins/labormanager/labormanager.cpp b/plugins/labormanager/labormanager.cpp index 3ef1808a2..7c749edce 100644 --- a/plugins/labormanager/labormanager.cpp +++ b/plugins/labormanager/labormanager.cpp @@ -525,8 +525,8 @@ struct dwarf_info_t df::unit_labor using_labor; - dwarf_info_t(df::unit* dw) : dwarf(dw), clear_all(false), - state(OTHER), high_skill(0), has_children(false), armed(false), using_labor(df::unit_labor::NONE) + dwarf_info_t(df::unit* dw) : dwarf(dw), state(OTHER), + clear_all(false), high_skill(0), has_children(false), armed(false), using_labor(df::unit_labor::NONE) { for (int e = TOOL_NONE; e < TOOLS_MAX; e++) has_tool[e] = false; @@ -614,7 +614,7 @@ static void init_state() { string key = p->key(); df::unit_labor labor = (df::unit_labor) atoi(key.substr(strlen("labormanager/2.0/labors/")).c_str()); - if (labor >= 0 && labor <= labor_infos.size()) + if (labor >= 0 && size_t(labor) < labor_infos.size()) { labor_infos[labor].config = *p; labor_infos[labor].active_dwarfs = 0; @@ -622,7 +622,7 @@ static void init_state() } // Add default labors for those not in save - for (int i = 0; i < ARRAY_COUNT(default_labor_infos); i++) { + for (size_t i = 0; i < ARRAY_COUNT(default_labor_infos); i++) { if (labor_infos[i].config.isValid()) continue; @@ -966,12 +966,12 @@ private: int worker = -1; int bld = -1; - for (int r = 0; r < j->general_refs.size(); ++r) + for (auto ref : j->general_refs) { - if (j->general_refs[r]->getType() == df::general_ref_type::UNIT_WORKER) - worker = ((df::general_ref_unit_workerst *)(j->general_refs[r]))->unit_id; - if (j->general_refs[r]->getType() == df::general_ref_type::BUILDING_HOLDER) - bld = ((df::general_ref_building_holderst *)(j->general_refs[r]))->building_id; + if (ref->getType() == df::general_ref_type::UNIT_WORKER) + worker = ((df::general_ref_unit_workerst *)ref)->unit_id; + if (ref->getType() == df::general_ref_type::BUILDING_HOLDER) + bld = ((df::general_ref_building_holderst *)ref)->building_id; } if (bld != -1) @@ -985,7 +985,7 @@ private: b->getType() != df::building_type::TradeDepot) { int fjid = -1; - for (int jn = 0; jn < b->jobs.size(); jn++) + for (size_t jn = 0; jn < b->jobs.size(); jn++) { if (b->jobs[jn]->flags.bits.suspend) continue; @@ -1062,7 +1062,7 @@ private: plant_count = 0; detail_count = 0; - for (int i = 0; i < world->map.map_blocks.size(); ++i) + for (size_t i = 0; i < world->map.map_blocks.size(); ++i) { df::map_block* bl = world->map.map_blocks[i]; @@ -1147,7 +1147,7 @@ private: tool_count[TOOL_AXE]++; else if (weaponsk == df::job_skill::MINING) tool_count[TOOL_PICK]++; - else if (weaponsk2 = df::job_skill::CROSSBOW) + else if (weaponsk2 == df::job_skill::CROSSBOW) tool_count[TOOL_CROSSBOW]++; } @@ -1187,7 +1187,7 @@ private: dwarf_info_t* dwarf = add_dwarf(cre); df::historical_figure* hf = df::historical_figure::find(dwarf->dwarf->hist_figure_id); - for (int i = 0; i < hf->entity_links.size(); i++) + for (size_t i = 0; i < hf->entity_links.size(); i++) { df::histfig_entity_link* hfelink = hf->entity_links.at(i); if (hfelink->getType() == df::histfig_entity_link_type::POSITION) @@ -1213,7 +1213,7 @@ private: // identify dwarfs who are needed for meetings and mark them for exclusion - for (int i = 0; i < ui->activities.size(); ++i) + for (size_t i = 0; i < ui->activities.size(); ++i) { df::activity_info *act = ui->activities[i]; if (!act) continue; @@ -1259,7 +1259,7 @@ private: // check if dwarf has an axe, pick, or crossbow - for (int j = 0; j < dwarf->dwarf->inventory.size(); j++) + for (size_t j = 0; j < dwarf->dwarf->inventory.size(); j++) { df::unit_inventory_item* ui = dwarf->dwarf->inventory[j]; if (ui->mode == df::unit_inventory_item::Weapon && ui->item->isWeapon()) @@ -1335,7 +1335,7 @@ private: else { df::job_type job = dwarf->dwarf->job.current_job->job_type; - if (job >= 0 && job < ARRAY_COUNT(dwarf_states)) + if (job >= 0 && size_t(job) < ARRAY_COUNT(dwarf_states)) state = dwarf_states[job]; else { @@ -1493,10 +1493,12 @@ private: if (labor != df::unit_labor::NONE) { if (d->dwarf->status.labors[labor]) + { if (labor == df::unit_labor::OPERATE_PUMP) score += 50000; else score += 25000; + } if (default_labor_infos[labor].tool != TOOL_NONE && d->has_tool[default_labor_infos[labor].tool]) score += 10000000; @@ -2088,7 +2090,7 @@ DFhackCExport command_result plugin_onstatechange(color_ostream &out, state_chan DFhackCExport command_result plugin_onupdate(color_ostream &out) { - static int step_count = 0; + // static int step_count = 0; // check run conditions if (!initialized || !world || !world->map.block_index || !enable_labormanager) { @@ -2102,7 +2104,7 @@ DFhackCExport command_result plugin_onupdate(color_ostream &out) if (*df::global::process_jobs) return CR_OK; - step_count = 0; + // step_count = 0; debug_stream = &out; AutoLaborManager alm(out); @@ -2256,14 +2258,14 @@ command_result labormanager(color_ostream &out, std::vector & para return CR_FAILURE; } - for (int i = 0; i < labor_infos.size(); i++) + for (size_t i = 0; i < labor_infos.size(); i++) { reset_labor((df::unit_labor) i); } out << "All labors reset." << endl; return CR_OK; } - else if (parameters.size() == 1 && parameters[0] == "list" || parameters[0] == "status") + else if (parameters.size() == 1 && (parameters[0] == "list" || parameters[0] == "status")) { if (!enable_labormanager) { diff --git a/plugins/listcolumn.h b/plugins/listcolumn.h index f7747d96d..0abe07b9d 100644 --- a/plugins/listcolumn.h +++ b/plugins/listcolumn.h @@ -16,7 +16,7 @@ public: UIColor color; ListEntry(const string text, const T elem, const string keywords = "", const UIColor color = COLOR_UNSELECTED) : - elem(elem), text(text), selected(false), keywords(keywords), color(color) + elem(elem), text(text), keywords(keywords), selected(false), color(color) { } }; @@ -73,14 +73,14 @@ public: void add(const ListEntry &entry) { list.push_back(entry); - if (entry.text.length() > max_item_width) + if (entry.text.length() > size_t(max_item_width)) max_item_width = entry.text.length(); } void add(const string &text, const T &elem) { list.push_back(ListEntry(text, elem)); - if (text.length() > max_item_width) + if (text.length() > size_t(max_item_width)) max_item_width = text.length(); } @@ -110,7 +110,7 @@ public: paint_text(COLOR_TITLE, left_margin, y, title); int last_index_able_to_display = display_start_offset + display_max_rows; - for (int i = display_start_offset; i < display_list.size() && i < last_index_able_to_display; i++) + for (int i = display_start_offset; size_t(i) < display_list.size() && i < last_index_able_to_display; i++) { ++y; UIColor fg_color = (is_selected_column && display_list[i]->selected) ? COLOR_SELECTED : display_list[i]->color; @@ -336,8 +336,7 @@ public: void selectItem(const T elem) { - int i = 0; - for (; i < display_list.size(); i++) + for (size_t i = 0; i < display_list.size(); i++) { if (display_list[i]->elem == elem) { @@ -447,7 +446,7 @@ public: gps->mouse_x >= left_margin && gps->mouse_x < left_margin + max_item_width) { int new_index = display_start_offset + gps->mouse_y - 3; - if (new_index < display_list.size()) + if (size_t(new_index) < display_list.size()) { setHighlight(new_index); feed_mouse_set_highlight = true; @@ -472,7 +471,7 @@ public: void setTitle(const string t) { title = t; - if (title.length() > max_item_width) + if (title.length() > size_t(max_item_width)) max_item_width = title.length(); } diff --git a/plugins/luasocket.cpp b/plugins/luasocket.cpp index 0259c562f..2903616e7 100644 --- a/plugins/luasocket.cpp +++ b/plugins/luasocket.cpp @@ -223,7 +223,7 @@ static void lua_client_send(int server_id,int client_id,std::string data) throw std::runtime_error("Client does with this id not exist"); } CActiveSocket *sock=(*target)[client_id]; - if(sock->Send((const uint8_t*)data.c_str(),data.size())!=data.size()) + if(size_t(sock->Send((const uint8_t*)data.c_str(),data.size()))!=data.size()) { throw std::runtime_error(sock->DescribeError()); } diff --git a/plugins/manipulator.cpp b/plugins/manipulator.cpp index 2940b493b..5dab2ab09 100644 --- a/plugins/manipulator.cpp +++ b/plugins/manipulator.cpp @@ -596,7 +596,7 @@ namespace unit_ops { } string get_short_profname(UnitInfo *u) { - for (int i = 0; i < NUM_COLUMNS; i++) + for (size_t i = 0; i < NUM_COLUMNS; i++) { if (columns[i].profession == u->unit->profession) return string(columns[i].label); @@ -657,7 +657,7 @@ struct ProfessionTemplate continue; } - for (int i = 0; i < NUM_COLUMNS; i++) + for (size_t i = 0; i < NUM_COLUMNS; i++) { if (line == ENUM_KEY_STR(unit_labor, columns[i].labor)) { @@ -678,7 +678,7 @@ struct ProfessionTemplate if (mask) outfile << "MASK" << std::endl; - for (int i = 0; i < NUM_COLUMNS; i++) + for (size_t i = 0; i < NUM_COLUMNS; i++) { if (hasLabor(columns[i].labor)) { @@ -696,7 +696,7 @@ struct ProfessionTemplate if (!mask && name.size() > 0) unit_ops::set_profname(u, name); - for (int i = 0; i < NUM_COLUMNS; i++) + for (size_t i = 0; i < NUM_COLUMNS; i++) { df::unit_labor labor = columns[i].labor; bool status = hasLabor(labor); @@ -709,7 +709,7 @@ struct ProfessionTemplate void fromUnit(UnitInfo* u) { - for (int i = 0; i < NUM_COLUMNS; i++) + for (size_t i = 0; i < NUM_COLUMNS; i++) { if (u->unit->status.labors[columns[i].labor]) labors.push_back(columns[i].labor); @@ -899,7 +899,7 @@ public: } OutputString(COLOR_LIGHTGREEN, x, y, itos(units.size())); OutputString(COLOR_GREY, x, y, string(" ") + (units.size() > 1 ? "dwarves" : "dwarf") + " selected: "); - int max_x = gps->dimx - 2; + size_t max_x = gps->dimx - 2; size_t i = 0; for ( ; i < units.size(); i++) { @@ -1046,7 +1046,7 @@ public: menu_options.display(true); OutputString(COLOR_LIGHTGREEN, x, y, itos(units.size())); OutputString(COLOR_GREY, x, y, string(" ") + (units.size() > 1 ? "dwarves" : "dwarf") + " selected: "); - int max_x = gps->dimx - 2; + size_t max_x = gps->dimx - 2; size_t i = 0; for ( ; i < units.size(); i++) { @@ -1138,7 +1138,7 @@ viewscreen_unitlaborsst::viewscreen_unitlaborsst(vector &src, int cur df::unit *unit = src[i]; if (!unit) { - if (cursor_pos > i) + if (cursor_pos > int(i)) cursor_pos--; continue; } @@ -1192,7 +1192,7 @@ viewscreen_unitlaborsst::viewscreen_unitlaborsst(vector &src, int cur if (first_row > sel_row) first_row = sel_row - num_rows + 1; // don't scroll beyond the end - if (first_row > units.size() - num_rows) + if (first_row > int(units.size()) - num_rows) first_row = units.size() - num_rows; last_selection = -1; @@ -1207,7 +1207,7 @@ void viewscreen_unitlaborsst::calcIDs() if (!initialized) { initialized = true; - for (int i = 0; i < NUM_COLUMNS; i++) + for (size_t i = 0; i < NUM_COLUMNS; i++) group_map.insert(std::pair(columns[i].profession, columns[i].group)); } memset(list_prof_ids, 0, sizeof(list_prof_ids)); @@ -1267,7 +1267,7 @@ void viewscreen_unitlaborsst::calcSize() auto dim = Screen::getWindowSize(); num_rows = dim.y - 11; - if (num_rows > units.size()) + if (num_rows > int(units.size())) num_rows = units.size(); int num_columns = dim.x - DISP_COLUMN_MAX - 1; @@ -1289,7 +1289,7 @@ void viewscreen_unitlaborsst::calcSize() // get max_name/max_prof from strings length for (size_t i = 0; i < units.size(); i++) { - if (col_maxwidth[DISP_COLUMN_NAME] < units[i]->name.size()) + if (size_t(col_maxwidth[DISP_COLUMN_NAME]) < units[i]->name.size()) col_maxwidth[DISP_COLUMN_NAME] = units[i]->name.size(); size_t detail_cmp; @@ -1300,7 +1300,7 @@ void viewscreen_unitlaborsst::calcSize() } else { detail_cmp = units[i]->profession.size(); } - if (col_maxwidth[DISP_COLUMN_DETAIL] < detail_cmp) + if (size_t(col_maxwidth[DISP_COLUMN_DETAIL]) < detail_cmp) col_maxwidth[DISP_COLUMN_DETAIL] = detail_cmp; } @@ -1383,7 +1383,7 @@ void viewscreen_unitlaborsst::calcSize() return; // if the window grows vertically, scroll upward to eliminate blank rows from the bottom - if (first_row > units.size() - num_rows) + if (first_row > int(units.size()) - num_rows) first_row = units.size() - num_rows; // if it shrinks vertically, scroll downward to keep the cursor visible @@ -1391,7 +1391,7 @@ void viewscreen_unitlaborsst::calcSize() first_row = sel_row - num_rows + 1; // if the window grows horizontally, scroll to the left to eliminate blank columns from the right - if (first_column > NUM_COLUMNS - col_widths[DISP_COLUMN_LABORS]) + if (first_column > int(NUM_COLUMNS) - col_widths[DISP_COLUMN_LABORS]) first_column = NUM_COLUMNS - col_widths[DISP_COLUMN_LABORS]; // if it shrinks horizontally, scroll to the right to keep the cursor visible @@ -1437,7 +1437,7 @@ void viewscreen_unitlaborsst::feed(set *events) { sel_row = 0; } - if ((sel_row < units.size()-1) && events->count(interface_key::CURSOR_DOWN_Z_AUX)) + if ((size_t(sel_row) < units.size()-1) && events->count(interface_key::CURSOR_DOWN_Z_AUX)) { sel_row = units.size()-1; } @@ -1450,9 +1450,9 @@ void viewscreen_unitlaborsst::feed(set *events) sel_row = 0; } - if (sel_row > units.size() - 1) + if (size_t(sel_row) > units.size() - 1) { - if (old_sel_row == units.size()-1 && events->count(interface_key::CURSOR_DOWN)) + if (size_t(old_sel_row) == units.size()-1 && events->count(interface_key::CURSOR_DOWN)) sel_row = 0; else sel_row = units.size() - 1; @@ -1487,7 +1487,7 @@ void viewscreen_unitlaborsst::feed(set *events) { // go to beginning of next group int cur = columns[sel_column].group; - int next = sel_column+1; + size_t next = sel_column+1; while ((next < NUM_COLUMNS) && (columns[next].group == cur)) next++; if ((next < NUM_COLUMNS) && (columns[next].group != cur)) @@ -1499,14 +1499,14 @@ void viewscreen_unitlaborsst::feed(set *events) if (sel_column < 0) sel_column = 0; - if (sel_column > NUM_COLUMNS - 1) + if (size_t(sel_column) > NUM_COLUMNS - 1) sel_column = NUM_COLUMNS - 1; if (events->count(interface_key::CURSOR_DOWN_Z) || events->count(interface_key::CURSOR_UP_Z)) { // when moving by group, ensure the whole group is shown onscreen int endgroup_column = sel_column; - while ((endgroup_column < NUM_COLUMNS-1) && columns[endgroup_column+1].group == columns[sel_column].group) + while ((size_t(endgroup_column) < NUM_COLUMNS-1) && columns[endgroup_column+1].group == columns[sel_column].group) endgroup_column++; if (first_column < endgroup_column - col_widths[DISP_COLUMN_LABORS] + 1) @@ -1674,7 +1674,7 @@ void viewscreen_unitlaborsst::feed(set *events) { if (newstatus) { - for (int i = 0; i < NUM_COLUMNS; i++) + for (size_t i = 0; i < NUM_COLUMNS; i++) { if ((columns[i].labor != unit_labor::NONE) && columns[i].special) unit->status.labors[columns[i].labor] = false; @@ -1688,7 +1688,7 @@ void viewscreen_unitlaborsst::feed(set *events) { const SkillColumn &col = columns[input_column]; bool newstatus = !unit->status.labors[col.labor]; - for (int i = 0; i < NUM_COLUMNS; i++) + for (size_t i = 0; i < NUM_COLUMNS; i++) { if (columns[i].group != col.group) continue; @@ -1698,7 +1698,7 @@ void viewscreen_unitlaborsst::feed(set *events) { if (newstatus) { - for (int j = 0; j < NUM_COLUMNS; j++) + for (size_t j = 0; j < NUM_COLUMNS; j++) { if ((columns[j].labor != unit_labor::NONE) && columns[j].special) unit->status.labors[columns[j].labor] = false; @@ -1767,6 +1767,8 @@ void viewscreen_unitlaborsst::feed(set *events) case ALTSORT_ARRIVAL: altsort = ALTSORT_NAME; break; + case ALTSORT_MAX: + break; } } if (events->count(interface_key::OPTION20)) @@ -1847,7 +1849,7 @@ void viewscreen_unitlaborsst::feed(set *events) { if (events->count(interface_key::UNITJOB_VIEW_UNIT) || events->count(interface_key::UNITJOB_ZOOM_CRE)) { - for (int i = 0; i < unitlist->units[unitlist->page].size(); i++) + for (size_t i = 0; i < unitlist->units[unitlist->page].size(); i++) { if (unitlist->units[unitlist->page][i] == units[input_row]->unit) { @@ -1893,7 +1895,7 @@ void viewscreen_unitlaborsst::render() for (int col = 0; col < col_widths[DISP_COLUMN_LABORS]; col++) { int col_offset = col + first_column; - if (col_offset >= NUM_COLUMNS) + if (size_t(col_offset) >= NUM_COLUMNS) break; int8_t fg = columns[col_offset].color; @@ -1922,7 +1924,7 @@ void viewscreen_unitlaborsst::render() for (int row = 0; row < num_rows; row++) { int row_offset = row + first_row; - if (row_offset >= units.size()) + if (size_t(row_offset) >= units.size()) break; UnitInfo *cur = units[row_offset]; @@ -1998,7 +2000,7 @@ void viewscreen_unitlaborsst::render() skill = binsearch_in_vector(unit->status.current_soul->skills, &df::unit_skill::id, columns[col_offset].skill); if ((skill != NULL) && (skill->rating || skill->experience)) { - int level = skill->rating; + size_t level = skill->rating; if (level > NUM_SKILL_LEVELS - 1) level = NUM_SKILL_LEVELS - 1; c = skill_levels[level].abbrev; @@ -2060,7 +2062,7 @@ void viewscreen_unitlaborsst::render() skill = binsearch_in_vector(unit->status.current_soul->skills, &df::unit_skill::id, columns[sel_column].skill); if (skill) { - int level = skill->rating; + size_t level = skill->rating; if (level > NUM_SKILL_LEVELS - 1) level = NUM_SKILL_LEVELS - 1; str = stl_sprintf("%s %s", skill_levels[level].name, ENUM_ATTR_STR(job_skill, caption_noun, columns[sel_column].skill)); diff --git a/plugins/mousequery.cpp b/plugins/mousequery.cpp index 7a70f29c4..4e0143fb6 100644 --- a/plugins/mousequery.cpp +++ b/plugins/mousequery.cpp @@ -46,7 +46,7 @@ static bool live_view = true; static bool skip_tracking_once = false; static bool mouse_moved = false; -static int scroll_delay = 100; +static uint32_t scroll_delay = 100; static df::coord get_mouse_pos(int32_t &mx, int32_t &my) { @@ -231,9 +231,10 @@ struct mousequery_hook : public df::viewscreen_dwarfmodest case Burrows: return ui->burrows.in_define_mode; - }; - return false; + default: + return false; + } } bool isInTrackableMode() diff --git a/plugins/probe.cpp b/plugins/probe.cpp index 63acfe3da..5f4a59ceb 100644 --- a/plugins/probe.cpp +++ b/plugins/probe.cpp @@ -401,9 +401,9 @@ command_result df_bprobe (color_ostream &out, vector & parameters) Buildings::t_building building; if (!Buildings::Read(i, building)) continue; - if (!(building.x1 <= cursor->x && cursor->x <= building.x2 && - building.y1 <= cursor->y && cursor->y <= building.y2 && - building.z == cursor->z)) + if (int32_t(building.x1) > cursor->x || cursor->x > int32_t(building.x2) || + int32_t(building.y1) > cursor->y || cursor->y > int32_t(building.y2) || + int32_t(building.z) != cursor->z) continue; string name; building.origin->getName(&name); diff --git a/plugins/prospector.cpp b/plugins/prospector.cpp index 32e360a3a..18efeac98 100644 --- a/plugins/prospector.cpp +++ b/plugins/prospector.cpp @@ -152,7 +152,7 @@ void printMats(color_ostream &con, MatMap &mat, std::vector &materials, bool for (MatSorter::const_iterator it = sorting_vector.begin(); it != sorting_vector.end(); ++it) { - if(it->first >= materials.size()) + if(size_t(it->first) >= materials.size()) { con << "Bad index: " << it->first << " out of " << materials.size() << endl; @@ -747,7 +747,7 @@ command_result prospector (color_ostream &con, vector & parameters) for (PlantList::const_iterator it = plants->begin(); it != plants->end(); it++) { const df::plant & plant = *(*it); - if (plant.pos.z != z) + if (uint32_t(plant.pos.z) != z) continue; df::coord2d loc(plant.pos.x, plant.pos.y); loc = loc % 16; diff --git a/plugins/remotefortressreader/CMakeLists.txt b/plugins/remotefortressreader/CMakeLists.txt index ad61c94ce..f47f03c5f 100644 --- a/plugins/remotefortressreader/CMakeLists.txt +++ b/plugins/remotefortressreader/CMakeLists.txt @@ -15,15 +15,16 @@ SET(PROJECT_HDRS ) #proto files to include. SET(PROJECT_PROTO - ../../proto/RemoteFortressReader - ../../proto/AdventureControl - ../../proto/ItemdefInstrument + ${CMAKE_CURRENT_SOURCE_DIR}/../proto/RemoteFortressReader.pb.cc + ${CMAKE_CURRENT_SOURCE_DIR}/../proto/AdventureControl.pb.cc + ${CMAKE_CURRENT_SOURCE_DIR}/../proto/ItemdefInstrument.pb.cc ) SET_SOURCE_FILES_PROPERTIES( ${PROJECT_HDRS} PROPERTIES HEADER_FILE_ONLY TRUE) +SET_SOURCE_FILES_PROPERTIES( ${PROJECT_PROTO} PROPERTIES GENERATED TRUE) # mash them together (headers are marked as headers and nothing will try to compile them) -LIST(APPEND PROJECT_SRCS ${PROJECT_HDRS}) +LIST(APPEND PROJECT_SRCS ${PROJECT_HDRS};${PROJECT_PROTO}) #linux IF(UNIX) @@ -41,4 +42,4 @@ ELSE(UNIX) ) ENDIF(UNIX) # this makes sure all the stuff is put in proper places and linked to dfhack -DFHACK_PLUGIN(RemoteFortressReader ${PROJECT_SRCS} LINK_LIBRARIES ${PROJECT_LIBS} PROTOBUFS ${PROJECT_PROTO} ) +DFHACK_PLUGIN(RemoteFortressReader ${PROJECT_SRCS} LINK_LIBRARIES protobuf-lite ${PROJECT_LIBS} COMPILE_FLAGS_MSVC "/FI\"Export.h\"" COMPILE_FLAGS_GCC "-include Export.h -Wno-misleading-indentation" ) diff --git a/plugins/remotefortressreader/building_reader.cpp b/plugins/remotefortressreader/building_reader.cpp index 12598ea81..5a0dd5c96 100644 --- a/plugins/remotefortressreader/building_reader.cpp +++ b/plugins/remotefortressreader/building_reader.cpp @@ -104,7 +104,7 @@ DFHack::command_result GetBuildingDefList(DFHack::color_ostream &stream, const D if (st == furnace_type::Custom) { - for (int i = 0; i < df::global::world->raws.buildings.furnaces.size(); i++) + for (size_t i = 0; i < df::global::world->raws.buildings.furnaces.size(); i++) { auto cust = df::global::world->raws.buildings.furnaces[i]; @@ -152,7 +152,7 @@ DFHack::command_result GetBuildingDefList(DFHack::color_ostream &stream, const D if (st == workshop_type::Custom) { - for (int i = 0; i < df::global::world->raws.buildings.workshops.size(); i++) + for (size_t i = 0; i < df::global::world->raws.buildings.workshops.size(); i++) { auto cust = df::global::world->raws.buildings.workshops[i]; diff --git a/plugins/remotefortressreader/item_reader.cpp b/plugins/remotefortressreader/item_reader.cpp index c0170f2c4..3884d269f 100644 --- a/plugins/remotefortressreader/item_reader.cpp +++ b/plugins/remotefortressreader/item_reader.cpp @@ -61,7 +61,7 @@ void CopyImage(const df::art_image * image, ArtImage * netImage) auto id = netImage->mutable_id(); id->set_mat_type(image->id); id->set_mat_index(image->subid); - for (int i = 0; i < image->elements.size(); i++) + for (size_t i = 0; i < image->elements.size(); i++) { auto element = image->elements[i]; auto netElement = netImage->add_elements(); @@ -121,7 +121,7 @@ void CopyImage(const df::art_image * image, ArtImage * netImage) break; } } - for (int i = 0; i < image->properties.size(); i++) + for (size_t i = 0; i < image->properties.size(); i++) { auto dfProperty = image->properties[i]; auto netProperty = netImage->add_properties(); @@ -236,7 +236,7 @@ void CopyItem(RemoteFortressReader::Item * NetItem, df::item * DfItem) } else { - for (int i = 0; i < world->art_image_chunks.size(); i++) + for (size_t i = 0; i < world->art_image_chunks.size(); i++) { if (world->art_image_chunks[i]->id == statue->image.id) chunk = world->art_image_chunks[i]; @@ -433,7 +433,7 @@ void CopyItem(RemoteFortressReader::Item * NetItem, df::item * DfItem) VIRTUAL_CAST_VAR(constructed_item, df::item_constructed, DfItem); if (constructed_item) { - for (int i = 0; i < constructed_item->improvements.size(); i++) + for (size_t i = 0; i < constructed_item->improvements.size(); i++) { auto improvement = constructed_item->improvements[i]; @@ -528,7 +528,7 @@ DFHack::command_result GetItemList(DFHack::color_ostream &stream, const DFHack:: case df::enums::item_type::GEM: case df::enums::item_type::SMALLGEM: { - for (int i = 0; i < world->raws.descriptors.shapes.size(); i++) + for (size_t i = 0; i < world->raws.descriptors.shapes.size(); i++) { auto shape = world->raws.descriptors.shapes[i]; if (shape->gems_use.whole == 0) @@ -542,7 +542,7 @@ DFHack::command_result GetItemList(DFHack::color_ostream &stream, const DFHack:: } case df::enums::item_type::PLANT: { - for (int i = 0; i < world->raws.plants.all.size(); i++) + for (size_t i = 0; i < world->raws.plants.all.size(); i++) { auto plantRaw = world->raws.plants.all[i]; mat_def = out->add_material_list(); @@ -574,7 +574,10 @@ DFHack::command_result GetItemList(DFHack::color_ostream &stream, const DFHack:: mat_def->mutable_mat_pair()->set_mat_type((int)it); mat_def->mutable_mat_pair()->set_mat_index(1); mat_def->set_id("THREAD/WEB"); + break; } + default: + break; } int subtypes = Items::getSubtypeCount(it); if (subtypes >= 0) @@ -606,7 +609,7 @@ DFHack::command_result GetItemList(DFHack::color_ostream &stream, const DFHack:: send_instrument->set_size(instrument->size); send_instrument->set_value(instrument->value); send_instrument->set_material_size(instrument->material_size); - for (int j = 0; j < instrument->pieces.size(); j++) + for (size_t j = 0; j < instrument->pieces.size(); j++) { auto piece = send_instrument->add_pieces(); piece->set_type(instrument->pieces[j]->type); @@ -616,39 +619,39 @@ DFHack::command_result GetItemList(DFHack::color_ostream &stream, const DFHack:: } send_instrument->set_pitch_range_min(instrument->pitch_range_min); send_instrument->set_pitch_range_max(instrument->pitch_range_max); - for (int j = 0; j < instrument->sound_production.size(); j++) + for (size_t j = 0; j < instrument->sound_production.size(); j++) { send_instrument->add_sound_production((SoundProductionType)instrument->sound_production[j]); } - for (int j = 0; j < instrument->sound_production_parm1.size(); j++) + for (size_t j = 0; j < instrument->sound_production_parm1.size(); j++) { send_instrument->add_sound_production_parm1(*(instrument->sound_production_parm1[j])); } - for (int j = 0; j < instrument->sound_production_parm2.size(); j++) + for (size_t j = 0; j < instrument->sound_production_parm2.size(); j++) { send_instrument->add_sound_production_parm2(*(instrument->sound_production_parm2[j])); } - for (int j = 0; j < instrument->pitch_choice.size(); j++) + for (size_t j = 0; j < instrument->pitch_choice.size(); j++) { send_instrument->add_pitch_choice((PitchChoiceType)instrument->pitch_choice[j]); } - for (int j = 0; j < instrument->pitch_choice_parm1.size(); j++) + for (size_t j = 0; j < instrument->pitch_choice_parm1.size(); j++) { send_instrument->add_pitch_choice_parm1(*(instrument->pitch_choice_parm1[j])); } - for (int j = 0; j < instrument->pitch_choice_parm2.size(); j++) + for (size_t j = 0; j < instrument->pitch_choice_parm2.size(); j++) { send_instrument->add_pitch_choice_parm2(*(instrument->pitch_choice_parm2[j])); } - for (int j = 0; j < instrument->tuning.size(); j++) + for (size_t j = 0; j < instrument->tuning.size(); j++) { send_instrument->add_tuning((TuningType)instrument->tuning[j]); } - for (int j = 0; j < instrument->tuning_parm.size(); j++) + for (size_t j = 0; j < instrument->tuning_parm.size(); j++) { send_instrument->add_tuning_parm(*(instrument->tuning_parm[j])); } - for (int j = 0; j < instrument->registers.size(); j++) + for (size_t j = 0; j < instrument->registers.size(); j++) { auto reg = send_instrument->add_registers(); reg->set_pitch_range_min(instrument->registers[j]->pitch_range_min); diff --git a/plugins/remotefortressreader/proto/readme.txt b/plugins/remotefortressreader/proto/readme.txt deleted file mode 100644 index 8cd56aefd..000000000 --- a/plugins/remotefortressreader/proto/readme.txt +++ /dev/null @@ -1 +0,0 @@ -placeholder to fix protobufs in plugins/remotefortressreader/CMakeLists.txt diff --git a/plugins/remotefortressreader/remotefortressreader.cpp b/plugins/remotefortressreader/remotefortressreader.cpp index e1282d600..289652191 100644 --- a/plugins/remotefortressreader/remotefortressreader.cpp +++ b/plugins/remotefortressreader/remotefortressreader.cpp @@ -216,13 +216,13 @@ command_result dump_bp_mods(color_ostream &out, vector & parameters) output << "Race Index;Race;Caste;Bodypart Token;Bodypart Name;Tissue Layer;Modifier Type;Range\n"; - for (int creatureIndex = 0; creatureIndex < world->raws.creatures.all.size(); creatureIndex++) + for (size_t creatureIndex = 0; creatureIndex < world->raws.creatures.all.size(); creatureIndex++) { auto creatureRaw = world->raws.creatures.all[creatureIndex]; - for (int casteIndex = 0; casteIndex < creatureRaw->caste.size(); casteIndex++) + for (size_t casteIndex = 0; casteIndex < creatureRaw->caste.size(); casteIndex++) { df::caste_raw *casteRaw = creatureRaw->caste[casteIndex]; - for (int partIndex = 0; partIndex < casteRaw->bp_appearance.part_idx.size(); partIndex++) + for (size_t partIndex = 0; partIndex < casteRaw->bp_appearance.part_idx.size(); partIndex++) { output << creatureIndex << ";"; output << creatureRaw->creature_id << ";"; @@ -665,7 +665,7 @@ RemoteFortressReader::TiletypeVariant TranslateVariant(df::tiletype_variant vari static command_result CheckHashes(color_ostream &stream, const EmptyMessage *in) { clock_t start = clock(); - for (int i = 0; i < world->map.map_blocks.size(); i++) + for (size_t i = 0; i < world->map.map_blocks.size(); i++) { df::map_block * block = world->map.map_blocks[i]; fletcher16((uint8_t*)(block->tiletype), 16 * 16 * sizeof(df::enums::tiletype::tiletype)); @@ -737,7 +737,6 @@ bool IsBuildingChanged(DFCoord pos) for (int x = 0; x < 16; x++) for (int y = 0; y < 16; y++) { - DFCoord localPos = DFCoord(pos.x * 16 + x, pos.y * 16 + y, pos.z); auto bld = block->occupancy[x][y].bits.building; if (buildingHashes[pos] != bld) { @@ -766,13 +765,13 @@ bool IsspatterChanged(DFCoord pos) uint16_t hash = 0; - for (int i = 0; i < materials.size(); i++) + for (size_t i = 0; i < materials.size(); i++) { auto mat = materials[i]; hash ^= fletcher16((uint8_t*)mat, sizeof(df::block_square_event_material_spatterst)); } #if DF_VERSION_INT > 34011 - for (int i = 0; i < items.size(); i++) + for (size_t i = 0; i < items.size(); i++) { auto item = items[i]; hash ^= fletcher16((uint8_t*)item, sizeof(df::block_square_event_item_spatterst)); @@ -807,7 +806,7 @@ bool isItemChanged(int i) bool areItemsChanged(vector * items) { bool result = false; - for (int i = 0; i < items->size(); i++) + for (size_t i = 0; i < items->size(); i++) { if (isItemChanged(items->at(i))) result = true; @@ -863,7 +862,7 @@ static command_result GetMaterialList(color_ostream &stream, const EmptyMessage df::world_raws *raws = &world->raws; df::world_history *history = &world->history; MaterialInfo mat; - for (int i = 0; i < raws->inorganics.size(); i++) + for (size_t i = 0; i < raws->inorganics.size(); i++) { mat.decode(0, i); MaterialDefinition *mat_def = out->add_material_list(); @@ -871,7 +870,7 @@ static command_result GetMaterialList(color_ostream &stream, const EmptyMessage mat_def->mutable_mat_pair()->set_mat_index(i); mat_def->set_id(mat.getToken()); mat_def->set_name(mat.toString()); //find the name at cave temperature; - if (raws->inorganics[i]->material.state_color[GetState(&raws->inorganics[i]->material)] < raws->descriptors.colors.size()) + if (size_t(raws->inorganics[i]->material.state_color[GetState(&raws->inorganics[i]->material)]) < raws->descriptors.colors.size()) { ConvertDFColorDescriptor(raws->inorganics[i]->material.state_color[GetState(&raws->inorganics[i]->material)], mat_def->mutable_state_color()); } @@ -889,16 +888,16 @@ static command_result GetMaterialList(color_ostream &stream, const EmptyMessage mat_def->mutable_mat_pair()->set_mat_index(j); mat_def->set_id(mat.getToken()); mat_def->set_name(mat.toString()); //find the name at cave temperature; - if (raws->mat_table.builtin[i]->state_color[GetState(raws->mat_table.builtin[i])] < raws->descriptors.colors.size()) + if (size_t(raws->mat_table.builtin[i]->state_color[GetState(raws->mat_table.builtin[i])]) < raws->descriptors.colors.size()) { ConvertDFColorDescriptor(raws->mat_table.builtin[i]->state_color[GetState(raws->mat_table.builtin[i])], mat_def->mutable_state_color()); } } } - for (int i = 0; i < raws->creatures.all.size(); i++) + for (size_t i = 0; i < raws->creatures.all.size(); i++) { df::creature_raw * creature = raws->creatures.all[i]; - for (int j = 0; j < creature->material.size(); j++) + for (size_t j = 0; j < creature->material.size(); j++) { mat.decode(j + MaterialInfo::CREATURE_BASE, i); MaterialDefinition *mat_def = out->add_material_list(); @@ -906,13 +905,13 @@ static command_result GetMaterialList(color_ostream &stream, const EmptyMessage mat_def->mutable_mat_pair()->set_mat_index(i); mat_def->set_id(mat.getToken()); mat_def->set_name(mat.toString()); //find the name at cave temperature; - if (creature->material[j]->state_color[GetState(creature->material[j])] < raws->descriptors.colors.size()) + if (size_t(creature->material[j]->state_color[GetState(creature->material[j])]) < raws->descriptors.colors.size()) { ConvertDFColorDescriptor(creature->material[j]->state_color[GetState(creature->material[j])], mat_def->mutable_state_color()); } } } - //for (int i = 0; i < history->figures.size(); i++) + //for (size_t i = 0; i < history->figures.size(); i++) //{ // df::historical_figure * figure = history->figures[i]; // if (figure->race < 0) @@ -937,10 +936,10 @@ static command_result GetMaterialList(color_ostream &stream, const EmptyMessage // } // } //} - for (int i = 0; i < raws->plants.all.size(); i++) + for (size_t i = 0; i < raws->plants.all.size(); i++) { df::plant_raw * plant = raws->plants.all[i]; - for (int j = 0; j < plant->material.size(); j++) + for (size_t j = 0; j < plant->material.size(); j++) { mat.decode(j + 419, i); MaterialDefinition *mat_def = out->add_material_list(); @@ -948,7 +947,7 @@ static command_result GetMaterialList(color_ostream &stream, const EmptyMessage mat_def->mutable_mat_pair()->set_mat_index(i); mat_def->set_id(mat.getToken()); mat_def->set_name(mat.toString()); //find the name at cave temperature; - if (plant->material[j]->state_color[GetState(plant->material[j])] < raws->descriptors.colors.size()) + if (size_t(plant->material[j]->state_color[GetState(plant->material[j])]) < raws->descriptors.colors.size()) { ConvertDFColorDescriptor(plant->material[j]->state_color[GetState(plant->material[j])], mat_def->mutable_state_color()); } @@ -971,7 +970,7 @@ static command_result GetGrowthList(color_ostream &stream, const EmptyMessage *i return CR_OK;//'. - for (int i = 0; i < raws->plants.all.size(); i++) + for (size_t i = 0; i < raws->plants.all.size(); i++) { df::plant_raw * pp = raws->plants.all[i]; if (!pp) @@ -982,7 +981,7 @@ static command_result GetGrowthList(color_ostream &stream, const EmptyMessage *i basePlant->mutable_mat_pair()->set_mat_type(-1); basePlant->mutable_mat_pair()->set_mat_index(i); #if DF_VERSION_INT > 40001 - for (int g = 0; g < pp->growths.size(); g++) + for (size_t g = 0; g < pp->growths.size(); g++) { df::plant_growth* growth = pp->growths[g]; if (!growth) @@ -1024,7 +1023,7 @@ void CopyBlock(df::map_block * DfBlock, RemoteFortressReader::MapBlock * NetBloc #if DF_VERSION_INT > 34011 df::map_block_column * column = df::global::world->map.column_index[(DfBlock->map_pos.x / 48) * 3][(DfBlock->map_pos.y / 48) * 3]; - for (int i = 0; i < column->plants.size(); i++) + for (size_t i = 0; i < column->plants.size(); i++) { df::plant* plant = column->plants[i]; if (plant->tree_info == NULL) @@ -1180,7 +1179,7 @@ void CopyDesignation(df::map_block * DfBlock, RemoteFortressReader::MapBlock * N } } #if DF_VERSION_INT > 34011 - for (int i = 0; i < world->jobs.postings.size(); i++) + for (size_t i = 0; i < world->jobs.postings.size(); i++) { auto job = world->jobs.postings[i]->job; if (job == nullptr) @@ -1261,7 +1260,7 @@ void CopyProjectiles(RemoteFortressReader::MapBlock * NetBlock) NetItem->set_velocity_z(diff.z / max_dist); } } - for (int i = 0; i < world->vehicles.active.size(); i++) + for (size_t i = 0; i < world->vehicles.active.size(); i++) { bool isProj = false; auto vehicle = world->vehicles.active[i]; @@ -1297,7 +1296,7 @@ void CopyProjectiles(RemoteFortressReader::MapBlock * NetBlock) void CopyBuildings(DFCoord min, DFCoord max, RemoteFortressReader::MapBlock * NetBlock, MapExtras::MapCache * MC) { - for (int i = 0; i < df::global::world->buildings.all.size(); i++) + for (size_t i = 0; i < df::global::world->buildings.all.size(); i++) { df::building * bld = df::global::world->buildings.all[i]; if (bld->x1 >= max.x || bld->y1 >= max.y || bld->x2 < min.x || bld->y2 < min.y) @@ -1328,7 +1327,7 @@ void CopyBuildings(DFCoord min, DFCoord max, RemoteFortressReader::MapBlock * Ne df::building_actual* actualBuilding = virtual_cast(bld); if (actualBuilding) { - for (int i = 0; i < actualBuilding->contained_items.size(); i++) + for (size_t i = 0; i < actualBuilding->contained_items.size(); i++) { auto buildingItem = out_bld->add_items(); buildingItem->set_mode(actualBuilding->contained_items[i]->use_mode); @@ -1357,7 +1356,7 @@ void Copyspatters(df::map_block * DfBlock, RemoteFortressReader::MapBlock * NetB for (int xx = 0; xx < 16; xx++) { auto send_pile = NetBlock->add_spatterpile(); - for (int i = 0; i < materials.size(); i++) + for (size_t i = 0; i < materials.size(); i++) { auto mat = materials[i]; if (mat->amount[xx][yy] == 0) @@ -1368,7 +1367,7 @@ void Copyspatters(df::map_block * DfBlock, RemoteFortressReader::MapBlock * NetB send_spat->set_amount(mat->amount[xx][yy]); } #if DF_VERSION_INT > 34011 - for (int i = 0; i < items.size(); i++) + for (size_t i = 0; i < items.size(); i++) { auto item = items[i]; if (item->amount[xx][yy] == 0) @@ -1381,7 +1380,7 @@ void Copyspatters(df::map_block * DfBlock, RemoteFortressReader::MapBlock * NetB send_item->set_mat_index(item->item_subtype); } int grassPercent = 0; - for (int i = 0; i < grasses.size(); i++) + for (size_t i = 0; i < grasses.size(); i++) { auto grass = grasses[i]; if (grass->amount[xx][yy] > grassPercent) @@ -1397,7 +1396,7 @@ void CopyItems(df::map_block * DfBlock, RemoteFortressReader::MapBlock * NetBloc NetBlock->set_map_x(DfBlock->map_pos.x); NetBlock->set_map_y(DfBlock->map_pos.y); NetBlock->set_map_z(DfBlock->map_pos.z); - for (int i = 0; i < DfBlock->items.size(); i++) + for (size_t i = 0; i < DfBlock->items.size(); i++) { int id = DfBlock->items[i]; @@ -1442,7 +1441,7 @@ void CopyFlows(df::map_block * DfBlock, RemoteFortressReader::MapBlock * NetBloc NetBlock->set_map_x(DfBlock->map_pos.x); NetBlock->set_map_y(DfBlock->map_pos.y); NetBlock->set_map_z(DfBlock->map_pos.z); - for (int i = 0; i < DfBlock->flows.size(); i++) + for (size_t i = 0; i < DfBlock->flows.size(); i++) { CopyFlow(DfBlock->flows[i], NetBlock->add_flows(), i); } @@ -1517,7 +1516,7 @@ static command_result GetBlockList(color_ostream &stream, const BlockRequest *in bool spatterChanged = IsspatterChanged(pos); bool itemsChanged = block->items.size() > 0; bool flows = block->flows.size() > 0; - RemoteFortressReader::MapBlock *net_block; + RemoteFortressReader::MapBlock *net_block = nullptr; if (tileChanged || desChanged || spatterChanged || firstBlock || itemsChanged || flows) net_block = out->add_map_blocks(); if (tileChanged) @@ -1569,7 +1568,7 @@ static command_result GetBlockList(color_ostream &stream, const BlockRequest *in } } - for (int i = 0; i < world->engravings.size(); i++) + for (size_t i = 0; i < world->engravings.size(); i++) { auto engraving = world->engravings[i]; if (engraving->pos.x < (min_x * 16) || engraving->pos.x >(max_x * 16)) @@ -1589,7 +1588,7 @@ static command_result GetBlockList(color_ostream &stream, const BlockRequest *in } else { - for (int i = 0; i < world->art_image_chunks.size(); i++) + for (size_t i = 0; i < world->art_image_chunks.size(); i++) { if (world->art_image_chunks[i]->id == engraving->art_id) chunk = world->art_image_chunks[i]; @@ -1616,7 +1615,7 @@ static command_result GetBlockList(color_ostream &stream, const BlockRequest *in netEngraving->set_southwest(engraving->flags.bits.southwest); netEngraving->set_southeast(engraving->flags.bits.southeast); } - for (int i = 0; i < world->ocean_waves.size(); i++) + for (size_t i = 0; i < world->ocean_waves.size(); i++) { auto wave = world->ocean_waves[i]; auto netWave = out->add_ocean_waves(); @@ -1666,7 +1665,7 @@ static command_result GetPlantList(color_ostream &stream, const BlockRequest *in if (xx < 0 || yy < 0 || xx >= world->map.x_count_block || yy >= world->map.y_count_block) continue; df::map_block_column * column = world->map.column_index[xx][yy]; - for (int i = 0; i < column->plants.size(); i++) + for (size_t i = 0; i < column->plants.size(); i++) { df::plant * plant = column->plants[i]; if (!plant->tree_info) @@ -1706,7 +1705,7 @@ static command_result GetUnitList(color_ostream &stream, const EmptyMessage *in, static command_result GetUnitListInside(color_ostream &stream, const BlockRequest *in, UnitList *out) { auto world = df::global::world; - for (int i = 0; i < world->units.all.size(); i++) + for (size_t i = 0; i < world->units.all.size(); i++) { df::unit * unit = world->units.all[i]; auto send_unit = out->add_creature_list(); @@ -1743,11 +1742,11 @@ static command_result GetUnitListInside(color_ostream &stream, const BlockReques } auto appearance = send_unit->mutable_appearance(); - for (int j = 0; j < unit->appearance.body_modifiers.size(); j++) + for (size_t j = 0; j < unit->appearance.body_modifiers.size(); j++) appearance->add_body_modifiers(unit->appearance.body_modifiers[j]); - for (int j = 0; j < unit->appearance.bp_modifiers.size(); j++) + for (size_t j = 0; j < unit->appearance.bp_modifiers.size(); j++) appearance->add_bp_modifiers(unit->appearance.bp_modifiers[j]); - for (int j = 0; j < unit->appearance.colors.size(); j++) + for (size_t j = 0; j < unit->appearance.colors.size(); j++) appearance->add_colors(unit->appearance.colors[j]); appearance->set_size_modifier(unit->appearance.size_modifier); @@ -1757,7 +1756,7 @@ static command_result GetUnitListInside(color_ostream &stream, const BlockReques if (Units::getNoblePositions(&pvec, unit)) { - for (int j = 0; j < pvec.size(); j++) + for (size_t j = 0; j < pvec.size(); j++) { auto noble_positon = pvec[j]; send_unit->add_noble_positions(noble_positon.position->code); @@ -1769,7 +1768,7 @@ static command_result GetUnitListInside(color_ostream &stream, const BlockReques auto creatureRaw = world->raws.creatures.all[unit->race]; auto casteRaw = creatureRaw->caste[unit->caste]; - for (int j = 0; j < unit->appearance.tissue_style_type.size(); j++) + for (size_t j = 0; j < unit->appearance.tissue_style_type.size(); j++) { auto type = unit->appearance.tissue_style_type[j]; if (type < 0) @@ -1802,7 +1801,7 @@ static command_result GetUnitListInside(color_ostream &stream, const BlockReques } } - for (int j = 0; j < unit->inventory.size(); j++) + for (size_t j = 0; j < unit->inventory.size(); j++) { auto inventory_item = unit->inventory[j]; auto sent_item = send_unit->add_inventory(); @@ -1912,7 +1911,7 @@ DFCoord GetMapCenter() } #if DF_VERSION_INT > 34011 else - for (int i = 0; i < df::global::world->armies.all.size(); i++) + for (size_t i = 0; i < df::global::world->armies.all.size(); i++) { df::army * thisArmy = df::global::world->armies.all[i]; if (thisArmy->flags.is_set(df::enums::army_flags::player)) @@ -2056,7 +2055,7 @@ static void SetRegionTile(RegionTile * out, df::region_map_entry * e1) out->set_water_elevation(99); int topLayer = 0; - for (int i = 0; i < geoBiome->layers.size(); i++) + for (size_t i = 0; i < geoBiome->layers.size(); i++) { auto layer = geoBiome->layers[i]; if (layer->top_height == 0) @@ -2076,7 +2075,7 @@ static void SetRegionTile(RegionTile * out, df::region_map_entry * e1) surfaceMat->set_mat_index(topLayer); surfaceMat->set_mat_type(0); - for (int i = 0; i < region->population.size(); i++) + for (size_t i = 0; i < region->population.size(); i++) { auto pop = region->population[i]; if (pop->type == world_population_type::Grass) @@ -2286,7 +2285,7 @@ static void CopyLocalMap(df::world_data * worldData, df::world_region_details* w df::world_region_details * east = NULL; df::world_region_details * southEast = NULL; - for (int i = 0; i < worldData->region_details.size(); i++) + for (size_t i = 0; i < worldData->region_details.size(); i++) { auto region = worldData->region_details[i]; if (region->pos.x == pos_x + 1 && region->pos.y == pos_y + 1) @@ -2373,7 +2372,7 @@ static void CopyLocalMap(df::world_data * worldData, df::world_region_details* w df::world_region_details * east = NULL; df::world_region_details * southEast = NULL; - for (int i = 0; i < worldData->region_details.size(); i++) + for (size_t i = 0; i < worldData->region_details.size(); i++) { auto region = worldData->region_details[i]; if (region->pos.x == pos_x + 1 && region->pos.y == pos_y + 1) @@ -2482,7 +2481,7 @@ static void CopyLocalMap(df::world_data * worldData, df::world_region_details* w auto regionMap = worldData->region_map[pos_x][pos_y]; - for (int i = 0; i < worldData->sites.size(); i++) + for (size_t i = 0; i < worldData->sites.size(); i++) { df::world_site* site = worldData->sites[i]; if (!site) @@ -2510,7 +2509,7 @@ static void CopyLocalMap(df::world_data * worldData, df::world_region_details* w if (region_x < 0 || region_y < 0 || region_x >= 16 || region_y >= 16) continue; - for (int j = 0; j < realization->building_map[site_x][site_y].buildings.size(); j++) + for (size_t j = 0; j < realization->building_map[site_x][site_y].buildings.size(); j++) { auto in_building = realization->building_map[site_x][site_y].buildings[j]; auto out_building = outputTiles[region_x][region_y]->add_buildings(); @@ -2565,7 +2564,7 @@ static command_result GetRegionMaps(color_ostream &stream, const EmptyMessage *i return CR_FAILURE; } df::world_data * data = df::global::world->world_data; - for (int i = 0; i < data->region_details.size(); i++) + for (size_t i = 0; i < data->region_details.size(); i++) { df::world_region_details * region = data->region_details[i]; if (!region) @@ -2583,7 +2582,7 @@ static command_result GetRegionMapsNew(color_ostream &stream, const EmptyMessage return CR_FAILURE; } df::world_data * data = df::global::world->world_data; - for (int i = 0; i < data->region_details.size(); i++) + for (size_t i = 0; i < data->region_details.size(); i++) { df::world_region_details * region = data->region_details[i]; if (!region) @@ -2641,7 +2640,7 @@ static command_result GetPartialCreatureRaws(color_ostream &stream, const ListRe send_creature->set_adultsize(orig_creature->adultsize); - for (int j = 0; j < orig_creature->caste.size(); j++) + for (size_t j = 0; j < orig_creature->caste.size(); j++) { auto orig_caste = orig_creature->caste[j]; if (!orig_caste) @@ -2663,7 +2662,7 @@ static command_result GetPartialCreatureRaws(color_ostream &stream, const ListRe send_caste->add_child_name(orig_caste->child_name[1]); send_caste->set_gender(orig_caste->gender); - for (int partIndex = 0; partIndex < orig_caste->body_info.body_parts.size(); partIndex++) + for (size_t partIndex = 0; partIndex < orig_caste->body_info.body_parts.size(); partIndex++) { auto orig_part = orig_caste->body_info.body_parts[partIndex]; if (!orig_part) @@ -2679,7 +2678,7 @@ static command_result GetPartialCreatureRaws(color_ostream &stream, const ListRe send_part->add_flags(orig_part->flags.is_set((body_part_raw_flags::body_part_raw_flags)partFlagIndex)); } - for (int layerIndex = 0; layerIndex < orig_part->layers.size(); layerIndex++) + for (size_t layerIndex = 0; layerIndex < orig_part->layers.size(); layerIndex++) { auto orig_layer = orig_part->layers[layerIndex]; if (!orig_layer) @@ -2689,7 +2688,7 @@ static command_result GetPartialCreatureRaws(color_ostream &stream, const ListRe send_layer->set_layer_name(orig_layer->layer_name); send_layer->set_tissue_id(orig_layer->tissue_id); send_layer->set_layer_depth(orig_layer->layer_depth); - for (int layerModIndex = 0; layerModIndex < orig_layer->bp_modifiers.size(); layerModIndex++) + for (size_t layerModIndex = 0; layerModIndex < orig_layer->bp_modifiers.size(); layerModIndex++) { send_layer->add_bp_modifiers(orig_layer->bp_modifiers[layerModIndex]); } @@ -2700,7 +2699,7 @@ static command_result GetPartialCreatureRaws(color_ostream &stream, const ListRe send_caste->set_total_relsize(orig_caste->body_info.total_relsize); - for (int k = 0; k < orig_caste->bp_appearance.modifiers.size(); k++) + for (size_t k = 0; k < orig_caste->bp_appearance.modifiers.size(); k++) { auto send_mod = send_caste->add_modifiers(); auto orig_mod = orig_caste->bp_appearance.modifiers[k]; @@ -2720,13 +2719,13 @@ static command_result GetPartialCreatureRaws(color_ostream &stream, const ListRe } } - for (int k = 0; k < orig_caste->bp_appearance.modifier_idx.size(); k++) + for (size_t k = 0; k < orig_caste->bp_appearance.modifier_idx.size(); k++) { send_caste->add_modifier_idx(orig_caste->bp_appearance.modifier_idx[k]); send_caste->add_part_idx(orig_caste->bp_appearance.part_idx[k]); send_caste->add_layer_idx(orig_caste->bp_appearance.layer_idx[k]); } - for (int k = 0; k < orig_caste->body_appearance_modifiers.size(); k++) + for (size_t k = 0; k < orig_caste->body_appearance_modifiers.size(); k++) { auto send_mod = send_caste->add_body_appearance_modifiers(); auto orig_mod = orig_caste->body_appearance_modifiers[k]; @@ -2746,17 +2745,17 @@ static command_result GetPartialCreatureRaws(color_ostream &stream, const ListRe send_mod->set_mod_max(orig_mod->ranges[6]); } } - for (int k = 0; k < orig_caste->color_modifiers.size(); k++) + for (size_t k = 0; k < orig_caste->color_modifiers.size(); k++) { auto send_mod = send_caste->add_color_modifiers(); auto orig_mod = orig_caste->color_modifiers[k]; - for (int l = 0; l < orig_mod->pattern_index.size(); l++) + for (size_t l = 0; l < orig_mod->pattern_index.size(); l++) { auto orig_pattern = world->raws.descriptors.patterns[orig_mod->pattern_index[l]]; auto send_pattern = send_mod->add_patterns(); - for (int m = 0; m < orig_pattern->colors.size(); m++) + for (size_t m = 0; m < orig_pattern->colors.size(); m++) { auto send_color = send_pattern->add_colors(); auto orig_color = world->raws.descriptors.colors[orig_pattern->colors[m]]; @@ -2769,7 +2768,7 @@ static command_result GetPartialCreatureRaws(color_ostream &stream, const ListRe send_pattern->set_pattern((PatternType)orig_pattern->pattern); } - for (int l = 0; l < orig_mod->body_part_id.size(); l++) + for (size_t l = 0; l < orig_mod->body_part_id.size(); l++) { send_mod->add_body_part_id(orig_mod->body_part_id[l]); send_mod->add_tissue_layer_id(orig_mod->tissue_layer_id[l]); @@ -2783,7 +2782,7 @@ static command_result GetPartialCreatureRaws(color_ostream &stream, const ListRe send_caste->set_adult_size(orig_caste->misc.adult_size); } - for (int j = 0; j < orig_creature->tissue.size(); j++) + for (size_t j = 0; j < orig_creature->tissue.size(); j++) { auto orig_tissue = orig_creature->tissue[j]; auto send_tissue = send_creature->add_tissues(); @@ -2812,17 +2811,7 @@ static command_result GetPartialPlantRaws(color_ostream &stream, const ListReque df::world * world = df::global::world; - int list_start = 0; - int list_end = world->raws.plants.all.size(); - - if (in != nullptr) - { - list_start = in->list_start(); - if (in->list_end() < list_end) - list_end = in->list_end(); - } - - for (int i = 0; i < world->raws.plants.all.size(); i++) + for (size_t i = 0; i < world->raws.plants.all.size(); i++) { df::plant_raw* plant_local = world->raws.plants.all[i]; PlantRaw* plant_remote = out->add_plant_raws(); @@ -2835,14 +2824,14 @@ static command_result GetPartialPlantRaws(color_ostream &stream, const ListReque else plant_remote->set_tile(plant_local->tiles.tree_tile); #if DF_VERSION_INT > 34011 - for (int j = 0; j < plant_local->growths.size(); j++) + for (size_t j = 0; j < plant_local->growths.size(); j++) { df::plant_growth* growth_local = plant_local->growths[j]; TreeGrowth * growth_remote = plant_remote->add_growths(); growth_remote->set_index(j); growth_remote->set_id(growth_local->id); growth_remote->set_name(growth_local->name); - for (int k = 0; k < growth_local->prints.size(); k++) + for (size_t k = 0; k < growth_local->prints.size(); k++) { df::plant_growth_print* print_local = growth_local->prints[k]; GrowthPrint* print_remote = growth_remote->add_prints(); @@ -3022,7 +3011,7 @@ static command_result GetReports(color_ostream & stream, const EmptyMessage * in break; } } - for (int i = lastSentIndex + 1; i < world->status.reports.size(); i++) + for (size_t i = lastSentIndex + 1; i < world->status.reports.size(); i++) { auto local_rep = world->status.reports[i]; if (!local_rep) @@ -3050,7 +3039,7 @@ static command_result GetLanguage(color_ostream & stream, const EmptyMessage * i if (!world) return CR_FAILURE; - for (int i = 0; i < world->raws.descriptors.shapes.size(); i++) + for (size_t i = 0; i < world->raws.descriptors.shapes.size(); i++) { auto shape = world->raws.descriptors.shapes[i]; auto netShape = out->add_shapes(); diff --git a/plugins/rendermax/renderer_light.cpp b/plugins/rendermax/renderer_light.cpp index 199e174af..90c38a06a 100644 --- a/plugins/rendermax/renderer_light.cpp +++ b/plugins/rendermax/renderer_light.cpp @@ -104,7 +104,7 @@ rect2d getMapViewport() } return mkrect_wh(1,1,view_rb,view_height+1); } -lightingEngineViewscreen::lightingEngineViewscreen(renderer_light* target):lightingEngine(target),doDebug(false),threading(this) +lightingEngineViewscreen::lightingEngineViewscreen(renderer_light* target):lightingEngine(target),threading(this),doDebug(false) { reinit(); defaultSettings(); @@ -335,7 +335,6 @@ void lightingEngineViewscreen::fixAdvMode(int mode) int window_x=*df::global::window_x; int window_y=*df::global::window_y; int window_z=*df::global::window_z; - coord2d vpSize=rect_size(vp); //mode 0-> make dark non-visible parts if(mode==0) { @@ -392,7 +391,7 @@ rgbf getStandartColor(int colorId) int getPlantNumber(const std::string& id) { std::vector& vec=df::plant_raw::get_vector(); - for(int i=0;iid==id) return i; @@ -606,7 +605,7 @@ rgbf lightingEngineViewscreen::getSkyColor(float v) float pos=v*(dayColors.size()-1); int pre=floor(pos); pos-=pre; - if(pre==dayColors.size()-1) + if(pre==int(dayColors.size())-1) return dayColors[pre]; return dayColors[pre]*(1-pos)+dayColors[pre+1]*pos; } @@ -720,7 +719,7 @@ void lightingEngineViewscreen::doOcupancyAndLights() if(!block) continue; //flows - for(int i=0;iflows.size();i++) + for(size_t i=0;iflows.size();i++) { df::flow_info* f=block->flows[i]; if(f && f->density>0 && (f->type==df::flow_type::Dragonfire || f->type==df::flow_type::Fire)) @@ -750,7 +749,7 @@ void lightingEngineViewscreen::doOcupancyAndLights() } //blood and other goo - for(int i=0;iblock_events.size();i++) + for(size_t i=0;iblock_events.size();i++) { df::block_square_event* ev=block->block_events[i]; df::block_square_event_type ev_type=ev->getType(); @@ -790,7 +789,7 @@ void lightingEngineViewscreen::doOcupancyAndLights() //citizen only emit light, if defined //or other creatures if(matCitizen.isEmiting || creatureDefs.size()>0) - for (int i=0;iunits.active.size();++i) + for (size_t i=0;iunits.active.size();++i) { df::unit *u = df::global::world->units.active[i]; coord2d pos=worldToViewportCoord(coord2d(u->pos.x,u->pos.y),vp,window2d); @@ -939,14 +938,14 @@ matLightDef lua_parseMatDef(lua_State* L) matLightDef ret; lua_getfield(L,-1,"tr"); - if(ret.isTransparent=!lua_isnil(L,-1)) + if((ret.isTransparent=!lua_isnil(L,-1))) { ret.transparency=lua_parseLightCell(L); } lua_pop(L,1); lua_getfield(L,-1,"em"); - if(ret.isEmiting=!lua_isnil(L,-1)) + if((ret.isEmiting=!lua_isnil(L,-1))) { ret.emitColor=lua_parseLightCell(L); lua_pop(L,1); @@ -1248,7 +1247,7 @@ void lightingEngineViewscreen::loadSettings() /* * Threading stuff */ -lightThread::lightThread( lightThreadDispatch& dispatch ):dispatch(dispatch),isDone(false),myThread(0) +lightThread::lightThread( lightThreadDispatch& dispatch ):dispatch(dispatch),myThread(0),isDone(false) { } @@ -1310,7 +1309,7 @@ void lightThread::work() void lightThread::combine() { - for(int i=0;ilights),occlusion(parent->ocupancy),num_diffusion(parent->num_diffuse), - lightMap(parent->lightMap),writeCount(0),occlusionReady(false) +lightThreadDispatch::lightThreadDispatch( lightingEngineViewscreen* p ):parent(p),lights(parent->lights), + occlusionReady(false),occlusion(parent->ocupancy),num_diffusion(parent->num_diffuse), + lightMap(parent->lightMap),writeCount(0) { } void lightThreadDispatch::shutdown() { - for(int i=0;iisDone=true; } occlusionDone.notify_all();//if stuck signal that you are done with stuff. - for(int i=0;imyThread->join(); } @@ -1474,7 +1474,7 @@ void lightThreadDispatch::start(int count) void lightThreadDispatch::waitForWrites() { tthread::lock_guard guard(writeLock); - while(threadPool.size()>writeCount)//missed it somehow already. + while(threadPool.size()>size_t(writeCount))//missed it somehow already. { writesDone.wait(writeLock); //if not, wait a bit } diff --git a/plugins/rendermax/renderer_light.hpp b/plugins/rendermax/renderer_light.hpp index ec1561c76..b0fb8c5d5 100644 --- a/plugins/rendermax/renderer_light.hpp +++ b/plugins/rendermax/renderer_light.hpp @@ -181,11 +181,11 @@ struct matLightDef bool flicker; rgbf emitColor; int radius; - matLightDef():isTransparent(false),isEmiting(false),transparency(0,0,0),emitColor(0,0,0),radius(0){} - matLightDef(rgbf transparency,rgbf emit,int rad):isTransparent(true),isEmiting(true), - transparency(transparency),emitColor(emit),radius(rad){} - matLightDef(rgbf emit,int rad):isTransparent(false),isEmiting(true),emitColor(emit),radius(rad),transparency(0,0,0){} - matLightDef(rgbf transparency):isTransparent(true),isEmiting(false),transparency(transparency){} + matLightDef():isTransparent(false),transparency(0,0,0),isEmiting(false),emitColor(0,0,0),radius(0){} + matLightDef(rgbf transparency,rgbf emit,int rad):isTransparent(true),transparency(transparency), + isEmiting(true),emitColor(emit),radius(rad){} + matLightDef(rgbf emit,int rad):isTransparent(false),transparency(0,0,0),isEmiting(true),emitColor(emit),radius(rad){} + matLightDef(rgbf transparency):isTransparent(true),transparency(transparency),isEmiting(false){} lightSource makeSource(float size=1) const { if(size>0.999 && size<1.001) diff --git a/plugins/reveal.cpp b/plugins/reveal.cpp index c2479bedc..6908225ea 100644 --- a/plugins/reveal.cpp +++ b/plugins/reveal.cpp @@ -418,6 +418,8 @@ command_result revflood(color_ostream &out, vector & params) case tiletype_shape::STAIR_DOWN: tt = ctt; break; + default: + break; } bool below = 0; @@ -433,6 +435,7 @@ command_result revflood(color_ostream &out, vector & params) unhide = 0; break; // air/free space + case tiletype_shape::NONE: case tiletype_shape::EMPTY: case tiletype_shape::RAMP_TOP: case tiletype_shape::STAIR_UPDOWN: diff --git a/plugins/ruby/ruby.cpp b/plugins/ruby/ruby.cpp index 15f61ac35..7133dbed8 100644 --- a/plugins/ruby/ruby.cpp +++ b/plugins/ruby/ruby.cpp @@ -236,6 +236,7 @@ DFhackCExport command_result plugin_onstatechange ( color_ostream &out, state_ch std::string cmd = "DFHack.onstatechange "; switch (e) { #define SCASE(s) case SC_ ## s : cmd += ":" # s ; break + case SC_UNKNOWN : return CR_OK; SCASE(WORLD_LOADED); SCASE(WORLD_UNLOADED); SCASE(MAP_LOADED); diff --git a/plugins/search.cpp b/plugins/search.cpp index 1e919572b..aca97d4a9 100644 --- a/plugins/search.cpp +++ b/plugins/search.cpp @@ -957,14 +957,14 @@ class animal_trainer_search : public animal_trainer_search_base public: void render() const { - Screen::paintTile(Screen::Pen(186, 8, 0), 14, 2); - Screen::paintTile(Screen::Pen(186, 8, 0), gps->dimx - 14, 2); - Screen::paintTile(Screen::Pen(201, 8, 0), 14, 1); - Screen::paintTile(Screen::Pen(187, 8, 0), gps->dimx - 14, 1); + Screen::paintTile(Screen::Pen('\xBA', 8, 0), 14, 2); + Screen::paintTile(Screen::Pen('\xBA', 8, 0), gps->dimx - 14, 2); + Screen::paintTile(Screen::Pen('\xC9', 8, 0), 14, 1); + Screen::paintTile(Screen::Pen('\xBB', 8, 0), gps->dimx - 14, 1); for (int x = 15; x <= gps->dimx - 15; ++x) { - Screen::paintTile(Screen::Pen(205, 8, 0), x, 1); - Screen::paintTile(Screen::Pen(0, 0, 0), x, 2); + Screen::paintTile(Screen::Pen('\xCD', 8, 0), x, 1); + Screen::paintTile(Screen::Pen('\x00', 0, 0), x, 2); } print_search_option(16, 2); } @@ -1459,12 +1459,12 @@ public: // About to make an assignment, so restore original list (it will be changed by the game) int32_t *cursor = get_viewscreen_cursor(); auto list = get_primary_list(); - if (*cursor >= list->size()) + if (size_t(*cursor) >= list->size()) return false; df::unit *selected_unit = list->at(*cursor); clear_search(); - for (*cursor = 0; *cursor < list->size(); (*cursor)++) + for (*cursor = 0; size_t(*cursor) < list->size(); (*cursor)++) { if (list->at(*cursor) == selected_unit) break; diff --git a/plugins/showmood.cpp b/plugins/showmood.cpp index d2ae73f08..9e3fa7ff7 100644 --- a/plugins/showmood.cpp +++ b/plugins/showmood.cpp @@ -98,6 +98,8 @@ command_result df_showmood (color_ostream &out, vector & parameters) case mood_type::Possessed: out.print("possessed"); break; + default: + break; } out.print(" with intent to "); switch (job->job_type) @@ -275,7 +277,7 @@ command_result df_showmood (color_ostream &out, vector & parameters) int count_got = 0; for (size_t j = 0; j < job->items.size(); j++) { - if(job->items[j]->job_item_idx == i) + if(job->items[j]->job_item_idx == int32_t(i)) { if (item->item_type == item_type::BAR || item->item_type == item_type::CLOTH) count_got += job->items[j]->item->getTotalDimension(); diff --git a/plugins/stockpiles/CMakeLists.txt b/plugins/stockpiles/CMakeLists.txt index 713c3d6d1..3f4dcb28e 100644 --- a/plugins/stockpiles/CMakeLists.txt +++ b/plugins/stockpiles/CMakeLists.txt @@ -14,31 +14,10 @@ SET(PROJECT_SRCS ) SET(PROJECT_PROTOS -${CMAKE_CURRENT_SOURCE_DIR}/proto/stockpiles.proto + stockpiles ) -#Create new lists of what sources and headers protoc will output after we invoke it -STRING(REPLACE ".proto" ".pb.cc;" PROJECT_PROTO_SRCS ${PROJECT_PROTOS}) -STRING(REPLACE ".proto" ".pb.h;" PROJECT_PROTO_HDRS ${PROJECT_PROTOS}) - -SET_SOURCE_FILES_PROPERTIES( ${PROJECT_PROTO_HDRS} PROPERTIES GENERATED TRUE) -SET_SOURCE_FILES_PROPERTIES( ${PROJECT_PROTO_SRCS} PROPERTIES GENERATED TRUE) - -LIST(APPEND PROJECT_HDRS ${PROJECT_PROTO_HDRS}) -LIST(APPEND PROJECT_SRCS ${PROJECT_PROTO_SRCS}) - SET_SOURCE_FILES_PROPERTIES( ${PROJECT_HDRS} PROPERTIES HEADER_FILE_ONLY TRUE) LIST(APPEND PROJECT_SRCS ${PROJECT_HDRS}) -#Generate sources from our proto files and store them in the source tree -ADD_CUSTOM_COMMAND( -OUTPUT ${PROJECT_PROTO_SRCS} ${PROJECT_PROTO_HDRS} -COMMAND protoc-bin -I=${CMAKE_CURRENT_SOURCE_DIR}/proto/ --cpp_out=${CMAKE_CURRENT_SOURCE_DIR}/proto/ ${PROJECT_PROTOS} -DEPENDS protoc-bin ${PROJECT_PROTOS} -) - -IF(WIN32) - DFHACK_PLUGIN(stockpiles ${PROJECT_SRCS} ${PROJECT_HDRS} LINK_LIBRARIES protobuf-lite lua) -ELSE() - DFHACK_PLUGIN(stockpiles ${PROJECT_SRCS} ${PROJECT_HDRS} LINK_LIBRARIES protobuf-lite lua) -ENDIF() +DFHACK_PLUGIN(stockpiles ${PROJECT_SRCS} ${PROJECT_HDRS} PROTOBUFS ${PROJECT_PROTOS} LINK_LIBRARIES protobuf-lite lua) diff --git a/plugins/stockpiles/OrganicMatLookup.cpp b/plugins/stockpiles/OrganicMatLookup.cpp index ca9670a96..4f1076cd1 100644 --- a/plugins/stockpiles/OrganicMatLookup.cpp +++ b/plugins/stockpiles/OrganicMatLookup.cpp @@ -71,8 +71,8 @@ void OrganicMatLookup::food_build_map ( std::ostream &out ) df::world_raws &raws = world->raws; df::special_mat_table table = raws.mat_table; using df::enums::organic_mat_category::organic_mat_category; - df::enum_traits traits; - for ( int32_t mat_category = traits.first_item_value; mat_category <= traits.last_item_value; ++mat_category ) + using traits = df::enum_traits; + for ( int32_t mat_category = traits::first_item_value; mat_category <= traits::last_item_value; ++mat_category ) { for ( size_t i = 0; i < table.organic_indexes[mat_category].size(); ++i ) { diff --git a/plugins/stockpiles/StockpileSerializer.cpp b/plugins/stockpiles/StockpileSerializer.cpp index e9a8143a5..80e438701 100644 --- a/plugins/stockpiles/StockpileSerializer.cpp +++ b/plugins/stockpiles/StockpileSerializer.cpp @@ -214,7 +214,7 @@ void StockpileSerializer::unserialize_list_organic_mat ( FuncReadImport get_valu std::string token = get_value ( i ); int16_t idx = OrganicMatLookup::food_idx_by_token ( debug(), cat, token ); debug() << " organic_material " << idx << " is " << token << endl; - if ( idx >= pile_list->size() ) + if ( size_t(idx) >= pile_list->size() ) { debug() << "error organic mat index too large! idx[" << idx << "] max_size[" << pile_list->size() << "]" << endl; continue; @@ -227,14 +227,14 @@ void StockpileSerializer::unserialize_list_organic_mat ( FuncReadImport get_valu void StockpileSerializer::serialize_list_item_type ( FuncItemAllowed is_allowed, FuncWriteExport add_value, const std::vector &list ) { using df::enums::item_type::item_type; - df::enum_traits type_traits; - debug() << "item_type size = " << list.size() << " size limit = " << type_traits.last_item_value << " typecasted: " << ( size_t ) type_traits.last_item_value << endl; - for ( size_t i = 0; i <= ( size_t ) type_traits.last_item_value; ++i ) + using type_traits = df::enum_traits; + debug() << "item_type size = " << list.size() << " size limit = " << type_traits::last_item_value << " typecasted: " << ( size_t ) type_traits::last_item_value << endl; + for ( size_t i = 0; i <= ( size_t ) type_traits::last_item_value; ++i ) { if ( list.at ( i ) ) { const item_type type = ( item_type ) ( ( df::enum_traits::base_type ) i ); - std::string r_type ( type_traits.key_table[i+1] ); + std::string r_type ( type_traits::key_table[i+1] ); if ( !is_allowed ( type ) ) continue; add_value ( r_type ); debug() << "item_type key_table[" << i+1 << "] type[" << ( int16_t ) type << "] is " << r_type <clear(); pile_list->resize ( 112, '\0' ); // TODO remove hardcoded list size value - for ( int i = 0; i < pile_list->size(); ++i ) + for ( size_t i = 0; i < pile_list->size(); ++i ) { pile_list->at ( i ) = is_allowed ( ( item_type::item_type ) i ) ? 0 : 1; } @@ -261,7 +261,7 @@ void StockpileSerializer::unserialize_list_item_type ( FuncItemAllowed is_allowe const item_type type = ( item_type ) idx; if ( !is_allowed ( type ) ) continue; debug() << " item_type " << idx << " is " << token << endl; - if ( idx >= pile_list->size() ) + if ( size_t(idx) >= pile_list->size() ) { debug() << "error item_type index too large! idx[" << idx << "] max_size[" << pile_list->size() << "]" << endl; continue; @@ -296,7 +296,7 @@ void StockpileSerializer::unserialize_list_material ( FuncMaterialAllowed is_all std::set idx_set; pile_list->clear(); pile_list->resize ( world->raws.inorganics.size(), 0 ); - for ( int i = 0; i < pile_list->size(); ++i ) + for ( size_t i = 0; i < pile_list->size(); ++i ) { MaterialInfo mi ( 0, i ); pile_list->at ( i ) = is_allowed ( mi ) ? 0 : 1; @@ -308,7 +308,7 @@ void StockpileSerializer::unserialize_list_material ( FuncMaterialAllowed is_all mi.find ( token ); if ( !is_allowed ( mi ) ) continue; debug() << " material " << mi.index << " is " << token << endl; - if ( mi.index >= pile_list->size() ) + if ( size_t(mi.index) >= pile_list->size() ) { debug() << "error material index too large! idx[" << mi.index << "] max_size[" << pile_list->size() << "]" << endl; continue; @@ -321,12 +321,12 @@ void StockpileSerializer::unserialize_list_material ( FuncMaterialAllowed is_all void StockpileSerializer::serialize_list_quality ( FuncWriteExport add_value, const bool ( &quality_list ) [7] ) { using df::enums::item_quality::item_quality; - df::enum_traits quality_traits; + using quality_traits = df::enum_traits; for ( size_t i = 0; i < 7; ++i ) { if ( quality_list[i] ) { - const std::string f_type ( quality_traits.key_table[i] ); + const std::string f_type ( quality_traits::key_table[i] ); add_value ( f_type ); debug() << " quality: " << i << " is " << f_type <= pile_list->size() ) + if ( size_t(ii.subtype) >= pile_list->size() ) { debug() << "error itemdef index too large! idx[" << ii.subtype << "] max_size[" << pile_list->size() << "]" << endl; continue; @@ -528,7 +528,7 @@ void StockpileSerializer::read_animals() std::string id = mBuffer.animals().enabled ( i ); int idx = find_creature ( id ); debug() << id << " " << idx << endl; - if ( idx < 0 || idx >= mPile->settings.animals.enabled.size() ) + if ( idx < 0 || size_t(idx) >= mPile->settings.animals.enabled.size() ) { debug() << "WARNING: animal index invalid: " << idx << endl; continue; @@ -756,12 +756,12 @@ void StockpileSerializer::write_food() food->set_prepared_meals ( mPile->settings.food.prepared_meals ); using df::enums::organic_mat_category::organic_mat_category; - df::enum_traits traits; - for ( int32_t mat_category = traits.first_item_value; mat_category ; + for ( int32_t mat_category = traits::first_item_value; mat_category traits; + using traits = df::enum_traits; if ( mBuffer.has_food() ) { mPile->settings.flags.bits.food = 1; @@ -784,7 +784,7 @@ void StockpileSerializer::read_food() debug() << " prepared_meals: " << mPile->settings.food.prepared_meals << endl; - for ( int32_t mat_category = traits.first_item_value; mat_category type_traits; + using type_traits = df::enum_traits; for ( size_t i = 0; i < mPile->settings.furniture.type.size(); ++i ) { if ( mPile->settings.furniture.type.at ( i ) ) { - std::string f_type ( type_traits.key_table[i] ); + std::string f_type ( type_traits::key_table[i] ); furniture->add_type ( f_type ); debug() << "furniture_type " << i << " is " << f_type <::base_type idx = linear_index ( debug(), type_traits, type ); debug() << " type " << idx << " is " << type << endl; - if ( idx < 0 || idx >= mPile->settings.furniture.type.size() ) + if ( idx < 0 || size_t(idx) >= mPile->settings.furniture.type.size() ) { debug() << "WARNING: furniture type index invalid " << type << ", idx=" << idx << endl; continue; @@ -1048,7 +1048,7 @@ void StockpileSerializer::refuse_read_helper ( std::function= pile_list->size() ) + if ( idx < 0 || !refuse_creature_is_allowed ( creature ) || size_t(idx) >= pile_list->size() ) { debug() << "WARNING invalid refuse creature " << creature_id << ", idx=" << idx << endl; continue; @@ -1519,7 +1519,7 @@ void StockpileSerializer::read_gems() const std::string token = gems.rough_other_mats ( i ); MaterialInfo mi; mi.find ( token ); - if ( !mi.isValid() || mi.type >= builtin_size ) + if ( !mi.isValid() || size_t(mi.type) >= builtin_size ) { debug() << "WARNING: invalid gem mat " << token << ". idx=" << mi.type << endl; continue; @@ -1536,7 +1536,7 @@ void StockpileSerializer::read_gems() const std::string token = gems.cut_other_mats ( i ); MaterialInfo mi; mi.find ( token ); - if ( !mi.isValid() || mi.type >= builtin_size ) + if ( !mi.isValid() || size_t(mi.type) >= builtin_size ) { debug() << "WARNING: invalid gem mat " << token << ". idx=" << mi.type << endl; continue; diff --git a/plugins/stockpiles/StockpileUtils.h b/plugins/stockpiles/StockpileUtils.h index 4cb5669df..65672128e 100644 --- a/plugins/stockpiles/StockpileUtils.h +++ b/plugins/stockpiles/StockpileUtils.h @@ -21,7 +21,7 @@ /** * Retrieve creature raw from index */ -static df::creature_raw* find_creature ( int32_t idx ) +static inline df::creature_raw* find_creature ( int32_t idx ) { return df::global::world->raws.creatures.all[idx]; } @@ -30,7 +30,7 @@ static df::creature_raw* find_creature ( int32_t idx ) * Retrieve creature index from id string * @return -1 if not found */ -static int16_t find_creature ( const std::string &creature_id ) +static inline int16_t find_creature ( const std::string &creature_id ) { return linear_index ( df::global::world->raws.creatures.all, &df::creature_raw::creature_id, creature_id ); } @@ -38,7 +38,7 @@ static int16_t find_creature ( const std::string &creature_id ) /** * Retrieve plant raw from index */ -static df::plant_raw* find_plant ( size_t idx ) +static inline df::plant_raw* find_plant ( size_t idx ) { return df::global::world->raws.plants.all[idx]; } @@ -47,7 +47,7 @@ static df::plant_raw* find_plant ( size_t idx ) * Retrieve plant index from id string * @return -1 if not found */ -static size_t find_plant ( const std::string &plant_id ) +static inline size_t find_plant ( const std::string &plant_id ) { return linear_index ( df::global::world->raws.plants.all, &df::plant_raw::id, plant_id ); } @@ -60,7 +60,7 @@ struct less_than_no_case: public std::binary_function< char,char,bool > } }; -static bool CompareNoCase(const std::string &a, const std::string &b) +static inline bool CompareNoCase(const std::string &a, const std::string &b) { return std::lexicographical_compare( a.begin(),a.end(), b.begin(),b.end(), less_than_no_case() ); } @@ -70,7 +70,7 @@ static bool CompareNoCase(const std::string &a, const std::string &b) * Checks if the parameter has the dfstock extension. * Doesn't check if the file exists or not. */ -static bool is_dfstockfile ( const std::string& filename ) +static inline bool is_dfstockfile ( const std::string& filename ) { return filename.rfind ( ".dfstock" ) != std::string::npos; } diff --git a/plugins/stockpiles/proto/tmp/.gitignore b/plugins/stockpiles/proto/tmp/.gitignore new file mode 100644 index 000000000..75feca5b1 --- /dev/null +++ b/plugins/stockpiles/proto/tmp/.gitignore @@ -0,0 +1 @@ +*.pb.* diff --git a/plugins/stockpiles/stockpiles.cpp b/plugins/stockpiles/stockpiles.cpp index ab9d9c8f7..d24a20a7a 100644 --- a/plugins/stockpiles/stockpiles.cpp +++ b/plugins/stockpiles/stockpiles.cpp @@ -504,12 +504,6 @@ static std::vector clean_dfstock_list ( const std::string &path ) return files; } -static bool isEnabled( lua_State *L ) -{ - Lua::Push(L, is_enabled); - return 1; -} - static int stockpiles_list_settings ( lua_State *L ) { auto path = luaL_checkstring ( L, 1 ); diff --git a/plugins/stocks.cpp b/plugins/stocks.cpp index a5b84672d..154a58dc3 100644 --- a/plugins/stocks.cpp +++ b/plugins/stocks.cpp @@ -42,17 +42,6 @@ DFhackCExport command_result plugin_shutdown ( color_ostream &out ) #define MAX_NAME 30 #define SIDEBAR_WIDTH 30 -static bool show_debugging = false; - -static void debug(const string &msg) -{ - if (!show_debugging) - return; - - color_ostream_proxy out(Core::getInstance().getConsole()); - out << "DEBUG (stocks): " << msg << endl; -} - /* * Utility diff --git a/plugins/stonesense b/plugins/stonesense index 0430344c7..9bc7acc11 160000 --- a/plugins/stonesense +++ b/plugins/stonesense @@ -1 +1 @@ -Subproject commit 0430344c7bd8621b1af45bf27a8b6335dd89013e +Subproject commit 9bc7acc114e25c7399f4b85c95d544fe7e7c3d8e diff --git a/plugins/strangemood.cpp b/plugins/strangemood.cpp index 7d967b006..9a7f7f5fb 100644 --- a/plugins/strangemood.cpp +++ b/plugins/strangemood.cpp @@ -106,6 +106,8 @@ df::job_skill getMoodSkill (df::unit *unit) if (skill->rating == level) skills.push_back(skill->id); break; + default: + break; } } if (!skills.size() && civ) @@ -175,7 +177,7 @@ void generateName(df::language_name &output, int language, int mode, const df::l int32_t word; df::enum_field part; output.first_name.clear(); selectWord(table1, word, part, 2); - if (word >= 0 && word < world->raws.language.words.size()) + if (word >= 0 && size_t(word) < world->raws.language.words.size()) output.first_name = *world->raws.language.translations[language]->words[word]; } if (mode != 10) @@ -616,6 +618,8 @@ command_result df_strangemood (color_ostream &out, vector & parameters) for (int j = 0; j < 15; j++) tickets.push_back(i); break; + default: + break; } } if (!tickets.size()) @@ -765,6 +769,8 @@ command_result df_strangemood (color_ostream &out, vector & parameters) case job_skill::MECHANICS: job->job_type = job_type::StrangeMoodMechanics; break; + default: + break; } } // Check which types of glass are available - we'll need this information later @@ -1111,6 +1117,8 @@ command_result df_strangemood (color_ostream &out, vector & parameters) } item->quantity = base_item_count; break; + default: + break; } } @@ -1157,8 +1165,10 @@ command_result df_strangemood (color_ostream &out, vector & parameters) case job_skill::GLASSMAKER: avoid_glass = 1; break; + default: + break; } - for (size_t i = 0; i < extra_items; i++) + for (int i = 0; i < extra_items; i++) { if ((job->job_type == job_type::StrangeMoodBrooding) && (rng.df_trandom(2))) { diff --git a/plugins/tiletypes.cpp b/plugins/tiletypes.cpp index 76da1df3e..36bde1ac7 100644 --- a/plugins/tiletypes.cpp +++ b/plugins/tiletypes.cpp @@ -78,7 +78,7 @@ DFhackCExport command_result plugin_shutdown ( color_ostream &out ) void help( color_ostream & out, std::vector &commands, int start, int end) { - std::string option = commands.size() > start ? commands[start] : ""; + std::string option = commands.size() > size_t(start) ? commands[start] : ""; if (option.empty()) { out << "Commands:" << std::endl @@ -812,7 +812,7 @@ command_result executePaintJob(color_ostream &out) */ // Remove direction from directionless tiles DFHack::TileDirection direction = tileDirection(source); - if (!(material == tiletype_material::RIVER || shape == tiletype_shape::BROOK_BED || special == tiletype_special::TRACK || shape == tiletype_shape::WALL && (material == tiletype_material::CONSTRUCTION || special == tiletype_special::SMOOTH))) + if (!(material == tiletype_material::RIVER || shape == tiletype_shape::BROOK_BED || special == tiletype_special::TRACK || (shape == tiletype_shape::WALL && (material == tiletype_material::CONSTRUCTION || special == tiletype_special::SMOOTH)))) { direction.whole = 0; } @@ -894,7 +894,7 @@ command_result executePaintJob(color_ostream &out) command_result processCommand(color_ostream &out, std::vector &commands, int start, int end, bool & endLoop, bool hasConsole = false) { - if (commands.size() == start) + if (commands.size() == size_t(start)) { return executePaintJob(out); } diff --git a/plugins/tweak/tweak.cpp b/plugins/tweak/tweak.cpp index 6b5b1f687..37e606b1f 100644 --- a/plugins/tweak/tweak.cpp +++ b/plugins/tweak/tweak.cpp @@ -133,8 +133,8 @@ using namespace DFHack::Gui; class tweak_onupdate_hookst { public: typedef void(*T_callback)(void); - tweak_onupdate_hookst(std::string name_, T_callback cb) - :name(name_), callback(cb), enabled(false) {} +tweak_onupdate_hookst(std::string name_, T_callback cb) + :enabled(false), name(name_), callback(cb) {} bool enabled; std::string name; T_callback callback; diff --git a/plugins/tweak/tweaks/block-labors.h b/plugins/tweak/tweaks/block-labors.h index 47d30e530..d90c97506 100644 --- a/plugins/tweak/tweaks/block-labors.h +++ b/plugins/tweak/tweaks/block-labors.h @@ -56,7 +56,7 @@ struct block_labors_hook : df::viewscreen_dwarfmodest { df::unit *unit = Gui::getAnyUnit(this); for (int y = 5, i = (*ui_look_cursor/13)*13; - y <= 17 && i < unit_labors_sidemenu.size(); + y <= 17 && size_t(i) < unit_labors_sidemenu.size(); ++y, ++i) { df::unit_labor labor = unit_labors_sidemenu[i]; diff --git a/plugins/tweak/tweaks/cage-butcher.h b/plugins/tweak/tweaks/cage-butcher.h index 917d41e57..61a989d50 100644 --- a/plugins/tweak/tweaks/cage-butcher.h +++ b/plugins/tweak/tweaks/cage-butcher.h @@ -50,7 +50,7 @@ struct cage_butcher_hook : df::viewscreen_dwarfmodest { auto dims = Gui::getDwarfmodeViewDims(); for (int y = 4, i = (*ui_building_item_cursor/11)*11; - y <= 14 && i < units.size(); + y <= 14 && size_t(i) < units.size(); ++y, ++i) { df::unit *unit = vector_get(units, i); diff --git a/plugins/tweak/tweaks/craft-age-wear.h b/plugins/tweak/tweaks/craft-age-wear.h index edc3e9a18..ca822ced6 100644 --- a/plugins/tweak/tweaks/craft-age-wear.h +++ b/plugins/tweak/tweaks/craft-age-wear.h @@ -3,7 +3,7 @@ struct craft_age_wear_hook : df::item_crafted { DEFINE_VMETHOD_INTERPOSE(bool, ageItem, (int amount)) { - int orig_age = age; + uint32_t orig_age = age; age += amount; if (age > 200000000) age = 200000000; @@ -24,7 +24,7 @@ struct craft_age_wear_hook : df::item_crafted { wear = 1; else return false; - wear = ((orig_age % wear) + (age - orig_age)) / wear; + wear = ((orig_age % wear) + int32_t(age - orig_age)) / wear; if (wear > 0) return incWearTimer(wear); else diff --git a/plugins/tweak/tweaks/max-wheelbarrow.h b/plugins/tweak/tweaks/max-wheelbarrow.h index 37f292d6b..4df02abd2 100644 --- a/plugins/tweak/tweaks/max-wheelbarrow.h +++ b/plugins/tweak/tweaks/max-wheelbarrow.h @@ -45,7 +45,6 @@ struct max_wheelbarrow_hook : df::viewscreen_dwarfmodest { bool handled = false; if (stockpile) { - auto dims = Gui::getDwarfmodeViewDims(); handled = true; if (!in_wheelbarrow_entry && input->count(df::interface_key::BUILDJOB_STOCKPILE_WHEELBARROW)) diff --git a/plugins/tweak/tweaks/pausing-fps-counter.h b/plugins/tweak/tweaks/pausing-fps-counter.h index ee76aab15..d80fb2974 100644 --- a/plugins/tweak/tweaks/pausing-fps-counter.h +++ b/plugins/tweak/tweaks/pausing-fps-counter.h @@ -47,7 +47,7 @@ struct dwarfmode_pausing_fps_counter_hook : df::viewscreen_dwarfmodest { if (prev_clock == 0) { // init - for (int i = 0; i < history_length; i++) + for (uint32_t i = 0; i < history_length; i++) history[i] = 0.0; } @@ -91,7 +91,7 @@ struct dwarfmode_pausing_fps_counter_hook : df::viewscreen_dwarfmodest { // average fps over a few seconds to stabilize the counter. double fps_sum = 0.0; int fps_count = 0; - for (int i = 0; i < history_length; i++) + for (uint32_t i = 0; i < history_length; i++) { if (history[i] > 0.0) { diff --git a/plugins/tweak/tweaks/tradereq-pet-gender.h b/plugins/tweak/tweaks/tradereq-pet-gender.h index df03008b8..ca786bef2 100644 --- a/plugins/tweak/tweaks/tradereq-pet-gender.h +++ b/plugins/tweak/tweaks/tradereq-pet-gender.h @@ -18,7 +18,7 @@ struct pet_gender_hook : df::viewscreen_topicmeeting_takerequestsst { df::historical_entity* entity = df::historical_entity::find(meeting->civ_id); vector& races = entity->resources.animals.pet_races; vector& castes = entity->resources.animals.pet_castes; - for (int i = (good_idx / 17) * 17, y = 4; i < (good_idx / 17) * 17 + 17 && i < races.size(); i++, y++) { + for (int i = (good_idx / 17) * 17, y = 4; i < (good_idx / 17) * 17 + 17 && size_t(i) < races.size(); i++, y++) { int x = 30 + 1 + world->raws.creatures.all[races[i]]->caste[castes[i]]->caste_name[0].size(); bool male = (bool)world->raws.creatures.all[races[i]]->caste[castes[i]]->gender; OutputString((i == good_idx) ? COLOR_WHITE : COLOR_GREY, diff --git a/plugins/uicommon.h b/plugins/uicommon.h index 1261ed933..17fcd18bd 100644 --- a/plugins/uicommon.h +++ b/plugins/uicommon.h @@ -86,7 +86,7 @@ static void transform_(vector &src, vector &dst, Fn func) typedef int8_t UIColor; -static void OutputString(UIColor color, int &x, int &y, const std::string &text, +static inline void OutputString(UIColor color, int &x, int &y, const std::string &text, bool newline = false, int left_margin = 0, const UIColor bg_color = 0, bool map = false) { Screen::paintString(Screen::Pen(' ', color, bg_color), x, y, text, map); @@ -99,7 +99,7 @@ static void OutputString(UIColor color, int &x, int &y, const std::string &text, x += text.length(); } -static void OutputHotkeyString(int &x, int &y, const char *text, const char *hotkey, bool newline = false, +static inline void OutputHotkeyString(int &x, int &y, const char *text, const char *hotkey, bool newline = false, int left_margin = 0, int8_t text_color = COLOR_WHITE, int8_t hotkey_color = COLOR_LIGHTGREEN, bool map = false) { OutputString(hotkey_color, x, y, hotkey, false, 0, 0, map); @@ -108,14 +108,14 @@ static void OutputHotkeyString(int &x, int &y, const char *text, const char *hot OutputString(text_color, x, y, display, newline, left_margin, 0, map); } -static void OutputHotkeyString(int &x, int &y, const char *text, df::interface_key hotkey, +static inline void OutputHotkeyString(int &x, int &y, const char *text, df::interface_key hotkey, bool newline = false, int left_margin = 0, int8_t text_color = COLOR_WHITE, int8_t hotkey_color = COLOR_LIGHTGREEN, bool map = false) { OutputHotkeyString(x, y, text, DFHack::Screen::getKeyDisplay(hotkey).c_str(), newline, left_margin, text_color, hotkey_color, map); } -static void OutputLabelString(int &x, int &y, const char *text, const char *hotkey, const string &label, bool newline = false, +static inline void OutputLabelString(int &x, int &y, const char *text, const char *hotkey, const string &label, bool newline = false, int left_margin = 0, int8_t text_color = COLOR_WHITE, int8_t hotkey_color = COLOR_LIGHTGREEN, bool map = false) { OutputString(hotkey_color, x, y, hotkey, false, 0, 0, map); @@ -126,14 +126,14 @@ static void OutputLabelString(int &x, int &y, const char *text, const char *hotk OutputString(hotkey_color, x, y, label, newline, left_margin, 0, map); } -static void OutputLabelString(int &x, int &y, const char *text, df::interface_key hotkey, const string &label, bool newline = false, +static inline void OutputLabelString(int &x, int &y, const char *text, df::interface_key hotkey, const string &label, bool newline = false, int left_margin = 0, int8_t text_color = COLOR_WHITE, int8_t hotkey_color = COLOR_LIGHTGREEN, bool map = false) { OutputLabelString(x, y, text, DFHack::Screen::getKeyDisplay(hotkey).c_str(), label, newline, left_margin, text_color, hotkey_color, map); } -static void OutputFilterString(int &x, int &y, const char *text, const char *hotkey, bool state, bool newline = false, +static inline void OutputFilterString(int &x, int &y, const char *text, const char *hotkey, bool state, bool newline = false, int left_margin = 0, int8_t hotkey_color = COLOR_LIGHTGREEN, bool map = false) { OutputString(hotkey_color, x, y, hotkey, false, 0, 0, map); @@ -141,7 +141,7 @@ static void OutputFilterString(int &x, int &y, const char *text, const char *hot OutputString((state) ? COLOR_WHITE : COLOR_GREY, x, y, text, newline, left_margin, 0, map); } -static void OutputToggleString(int &x, int &y, const char *text, const char *hotkey, bool state, bool newline = true, +static inline void OutputToggleString(int &x, int &y, const char *text, const char *hotkey, bool state, bool newline = true, int left_margin = 0, int8_t color = COLOR_WHITE, int8_t hotkey_color = COLOR_LIGHTGREEN, bool map = false) { OutputHotkeyString(x, y, text, hotkey, false, 0, color, hotkey_color, map); @@ -152,7 +152,7 @@ static void OutputToggleString(int &x, int &y, const char *text, const char *hot OutputString(COLOR_GREY, x, y, "Off", newline, left_margin, 0, map); } -static void OutputToggleString(int &x, int &y, const char *text, df::interface_key hotkey, bool state, bool newline = true, +static inline void OutputToggleString(int &x, int &y, const char *text, df::interface_key hotkey, bool state, bool newline = true, int left_margin = 0, int8_t color = COLOR_WHITE, int8_t hotkey_color = COLOR_LIGHTGREEN, bool map = false) { OutputToggleString(x, y, text, DFHack::Screen::getKeyDisplay(hotkey).c_str(), state, newline, left_margin, color, hotkey_color, map); @@ -163,7 +163,7 @@ inline string int_to_string(const int n) return static_cast( &(ostringstream() << n) )->str(); } -static void set_to_limit(int &value, const int maximum, const int min = 0) +static inline void set_to_limit(int &value, const int maximum, const int min = 0) { if (value < min) value = min; @@ -193,9 +193,9 @@ inline void paint_text(const UIColor color, const int &x, const int &y, const st Screen::paintString(Screen::Pen(' ', color, background), x, y, text); } -static string pad_string(string text, const int size, const bool front = true, const bool trim = false) +static inline string pad_string(string text, const int size, const bool front = true, const bool trim = false) { - if (text.length() > size) + if (text.length() > size_t(size)) { if (trim && size > 10) { @@ -218,7 +218,7 @@ static string pad_string(string text, const int size, const bool front = true, c } } -static df::interface_key get_string_key(const std::set *input) +static inline df::interface_key get_string_key(const std::set *input) { for (auto it = input->begin(); it != input->end(); ++it) { @@ -228,7 +228,7 @@ static df::interface_key get_string_key(const std::set *input return df::interface_key::NONE; } -static char get_string_input(const std::set *input) +static inline char get_string_input(const std::set *input) { return DFHack::Screen::keyToChar(get_string_key(input)); } @@ -237,7 +237,7 @@ static char get_string_input(const std::set *input) * Utility Functions */ -static df::building_stockpilest *get_selected_stockpile() +static inline df::building_stockpilest *get_selected_stockpile() { if (!Gui::dwarfmode_hotkey(Core::getTopViewscreen()) || df::global::ui->main.mode != ui_sidebar_mode::QueryBuilding) @@ -248,7 +248,7 @@ static df::building_stockpilest *get_selected_stockpile() return virtual_cast(df::global::world->selected_building); } -static bool can_trade() +static inline bool can_trade() { if (df::global::ui->caravans.size() == 0) return false; @@ -266,19 +266,19 @@ static bool can_trade() return false; } -static bool is_metal_item(df::item *item) +static inline bool is_metal_item(df::item *item) { MaterialInfo mat(item); return (mat.getCraftClass() == craft_material_class::Metal); } -static bool is_set_to_melt(df::item* item) +static inline bool is_set_to_melt(df::item* item) { return item->flags.bits.melt; } // Copied from Kelly Martin's code -static bool can_melt(df::item* item) +static inline bool can_melt(df::item* item) { df::item_flags bad_flags; @@ -318,6 +318,8 @@ static bool can_melt(df::item* item) } } break; + default: + break; } } @@ -334,12 +336,13 @@ static bool can_melt(df::item* item) class StockpileInfo { public: - StockpileInfo() : id(0), sp(nullptr) + StockpileInfo() : id(0), sp(nullptr), x1(-30000), x2(-30000), y1(-30000), y2(-30000), z(-30000) { } - StockpileInfo(df::building_stockpilest *sp_) : sp(sp_) + StockpileInfo(df::building_stockpilest *sp_) : StockpileInfo() { + sp = sp_; readBuilding(); } diff --git a/plugins/workflow.cpp b/plugins/workflow.cpp index cc3ac8cd7..bfc4b639f 100644 --- a/plugins/workflow.cpp +++ b/plugins/workflow.cpp @@ -438,7 +438,7 @@ static int fix_job_postings (color_ostream *out, bool dry_run) for (size_t i = 0; i < world->jobs.postings.size(); ++i) { df::job_handler::T_postings *posting = world->jobs.postings[i]; - if (posting->job == job && i != job->posting_index && !posting->flags.bits.dead) + if (posting->job == job && i != size_t(job->posting_index) && !posting->flags.bits.dead) { ++count; if (out) diff --git a/plugins/zone.cpp b/plugins/zone.cpp index 608216092..1dfc10dc2 100644 --- a/plugins/zone.cpp +++ b/plugins/zone.cpp @@ -1874,7 +1874,7 @@ command_result df_zone (color_ostream &out, vector & parameters) if (p == "race") { race_filter_set = true; } - } catch (const exception& err) { + } catch (const exception&) { return CR_FAILURE; } } @@ -2073,7 +2073,7 @@ command_result df_zone (color_ostream &out, vector & parameters) if(target_count > 0) { vector units_for_cagezone; - size_t count = 0; + int count = 0; for(auto unit_it = world->units.all.begin(); unit_it != world->units.all.end(); ++unit_it) { df::unit *unit = *unit_it;