diff --git a/CMakeLists.txt b/CMakeLists.txt index 0cbb94b2cb..16380bc265 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,35 +10,45 @@ set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/) set(BSA bsa/bsa_archive.cpp bsa/bsa_file.cpp) set(BSA_HEADER bsa/bsa_archive.hpp bsa/bsa_file.hpp) +source_group(bsa FILES ${BSA} ${BSA_HEADER}) set(NIF nif/nif_file.cpp) set(NIF_HEADER nif/controlled.hpp nif/effect.hpp nif/nif_types.hpp nif/record.hpp nif/controller.hpp nif/extra.hpp nif/node.hpp nif/record_ptr.hpp nif/data.hpp nif/nif_file.hpp nif/property.hpp) +source_group(nif FILES ${NIF} ${NIF_HEADER}) set(NIFOGRE nifogre/ogre_nif_loader.cpp) set(NIFOGRE_HEADER nifogre/ogre_nif_loader.hpp) +source_group(nifogre FILES ${NIFOGRE} ${NIFOGRE_HEADER}) set(TOOLS tools/stringops.cpp tools/fileops.cpp) set(TOOLS_HEADER tools/fileops.hpp tools/slice_array.hpp tools/stringops.hpp) +source_group(tools FILES ${TOOLS} ${TOOLS_HEADER}) set(MANGLE_VFS mangle/vfs/servers/ogre_vfs.cpp) +source_group(mangle_vfs FILES ${MANGLE_VFS}) set(OGRE ogre/renderer.cpp) set(OGRE_HEADER ogre/renderer.hpp) +source_group(ogre FILES ${OGRE} ${OGRE_HEADER}) set(INPUT input/oismanager.cpp) set(INPUT_HEADER input/oismanager.hpp input/listener.hpp input/func_binder.hpp input/dispatch_map.hpp input/dispatcher.hpp input/poller.hpp) +source_group(input FILES ${INPUT} ${INPUT_HEADER}) set(GAME game/main.cpp game/engine.cpp) set(GAME_HEADER game/mwinput/inputmanager.hpp game/engine.hpp) +source_group(game FILES ${GAME} ${GAME_HEADER}) set(ESM_STORE esm_store/store.cpp esm_store/cell_store.cpp) set(ESM_STORE_HEADER esm_store/cell_store.hpp esm_store/reclists.hpp esm_store/store.hpp) +source_group(esm_store FILES ${ESM_STORE} ${ESM_STORE_HEADER}) set(GAMEREND game/mwrender/mwscene.cpp game/mwrender/cell.cpp game/mwrender/interior.cpp) set(GAMEREND_HEADER game/mwrender/cell.hpp game/mwrender/mwscene.hpp game/mwrender/interior.hpp game/mwrender/playerpos.hpp) +source_group(game_renderer FILES ${GAMEREND} ${GAMEREND_HEADER}) set(ESM_HEADER esm/defs.hpp esm/loadcell.hpp esm/loadfact.hpp esm/loadltex.hpp esm/loadskil.hpp @@ -50,6 +60,7 @@ set(ESM_HEADER esm/defs.hpp esm/loadcell.hpp esm/loadfact.hpp esm/loadltex.hpp esm/loadbody.hpp esm/loaddial.hpp esm/loadlevlist.hpp esm/loadrace.hpp esm/loadweap.hpp esm/loadbook.hpp esm/loaddoor.hpp esm/loadligh.hpp esm/loadregn.hpp esm/records.hpp esm/loadbsgn.hpp esm/loadench.hpp esm/loadlocks.hpp esm/loadscpt.hpp) +source_group(esm_header FILES ${ESM_HEADER}) # Platform specific if (WIN32) diff --git a/game/main.cpp b/game/main.cpp index 5d4eb9d031..0c778f18df 100644 --- a/game/main.cpp +++ b/game/main.cpp @@ -49,6 +49,8 @@ bool parseOptions (int argc, char**argv, OMW::Engine& engine) engine.setDataDir (variables["data"].as()); engine.setCell (variables["start"].as()); engine.addMaster (variables["master"].as()); + + return true; } int main(int argc, char**argv) diff --git a/game/mwinput/inputmanager.hpp b/game/mwinput/inputmanager.hpp index 8fa8c6ad20..5c2c9857ff 100644 --- a/game/mwinput/inputmanager.hpp +++ b/game/mwinput/inputmanager.hpp @@ -45,10 +45,14 @@ namespace MWInput // Write screenshot to file. void screenshot() { - // TODO: add persistent counting so we don't overwrite shots - // from previous runs. - char buf[50]; - snprintf(buf,50, "screenshot%d.png", shotCount++); + // Find the first unused filename. + // + char buf[50]; + do + { + snprintf(buf, 50, "screenshot%03d.png", shotCount++); + } while (boost::filesystem::exists(buf)); + ogre.screenshot(buf); } @@ -108,8 +112,6 @@ namespace MWInput float speed = 300 * evt.timeSinceLastFrame; float moveX = 0, moveY = 0, moveZ = 0; - using namespace std; - if(poller.isDown(A_MoveLeft)) moveX -= speed; if(poller.isDown(A_MoveRight)) moveX += speed; if(poller.isDown(A_MoveForward)) moveZ -= speed; @@ -120,10 +122,8 @@ namespace MWInput if(poller.isDown(A_MoveUp)) moveY += speed; if(poller.isDown(A_MoveDown)) moveY -= speed; - if(moveX == 0 && moveY == 0 && moveZ == 0) - return true; - - player.moveRel(moveX, moveY, moveZ); + if(moveX != 0 || moveY != 0 || moveZ != 0) + player.moveRel(moveX, moveY, moveZ); return true; }