open up cmd and navigate to the dfhack\build folder, run
+cmake:
+
+cd build
+cmake ..
+
+
This will generate MSVC solution and project files.
+
+
Note
+
You are working in the /build folder. Files added to
+projects will end up there! (and that's wrong). Any changes to the
+build system should be done by changing cmake configs and running
+cmake on them!
+
+
Also, you'll have to copy the Memory.xml file to the build output
+folders MSVC generates. For example from output/ to
+output/Release/
Unlike the rest of DFHack, The SHM needs special treatment when it
+comes to compilation. Because it shares the memory space with DF
+itself, it has to be built with the same tools as DF and use the same C
+and C++/STL libraries.
+
For DF 31.01 - 31.10 on Windows, use MSVC 2008. You can get the Express
+edition for free from Microsoft.
+
Windows dependencies can be determined by a tool like depends.exe
+(google it). Both the fake SDL.dll and DF have to use the same
+version of the C runtime (MSVCRT). The SHM can only be debugged using a
+RelWithDebInfo build!
+
Linux dependencies can be determined by setting the LD_DEBUG variable
+and running ./df:
+
+export LD_DEBUG=versions
+./df
+
+
Example of (a part of a) relevant output from a working SHM
+installation:
+
+24472: checking for version `GLIBC_2.0' in file /opt/lib32/lib/libpthread.so.0 [0] required by file ./dwarfort.exe [0]
+24472: checking for version `GCC_3.0' in file ./libs/libgcc_s.so.1 [0] required by file ./dwarfort.exe [0]
+24472: checking for version `GLIBC_2.0' in file ./libs/libgcc_s.so.1 [0] required by file ./dwarfort.exe [0]
+24472: checking for version `GLIBC_2.1' in file /opt/lib32/lib/libm.so.6 [0] required by file ./dwarfort.exe [0]
+24472: checking for version `GLIBC_2.0' in file /opt/lib32/lib/libm.so.6 [0] required by file ./dwarfort.exe [0]
+24472: checking for version `GLIBC_2.1.3' in file /opt/lib32/lib/libc.so.6 [0] required by file ./dwarfort.exe [0]
+24472: checking for version `GLIBC_2.3.4' in file /opt/lib32/lib/libc.so.6 [0] required by file ./dwarfort.exe [0]
+24472: checking for version `GLIBC_2.4' in file /opt/lib32/lib/libc.so.6 [0] required by file ./dwarfort.exe [0]
+24472: checking for version `GLIBC_2.0' in file /opt/lib32/lib/libc.so.6 [0] required by file ./dwarfort.exe [0]
+24472: checking for version `GLIBCXX_3.4.9' in file ./libs/libstdc++.so.6 [0] required by file ./dwarfort.exe [0]
+24472: checking for version `CXXABI_1.3' in file ./libs/libstdc++.so.6 [0] required by file ./dwarfort.exe [0]
+24472: checking for version `GLIBCXX_3.4' in file ./libs/libstdc++.so.6 [0] required by file ./dwarfort.exe [0]
+24472: checking for version `CXXABI_1.3' in file ./libs/libstdc++.so.6 [0] required by file ./libs/libdfconnect.so [0]
+24472: checking for version `GLIBCXX_3.4' in file ./libs/libstdc++.so.6 [0] required by file ./libs/libdfconnect.so [0]
+24472: checking for version `GLIBC_2.1.3' in file /opt/lib32/lib/libc.so.6 [0] required by file ./libs/libdfconnect.so [0]
+24472: checking for version `GLIBC_2.2' in file /opt/lib32/lib/libc.so.6 [0] required by file ./libs/libdfconnect.so [0]
+24472: checking for version `GLIBC_2.3.4' in file /opt/lib32/lib/libc.so.6 [0] required by file ./libs/libdfconnect.so [0]
+24472: checking for version `GLIBC_2.0' in file /opt/lib32/lib/libc.so.6 [0] required by file ./libs/libdfconnect.so [0]
+
+
libdfconnect is the SHM. Both are compiled against the same C++ library
+and share the same CXXABI version.
+
Precompiled SHM libraries are provided in binary releases.
Strings are one of the important C++ types and a great indicator that
+the SHM works. Tools like Dwarf Therapist depend on string support.
+Reading of strings can be checked by running any of the tools that deal
+with materials.
+
String writing is best tested with a fresh throw-away fort and
+dfrenamer.
+
Embark, give one dwarf a very long name using dfrenamer and save/exit.
+If DF crashes during the save sequence, your SHM is not compatible with
+DF and the throw-away fort is most probably lost.
+
+
+
+
diff --git a/README b/README
deleted file mode 100644
index 5a574482c..000000000
--- a/README
+++ /dev/null
@@ -1,179 +0,0 @@
-Introduction
-------------
-
-DFHack is a Dwarf Fortress memory access library and a set of basic tools using
-this library. The library is a work in progress, so things might change as more
-tools are written for it.
-
-It is an attempt to unite the various ways tools access DF memory and allow for
-easier development of new tools.
-
-Getting DFHack
-----------------
-The project is currently hosted on github, for both source and binaries:
- http://github.com/peterix/dfhack
-
-* Packages
-
-The library and tools are packaged for Archlinux and are available both in AUR
-and the arch-games repository.
-
-The package name is dfhack-git :)
-
-Compatibility
--------------
-
-DFHack works on Windows XP, Vista, 7 or any modern Linux distribution.
-
-Windows 2000 is currently *not supported* due to missing OS functionality.
-If you know how to easily suspend processes, you can fix it :)
-
-OSX is also not supported due to lack of developers with a Mac.
-
-Currently supported Dwarf Fortress versions:
-* Windows
- 0.31.01 - 0.31.03 legacy
- 0.31.04 - 0.31.10 SDL
-
-* Linux
- 0.31.04 - 0.31.10 native.
- There are missing offsets but Map tools should be OK. Linux support is a bit lacking, I'm working on it.
- All supported Windows versions running in wine can be used with DFHack.
-
-Using the library as a developer
---------------------------------
-
-The library is compilable under Linux with GCC and under Windows with MinGW32
-and MSVC compilers. It is using the cmake build system. See COMPILE for details.
-
-DFHack is using the zlib/libpng license. This makes it easy to link to it, use
-it in-source or add your own extensions. Contributing back to the dfhack
-repository is welcome and the right thing to do :)
-
-At the time of writing there's no API reference or documentation. The code does
-have a lot of comments though (and getting better all the time).
-
-Contributing to DFHack
-----------------------
-
-Several things should be kept in mind when contributing to DFHack.
-
-**** Coding style ****
-
-DFhack uses ANSI formatting and four spaces as indentation. Line endings are
-UNIX. The files use UTF-8 encoding. Code not following this won't make me happy,
-because I'll have to fix it. There's a good chance I'll make *you* fix it ;)
-
-**** How to get new code into DFHack ****
-
-You can send patches or make a clone of the github repo and ask me on the
-IRC channel to pull your code in. I'll review it and see if there are any
-problems. I'll fix them if they are minor.
-
-Fixes are higher in priority. If you want to work on something, but don't
-know what, check out http://github.com/peterix/dfhack/issues -- this is also
-a good place to dump new ideas and/or bugs that need fixing.
-
-**** Layout for tools ****
-
-Tools live in the tools/ folder. There, they are split into three categories:
-
-distributed: these tools get distributed with binary releases and are installed
- by doing 'make install' on linux. They are supposed to be stable
- and supported. Experimental, useless, buggy or untested stuff
- doesn't belong here.
-examples : examples are tools that aren't very useful, but show how DF
- and DFHack work. They should use only DFHack API functions.
- No actual hacking or 'magic offsets' are allowed.
-playground : This is a catch-all folder for tools that aren't ready to be
- examples or be distributed in binary releases. All new tools
- should start here. They can contain actual hacking, magic values
- and other nasty business.
-
-**** Modules - what are they? ****
-
-DFHack uses modules to partition sets of features into manageable chunks.
-A module can have both client and server side.
-
-Client side is the part that goes into the main library and is generally
-written in C++. It is exposed to the users of DFHack.
-
-Server side is used inside DF and serves to accelerate the client modules.
-This is written mostly in C style.
-
-There's a Core module that shouldn't be changed, because it defines
-the basic commands like reading and writing raw data. The client parts
-for the Core module are the various implementations of the Process
-interface.
-
-A good example of a module is Maps. Named the same in both client and
-server, it allows accelerating the reading of map blocks.
-
-Communication between modules happens by using shared memory. This is
-pretty fast, but needs quite a bit of care to not break.
-
-**** Dependencies ****
-
-Internal : either part of the codebase or statically linked.
-External : linked as dynamic loaded libraries (.dll, .so, etc.)
-
-If you want to add dependencies, think twice about it. All internal dependencies
-for core dfhack should be either public domain or require attribution at most.
-External dependencies for tools can be either that, or any Free Software
-licenses.
-
-** Current internal dependencies **
-
-tinyxml : used by core dfhack to read offset definitions from Memory.xml
-md5 : an implementation of the MD5 hash algorithm. Used for identifying
- DF binaries on Linux.
-argstream: Allows reading terminal application arguments. GPL!
-
-** Current external dependencies **
-
-wide-character ncurses : used for the veinlook tool on Linux.
-x11 libraries : used for sending key events on linux
-
-** Build-time dependencies **
-cmake: you need cmake to generate the build system and some configuration
- headers
-
-
-Tools
------
-All the DFHack tools are terminal programs. This might seem strange to Windows
-users, but these are meant mostly as examples for developers. Still, they can
-be useful and are cross-platform just like the library itself.
-
- - dfcleanmap : Cleans all the splatter that get scattered all over the map.
- Only exception is mud. It leaves mud alone.
- - dfexpbench : Just a simple benchmark of the data export speed.
- - dfliquids : A command prompt for liquid creation and manipulation
- (the Moses effect included!)
- Also allows painting obsidian walls directly.
- Note:
- Spawning and deleting liquids can F up pathing data and
- temperatures (creating heat traps). You've been warned.
- - dfposition : Prints the current DF window properties and cursor position.
- - dfprospector: Lists all available minerals on the map and how much
- of them there is.
- - dfreveal : Reveals the whole map, waits for input and hides it again.
- If you close the tool while it waits, the map remains revealed.
- - dfsuspend : Test of the process suspend/resume mechanism.
- - dfunstuck : Use if you prematurely close any of the tools and DF
- appears to be stuck.
- - dfvdig : Designates a whole vein for digging. Point the cursor at a vein
- and run this thing :)
-
- - dfflows : A tool for checking how many liquid tiles are actively checked
- for flows.
- - Your tool here: Write one ;)
-
-
-Memory offset definitions
--------------------------
-
-The file with memory offset definitions used by dfhack can be found in the
-output folder.
-
-~ EOF ~
diff --git a/README.rst b/README.rst
index d94bc3e75..b2a4541e1 100644
--- a/README.rst
+++ b/README.rst
@@ -45,11 +45,11 @@ Windows
fix it :)
0.31.01 - 0.31.03 legacy
-0.31.04 - 0.31.10 SDL
+0.31.04 - 0.31.11 SDL
Linux
=====
-0.31.04 - 0.31.10 native.
+0.31.04 - 0.31.11 native.
There are missing offsets but Map tools should be OK. Linux support is
a bit lacking, I'm working on it. All supported Windows versions
running in wine can be used with DFHack.
diff --git a/Readme.html b/Readme.html
new file mode 100644
index 000000000..f13661541
--- /dev/null
+++ b/Readme.html
@@ -0,0 +1,586 @@
+
+
+
+
+
+
+
+
+
+
+
DFHack is a Dwarf Fortress memory access library and a set of basic
+tools using this library. The library is a work in progress, so things
+might change as more tools are written for it.
+
It is an attempt to unite the various ways tools access DF memory and
+allow for easier development of new tools.
0.31.04 - 0.31.11 native.
+There are missing offsets but Map tools should be OK. Linux support is
+a bit lacking, I'm working on it. All supported Windows versions
+running in wine can be used with DFHack.
All the DFHack tools are terminal programs. This might seem strange to Windows
+users, but these are meant mostly as examples for developers. Still, they can
+be useful and are cross-platform just like the library itself.
The library is compilable under Linux with GCC and under Windows with
+MinGW32 and MSVC compilers. It is using the cmake build system. See
+COMPILE for details.
+
DFHack is using the zlib/libpng license. This makes it easy to link to
+it, use it in-source or add your own extensions. Contributing back to
+the dfhack repository is welcome and the right thing to do :)
+
At the time of writing there's no API reference or documentation. The
+code does have a lot of comments though (and getting better all the
+time).
DFhack uses ANSI formatting and four spaces as indentation. Line
+endings are UNIX. The files use UTF-8 encoding. Code not following this
+won't make me happy, because I'll have to fix it. There's a good chance
+I'll make you fix it ;)
You can send patches or make a clone of the github repo and ask me on
+the IRC channel to pull your code in. I'll review it and see if there
+are any problems. I'll fix them if they are minor.
+
Fixes are higher in priority. If you want to work on something, but
+don't know what, check out http://github.com/peterix/dfhack/issues --
+this is also a good place to dump new ideas and/or bugs that need
+fixing.
Tools live in the tools/ folder. There, they are split into three
+categories.
+
+
distributed
+
these tools get distributed with binary releases and are installed
+by doing 'make install' on linux. They are supposed to be stable
+and supported. Experimental, useless, buggy or untested stuff
+doesn't belong here.
+
examples
+
examples are tools that aren't very useful, but show how DF and
+DFHack work. They should use only DFHack API functions. No actual
+hacking or 'magic offsets' are allowed.
+
playground
+
This is a catch-all folder for tools that aren't ready to be
+examples or be distributed in binary releases. All new tools should
+start here. They can contain actual hacking, magic values and other
+nasty business.
DFHack uses modules to partition sets of features into manageable
+chunks. A module can have both client and server side.
+
Client side is the part that goes into the main library and is
+generally written in C++. It is exposed to the users of DFHack.
+
Server side is used inside DF and serves to accelerate the client
+modules. This is written mostly in C style.
+
There's a Core module that shouldn't be changed, because it defines the
+basic commands like reading and writing raw data. The client parts for
+the Core module are the various implementations of the Process
+interface.
+
A good example of a module is Maps. Named the same in both client and
+server, it allows accelerating the reading of map blocks.
+
Communication between modules happens by using shared memory. This is
+pretty fast, but needs quite a bit of care to not break.
linked as dynamic loaded libraries (.dll, .so, etc.)
+
+
If you want to add dependencies, think twice about it. All internal
+dependencies for core dfhack should be either public domain or require
+attribution at most. External dependencies for tools can be either
+that, or any Free Software licenses.
0.31.04 - 0.31.12 native.
There are missing offsets but Map tools should be OK. Linux support is
a bit lacking, I'm working on it. All supported Windows versions
running in wine can be used with DFHack.
make expbench will build the expbench testing program and the
-library.
+
+
If you're only after the library run make dfhack.
+
+
make will build everything.
+
+
make expbench will build the expbench testing program and the
+library.
+
+
Some of the utilities and the doxygen documentation won't be
+normally built. You can enable them by specifying some extra
+CMake variables:
+
+BUILD_DFHACK_DOCUMENTATION - generate the documentation (really bad)
+BUILD_DFHACK_EXAMPLES - build tools from tools/examples
+BUILD_DFHACK_PLAYGROUND - build tools from tools/playground
+
+
Example:
+
+cmake .. -DBUILD_DFHACK_EXAMPLES=ON
+
+
diff --git a/README.rst b/README.rst
index bbeb7c3db..c57396c8c 100644
--- a/README.rst
+++ b/README.rst
@@ -52,7 +52,7 @@ Linux
0.31.04 - 0.31.12 native.
There are missing offsets but Map tools should be OK. Linux support is
a bit lacking, I'm working on it. All supported Windows versions
-running in wine can be used with DFHack.
+running in wine can be used with native DFHack binaries.
=====
Tools
@@ -66,10 +66,6 @@ dfcleanmap
Cleans all the splatter that get scattered all over the map.
Only exception is mud. It leaves mud alone.
-dfexpbench
-==========
-Just a simple benchmark of the data export speed.
-
dfliquids
=========
A command prompt for liquid creation and manipulation (the Moses
@@ -93,10 +89,6 @@ dfreveal
Reveals the whole map, waits for input and hides it again. If you close
the tool while it waits, the map remains revealed.
-dfsuspend
-=========
-Test of the process suspend/resume mechanism.
-
dfunstuck
=========
Use if you prematurely close any of the tools and DF appears to be
@@ -112,6 +104,22 @@ dfflows
A tool for checking how many liquid tiles are actively checked for
flows.
+dfattachtest
+============
+Test of the process attach/detach mechanism.
+
+dfsuspend
+=========
+Test of the process suspend/resume mechanism.
+
+dfexpbench
+==========
+Just a simple benchmark of the data export speed.
+
+dfdoffsets
+==========
+Dumps the offsets for the currently running DF version into the terminal.
+
Your tool here
==============
Write one ;)
diff --git a/Readme.html b/Readme.html
index f7c3417b4..3b28d8c61 100644
--- a/Readme.html
+++ b/Readme.html
@@ -335,35 +335,37 @@ allow for easier development of new tools.
0.31.04 - 0.31.12 native.
There are missing offsets but Map tools should be OK. Linux support is
a bit lacking, I'm working on it. All supported Windows versions
-running in wine can be used with DFHack.
+running in wine can be used with native DFHack binaries.
@@ -412,12 +414,8 @@ be useful and are cross-platform just like the library itself.
Cleans all the splatter that get scattered all over the map.
Only exception is mud. It leaves mud alone.
The library is compilable under Linux with GCC and under Windows with
MinGW32 and MSVC compilers. It is using the cmake build system. See
COMPILE for details.
@@ -475,17 +485,17 @@ the dfhack repository is welcome and the right thing to do :)
code does have a lot of comments though (and getting better all the
time).
DFhack uses ANSI formatting and four spaces as indentation. Line
endings are UNIX. The files use UTF-8 encoding. Code not following this
won't make me happy, because I'll have to fix it. There's a good chance
I'll make you fix it ;)
You can send patches or make a clone of the github repo and ask me on
the IRC channel to pull your code in. I'll review it and see if there
are any problems. I'll fix them if they are minor.
@@ -495,7 +505,7 @@ this is also a good place to dump new ideas and/or bugs that need
fixing.
@@ -545,7 +555,7 @@ dependencies for core dfhack should be either public domain or require
attribution at most. External dependencies for tools can be either
that, or any Free Software licenses.
The file with memory offset definitions used by dfhack can be found in the
output folder.
From 1dc4aea04f06fa3c143468bae30216c1cd52a995 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20Mr=C3=A1zek?=
Date: Wed, 11 Aug 2010 06:41:39 +0200
Subject: [PATCH 27/34] Offset editor skeleton app (just dead UI, no data yet)
---
CMakeLists.txt | 5 +-
doc/index.dxgen | 73 ++
offsetedit/CMakeLists.txt | 5 +
offsetedit/src/CMakeLists.txt | 26 +
offsetedit/src/dfedit.cpp | 81 ++
offsetedit/src/dfedit.h | 24 +
offsetedit/src/gui/dIsForDwarf.svg | 1621 ++++++++++++++++++++++++++++
offsetedit/src/gui/main.ui | 190 ++++
offsetedit/src/gui/main_16.png | Bin 0 -> 718 bytes
offsetedit/src/gui/main_32.png | Bin 0 -> 1216 bytes
offsetedit/src/gui/main_64.png | Bin 0 -> 2287 bytes
offsetedit/src/gui/resources.qrc | 7 +
offsetedit/src/main.cpp | 11 +
13 files changed, 2040 insertions(+), 3 deletions(-)
create mode 100644 doc/index.dxgen
create mode 100644 offsetedit/CMakeLists.txt
create mode 100644 offsetedit/src/CMakeLists.txt
create mode 100644 offsetedit/src/dfedit.cpp
create mode 100644 offsetedit/src/dfedit.h
create mode 100644 offsetedit/src/gui/dIsForDwarf.svg
create mode 100644 offsetedit/src/gui/main.ui
create mode 100644 offsetedit/src/gui/main_16.png
create mode 100644 offsetedit/src/gui/main_32.png
create mode 100644 offsetedit/src/gui/main_64.png
create mode 100644 offsetedit/src/gui/resources.qrc
create mode 100644 offsetedit/src/main.cpp
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6b314b94b..50072ab9b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,9 +1,8 @@
-INCLUDE(CPack)
# main project file. use it from a build sub-folder, see COMPILE for details
PROJECT (dfhack)
cmake_minimum_required(VERSION 2.6)
SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/Modules)
-SET ( DFHACK_VERSION "0.4.0.3-dev" )
+SET ( DFHACK_VERSION "0.4.1.0-dev" )
# disable warning, autosearch
if(COMMAND cmake_policy)
@@ -32,8 +31,8 @@ include_directories (${CMAKE_SOURCE_DIR}/library/depends/tinyxml/)
include_directories (${CMAKE_SOURCE_DIR}/library/depends/argstream/)
add_subdirectory (library)
+add_subdirectory (offsetedit)
add_subdirectory (library/shm)
-#add_subdirectory (dfhack/python)
add_subdirectory (tools/examples)
add_subdirectory (tools/playground)
add_subdirectory (tools/supported)
diff --git a/doc/index.dxgen b/doc/index.dxgen
new file mode 100644
index 000000000..d356131f6
--- /dev/null
+++ b/doc/index.dxgen
@@ -0,0 +1,73 @@
+/*******************************************************************************
+www.sourceforge.net/projects/dfhack
+Copyright (c) 2009 Petr Mrázek (peterix)
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any
+purpose, including commercial applications, and to alter it and
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+
+/*! \page index
+
+\htmlonly
+
DFHack
+
+\endhtmlonly
+
+
+
Introduction
+DFHack is a Dwarf Fortress memory access library and a set of basic tools using
+this library. The library is a work in progress, so things might change as more
+tools are written for it.
+
+It is an attempt to unite the various ways tools access DF memory and allow for
+easier development of new tools. In general, you can use it to move memory
+objects in and out of Dwarf Fortress really fast, regardless of DF version or OS.
+
+First part of the manual deals with the basic of using DFHack as a library:
+
+PLACEHOLDER TERRITORY!
+
+
Section \ref blah discusses some weird stuff
+ this is a link
+
Section \ref starting tells you how to cromulate at a distance!
+
+
+Second part has some details on DFHack development:
+
+
+
Section \ref starting tells you how to cromulate at a distance!
+
+
+The third part describes how to use the supported DFHack utilities
+
+
+
Section \ref dfattachtest shows how to use the \c dfattachtest program
+
Section \ref dfcleanmap shows how to use the \c dfcleanmap program
+
Section \ref dfexpbench shows how to use the \c dfexpbench program
+
Section \ref dfflows shows how to use the \c dfflows program
+
Section \ref dfliquids shows how to use the \c dfliquids program
+
Section \ref dfprobe shows how to use the \c dfprobe program
+
Section \ref dfprospector shows how to use the \c dfprospector program
+
Section \ref dfreveal shows how to use the \c dfreveal program
+
Section \ref dfsuspend shows how to use the \c dfsuspend program
+
Section \ref dfunstuck shows how to use the \c dfunstuck program
+
Section \ref dfvdig shows how to use the \c dfvdig program
+
+*/
+
diff --git a/offsetedit/CMakeLists.txt b/offsetedit/CMakeLists.txt
new file mode 100644
index 000000000..e4d379f04
--- /dev/null
+++ b/offsetedit/CMakeLists.txt
@@ -0,0 +1,5 @@
+project(dfoffsetedit)
+cmake_minimum_required(VERSION 2.6)
+find_package(Qt4 REQUIRED)
+
+add_subdirectory (src)
\ No newline at end of file
diff --git a/offsetedit/src/CMakeLists.txt b/offsetedit/src/CMakeLists.txt
new file mode 100644
index 000000000..f5981c879
--- /dev/null
+++ b/offsetedit/src/CMakeLists.txt
@@ -0,0 +1,26 @@
+include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR})
+
+set ( dfoffsetedit_SRCS
+ dfedit.cpp
+ main.cpp
+)
+
+SET ( dfoffsetedit_UI
+ gui/main.ui
+)
+
+SET( dfoffsetedit_RCS
+ gui/resources.qrc
+)
+
+# this command will generate rules that will run rcc on all files from dfoffsetedit_RCS
+# in result dfoffsetedit_RC_SRCS variable will contain paths to files produced by rcc
+QT4_ADD_RESOURCES( dfoffsetedit_RC_SRCS ${dfoffsetedit_RCS} )
+
+QT4_WRAP_UI(dfoffsetedit_SRCS ${dfedit_UI})
+qt4_automoc(${dfoffsetedit_SRCS})
+
+#ADD_EXECUTABLE( sample ${SAMPLE_SRCS} ${SAMPLE_MOC_SRCS} ${SAMPLE_RC_SRCS} ${SAMPLE_UI_HDRS})
+
+add_executable(dfoffsetedit ${dfoffsetedit_SRCS} ${dfoffsetedit_RC_SRCS})
+target_link_libraries(dfoffsetedit ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY})
\ No newline at end of file
diff --git a/offsetedit/src/dfedit.cpp b/offsetedit/src/dfedit.cpp
new file mode 100644
index 000000000..cb1c1b9ef
--- /dev/null
+++ b/offsetedit/src/dfedit.cpp
@@ -0,0 +1,81 @@
+#include "dfedit.h"
+#include
+#include
+
+dfedit::dfedit(QWidget *parent): QMainWindow(parent)
+{
+ ui.setupUi(this);
+ connect(ui.actionOpen,SIGNAL(triggered(bool)),this,SLOT(slotOpen(bool)));
+ connect(ui.actionQuit,SIGNAL(triggered(bool)),this,SLOT(slotQuit(bool)));
+ connect(ui.actionRun_DF,SIGNAL(triggered(bool)),this,SLOT(slotRunDF(bool)));
+ connect(ui.actionSave,SIGNAL(triggered(bool)),this,SLOT(slotSave(bool)));
+ connect(ui.actionSave_As,SIGNAL(triggered(bool)),this,SLOT(slotSaveAs(bool)));
+ connect(ui.actionSetup_DF_executables,SIGNAL(triggered(bool)),this,SLOT(slotSetupDFs(bool)));
+ ui.actionOpen->setIcon(QIcon::fromTheme("document-open"));
+ ui.actionOpen->setIconText("Open");
+ ui.actionSave->setIcon(QIcon::fromTheme("document-save"));
+ ui.actionSave->setIconText("Save");
+ ui.actionSave_As->setIcon(QIcon::fromTheme("document-save-as"));
+ ui.actionSave_As->setIconText("Save As");
+ ui.actionRun_DF->setIcon(QIcon::fromTheme("system-run"));
+ ui.actionRun_DF->setIconText("Run DF");
+ ui.actionQuit->setIcon(QIcon::fromTheme("application-exit"));
+ ui.actionQuit->setIconText("Run DF");
+}
+
+dfedit::~dfedit()
+{}
+
+void dfedit::slotOpen(bool )
+{
+ QFileDialog fd(this,"Locate the Memoxy.xml file");
+ fd.setNameFilter("Memory definition (Memory.xml)");
+ fd.setFileMode(QFileDialog::ExistingFile);
+ fd.setAcceptMode(QFileDialog::AcceptOpen);
+ int result = fd.exec();
+ if(result == QDialog::Accepted)
+ {
+ QStringList files = fd.selectedFiles();
+ QString file = files[0];
+ qDebug() << "File:" << file;
+ }
+}
+
+void dfedit::slotQuit(bool )
+{
+ close();
+}
+
+void dfedit::slotSave(bool )
+{
+ // blah
+}
+
+void dfedit::slotRunDF(bool )
+{
+ // blah
+}
+
+void dfedit::slotSaveAs(bool )
+{
+ QFileDialog fd(this,"Choose file to save as...");
+ fd.setNameFilter("Memory definition (*.xml)");
+ fd.setFileMode(QFileDialog::AnyFile);
+ fd.selectFile("Memory.xml");
+ fd.setAcceptMode(QFileDialog::AcceptSave);
+ int result = fd.exec();
+ if(result == QDialog::Accepted)
+ {
+ QStringList files = fd.selectedFiles();
+ QString file = files[0];
+ qDebug() << "File:" << file;
+ }
+}
+
+void dfedit::slotSetupDFs(bool )
+{
+ // dialog showing all the versions in Memory.xml that lets the user set up ways to run those versions...
+ // currently unimplemented
+}
+
+#include "dfedit.moc"
diff --git a/offsetedit/src/dfedit.h b/offsetedit/src/dfedit.h
new file mode 100644
index 000000000..dfc03421e
--- /dev/null
+++ b/offsetedit/src/dfedit.h
@@ -0,0 +1,24 @@
+#ifndef dfedit_H
+#define dfedit_H
+
+#include
+#include "ui_main.h"
+
+class dfedit : public QMainWindow
+{
+ Q_OBJECT
+public:
+ dfedit(QWidget *parent = 0);
+ virtual ~dfedit();
+
+private:
+ Ui::MainWindow ui;
+public slots:
+ void slotOpen(bool);
+ void slotQuit(bool);
+ void slotSave(bool);
+ void slotSaveAs(bool);
+ void slotRunDF(bool);
+ void slotSetupDFs(bool);
+};
+#endif // dfedit_H
diff --git a/offsetedit/src/gui/dIsForDwarf.svg b/offsetedit/src/gui/dIsForDwarf.svg
new file mode 100644
index 000000000..51b7acf0f
--- /dev/null
+++ b/offsetedit/src/gui/dIsForDwarf.svg
@@ -0,0 +1,1621 @@
+
+
+
+
diff --git a/offsetedit/src/gui/main.ui b/offsetedit/src/gui/main.ui
new file mode 100644
index 000000000..afa830d38
--- /dev/null
+++ b/offsetedit/src/gui/main.ui
@@ -0,0 +1,190 @@
+
+
+ MainWindow
+
+
+
+ 0
+ 0
+ 633
+ 622
+
+
+
+ MainWindow
+
+
+
+ :/main_icon/main_64.png:/main_icon/main_64.png
+
+
+
+
+
+
+
+
+
+
+
+ toolBar
+
+
+ TopToolBarArea
+
+
+ false
+
+
+
+
+
+
+
+
+ QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable
+
+
+ Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea
+
+
+ Description
+
+
+ 2
+
+
+
+
+
+
+
+ 1
+ 1
+
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Raised
+
+
+ 1
+
+
+ 0
+
+
+ <h1>Title text</h1><p>Some other text. It seriously rocks.</p>
+
+
+ Qt::AutoText
+
+
+ false
+
+
+ Qt::AlignTop
+
+
+ true
+
+
+
+
+
+
+
+
+ false
+
+
+ QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable
+
+
+ Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea
+
+
+ Entries
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 633
+ 22
+
+
+
+
+ File
+
+
+
+
+
+
+
+
+ Settings
+
+
+
+
+
+
+
+
+ Open
+
+
+
+
+ Save
+
+
+
+
+ Save As
+
+
+
+
+ Quit
+
+
+
+
+ Run DF
+
+
+
+
+ Setup DF executables
+
+
+
+
+
+
+
+
diff --git a/offsetedit/src/gui/main_16.png b/offsetedit/src/gui/main_16.png
new file mode 100644
index 0000000000000000000000000000000000000000..04367e58d58a77cf700d43958624f94af94da95d
GIT binary patch
literal 718
zcmV;<0x|uGP)(_t9LKfm8^&T?y`&1#~C6RCNrj3{w3rgjL5
zu7Odvpg|#lrx@}c1`(cwV59O<(Ix5Shz$YasTF~GX^I;;IWr$
zy#rP{lgTfsK)^ebk5P-kiFPR+F=(jl;IQl5yz-gh!T0zYS22v^ZYgb1A>w`j1%ho*%<&FQ={a_8$eH`|M9t)hM))%jH{BFk>nP
zEatS!dww}u!_2QL>OJeciY55=V-NGomFT(Bk5K@-rm~F~hQhPqIslpuX1I0VNBgBt
zQd7?Ve76Mv_%P`zoZF5q?c|1KtHE2F;rhkz966NcZ&styDmmRcw#-UDLKmjD1Wzo2-lLkk
zoen9=rzJ4h=h`5vtK50q#KMY|!KV!XobQ+=aAE;4Fn!Y@A%f#do=oN{+oCPaUiW@i
zmZ7AlkgxO9JbN8kY`b+HK3`taw6#z;97qBvrEH8u;{IID8Qq=_X4w`?Ius6fjODFm
zYzzdvGb1BkCt=nPE9)?qDe80@{#@(p>nNl1Kco=dM=rG})Bpeg07*qoM6N<$f|q1S
ACIA2c
literal 0
HcmV?d00001
diff --git a/offsetedit/src/gui/main_32.png b/offsetedit/src/gui/main_32.png
new file mode 100644
index 0000000000000000000000000000000000000000..39137fed1012bfcbfc417a153df8754107f772a5
GIT binary patch
literal 1216
zcmV;x1V8(UP)TO<;$osph|!qs#_aMnF_|XDcwyp|#%#M-EE;E*ZJCN(FomVnVnmzGfgs->g9h4;
zulM!hK{!u@H0S{c
z@lZSD*Fl2>2Av^Qpj&}i513o^Af*3R97IfmB>IHf#TeTFkmXU+*2NP+jGDFt;C7Fi
zz~|bYIAo-+V$EBMg7CS-m?;3b-J>S2w|AQ}2cx9$&Bt9F**{A3N_f4!?eQQq`y-ah
z=Yo7YG)Uz|VO}{hh|#E$Zc+fayC|Wk20l7lO?Xkez1ij!&Yb*}gN+mT{P}C%b%<`e
z*Xwh6y*OpLY&iyC?Z9c4eSA8T{$UHBz3U+>LwlHut&5y|&jvv40|8E-_=AIu6Ik;W
z0SJbp;UW-q;B(3H%}91gQQ|SnzN$!ExKc&S8%;5@eeJn^ax7vZ6(u2FJTw#$2UrMg
zKK${s!`Ru0ZmJCoXVX7y;n;!Uh%eow@b|bGPhSB!mKEBZ{hB^se_xKLuOJRYg#l(t
zVg8BE&XIOW+;I8_?!uKyeEvL*@AVgi==gMIOuQti2}X)uiJ(go*Q@?%S5*V=e6mO5
z+gm-yKKm4vC83yjqcIUcG(@OAZNs5&mpaS16G*3E*HXmy_N#uT?!>NuqUen&+LKh30RWtLS7`v&?P5nMAADZ3
z)!~vqM)AzkR}hnu0QXe}w=BLbfM7U{YuAfo{14a6QEa`t^8f&Wh4_!#{>LVF2B2=w
zEXP~^BF(5$Q5@!}`icJ+;Lwv}oIP`cTbD2MbNjbc6o>Ko^H^21-JfY5CoO6ICj>~|
zX>uk5fP2e>?9Lba+Dsb;>wFc9DRBuMQL>%z}zEhxWo{P%i5VLih+R<3l}@e
z@DJo@+TMKW&lJVG6)^WmU~!59GC4%FNs>4Vs%qeitCgCz=DJB9st%+eKI;LCQxfm8
zxiuL?Vbn9bZuPY@09@@ViD_$d-cCVWRLpDjKyrv8Yb-!uJ{^FcdJFmecCM!F__ITi
zS|OP@L}h_+*y3)-`m-`VoypO+nlRQnx%T76W%T~14{D@#WiQcnu7mrl7UGE8G#?hD
z!{LZ@bU1R9`FYEiV`GE+V7gQk4+a`-GwjY^;?d_1;PdCBs@j+Cw_CYL5?ueKkeh?K
z1m;bYSQlw}WQKF@d)CC~ymq_I+16I3S(>;%BT*S|l;tlU9%5uNiyv+j#l$AJjhWl+
zHfKvq+2(zTe-VkmjqNypsp?;eLwxas005$NPM#g9iJM!a%kY!|1cZKy>We4;oa+9L
e1<1~Q&;J2p)ZwhNpL%%!0000Lyfe45wMh!8=piK&5cN46PXuQ(i0uasbo<$fD9WFa@9!
zKo9^s0EkVrW&)KNV6F1F)mJU#zQt0SGa+pPIIbh#TIHkABB3Kc-Ck4v1vt*jIGt4<
zL6~m0Uio+={tiy3y;%@?{2b?#Qt2(F8F2fQ2b42G5T@Im&MFVbd6`stGfjZk>t&qI
zn%ks&6j~(Ic)VWoB$y(=>-91&SB*yy0=H55D3l}w+FdU5Bp4>(PEdYR^$^;g>xpYg
zp9Dh$+zHAz)eYkCYh8G}=`u1i;_Y2}BoGO>6O=D2;_>F*GqBr4u&jiU7F@yat
zoJNi-Jlp2Xo&n%cNJdHM1Q3jp(9H8)exEP-5}A|$j`K1vzNr7@ceeZ+Kizc!3}bu=
zern(6@XG!bM7bS
zmj;PS0YD&RLs8wA5#(*Ed)1Yr*zmw8Dp!r;i&Z1YpFgG117N$q6*CdN*=^ie(zF3)
zoSaLSbI`P_8hd`R2BJu|JMMX5e7pIw=Dod7euU?rI*+ezx|&pZelnAwJdn&;(vnmW
zz;PY_N+E(I`-48*M$RzB3{1ezRMO8aLscVt|05^hmqKphR30kp30s(S_mAZ%b
z_TP%|eA`N*Tv7fcw$)!#wTA>U0TV&8Obp5ZYPww+Ma~jHE2Mq))e4-wkVlkz`kSAs
z+Wccm%dUo&?a+sQD9r+N<9ShJ@a(G(PE0cHEG`_O&KeN|sSC13>O^*N|Mgjmx%h<#lbYaBf
zdvZt27;acQN|bkH&!jab88Ka{rp1*w(p5lQ+G^I0VqL`;7UoW&sgCSTy61(7GG<_A
zQ8kUJn;GcnEX4NBpXtiAJ$Du?1LV4uQJxw`94#}jlmGxYc(jN}z?u~ks
z<)}*exBgm!%5C+A5~my2kKmqCYi9v90wjq+-<5epxr0ZG@y|D8-`EP9OwR2}=qEqD*zAI`w`0G`Z@vwf?H1
zq^TPEb;gR_;Z{FjZ%&nj#rb3cw5mxCcNP+#%W_1p!?ZC}DsOLA7Flc52Q&^lo#shk
z7|Bq9gx20(_qq9oYKP4I2I?vij%!q9S~RVXAoTdnl2BH}C*8Ih57-gpZRop_gTp7Z
zzxFTpm+STq$cd6iw;0J2XqU)nNoo?naXv{V!EKlXM&sj)B7@i8E<^d|2IPIA2`jcV
zpe;#;_`uO(1VZG!|KGpRjaT;c>g*9Jm3QkFQzu=2IL;^We3xMol$Be9ekba_Q;Y9%
zRk(h`L9FY!Ih}z&9Vyn8iDK8+`*3RiKTxtrX>-)d^L+9OF@O*Y_nXe+N*BM2A>hodCO
z^>%@FAXqBDs21_Ntdlq8>aENS2|s%2evC~REoO>gY{HHeTN=PHQbHP?WhIm>60mw%
z0ISLZ$g)Q;d_4<8quB`0Fexh!7|aJ4B_R;9q4VrQoH&!-X%^)kf+#W=7<6G^(4`SU
zrmj3-A{;jIJ3O-cAw2fu&l~NM0@70+Fqsb^k#Ow8d_$#fbdbLCKne*FpU)==LYHYj
zfiASxdGpExDW4gN`U$s#1iFW&(mpsTm!Hnn`5`UeUhUqR0flpejl*-3Ptc0$(o-Iw
zc5>9}q>6P%XQ`bX29zbYR)DVZ0QJ-3(V4(lkjrNJX)6x^{{tufI-Z~?1zi9D002ov
JPDHLkV1jsOK7s%M
literal 0
HcmV?d00001
diff --git a/offsetedit/src/gui/resources.qrc b/offsetedit/src/gui/resources.qrc
new file mode 100644
index 000000000..707294060
--- /dev/null
+++ b/offsetedit/src/gui/resources.qrc
@@ -0,0 +1,7 @@
+
+
+ main_64.png
+ main_16.png
+ main_32.png
+
+
diff --git a/offsetedit/src/main.cpp b/offsetedit/src/main.cpp
new file mode 100644
index 000000000..36334656d
--- /dev/null
+++ b/offsetedit/src/main.cpp
@@ -0,0 +1,11 @@
+#include
+#include "dfedit.h"
+
+
+int main(int argc, char** argv)
+{
+ QApplication app(argc, argv);
+ dfedit appGui;
+ appGui.show();
+ return app.exec();
+}
From c8092afddcc42ffccbd3f0fec18ff191c1d932cd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20Mr=C3=A1zek?=
Date: Wed, 11 Aug 2010 08:08:08 +0200
Subject: [PATCH 28/34] A fake-ish data model that at least shows something
(can load any xml file)
---
offsetedit/CMakeLists.txt | 9 +-
offsetedit/src/CMakeLists.txt | 3 +-
offsetedit/src/dfedit.cpp | 36 ++++--
offsetedit/src/dfedit.h | 2 +
offsetedit/src/memxmlModel.cpp | 209 +++++++++++++++++++++++++++++++++
offsetedit/src/memxmlModel.h | 30 +++++
6 files changed, 274 insertions(+), 15 deletions(-)
create mode 100644 offsetedit/src/memxmlModel.cpp
create mode 100644 offsetedit/src/memxmlModel.h
diff --git a/offsetedit/CMakeLists.txt b/offsetedit/CMakeLists.txt
index e4d379f04..246f3ba3d 100644
--- a/offsetedit/CMakeLists.txt
+++ b/offsetedit/CMakeLists.txt
@@ -1,5 +1,8 @@
project(dfoffsetedit)
cmake_minimum_required(VERSION 2.6)
-find_package(Qt4 REQUIRED)
-
-add_subdirectory (src)
\ No newline at end of file
+find_package(Qt4 QUIET)
+if(QT4_FOUND)
+ add_subdirectory (src)
+else(QT4_FOUND)
+ MESSAGE(STATUS "Qt4 libraries not found - offset editor can't be built.")
+endif(QT4_FOUND)
diff --git a/offsetedit/src/CMakeLists.txt b/offsetedit/src/CMakeLists.txt
index f5981c879..dc2eeea6e 100644
--- a/offsetedit/src/CMakeLists.txt
+++ b/offsetedit/src/CMakeLists.txt
@@ -2,6 +2,7 @@ include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR})
set ( dfoffsetedit_SRCS
dfedit.cpp
+ memxmlModel.cpp
main.cpp
)
@@ -23,4 +24,4 @@ qt4_automoc(${dfoffsetedit_SRCS})
#ADD_EXECUTABLE( sample ${SAMPLE_SRCS} ${SAMPLE_MOC_SRCS} ${SAMPLE_RC_SRCS} ${SAMPLE_UI_HDRS})
add_executable(dfoffsetedit ${dfoffsetedit_SRCS} ${dfoffsetedit_RC_SRCS})
-target_link_libraries(dfoffsetedit ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY})
\ No newline at end of file
+target_link_libraries(dfoffsetedit ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTXML_LIBRARY} )
\ No newline at end of file
diff --git a/offsetedit/src/dfedit.cpp b/offsetedit/src/dfedit.cpp
index cb1c1b9ef..dc4fc3205 100644
--- a/offsetedit/src/dfedit.cpp
+++ b/offsetedit/src/dfedit.cpp
@@ -1,6 +1,7 @@
#include "dfedit.h"
#include
#include
+#include "memxmlModel.h"
dfedit::dfedit(QWidget *parent): QMainWindow(parent)
{
@@ -12,15 +13,15 @@ dfedit::dfedit(QWidget *parent): QMainWindow(parent)
connect(ui.actionSave_As,SIGNAL(triggered(bool)),this,SLOT(slotSaveAs(bool)));
connect(ui.actionSetup_DF_executables,SIGNAL(triggered(bool)),this,SLOT(slotSetupDFs(bool)));
ui.actionOpen->setIcon(QIcon::fromTheme("document-open"));
- ui.actionOpen->setIconText("Open");
+ ui.actionOpen->setIconText(tr("Open"));
ui.actionSave->setIcon(QIcon::fromTheme("document-save"));
- ui.actionSave->setIconText("Save");
+ ui.actionSave->setIconText(tr("Save"));
ui.actionSave_As->setIcon(QIcon::fromTheme("document-save-as"));
- ui.actionSave_As->setIconText("Save As");
+ ui.actionSave_As->setIconText(tr("Save As"));
ui.actionRun_DF->setIcon(QIcon::fromTheme("system-run"));
- ui.actionRun_DF->setIconText("Run DF");
+ ui.actionRun_DF->setIconText(tr("Run DF"));
ui.actionQuit->setIcon(QIcon::fromTheme("application-exit"));
- ui.actionQuit->setIconText("Run DF");
+ ui.actionQuit->setIconText(tr("Run DF"));
}
dfedit::~dfedit()
@@ -28,16 +29,29 @@ dfedit::~dfedit()
void dfedit::slotOpen(bool )
{
- QFileDialog fd(this,"Locate the Memoxy.xml file");
- fd.setNameFilter("Memory definition (Memory.xml)");
+ QFileDialog fd(this,tr("Locate the Memoxy.xml file"));
+ fd.setNameFilter(tr("Memory definition (Memory.xml)"));
fd.setFileMode(QFileDialog::ExistingFile);
fd.setAcceptMode(QFileDialog::AcceptOpen);
int result = fd.exec();
if(result == QDialog::Accepted)
{
QStringList files = fd.selectedFiles();
- QString file = files[0];
- qDebug() << "File:" << file;
+ QString fileName = files[0];
+ QDomDocument doc("memxml");
+ QFile file(fileName);
+ if(!file.open(QIODevice::ReadOnly))
+ {
+ return;
+ }
+ if(!doc.setContent(&file))
+ {
+ file.close();
+ return;
+ }
+ mod = new MemXMLModel(doc,this);
+ ui.entryView->setModel(mod);
+ file.close();
}
}
@@ -58,8 +72,8 @@ void dfedit::slotRunDF(bool )
void dfedit::slotSaveAs(bool )
{
- QFileDialog fd(this,"Choose file to save as...");
- fd.setNameFilter("Memory definition (*.xml)");
+ QFileDialog fd(this,tr("Choose file to save as..."));
+ fd.setNameFilter(tr("Memory definition (*.xml)"));
fd.setFileMode(QFileDialog::AnyFile);
fd.selectFile("Memory.xml");
fd.setAcceptMode(QFileDialog::AcceptSave);
diff --git a/offsetedit/src/dfedit.h b/offsetedit/src/dfedit.h
index dfc03421e..2a30ef7aa 100644
--- a/offsetedit/src/dfedit.h
+++ b/offsetedit/src/dfedit.h
@@ -3,6 +3,7 @@
#include
#include "ui_main.h"
+#include "memxmlModel.h"
class dfedit : public QMainWindow
{
@@ -13,6 +14,7 @@ public:
private:
Ui::MainWindow ui;
+ MemXMLModel * mod;
public slots:
void slotOpen(bool);
void slotQuit(bool);
diff --git a/offsetedit/src/memxmlModel.cpp b/offsetedit/src/memxmlModel.cpp
new file mode 100644
index 000000000..ce03f9bce
--- /dev/null
+++ b/offsetedit/src/memxmlModel.cpp
@@ -0,0 +1,209 @@
+/****************************************************************************
+**
+** Copyright (C) 2005-2006 Trolltech ASA. All rights reserved.
+**
+** This file was part of the example classes of the Qt Toolkit.
+** Now it's being hacked into some other shape... :)
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.trolltech.com/products/qt/opensource.html
+**
+** If you are unsure which license is appropriate for your use, please
+** review the following information:
+** http://www.trolltech.com/products/qt/licensing.html or contact the
+** sales department at sales@trolltech.com.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+#include "memxmlModel.h"
+#include
+#include
+#include
+#include
+
+class DomItem
+{
+public:
+ DomItem(QDomNode &node, int row, DomItem *parent = 0);
+ ~DomItem();
+ DomItem *child(int i);
+ DomItem *parent();
+ QDomNode node() const;
+ int row();
+
+private:
+ QDomNode domNode;
+ QHash childItems;
+ DomItem *parentItem;
+ int rowNumber;
+};
+
+DomItem::DomItem(QDomNode &node, int row, DomItem *parent)
+{
+ domNode = node;
+ // Record the item's location within its parent.
+ rowNumber = row;
+ parentItem = parent;
+}
+
+DomItem::~DomItem()
+{
+ QHash::iterator it;
+ for (it = childItems.begin(); it != childItems.end(); ++it)
+ delete it.value();
+}
+
+QDomNode DomItem::node() const
+{
+ return domNode;
+}
+
+DomItem *DomItem::parent()
+{
+ return parentItem;
+}
+
+DomItem *DomItem::child(int i)
+{
+ if (childItems.contains(i))
+ return childItems[i];
+
+ if (i >= 0 && i < domNode.childNodes().count()) {
+ QDomNode childNode = domNode.childNodes().item(i);
+ DomItem *childItem = new DomItem(childNode, i, this);
+ childItems[i] = childItem;
+ return childItem;
+ }
+ return 0;
+}
+
+int DomItem::row()
+{
+ return rowNumber;
+}
+
+MemXMLModel::MemXMLModel(QDomDocument document, QObject *parent)
+ : QAbstractItemModel(parent), domDocument(document)
+{
+ rootItem = new DomItem(domDocument, 0);
+}
+
+MemXMLModel::~MemXMLModel()
+{
+ delete rootItem;
+}
+
+int MemXMLModel::columnCount(const QModelIndex &/*parent*/) const
+{
+ return 3;
+}
+
+QVariant MemXMLModel::data(const QModelIndex &index, int role) const
+{
+ if (!index.isValid())
+ return QVariant();
+
+ if (role != Qt::DisplayRole)
+ return QVariant();
+
+ DomItem *item = static_cast(index.internalPointer());
+
+ QDomNode node = item->node();
+ QStringList attributes;
+ QDomNamedNodeMap attributeMap = node.attributes();
+
+ switch (index.column()) {
+ case 0:
+ return node.nodeName();
+ case 1:
+ for (int i = 0; (unsigned int)(i) < attributeMap.count(); ++i) {
+ QDomNode attribute = attributeMap.item(i);
+ attributes << attribute.nodeName() + "=\""
+ +attribute.nodeValue() + "\"";
+ }
+ return attributes.join(" ");
+ case 2:
+ return node.nodeValue().split("\n").join(" ");
+ default:
+ return QVariant();
+ }
+}
+
+Qt::ItemFlags MemXMLModel::flags(const QModelIndex &index) const
+{
+ if (!index.isValid())
+ return Qt::ItemIsEnabled;
+
+ return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
+}
+
+QVariant MemXMLModel::headerData(int section, Qt::Orientation orientation,
+ int role) const
+{
+ if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
+ switch (section) {
+ case 0:
+ return tr("Name");
+ case 1:
+ return tr("Attributes");
+ case 2:
+ return tr("Value");
+ default:
+ return QVariant();
+ }
+ }
+
+ return QVariant();
+}
+
+QModelIndex MemXMLModel::index(int row, int column, const QModelIndex &parent)
+const
+{
+ DomItem *parentItem;
+
+ if (!parent.isValid())
+ parentItem = rootItem;
+ else
+ parentItem = static_cast(parent.internalPointer());
+
+ DomItem *childItem = parentItem->child(row);
+ if (childItem)
+ return createIndex(row, column, childItem);
+ else
+ return QModelIndex();
+}
+
+QModelIndex MemXMLModel::parent(const QModelIndex &child) const
+{
+ if (!child.isValid())
+ return QModelIndex();
+
+ DomItem *childItem = static_cast(child.internalPointer());
+ DomItem *parentItem = childItem->parent();
+
+ if (!parentItem || parentItem == rootItem)
+ return QModelIndex();
+
+ return createIndex(parentItem->row(), 0, parentItem);
+}
+
+int MemXMLModel::rowCount(const QModelIndex &parent) const
+{
+ DomItem *parentItem;
+
+ if (!parent.isValid())
+ parentItem = rootItem;
+ else
+ parentItem = static_cast(parent.internalPointer());
+
+ return parentItem->node().childNodes().count();
+}
+
+#include "memxmlModel.moc"
\ No newline at end of file
diff --git a/offsetedit/src/memxmlModel.h b/offsetedit/src/memxmlModel.h
new file mode 100644
index 000000000..2879f4b5f
--- /dev/null
+++ b/offsetedit/src/memxmlModel.h
@@ -0,0 +1,30 @@
+#ifndef memxmlModel_H
+#define memxmlModel_H
+
+#include
+#include
+
+class DomItem;
+
+class MemXMLModel : public QAbstractItemModel
+{
+ Q_OBJECT
+public:
+ MemXMLModel(QDomDocument document, QObject *parent = 0);
+ ~MemXMLModel();
+
+ QVariant data(const QModelIndex &index, int role) const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+ QVariant headerData(int section, Qt::Orientation orientation,
+ int role = Qt::DisplayRole) const;
+ QModelIndex index(int row, int column,
+ const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &child) const;
+ int rowCount(const QModelIndex &parent = QModelIndex()) const;
+ int columnCount(const QModelIndex &parent = QModelIndex()) const;
+
+private:
+ QDomDocument domDocument;
+ DomItem *rootItem;
+};
+#endif // memxmlModel
From ca7b2219da52d6305e13a7d7e44478cc77ba0428 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20Mr=C3=A1zek?=
Date: Wed, 11 Aug 2010 12:56:06 +0200
Subject: [PATCH 29/34] Tedious Memory.xml rewrite, part 1
---
offsetedit/Memory-ng.xml | 2094 ++++++++++++++++++++++++++++++++
offsetedit/src/memxmlModel.cpp | 19 +-
2 files changed, 2104 insertions(+), 9 deletions(-)
create mode 100755 offsetedit/Memory-ng.xml
diff --git a/offsetedit/Memory-ng.xml b/offsetedit/Memory-ng.xml
new file mode 100755
index 000000000..163d6f860
--- /dev/null
+++ b/offsetedit/Memory-ng.xml
@@ -0,0 +1,2094 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TODO: Parse this and turn it into Job tags
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .,:rsr,
+ :2;,;r2A@@5
+ @2::s5A#@@@ @r. .
+ sd;:riXA#@@ :@@@Gir;;AS9
+ Bs::sS3A#@2 @@#AhXirsS#;
+ iHrLr5d#@@@ .@#95sr;;rie
+ i*' `*@3 @@A2sr;:;r#5
+ :..:rll: @@A5sr::r3@
+ @Hr;iZ#@@@@ `:rr;;;;:
+ S@r.;i2#@@@ @s. ..
+ @2::ri2A@@# B@G2ir:...5i
+ :@r,r3X##@@ @G5sr:..,:A
+ .@Ar;;rSB@@# H#2sr;,..,is
+ .' `* ,@ASs;:..,:B
+ ;rr;:,..,:.
+ `'''
+ W I N D O W S
+ and
+ W I N E
+
+
+
+
+
+
+ Basic things
+ ============
+
+
+ Vector layout in MSVC 9:
+ DWORD Allocator?
+ DWORD ?
+ DWORD ?
+ DWORD Start
+ DWORD End
+ DWORD AllocationEnd
+
+
+
+
+
+ Position and window dimensions
+ ==============================
+
+
+
+
+
+
+ Found addresses: (next to each other!)
+ 0x17f5ab8
+ 0x17f5ac0
+ 0x17f5ac8
+ 0x17f5ad0
+
+ GUI State
+ =========
+
+ Found addresses:
+ 0x146e45f
+ 0x185b677
+
+ Bogus:
+
+
+
+ Bogus:
+
+ Map stuff
+ =========
+
+
+
+
+
+
+
+
+
+ local features
+ global features
+
+ Map Features
+ ============
+ WORLD + 0x54374
+
+
+
+
+ WORLD + 0x54440
+
+
+
+
+
+ * map size in blocks *
+
+
+
+
+ * map size in tiles *
+
+
+
+
+ * Suspected region coords *
+ WORLD + 0x525C8
+
+ WORLD + 0x525CC
+
+ WORLD + 0x525D0
+
+
+ * World size * (WORDs)
+
+
+
+
+
+
+
+
+
+
+
+ vector
+ vector
+
+ Name struct
+ ===========
+
+
+
+
+ Creatures
+ =========
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ the skill that will be increased at the end of the mood (or not)
+ seems to be indexes in the list of possible colors defined in the raws for each group
+
+
+
+
+
+
+
+ Souls
+ =====
+
+
+
+
+
+ Job structure
+ =============
+ Incrementaly assigned
+ seems to be just like the old occupations
+
+
+ Job materials
+ =============
+ like mood materials, 0=bars, 4=stone, 5=wood, 57=cloth, 54=leather ...
+ subsubtype ?
+ subtype ?
+ index of material (for example, 2 is for silver)
+ set only for shell / bone mood requirements ?
+
+
+
+ Materials
+ =========
+ soil, stone, metal
+ inorganics vector = WORLD + 0x54B7C = 0x16AFD04
+
+
+ wood and plant matter, WORLD + 0x54B94
+
+
+ plant matter, WORLD + 0x54BAC
+
+
+ just wood, WORLD + 0x54BDC
+
+
+ creature types actually used for creatures,
+ WORLD + 0x54CD0
+
+
+
+
+
+
+
+
+ Constructions
+ =============
+ WORLD + 0x108
+
+
+
+ Translations
+ ============
+ WORLD + 0x54E50
+
+ WORLD + 0x54E80
+
+
+
+ Vegetation
+ ==========
+ WORLD + 0x15184
+ belal: 0x017f6d98 ... what?
+
+
+ Buildings
+ =========
+ WORLD + 0x14818
+
+
+ WORLD + 0x5D610
+
+
+
+
+ Effects
+ =======
+
+ :(
+
+ Settlements
+ ===========
+
+ :(
+
+ Hotkeys
+ =======
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WORLD: 0x0165c1d0 ?
+
+ Position
+ ========
+ Was 0x17f5ab8
+ 0x17f6b00
+ 0x17f6b08
+ 0x17f6b10
+
+ Map
+ ===
+
+
+ * map size in blocks *
+
+
+
+
+ * map size in tiles *
+
+
+
+
+ * Suspected region coords *
+
+
+
+
+ * World size * (WORDs)
+
+
+
+ * geology *
+
+
+
+ * features *
+ WORLD + 0x54374
+
+ WORLD + 0x54440
+
+
+ Creatures
+ =========
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ the skill that will be increased at the end of the mood (or not)
+
+
+
+
+
+
+
+
+
+ Castes
+ ======
+
+
+
+
+ Color Mods
+ ==========
+
+
+
+
+ Body Parts
+ ==========
+
+
+
+
+
+
+ Materials
+ =========
+ soil, stone, metal
+ inorganics vector = WORLD + 0x54B7C = 0x16B0D4C
+
+
+ stuff like glass, coke, ...
+
+
+ wood and plant matter, WORLD + 0x54B94
+
+
+ plant matter, WORLD + 0x54BAC
+
+
+ just wood, WORLD + 0x54BDC
+
+
+ creature types actually used for creatures, WORLD + 0x54CD0
+
+
+ stuff that is used somehow
+
+
+ Constructions
+ =============
+ WORLD + 0x108
+
+
+ Translations
+ ============
+ WORLD + 0x54E50
+
+ WORLD + 0x54E80
+
+
+ Vegetation
+ ==========
+ WORLD + 0x15184
+
+
+ Buildings
+ =========
+ WORLD + 0x14818
+
+ WORLD + 0x5D610
+
+
+
+
+ Descriptor colors
+ =================
+
+
+
+ this includes RVB
+ floats !
+
+
+ A list of all colors, including eyes and stuff
+
+ Items
+ =====
+
+ List of offsets in the VTable :
+
+
+
+
+
+
+
+
+
+
+ (in the vtable)
+
+ Time
+ ====
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0x17f6b00
+ 0xe32798 01
+ 0xe60838 01
+ 0xe60814 01
+ 0xae82cc 01
+
+ Why do i have to redefine this ???
+
+
+
+
+
+
+ CHMOD
+ BOGUS!
+ LOOKS O.K.
+ VERIFIED
+ VERIFIED
+ VERIFIED
+ VERIFIED
+ LOOKS O.K.
+ LOOKS O.K.
+ Why do i have to redefine this ???
+ ... what?
+
+
+
+
+
+
+
+
+
+
+
+ 0xaf12d0
+ 0x180b10c
+
+
+
+ map size X: 0x16c4b10
+ map size Y: 0x16c4b14
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Creatures
+ =========
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VERIFIED
+ VERIFIED
+ VERIFIED
+
+
+
+
+
+
+
+ .-"""-.
+ ' \
+ |,. ,-. | _________________________
+ |()L( ()| | \ \
+ |,' `".| | /_ Argh !!! \
+ |.___.',| ` \________________________\
+ .j `--"' ` `.
+ / ' ' \
+ / / ` `.
+ / / ` .
+ / / l |
+ . , L I N U X | |
+ ,"`. .| |
+ _.' ``. | `..-'l
+ | `.`, | `.
+ | `. __.j )
+ |__ |--""___| ,-'
+ `"--...,+"""" `._,.-'
+
+
+
+
+
+
+ Basic things
+ ============
+ VERIFIED
+ VERIFIED
+ VERIFIED
+
+ MAP BLOCK OFFSETS
+ =================
+ VERIFIED
+ VERIFIED
+ VERIFIED
+ VERIFIED
+ VERIFIED
+ VERIFIED
+ VERIFIED
+ VERIFIED
+ VERIFIED
+ VERIFIED
+
+ MAP FEATURE OFFSETS
+ ===================
+ VERIFIED
+ VERIFIED
+ VERIFIED
+
+ VERIFIED
+ VERIFIED
+
+ values for the region structure
+ ===============================
+ VERIFIED
+ VERIFIED
+ geoblock offsets
+ ================
+ VERIFIED
+ VERIFIED
+
+ Name struct
+ ===========
+ VERIFIED
+ VERIFIED
+ VERIFIED
+
+ Creature offsets
+ ================
+ VERIFIED
+ CHMOD
+ CHMOD
+ CHMOD
+ BAD!!
+ CHMOD
+ CHMOD
+ VERIFY
+ CHMOD
+ CHMOD
+ VERIFY!
+ CHMOD
+ VERIFY!
+ VERIFY!
+ VERIFY!
+ BAD!
+ CHMOD
+ VERIFY!
+ the skill that will be increased at the end of the mood (or not)
+ BAD!
+ BAD!
+ CHMOD
+ CHMOD
+ BAD!
+ CHMOD
+
+ Souls
+ =====
+
+ CHMOD
+ CHMOD
+ BAD!
+
+ Body Parts
+ ==========
+
+
+
+
+
+
+ Job structure
+ =============
+ Incrementaly assigned
+ seems to be just like the old occupations
+
+
+ Job materials
+ =============
+ like mood materials, 0=bars, 4=stone, 5=wood, 57=cloth, 54=leather ...
+ subsubtype ?
+ subtype ?
+ index of material (for example, 2 is for silver)
+ set only for shell / bone mood requirements ?
+
+ Creature type offsets
+ =====================
+ VERIFIED
+ from 0.31.08
+ Toad: 0xaf75b68
+ Toad: rawname = 0x0
+ Toad: character (not reliable) = 0x20
+ Toad: caste vector = 0x60
+ Toad: extract? vector = 0x18f4
+ Toad: colors = 0x36
+ VERIFIED
+ VERIFIED
+ LOOKS OK
+
+ Castes
+ ======
+
+
+
+
+
+
+
+
+
+ Color descriptors
+ =================
+ VERIFIED
+ VERIFIED
+ VERIFIED
+ VERIFIED
+ VERIFIED
+
+ Language tables
+ ===============
+ VERIFIED
+
+ Constructions
+ =============
+
+
+
+
+
+
+
+
+
+ Position and window dimensions
+ ==============================
+
+
+
+
+
+
+ GUI State
+ =========
+
+
+ Map data
+ =========
+ WORLD + 0x52C60
+
+ Map Features
+ ============
+ WORLD + 0x5487C
+
+ WORLD + 0x548F4
+
+
+ * map size in blocks *
+
+
+
+
+ * map size in tiles *
+
+
+
+
+ * region coords *
+ WORLD + 0x525C8
+
+ WORLD + 0x525CC
+
+ WORLD + 0x525D0
+
+
+ * World size * (WORDs)
+ WORLD + 0x542E0
+
+ WORLD + 0x542E2
+
+ WORLD + 0x54894
+
+ WORLD + 0x548B8
+
+
+ Creatures
+ =========
+
+
+
+
+ Materials
+ =========
+ soil, stone, metal
+ inorganics vector
+ 0x16afd04
+
+ wood and plant matter
+
+
+ plant matter
+
+
+ just wood
+
+
+ creature types actually used for creatures,
+
+
+ Color descriptors
+ =================
+ VERIFIED
+ VERIFIED
+
+ Translations
+ ============
+ WORLD + 0x54E50
+
+ WORLD + 0x54E80
+
+
+ Constructions
+ =============
+ WORLD + 0x84
+ 0x165b290
+
+ Time
+ ====
+
+
+
+
+
+
+
+
+
+
+ MOST PROBABLY BOGUS!
+
+ Position and window dimensions
+ ==============================
+ VERIFIED
+ VERIFIED
+ VERIFIED
+ VERIFIED
+ VERIFIED
+ GUI State
+ =========
+ VERIFIED
+
+ Map data
+ ========
+ WORLD + 0x52C60?
+ VERIFIED
+
+ Map Features
+ ============
+ WORLD + 0x5487C?
+ VERIFIED
+ WORLD + 0x548F4?
+ VERIFIED
+
+ * map size in blocks *
+ VERIFIED
+ VERIFIED
+ VERIFIED
+
+ * map size in tiles *
+ VERIFIED
+ VERIFIED
+ VERIFIED
+
+ * region coords *
+ WORLD + 0x525C8
+ VERIFIED
+ WORLD + 0x525CC
+ VERIFIED
+ WORLD + 0x525D0
+ VERIFIED (old = 0x9322d54)
+
+ * World size * (WORDs)
+ WORLD + 0x542E0
+ VERIFIED
+ WORLD + 0x542E2
+ VERIFIED
+ WORLD + 0x54894
+ VERIFIED
+ WORLD + 0x548B8
+ VERIFIED
+
+ Materials
+ =========
+ soil, stone, metal
+ inorganics vector
+ VERIFIED
+
+ wood and plant matter
+ VERIFIED
+
+ plant matter
+ VERIFIED
+
+ just wood
+ VERIFIED
+
+ creature types actually used for creatures,
+ VERIFIED
+
+ Color descriptors
+ =================
+ VERIFIED
+ VERIFIED
+
+ Translations
+ ============
+ WORLD + 0x54E50
+
+ WORLD + 0x54E80
+
+
+ Creatures
+ =========
+
+ 0x092CB608
+ 0x092CB5FC
+
+ Time
+ ====
+
+
+ YEAR 0x92BF6A0, WORLD - 0x6A40
+ TICKS 0x92BF6A8, WORLD - 0x6A40 + 0x08
+
+
+
+
+
+ VERIFIED
+ WORLD = 0x92C4000
+ Creatures
+ =========
+ WORLD + 0x139E0
+ 0x92d79d4
+ 0x92d79e0 = real one? seems like it
+ 0x92d7a10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Buildings
+ =========
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VERIFIED
+ VERIFIED
+ VERIFIED
+ VERIFIED
+
+
+
+
+
+
+
+
diff --git a/offsetedit/src/memxmlModel.cpp b/offsetedit/src/memxmlModel.cpp
index ce03f9bce..3df8849bf 100644
--- a/offsetedit/src/memxmlModel.cpp
+++ b/offsetedit/src/memxmlModel.cpp
@@ -100,8 +100,9 @@ MemXMLModel::~MemXMLModel()
delete rootItem;
}
-int MemXMLModel::columnCount(const QModelIndex &/*parent*/) const
+int MemXMLModel::columnCount(const QModelIndex & parent) const
{
+ Q_UNUSED(parent);
return 3;
}
@@ -123,10 +124,10 @@ QVariant MemXMLModel::data(const QModelIndex &index, int role) const
case 0:
return node.nodeName();
case 1:
- for (int i = 0; (unsigned int)(i) < attributeMap.count(); ++i) {
+ for (int i = 0; (unsigned int)(i) < attributeMap.count(); ++i)
+ {
QDomNode attribute = attributeMap.item(i);
- attributes << attribute.nodeName() + "=\""
- +attribute.nodeValue() + "\"";
+ attributes << attribute.nodeName() + "=\"" +attribute.nodeValue() + "\"";
}
return attributes.join(" ");
case 2:
@@ -139,13 +140,14 @@ QVariant MemXMLModel::data(const QModelIndex &index, int role) const
Qt::ItemFlags MemXMLModel::flags(const QModelIndex &index) const
{
if (!index.isValid())
+ {
return Qt::ItemIsEnabled;
+ }
return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
}
-QVariant MemXMLModel::headerData(int section, Qt::Orientation orientation,
- int role) const
+QVariant MemXMLModel::headerData(int section, Qt::Orientation orientation, int role) const
{
if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
switch (section) {
@@ -163,8 +165,7 @@ QVariant MemXMLModel::headerData(int section, Qt::Orientation orientation,
return QVariant();
}
-QModelIndex MemXMLModel::index(int row, int column, const QModelIndex &parent)
-const
+QModelIndex MemXMLModel::index(int row, int column, const QModelIndex &parent) const
{
DomItem *parentItem;
@@ -206,4 +207,4 @@ int MemXMLModel::rowCount(const QModelIndex &parent) const
return parentItem->node().childNodes().count();
}
-#include "memxmlModel.moc"
\ No newline at end of file
+#include "memxmlModel.moc"
From f6aea927c86f98598914865c74a59f5515ca3a57 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20Mr=C3=A1zek?=
Date: Thu, 12 Aug 2010 21:38:15 +0200
Subject: [PATCH 30/34] Memory.xml in new format (offsetedit/Memory-ng.xml).
The declarations/descriptions are still missing.
---
library/DFMemInfo.cpp | 27 +-
library/modules/Materials.cpp | 32 +-
offsetedit/Memory-ng.xml | 1811 +++++++++++++--------------------
offsetedit/src/CMakeLists.txt | 6 +-
offsetedit/src/dfedit.cpp | 2 +-
offsetedit/src/gui/main.ui | 7 +-
6 files changed, 734 insertions(+), 1151 deletions(-)
diff --git a/library/DFMemInfo.cpp b/library/DFMemInfo.cpp
index e8cee4b0c..ca7c58d03 100644
--- a/library/DFMemInfo.cpp
+++ b/library/DFMemInfo.cpp
@@ -739,31 +739,40 @@ std::string memory_info::getMood(const uint32_t moodID)
std::string memory_info::PrintOffsets()
{
ostringstream ss;
- ss << "version: " << getVersion();
+ ss << "" << endl;
switch (getOS())
{
case OS_LINUX:
- ss << " LINUX" << endl;
- ss << "md5 hash: " << getString("md5") << endl;
+ ss << "" << endl;
break;
case OS_WINDOWS:
- ss << " WINDOWS" << endl;
- ss << "PE timestamp: " << hex << "0x" << getHexValue("pe_timestamp") << endl;
- ss << "md5 hash: " << getString("md5") << endl;
+ ss << "" << endl;
+ ss << "" << endl;
break;
default:
ss << " UNKNOWN" << endl;
}
-
+ ss << "" << endl;
map::const_iterator iter;
for(iter = d->addresses.begin(); iter != d->addresses.end(); iter++)
{
- ss << "address " << (*iter).first << " : " << hex << "0x" << (*iter).second << endl;
+ ss << " " << endl;
}
map::const_iterator iter2;
for(iter2 = d->offsets.begin(); iter2 != d->offsets.end(); iter2++)
{
- ss << "offset " << (*iter2).first << " : " << hex << "0x" << (*iter2).second << endl;
+ ss << " " << endl;
+ }
+ for(iter = d->hexvals.begin(); iter != d->hexvals.end(); iter++)
+ {
+ ss << " " << endl;
+ }
+ map::const_iterator iter3;
+ for(iter3 = d->strings.begin(); iter3 != d->strings.end(); iter3++)
+ {
+ ss << " " << endl;
}
+ ss << "" << endl;
+ ss << "" << endl;
return ss.str();
}
\ No newline at end of file
diff --git a/library/modules/Materials.cpp b/library/modules/Materials.cpp
index 58f98c54c..fe8e3f339 100644
--- a/library/modules/Materials.cpp
+++ b/library/modules/Materials.cpp
@@ -258,24 +258,24 @@ bool Materials::ReadCreatureTypes (void)
bool Materials::ReadOthers(void)
{
- Process * p = d->owner;
- uint32_t matBase = p->getDescriptor()->getAddress ("mat_other");
- uint32_t i = 0;
- uint32_t ptr;
+ Process * p = d->owner;
+ uint32_t matBase = p->getDescriptor()->getAddress ("mat_other");
+ uint32_t i = 0;
+ uint32_t ptr;
- other.clear();
+ other.clear();
- while(1)
- {
- t_matglossOther mat;
- ptr = p->readDWord(matBase + i*4);
- if(ptr==0)
- break;
- p->readSTLString(ptr, mat.rawname, sizeof(mat.rawname));
- other.push_back(mat);
- i++;
- }
- return true;
+ while(1)
+ {
+ t_matglossOther mat;
+ ptr = p->readDWord(matBase + i*4);
+ if(ptr==0)
+ break;
+ p->readSTLString(ptr, mat.rawname, sizeof(mat.rawname));
+ other.push_back(mat);
+ i++;
+ }
+ return true;
}
bool Materials::ReadDescriptorColors (void)
diff --git a/offsetedit/Memory-ng.xml b/offsetedit/Memory-ng.xml
index 163d6f860..294886988 100755
--- a/offsetedit/Memory-ng.xml
+++ b/offsetedit/Memory-ng.xml
@@ -1,6 +1,6 @@
-
+
@@ -33,7 +33,6 @@
-
@@ -42,7 +41,6 @@
-
@@ -145,7 +143,6 @@
-
TODO: Parse this and turn it into Job tags
-
@@ -615,7 +611,6 @@
-
@@ -639,7 +634,6 @@
-
@@ -723,9 +717,8 @@
-->
-
-
-
+
+
@@ -738,7 +731,7 @@
-
+
@@ -764,7 +757,7 @@
-
+
@@ -785,7 +778,7 @@
-
+
@@ -819,9 +812,22 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -841,20 +847,27 @@
.@Ar;;rSB@@# H#2sr;,..,is
.' `* ,@ASs;:..,:B
;rr;:,..,:.
- `'''
+ `'''
W I N D O W S
and
W I N E
-
-
-
-
- Basic things
- ============
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
- Position and window dimensions
- ==============================
+ -->
+
+
+
+
+
+
+
+
+
+
-
- Found addresses: (next to each other!)
- 0x17f5ab8
- 0x17f5ac0
- 0x17f5ac8
- 0x17f5ad0
-
- GUI State
- =========
+
+
- Found addresses:
- 0x146e45f
- 0x185b677
-
- Bogus:
-
+
-
- Bogus:
-
- Map stuff
- =========
+
+
+
-
-
-
-
-
-
-
-
- local features
- global features
-
- Map Features
- ============
- WORLD + 0x54374
-
-
-
-
- WORLD + 0x54440
-
-
-
-
-
- * map size in blocks *
-
- * map size in tiles *
-
- * Suspected region coords *
- WORLD + 0x525C8
-
- WORLD + 0x525CC
-
- WORLD + 0x525D0
-
-
- * World size * (WORDs)
+
+
+
-
-
-
-
-
-
-
-
-
- vector
- vector
-
- Name struct
- ===========
-
-
-
-
- Creatures
- =========
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ vector
+ vector
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- the skill that will be increased at the end of the mood (or not)
- seems to be indexes in the list of possible colors defined in the raws for each group
-
-
-
-
-
-
-
- Souls
- =====
-
-
-
-
-
- Job structure
- =============
- Incrementaly assigned
- seems to be just like the old occupations
-
-
- Job materials
- =============
- like mood materials, 0=bars, 4=stone, 5=wood, 57=cloth, 54=leather ...
- subsubtype ?
- subtype ?
- index of material (for example, 2 is for silver)
- set only for shell / bone mood requirements ?
-
-
-
- Materials
- =========
- soil, stone, metal
- inorganics vector = WORLD + 0x54B7C = 0x16AFD04
-
-
- wood and plant matter, WORLD + 0x54B94
-
-
- plant matter, WORLD + 0x54BAC
-
-
- just wood, WORLD + 0x54BDC
-
-
- creature types actually used for creatures,
- WORLD + 0x54CD0
-
-
-
-
-
-
-
-
- Constructions
- =============
- WORLD + 0x108
-
-
-
- Translations
- ============
- WORLD + 0x54E50
-
- WORLD + 0x54E80
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ the skill that will be increased at the end of the mood (or not)
+
+ seems to be indexes in the list of possible colors defined in the raws for each group
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Incrementaly assigned
+ seems to be just like the old occupations
+
+
+ like mood materials, 0=bars, 4=stone, 5=wood, 57=cloth, 54=leather ...
+ subsubtype ?
+ subtype ?
+ index of material (for example, 2 is for silver)
+ set only for shell / bone mood requirements ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- Vegetation
- ==========
- WORLD + 0x15184
- belal: 0x017f6d98 ... what?
+
+
+
-
- Buildings
- =========
- WORLD + 0x14818
-
+
+
+
- WORLD + 0x5D610
-
+
-
- Effects
- =======
-
- :(
-
- Settlements
- ===========
-
- :(
-
- Hotkeys
- =======
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- WORLD: 0x0165c1d0 ?
-
- Position
- ========
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WORLD: 0x0165c1d0 ?
+
Was 0x17f5ab8
- 0x17f6b00
- 0x17f6b08
- 0x17f6b10
-
- Map
- ===
+
+
-
- * map size in blocks *
-
- * map size in tiles *
-
- * Suspected region coords *
-
- * World size * (WORDs)
-
- * geology *
-
-
-
- * features *
- WORLD + 0x54374
-
- WORLD + 0x54440
-
-
- Creatures
- =========
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- the skill that will be increased at the end of the mood (or not)
-
-
-
-
-
-
-
-
-
- Castes
- ======
-
-
-
-
- Color Mods
- ==========
-
-
-
-
- Body Parts
- ==========
-
-
-
-
-
-
- Materials
- =========
- soil, stone, metal
- inorganics vector = WORLD + 0x54B7C = 0x16B0D4C
-
-
- stuff like glass, coke, ...
-
-
- wood and plant matter, WORLD + 0x54B94
-
-
- plant matter, WORLD + 0x54BAC
-
-
- just wood, WORLD + 0x54BDC
-
-
- creature types actually used for creatures, WORLD + 0x54CD0
-
-
- stuff that is used somehow
-
-
- Constructions
- =============
- WORLD + 0x108
-
-
- Translations
- ============
- WORLD + 0x54E50
-
- WORLD + 0x54E80
-
-
- Vegetation
- ==========
- WORLD + 0x15184
-
-
- Buildings
- =========
- WORLD + 0x14818
-
- WORLD + 0x5D610
-
-
-
-
- Descriptor colors
- =================
-
-
-
- this includes RVB
- floats !
-
-
- A list of all colors, including eyes and stuff
-
- Items
- =====
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
List of offsets in the VTable :
@@ -1381,168 +1197,193 @@
-
-
-
-
+
+
+ (in the vtable)
-
- Time
- ====
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
-
- 0x17f6b00
- 0xe32798 01
- 0xe60838 01
- 0xe60814 01
- 0xae82cc 01
-
- Why do i have to redefine this ???
-
-
-
-
-
-
- CHMOD
- BOGUS!
- LOOKS O.K.
- VERIFIED
- VERIFIED
- VERIFIED
- VERIFIED
- LOOKS O.K.
- LOOKS O.K.
- Why do i have to redefine this ???
- ... what?
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BOGUS!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
- 0xaf12d0
- 0x180b10c
-
-
-
- map size X: 0x16c4b10
- map size Y: 0x16c4b14
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
- Creatures
- =========
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- VERIFIED
- VERIFIED
- VERIFIED
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
.-"""-.
' \
@@ -1566,478 +1407,209 @@
-
-
- Basic things
- ============
- VERIFIED
- VERIFIED
- VERIFIED
-
- MAP BLOCK OFFSETS
- =================
- VERIFIED
- VERIFIED
- VERIFIED
- VERIFIED
- VERIFIED
- VERIFIED
- VERIFIED
- VERIFIED
- VERIFIED
- VERIFIED
-
- MAP FEATURE OFFSETS
- ===================
- VERIFIED
- VERIFIED
- VERIFIED
-
- VERIFIED
- VERIFIED
-
- values for the region structure
- ===============================
- VERIFIED
- VERIFIED
- geoblock offsets
- ================
- VERIFIED
- VERIFIED
-
- Name struct
- ===========
- VERIFIED
- VERIFIED
- VERIFIED
-
- Creature offsets
- ================
- VERIFIED
- CHMOD
- CHMOD
- CHMOD
- BAD!!
- CHMOD
- CHMOD
- VERIFY
- CHMOD
- CHMOD
- VERIFY!
- CHMOD
- VERIFY!
- VERIFY!
- VERIFY!
- BAD!
- CHMOD
- VERIFY!
- the skill that will be increased at the end of the mood (or not)
- BAD!
- BAD!
- CHMOD
- CHMOD
- BAD!
- CHMOD
-
- Souls
- =====
-
- CHMOD
- CHMOD
- BAD!
-
- Body Parts
- ==========
-
-
-
-
-
-
- Job structure
- =============
- Incrementaly assigned
- seems to be just like the old occupations
-
-
- Job materials
- =============
- like mood materials, 0=bars, 4=stone, 5=wood, 57=cloth, 54=leather ...
- subsubtype ?
- subtype ?
- index of material (for example, 2 is for silver)
- set only for shell / bone mood requirements ?
-
- Creature type offsets
- =====================
- VERIFIED
- from 0.31.08
- Toad: 0xaf75b68
- Toad: rawname = 0x0
- Toad: character (not reliable) = 0x20
- Toad: caste vector = 0x60
- Toad: extract? vector = 0x18f4
- Toad: colors = 0x36
- VERIFIED
- VERIFIED
- LOOKS OK
-
- Castes
- ======
-
-
-
-
-
-
-
-
-
- Color descriptors
- =================
- VERIFIED
- VERIFIED
- VERIFIED
- VERIFIED
- VERIFIED
-
- Language tables
- ===============
- VERIFIED
-
- Constructions
- =============
-
-
-
-
-
-
-
-
-
- Position and window dimensions
- ==============================
-
-
-
-
-
-
- GUI State
- =========
-
-
- Map data
- =========
- WORLD + 0x52C60
-
- Map Features
- ============
- WORLD + 0x5487C
-
- WORLD + 0x548F4
-
-
- * map size in blocks *
-
-
-
-
- * map size in tiles *
-
-
-
-
- * region coords *
- WORLD + 0x525C8
-
- WORLD + 0x525CC
-
- WORLD + 0x525D0
-
-
- * World size * (WORDs)
- WORLD + 0x542E0
-
- WORLD + 0x542E2
-
- WORLD + 0x54894
-
- WORLD + 0x548B8
-
-
- Creatures
- =========
-
-
-
-
- Materials
- =========
- soil, stone, metal
- inorganics vector
- 0x16afd04
-
- wood and plant matter
-
-
- plant matter
-
-
- just wood
-
-
- creature types actually used for creatures,
-
-
- Color descriptors
- =================
- VERIFIED
- VERIFIED
-
- Translations
- ============
- WORLD + 0x54E50
-
- WORLD + 0x54E80
-
-
- Constructions
- =============
- WORLD + 0x84
- 0x165b290
-
- Time
- ====
-
-
-
-
-
-
-
+
-
- MOST PROBABLY BOGUS!
-
- Position and window dimensions
- ==============================
- VERIFIED
- VERIFIED
- VERIFIED
- VERIFIED
- VERIFIED
- GUI State
- =========
- VERIFIED
-
- Map data
- ========
- WORLD + 0x52C60?
- VERIFIED
-
- Map Features
- ============
- WORLD + 0x5487C?
- VERIFIED
- WORLD + 0x548F4?
- VERIFIED
-
- * map size in blocks *
- VERIFIED
- VERIFIED
- VERIFIED
-
- * map size in tiles *
- VERIFIED
- VERIFIED
- VERIFIED
-
- * region coords *
- WORLD + 0x525C8
- VERIFIED
- WORLD + 0x525CC
- VERIFIED
- WORLD + 0x525D0
- VERIFIED (old = 0x9322d54)
-
- * World size * (WORDs)
- WORLD + 0x542E0
- VERIFIED
- WORLD + 0x542E2
- VERIFIED
- WORLD + 0x54894
- VERIFIED
- WORLD + 0x548B8
- VERIFIED
-
- Materials
- =========
- soil, stone, metal
- inorganics vector
- VERIFIED
-
- wood and plant matter
- VERIFIED
-
- plant matter
- VERIFIED
-
- just wood
- VERIFIED
-
- creature types actually used for creatures,
- VERIFIED
-
- Color descriptors
- =================
- VERIFIED
- VERIFIED
-
- Translations
- ============
- WORLD + 0x54E50
-
- WORLD + 0x54E80
-
-
- Creatures
- =========
-
- 0x092CB608
- 0x092CB5FC
-
- Time
- ====
-
-
- YEAR 0x92BF6A0, WORLD - 0x6A40
- TICKS 0x92BF6A8, WORLD - 0x6A40 + 0x08
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ vector
+ vector
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CHMOD
+ VERIFY!
+
+
+ chmod
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CHMOD
+
+
+
+
+ Incrementaly assigned
+ seems to be just like the old occupations
+
+
+ like mood materials, 0=bars, 4=stone, 5=wood, 57=cloth, 54=leather ...
+ subsubtype ?
+ subtype ?
+ index of material (for example, 2 is for silver)
+ set only for shell / bone mood requirements ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- VERIFIED
- WORLD = 0x92C4000
+
+
+ VERIFIED
+
Creatures
=========
WORLD + 0x139E0
@@ -2060,14 +1632,13 @@
- Buildings
- =========
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/offsetedit/src/CMakeLists.txt b/offsetedit/src/CMakeLists.txt
index dc2eeea6e..0804dd66e 100644
--- a/offsetedit/src/CMakeLists.txt
+++ b/offsetedit/src/CMakeLists.txt
@@ -18,10 +18,8 @@ SET( dfoffsetedit_RCS
# in result dfoffsetedit_RC_SRCS variable will contain paths to files produced by rcc
QT4_ADD_RESOURCES( dfoffsetedit_RC_SRCS ${dfoffsetedit_RCS} )
-QT4_WRAP_UI(dfoffsetedit_SRCS ${dfedit_UI})
+QT4_WRAP_UI(dfoffsetedit_UI_h ${dfedit_UI})
qt4_automoc(${dfoffsetedit_SRCS})
-#ADD_EXECUTABLE( sample ${SAMPLE_SRCS} ${SAMPLE_MOC_SRCS} ${SAMPLE_RC_SRCS} ${SAMPLE_UI_HDRS})
-
-add_executable(dfoffsetedit ${dfoffsetedit_SRCS} ${dfoffsetedit_RC_SRCS})
+add_executable(dfoffsetedit ${dfoffsetedit_SRCS} ${dfoffsetedit_RC_SRCS} ${dfoffsetedit_UI_h})
target_link_libraries(dfoffsetedit ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTXML_LIBRARY} )
\ No newline at end of file
diff --git a/offsetedit/src/dfedit.cpp b/offsetedit/src/dfedit.cpp
index dc4fc3205..f7ac3e7a4 100644
--- a/offsetedit/src/dfedit.cpp
+++ b/offsetedit/src/dfedit.cpp
@@ -30,7 +30,7 @@ dfedit::~dfedit()
void dfedit::slotOpen(bool )
{
QFileDialog fd(this,tr("Locate the Memoxy.xml file"));
- fd.setNameFilter(tr("Memory definition (Memory.xml)"));
+ fd.setNameFilter(tr("Memory definition (*.xml)"));
fd.setFileMode(QFileDialog::ExistingFile);
fd.setAcceptMode(QFileDialog::AcceptOpen);
int result = fd.exec();
diff --git a/offsetedit/src/gui/main.ui b/offsetedit/src/gui/main.ui
index afa830d38..dfff8fa02 100644
--- a/offsetedit/src/gui/main.ui
+++ b/offsetedit/src/gui/main.ui
@@ -82,7 +82,12 @@
0
- <h1>Title text</h1><p>Some other text. It seriously rocks.</p>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:18px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:xx-large; font-weight:600;">Title text</span></p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Some other text.</p></body></html>Qt::AutoText
From 21f7f8e7038286d550a7a61a3e1ea83f46e01286 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20Mr=C3=A1zek?=
Date: Fri, 13 Aug 2010 02:23:38 +0200
Subject: [PATCH 31/34] Moved memory defs to /data. Memory.xml is copied into
the right folder at build time (works even with MSVC).
---
CMakeLists.txt | 2 ++
{output => data}/Memory-40d.xml | 0
{offsetedit => data}/Memory-ng.xml | 0
{output => data}/Memory.xml | 0
library/CMakeLists.txt | 14 ++++++++++++++
library/DFMemInfoManager.cpp | 6 +++---
6 files changed, 19 insertions(+), 3 deletions(-)
rename {output => data}/Memory-40d.xml (100%)
rename {offsetedit => data}/Memory-ng.xml (100%)
mode change 100755 => 100644
rename {output => data}/Memory.xml (100%)
mode change 100755 => 100644
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 50072ab9b..160b71a6f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,10 +19,12 @@ ENDIF(NOT DEFINED CMAKE_BUILD_TYPE)
SET( LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/output CACHE PATH "Output directory for the dfhack library" )
SET( EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/output CACHE PATH "Output directory for the dfhack tools" )
+SET( DATA_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/output CACHE PATH "Output directory for the dfhack data (offset files)" )
OPTION(BUILD_DFHACK_DOCUMENTATION "Create doxygen documentation for developers" OFF)
OPTION(BUILD_DFHACK_EXAMPLES "Build example tools" OFF)
OPTION(BUILD_DFHACK_PLAYGROUND "Build tools from the playground folder" OFF)
+OPTION(BUILD_DFHACK_C_BINDIGS "Build the C portion of the library" ON)
include_directories (${CMAKE_SOURCE_DIR}/library/include/)
include_directories (${CMAKE_SOURCE_DIR}/library/shm/)
diff --git a/output/Memory-40d.xml b/data/Memory-40d.xml
similarity index 100%
rename from output/Memory-40d.xml
rename to data/Memory-40d.xml
diff --git a/offsetedit/Memory-ng.xml b/data/Memory-ng.xml
old mode 100755
new mode 100644
similarity index 100%
rename from offsetedit/Memory-ng.xml
rename to data/Memory-ng.xml
diff --git a/output/Memory.xml b/data/Memory.xml
old mode 100755
new mode 100644
similarity index 100%
rename from output/Memory.xml
rename to data/Memory.xml
diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
index f036a7a44..9442a4cc7 100644
--- a/library/CMakeLists.txt
+++ b/library/CMakeLists.txt
@@ -164,6 +164,20 @@ SET_TARGET_PROPERTIES(dfhack PROPERTIES DEBUG_POSTFIX "-debug" )
TARGET_LINK_LIBRARIES(dfhack ${PROJECT_LIBS})
+if(MSVC)
+ # This is a MSVC hack used for copying files into the target directory
+ # of build target set in MSVC.
+ # It exploits the fact that MSVC has some variables in .vcproj files, much like cmake does here.
+ #
+ # So, $(TargetDir) is ignored by cmake, and replaced with the actual output directory by MSVC
+ ADD_CUSTOM_COMMAND(TARGET dfhack POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/data/Memory.xml $(TargetDir)/Memory.xml
+ )
+else(MSVC)
+ # Just put the file in the output directory on Linux and Mac
+ configure_file(${CMAKE_SOURCE_DIR}/data/Memory-ng.xml ${DATA_OUTPUT_PATH}/Memory.xml COPYONLY)
+endif(MSVC)
+
IF(UNIX)
install(TARGETS dfhack LIBRARY DESTINATION lib)
install(FILES ${CMAKE_SOURCE_DIR}/output/Memory.xml DESTINATION share/dfhack)
diff --git a/library/DFMemInfoManager.cpp b/library/DFMemInfoManager.cpp
index 48ea3f8a2..cc4c5de4a 100644
--- a/library/DFMemInfoManager.cpp
+++ b/library/DFMemInfoManager.cpp
@@ -154,9 +154,9 @@ void MemInfoManager::ParseEntry (TiXmlElement* entry, memory_info* mem, map Value();
const char *cstr_name = pMemEntry->Attribute("name");
const char *cstr_value = pMemEntry->GetText();
-
- if(!cstr_value)
- cstr_value = pMemEntry->Attribute("id");
+
+ if(!cstr_value)
+ cstr_value = pMemEntry->Attribute("id");
// check for missing parts
string type, name, value;
From 8fa3d0811c0def86b148038ceae8f754f48797d4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20Mr=C3=A1zek?=
Date: Fri, 13 Aug 2010 02:35:10 +0200
Subject: [PATCH 32/34] Make building C bindings optional.
---
library/CMakeLists.txt | 17 +++++++++++++++--
tools/playground/CMakeLists.txt | 16 +++++++++++-----
2 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
index 9442a4cc7..d66f0af51 100644
--- a/library/CMakeLists.txt
+++ b/library/CMakeLists.txt
@@ -54,6 +54,11 @@ include/dfhack/modules/WindowIO.h
include/dfhack/modules/World.h
)
+SET(PROJECT_C_HDRS
+include/dfhack-c/DFTypes_C.h
+include/dfhack-c/DFContext_C.h
+)
+
SET(PROJECT_SRCS
DFMemInfo.cpp
DFMemInfoManager.cpp
@@ -61,8 +66,6 @@ DFContextManager.cpp
DFContext.cpp
DFProcessEnumerator.cpp
ContextShared.cpp
-DFContext_C.cpp
-DFTypes_C.cpp
depends/md5/md5.cpp
depends/md5/md5wrapper.cpp
@@ -83,6 +86,11 @@ modules/Position.cpp
modules/Translation.cpp
modules/Vegetation.cpp
modules/World.cpp
+)
+
+SET(PROJECT_C_SRCS
+DFContext_C.cpp
+DFTypes_C.cpp
modules/Buildings_C.cpp
modules/Constructions_C.cpp
@@ -126,6 +134,11 @@ ELSE(UNIX)
LIST(APPEND PROJECT_SRCS ${PROJECT_SRCS_WINDOWS})
ENDIF(UNIX)
+IF(BUILD_DFHACK_C_BINDIGS)
+ LIST(APPEND PROJECT_HDRS ${PROJECT_C_HDRS})
+ LIST(APPEND PROJECT_SRCS ${PROJECT_C_SRCS})
+ENDIF(BUILD_DFHACK_C_BINDIGS)
+
SET_SOURCE_FILES_PROPERTIES( ${PROJECT_HDRS} PROPERTIES HEADER_FILE_ONLY TRUE )
LIST(APPEND PROJECT_SRCS ${PROJECT_HDRS})
diff --git a/tools/playground/CMakeLists.txt b/tools/playground/CMakeLists.txt
index a799c7765..a28597475 100644
--- a/tools/playground/CMakeLists.txt
+++ b/tools/playground/CMakeLists.txt
@@ -12,10 +12,6 @@ ENDIF(UNIX)
ADD_EXECUTABLE(dfmoodump moodump.cpp)
TARGET_LINK_LIBRARIES(dfmoodump dfhack)
-# for trying out some 'stuff'
-ADD_EXECUTABLE(dftest test.cpp)
-TARGET_LINK_LIBRARIES(dftest dfhack)
-
# bauxite - turn all mechanisms into bauxite mechanisms
# Author: Alex Legg
#ADD_EXECUTABLE(dfbauxite dfbauxite.cpp)
@@ -60,9 +56,19 @@ TARGET_LINK_LIBRARIES(dfcatsplosion dfhack)
#ADD_EXECUTABLE(dfrenamer renamer.cpp)
#TARGET_LINK_LIBRARIES(dfrenamer dfhack)
+# this needs the C bindings
+IF(BUILD_DFHACK_C_BINDIGS)
+ # for trying out some 'stuff'
+ ADD_EXECUTABLE(dftest test.cpp)
+ TARGET_LINK_LIBRARIES(dftest dfhack)
+ install(TARGETS
+ dftest
+ RUNTIME DESTINATION bin
+ )
+ENDIF(BUILD_DFHACK_C_BINDIGS)
+
install(TARGETS
dfmoodump
-dftest
dfdigger
dfdigger2
dfcatsplosion
From 7188d87a5b86ebe177149274adee3e92bedc6e4e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20Mr=C3=A1zek?=
Date: Fri, 13 Aug 2010 02:58:45 +0200
Subject: [PATCH 33/34] Possible fix for MSVC 2010
---
CMake/Modules/CMakeVS10FindMake.cmake | 28 +++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
create mode 100644 CMake/Modules/CMakeVS10FindMake.cmake
diff --git a/CMake/Modules/CMakeVS10FindMake.cmake b/CMake/Modules/CMakeVS10FindMake.cmake
new file mode 100644
index 000000000..460de25e5
--- /dev/null
+++ b/CMake/Modules/CMakeVS10FindMake.cmake
@@ -0,0 +1,28 @@
+
+#=============================================================================
+# Copyright 2009 Kitware, Inc.
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distributed this file outside of CMake, substitute the full
+# License text for the above reference.)
+
+# We use MSBuild as the build tool for VS 10
+FIND_PROGRAM(CMAKE_MAKE_PROGRAM
+ NAMES MSBuild
+ HINTS
+ [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VS;ProductDir]
+ "$ENV{SYSTEMROOT}/Microsoft.NET/Framework/[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0;CLR Version]/"
+ "c:/WINDOWS/Microsoft.NET/Framework/[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0;CLR Version]/"
+ "$ENV{SYSTEMROOT}/Microsoft.NET/Framework/[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\10.0;CLR Version]/"
+ )
+
+MARK_AS_ADVANCED(CMAKE_MAKE_PROGRAM)
+SET(MSVC10 1)
+SET(MSVC_VERSION 1600)
+
From 343b14753b3c11f2ee12d516523bb8de41a96be6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20Mr=C3=A1zek?=
Date: Fri, 13 Aug 2010 03:31:05 +0200
Subject: [PATCH 34/34] Updated docs.
---
COMPILE.rst | 66 ++++------------------------------------------------
Compile.html | 59 ++++------------------------------------------
README.rst | 6 ++---
Readme.html | 6 ++---
4 files changed, 14 insertions(+), 123 deletions(-)
diff --git a/COMPILE.rst b/COMPILE.rst
index bb5bc1e3a..dc07456f0 100644
--- a/COMPILE.rst
+++ b/COMPILE.rst
@@ -87,13 +87,9 @@ This will generate MSVC solution and project files.
.. note::
You are working in the ``/build`` folder. Files added to
- projects will end up there! (and that's wrong). Any changes to the
- build system should be done by changing cmake configs and running
- ``cmake`` on them!
-
-Also, you'll have to copy the ``Memory.xml`` file to the build output
-folders MSVC generates. For example from ``output/`` to
-``output/Release/``
+ projects from within MSVC will end up there! (and that's
+ wrong). Any changes to the build system should be done
+ by changing cmake configs and running ``cmake`` on them!
-------------------------
Using some other compiler
@@ -147,59 +143,5 @@ comes to compilation. Because it shares the memory space with DF
itself, it has to be built with the same tools as DF and use the same C
and C++/STL libraries.
-For DF 31.01 - 31.10 on Windows, use MSVC 2008. You can get the Express
+For DF 31.01 - 31.12 on Windows, use MSVC 2008. You can get the Express
edition for free from Microsoft.
-
-Windows dependencies can be determined by a tool like ``depends.exe``
-(`google it`_). Both the fake ``SDL.dll`` and DF have to use the same
-version of the C runtime (MSVCRT). The SHM can only be debugged using a
-RelWithDebInfo build!
-
-Linux dependencies can be determined by setting the LD_DEBUG variable
-and running ./df::
-
- export LD_DEBUG=versions
- ./df
-
-Example of (a part of a) relevant output from a working SHM
-installation::
-
- 24472: checking for version `GLIBC_2.0' in file /opt/lib32/lib/libpthread.so.0 [0] required by file ./dwarfort.exe [0]
- 24472: checking for version `GCC_3.0' in file ./libs/libgcc_s.so.1 [0] required by file ./dwarfort.exe [0]
- 24472: checking for version `GLIBC_2.0' in file ./libs/libgcc_s.so.1 [0] required by file ./dwarfort.exe [0]
- 24472: checking for version `GLIBC_2.1' in file /opt/lib32/lib/libm.so.6 [0] required by file ./dwarfort.exe [0]
- 24472: checking for version `GLIBC_2.0' in file /opt/lib32/lib/libm.so.6 [0] required by file ./dwarfort.exe [0]
- 24472: checking for version `GLIBC_2.1.3' in file /opt/lib32/lib/libc.so.6 [0] required by file ./dwarfort.exe [0]
- 24472: checking for version `GLIBC_2.3.4' in file /opt/lib32/lib/libc.so.6 [0] required by file ./dwarfort.exe [0]
- 24472: checking for version `GLIBC_2.4' in file /opt/lib32/lib/libc.so.6 [0] required by file ./dwarfort.exe [0]
- 24472: checking for version `GLIBC_2.0' in file /opt/lib32/lib/libc.so.6 [0] required by file ./dwarfort.exe [0]
- 24472: checking for version `GLIBCXX_3.4.9' in file ./libs/libstdc++.so.6 [0] required by file ./dwarfort.exe [0]
- 24472: checking for version `CXXABI_1.3' in file ./libs/libstdc++.so.6 [0] required by file ./dwarfort.exe [0]
- 24472: checking for version `GLIBCXX_3.4' in file ./libs/libstdc++.so.6 [0] required by file ./dwarfort.exe [0]
- 24472: checking for version `CXXABI_1.3' in file ./libs/libstdc++.so.6 [0] required by file ./libs/libdfconnect.so [0]
- 24472: checking for version `GLIBCXX_3.4' in file ./libs/libstdc++.so.6 [0] required by file ./libs/libdfconnect.so [0]
- 24472: checking for version `GLIBC_2.1.3' in file /opt/lib32/lib/libc.so.6 [0] required by file ./libs/libdfconnect.so [0]
- 24472: checking for version `GLIBC_2.2' in file /opt/lib32/lib/libc.so.6 [0] required by file ./libs/libdfconnect.so [0]
- 24472: checking for version `GLIBC_2.3.4' in file /opt/lib32/lib/libc.so.6 [0] required by file ./libs/libdfconnect.so [0]
- 24472: checking for version `GLIBC_2.0' in file /opt/lib32/lib/libc.so.6 [0] required by file ./libs/libdfconnect.so [0]
-
-libdfconnect is the SHM. Both are compiled against the same C++ library
-and share the same CXXABI version.
-
-Precompiled SHM libraries are provided in binary releases.
-
-.. _google it: http://www.google.com/search?q=depends.exe
-
-Checking strings support
-========================
-Strings are one of the important C++ types and a great indicator that
-the SHM works. Tools like Dwarf Therapist depend on string support.
-Reading of strings can be checked by running any of the tools that deal
-with materials.
-
-String writing is best tested with a fresh throw-away fort and
-``dfrenamer``.
-
-Embark, give one dwarf a very long name using dfrenamer and save/exit.
-If DF crashes during the save sequence, your SHM is not compatible with
-DF and the throw-away fort is most probably lost.
diff --git a/Compile.html b/Compile.html
index 06ab65b9d..d7bb44ce7 100644
--- a/Compile.html
+++ b/Compile.html
@@ -331,7 +331,6 @@ ul.auto-toc {
You are working in the /build folder. Files added to
-projects will end up there! (and that's wrong). Any changes to the
-build system should be done by changing cmake configs and running
-cmake on them!
+projects from within MSVC will end up there! (and that's
+wrong). Any changes to the build system should be done
+by changing cmake configs and running cmake on them!
-
Also, you'll have to copy the Memory.xml file to the build output
-folders MSVC generates. For example from output/ to
-output/Release/
@@ -467,55 +463,8 @@ cmake .. -DCMAKE_BUILD_TYPE:string=BUILD_TYPE
comes to compilation. Because it shares the memory space with DF
itself, it has to be built with the same tools as DF and use the same C
and C++/STL libraries.
-
For DF 31.01 - 31.10 on Windows, use MSVC 2008. You can get the Express
+
For DF 31.01 - 31.12 on Windows, use MSVC 2008. You can get the Express
edition for free from Microsoft.
-
Windows dependencies can be determined by a tool like depends.exe
-(google it). Both the fake SDL.dll and DF have to use the same
-version of the C runtime (MSVCRT). The SHM can only be debugged using a
-RelWithDebInfo build!
-
Linux dependencies can be determined by setting the LD_DEBUG variable
-and running ./df:
-
-export LD_DEBUG=versions
-./df
-
-
Example of (a part of a) relevant output from a working SHM
-installation:
-
-24472: checking for version `GLIBC_2.0' in file /opt/lib32/lib/libpthread.so.0 [0] required by file ./dwarfort.exe [0]
-24472: checking for version `GCC_3.0' in file ./libs/libgcc_s.so.1 [0] required by file ./dwarfort.exe [0]
-24472: checking for version `GLIBC_2.0' in file ./libs/libgcc_s.so.1 [0] required by file ./dwarfort.exe [0]
-24472: checking for version `GLIBC_2.1' in file /opt/lib32/lib/libm.so.6 [0] required by file ./dwarfort.exe [0]
-24472: checking for version `GLIBC_2.0' in file /opt/lib32/lib/libm.so.6 [0] required by file ./dwarfort.exe [0]
-24472: checking for version `GLIBC_2.1.3' in file /opt/lib32/lib/libc.so.6 [0] required by file ./dwarfort.exe [0]
-24472: checking for version `GLIBC_2.3.4' in file /opt/lib32/lib/libc.so.6 [0] required by file ./dwarfort.exe [0]
-24472: checking for version `GLIBC_2.4' in file /opt/lib32/lib/libc.so.6 [0] required by file ./dwarfort.exe [0]
-24472: checking for version `GLIBC_2.0' in file /opt/lib32/lib/libc.so.6 [0] required by file ./dwarfort.exe [0]
-24472: checking for version `GLIBCXX_3.4.9' in file ./libs/libstdc++.so.6 [0] required by file ./dwarfort.exe [0]
-24472: checking for version `CXXABI_1.3' in file ./libs/libstdc++.so.6 [0] required by file ./dwarfort.exe [0]
-24472: checking for version `GLIBCXX_3.4' in file ./libs/libstdc++.so.6 [0] required by file ./dwarfort.exe [0]
-24472: checking for version `CXXABI_1.3' in file ./libs/libstdc++.so.6 [0] required by file ./libs/libdfconnect.so [0]
-24472: checking for version `GLIBCXX_3.4' in file ./libs/libstdc++.so.6 [0] required by file ./libs/libdfconnect.so [0]
-24472: checking for version `GLIBC_2.1.3' in file /opt/lib32/lib/libc.so.6 [0] required by file ./libs/libdfconnect.so [0]
-24472: checking for version `GLIBC_2.2' in file /opt/lib32/lib/libc.so.6 [0] required by file ./libs/libdfconnect.so [0]
-24472: checking for version `GLIBC_2.3.4' in file /opt/lib32/lib/libc.so.6 [0] required by file ./libs/libdfconnect.so [0]
-24472: checking for version `GLIBC_2.0' in file /opt/lib32/lib/libc.so.6 [0] required by file ./libs/libdfconnect.so [0]
-
-
libdfconnect is the SHM. Both are compiled against the same C++ library
-and share the same CXXABI version.
-
Precompiled SHM libraries are provided in binary releases.
Strings are one of the important C++ types and a great indicator that
-the SHM works. Tools like Dwarf Therapist depend on string support.
-Reading of strings can be checked by running any of the tools that deal
-with materials.
-
String writing is best tested with a fresh throw-away fort and
-dfrenamer.
-
Embark, give one dwarf a very long name using dfrenamer and save/exit.
-If DF crashes during the save sequence, your SHM is not compatible with
-DF and the throw-away fort is most probably lost.