Merge branch 'develop' of github.com:DFHack/dfhack into vs2015

develop
Michael Casadevall 2016-07-11 18:59:22 -05:00
commit e10397370b
16 changed files with 244 additions and 37 deletions

4
.gitmodules vendored

@ -10,6 +10,6 @@
[submodule "depends/clsocket"]
path = depends/clsocket
url = git://github.com/DFHack/clsocket.git
[submodule "library/scripts"]
path = library/scripts
[submodule "scripts2"]
path = scripts
url = git://github.com/dfhack/scripts.git

@ -36,7 +36,7 @@ script:
- python travis/authors-rst.py
- python travis/script-in-readme.py
- python travis/script-syntax.py --ext=lua --cmd="luac5.2 -p"
- python travis/script-syntax.py --ext=rb --cmd="ruby -c" --path library/scripts/
- python travis/script-syntax.py --ext=rb --cmd="ruby -c"
- mkdir build-travis
- cd build-travis
- cmake .. -DCMAKE_C_COMPILER=gcc-$GCC_VERSION -DCMAKE_CXX_COMPILER=g++-$GCC_VERSION -DBUILD_DOCS:BOOL=ON

@ -0,0 +1,107 @@
# Sourced from:
# https://raw.githubusercontent.com/ros/cmake_modules/0.4-devel/cmake/Modules/FindTinyXML.cmake
# under the following license: https://github.com/ros/cmake_modules/blob/0.4-devel/LICENSE,
# reproduced here:
# Copyright (c) 2013, Open Source Robotics Foundation
# All rights reserved.
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
# Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# Redistributions in binary form must reproduce the above copyright notice, this
# list of conditions and the following disclaimer in the documentation and/or
# other materials provided with the distribution.
# Neither the name of the {organization} nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
##################################################################################################
#
# CMake script for finding TinyXML.
#
# Input variables:
#
# - TinyXML_ROOT_DIR (optional): When specified, header files and libraries will be searched for in
# ${TinyXML_ROOT_DIR}/include
# ${TinyXML_ROOT_DIR}/libs
# respectively, and the default CMake search order will be ignored. When unspecified, the default
# CMake search order is used.
# This variable can be specified either as a CMake or environment variable. If both are set,
# preference is given to the CMake variable.
# Use this variable for finding packages installed in a nonstandard location, or for enforcing
# that one of multiple package installations is picked up.
#
#
# Cache variables (not intended to be used in CMakeLists.txt files)
#
# - TinyXML_INCLUDE_DIR: Absolute path to package headers.
# - TinyXML_LIBRARY: Absolute path to library.
#
#
# Output variables:
#
# - TinyXML_FOUND: Boolean that indicates if the package was found
# - TinyXML_INCLUDE_DIRS: Paths to the necessary header files
# - TinyXML_LIBRARIES: Package libraries
#
#
# Example usage:
#
# find_package(TinyXML)
# if(NOT TinyXML_FOUND)
# # Error handling
# endif()
# ...
# include_directories(${TinyXML_INCLUDE_DIRS} ...)
# ...
# target_link_libraries(my_target ${TinyXML_LIBRARIES})
#
##################################################################################################
# Get package location hint from environment variable (if any)
if(NOT TinyXML_ROOT_DIR AND DEFINED ENV{TinyXML_ROOT_DIR})
set(TinyXML_ROOT_DIR "$ENV{TinyXML_ROOT_DIR}" CACHE PATH
"TinyXML base directory location (optional, used for nonstandard installation paths)")
endif()
# Search path for nonstandard package locations
if(TinyXML_ROOT_DIR)
set(TinyXML_INCLUDE_PATH PATHS "${TinyXML_ROOT_DIR}/include" NO_DEFAULT_PATH)
set(TinyXML_LIBRARY_PATH PATHS "${TinyXML_ROOT_DIR}/lib" NO_DEFAULT_PATH)
endif()
# Find headers and libraries
find_path(TinyXML_INCLUDE_DIR NAMES tinyxml.h PATH_SUFFIXES "tinyxml" ${TinyXML_INCLUDE_PATH})
find_library(TinyXML_LIBRARY NAMES tinyxml PATH_SUFFIXES "tinyxml" ${TinyXML_LIBRARY_PATH})
mark_as_advanced(TinyXML_INCLUDE_DIR
TinyXML_LIBRARY)
# Output variables generation
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(TinyXML DEFAULT_MSG TinyXML_LIBRARY
TinyXML_INCLUDE_DIR)
set(TinyXML_FOUND ${TINYXML_FOUND}) # Enforce case-correctness: Set appropriately cased variable...
unset(TINYXML_FOUND) # ...and unset uppercase variable generated by find_package_handle_standard_args
if(TinyXML_FOUND)
set(TinyXML_INCLUDE_DIRS ${TinyXML_INCLUDE_DIR})
set(TinyXML_LIBRARIES ${TinyXML_LIBRARY})
endif()

@ -115,8 +115,8 @@ endif()
# set up versioning.
set(DF_VERSION "0.43.03")
SET(DFHACK_RELEASE "alpha1")
SET(DFHACK_PRERELEASE TRUE)
SET(DFHACK_RELEASE "r1")
SET(DFHACK_PRERELEASE FALSE)
set(DFHACK_VERSION "${DF_VERSION}-${DFHACK_RELEASE}")
@ -195,7 +195,22 @@ include_directories(depends/protobuf)
include_directories(depends/lua/include)
include_directories(depends/md5)
include_directories(depends/jsoncpp)
# Support linking against external tinyxml
# If we find an external tinyxml, set the DFHACK_TINYXML variable to "tinyxml"
# Otherwise, set it to "dfhack-tinyxml"
option(EXTERNAL_TINYXML "Choose to link against external TinyXML" OFF)
if(EXTERNAL_TINYXML)
find_package(TinyXML REQUIRED)
if(NOT TinyXML_FOUND)
message(SEND_ERROR "Could not find an external TinyXML, consider setting EXTERNAL_TINYXML to OFF.")
endif()
SET(DFHACK_TINYXML "tinyxml")
else()
include_directories(depends/tinyxml)
SET(DFHACK_TINYXML "dfhack-tinyxml")
endif()
include_directories(depends/tthread)
include_directories(${ZLIB_INCLUDE_DIRS})
include_directories(depends/clsocket/src)
@ -219,6 +234,8 @@ IF(BUILD_PLUGINS)
add_subdirectory (plugins)
endif()
add_subdirectory(scripts)
find_package(Sphinx QUIET)
if (BUILD_DOCS)
if (NOT SPHINX_FOUND)
@ -230,12 +247,12 @@ if (BUILD_DOCS)
"${CMAKE_CURRENT_SOURCE_DIR}/docs/images/*.png"
"${CMAKE_CURRENT_SOURCE_DIR}/docs/styles/*"
"${CMAKE_CURRENT_SOURCE_DIR}/conf.py"
"${CMAKE_CURRENT_SOURCE_DIR}/library/scripts/about.txt"
"${CMAKE_CURRENT_SOURCE_DIR}/library/scripts/*/about.txt"
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/about.txt"
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/*/about.txt"
)
file(GLOB_RECURSE SPHINX_SCRIPT_DEPS
"${CMAKE_CURRENT_SOURCE_DIR}/library/scripts/*.lua"
"${CMAKE_CURRENT_SOURCE_DIR}/library/scripts/*.rb"
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/*.lua"
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/*.rb"
)
set(SPHINX_DEPS ${SPHINX_DEPS} ${SPHINX_SCRIPT_DEPS}
"${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.rst"

@ -30,8 +30,8 @@ Changelog
.. contents::
:depth: 2
DFHack future
=============
DFHack 0.43.03-r1
=================
Lua
---
@ -39,18 +39,35 @@ Lua
New Features
------------
- `gui/gm-editor` it's now possible to insert default types to containers. For primitive types leave the type entry empty, for references use ``*``.
- `add-thought`: allow syndrome name as ``-thought`` argument
- `gui/gm-editor`
- Added ability to insert default types into containers. For primitive types leave the type entry empty, and for references use ``*``.
- Added ``shift-esc`` binding to fully exit from editor
- Added ``gui/gm-editor toggle`` command to toggle editor visibility (saving position)
- `modtools/create-unit`:
- Added an option to attach units to an existing wild animal population
- Added an option to attach units to a map feature
Fixes
-----
- `autofarm`: Can now handle crops that grow for more than a season
- `combine-plants`: Fixed recursion into sub-containers
- `createitem`: Now moves multiple created items to cursor correctly
- `exportlegends`: Improved handling of unknown enum items (fixes many errors)
- `gui/create-item`: Fixed quality when creating multiple items
- `gui/mod-manager`: Fixed error when mods folder doesn't exist
- `modtools/item-trigger`: Fixed handling of items with subtypes
- `stockflow`:
- Can order metal mechanisms
- Fixed material category of thread-spinning jobs
Misc Improvements
-----------------
- The built-in ``ls`` command now wraps the descriptions of commands
- `catsplosion`: now a lua script instead of a plugin
- `fix/diplomats`: replaces ``fixdiplomats``
- `fix/merchants`: replaces ``fixmerchants``

@ -52,7 +52,7 @@ def document_scripts():
"""
# First, we collect the commands and paths to include in our docs
scripts = []
for root, _, files in os.walk('library/scripts'):
for root, _, files in os.walk('scripts'):
scripts.extend(doc_dir(root, files))
# Next we split by type and create include directives sorted by command
kinds = {'base': [], 'devel': [], 'fix': [], 'gui': [], 'modtools': []}
@ -84,7 +84,7 @@ def write_script_docs():
'modtools': 'Scripts for Modders'}
for k in head:
title = ('.. _{k}:\n\n{l}\n{t}\n{l}\n\n'
'.. include:: /library/scripts/{a}about.txt\n\n'
'.. include:: /scripts/{a}about.txt\n\n'
'.. contents::\n\n').format(
k=k, t=head[k],
l=len(head[k])*'#',

@ -2,7 +2,12 @@
add_subdirectory(lua)
add_subdirectory(md5)
add_subdirectory(protobuf)
# Don't build tinyxml if it's being externally linked against.
if(NOT TinyXML_FOUND)
add_subdirectory(tinyxml)
endif()
add_subdirectory(tthread)
add_subdirectory(jsoncpp)
# build clsocket static and only as a dependency. Setting those options here overrides its own default settings.

@ -1,3 +1,5 @@
if(NOT TinyXML_FOUND)
project(dfhack-tinyxml)
ADD_LIBRARY(dfhack-tinyxml STATIC EXCLUDE_FROM_ALL tinystr.cpp tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp)
IDE_FOLDER(dfhack-tinyxml "Depends")
endif()

@ -35,7 +35,21 @@ To get the latest development code (develop branch), clone as above and then::
You must run ``git submodule update`` every time you change Git branch,
for example when switching between master and develop branches and back.
If a submodule only exists on the newer branch, you also need to run
``git submodule update --init``. Failure to do this may result in strange
build errors or "not a known DF version" errors.
**Important note regarding very old git versions**
If you are using git 1.8.0 or older, and cloned DFHack before commit 85a920d
(around DFHack v0.43.03-alpha1), you may run into fatal git errors when updating
submodules after switching branches. This is due to those versions of git being
unable to handle our change from "scripts/3rdparty/name" submodules to a single
"scripts" submodule. This may be fixable by renaming .git/modules/scripts to
something else and re-running ``git submodule update --init`` on the branch with
the single scripts submodule (and running it again when switching back to the
one with multiple submodules, if necessary), but it is usually much simpler to
upgrade your git version.
Contributing to DFHack
======================
@ -47,6 +61,8 @@ and whenever you need help.
.. _IRC: https://webchat.freenode.net/?channels=dfhack
(Note: for submodule issues, please see the above instructions first!)
For lots more details on contributing to DFHack, including pull requests, code format,
and more, please see `contributing-code`.

@ -269,12 +269,12 @@ IF(UNIX)
ENDIF()
IF(APPLE)
SET(PROJECT_LIBS dl dfhack-md5 dfhack-tinyxml dfhack-tinythread)
SET(PROJECT_LIBS dl dfhack-md5 ${DFHACK_TINYXML} dfhack-tinythread)
ELSEIF(UNIX)
SET(PROJECT_LIBS rt dl dfhack-md5 dfhack-tinyxml dfhack-tinythread)
SET(PROJECT_LIBS rt dl dfhack-md5 ${DFHACK_TINYXML} dfhack-tinythread)
ELSE(WIN32)
#FIXME: do we really need psapi?
SET(PROJECT_LIBS psapi dfhack-md5 dfhack-tinyxml dfhack-tinythread)
SET(PROJECT_LIBS psapi dfhack-md5 ${DFHACK_TINYXML} dfhack-tinythread)
ENDIF()
ADD_LIBRARY(dfhack-version STATIC DFHackVersion.cpp)
@ -407,13 +407,6 @@ install(DIRECTORY lua/
DESTINATION ${DFHACK_LUA_DESTINATION}
FILES_MATCHING PATTERN "*.lua")
#install(DIRECTORY ${dfhack_SOURCE_DIR}/scripts
# DESTINATION ${DFHACK_DATA_DESTINATION}
# FILES_MATCHING PATTERN "*.lua"
# PATTERN "*.rb"
# PATTERN "3rdparty" EXCLUDE
# )
install(DIRECTORY ${dfhack_SOURCE_DIR}/patches
DESTINATION ${DFHACK_DATA_DESTINATION}
FILES_MATCHING PATTERN "*.dif")
@ -434,5 +427,3 @@ if(BUILD_DEVEL)
add_subdirectory (doc)
ENDIF()
endif()
add_subdirectory(scripts)

@ -1484,8 +1484,35 @@ bool Core::Init()
vinfo = p->getDescriptor();
if(!vinfo || !p->isIdentified())
{
if (!Version::git_xml_match())
{
const char *msg = (
"*******************************************************\n"
"* BIG, UGLY ERROR MESSAGE *\n"
"*******************************************************\n"
"\n"
"This DF version is missing from hack/symbols.xml, and\n"
"you have compiled DFHack with a df-structures (xml)\n"
"version that does *not* match the version tracked in git.\n"
"\n"
"If you are not actively working on df-structures and you\n"
"expected DFHack to work, you probably forgot to run\n"
"\n"
" git submodule update\n"
"\n"
"If this does not sound familiar, read Compile.rst and \n"
"recompile.\n"
"More details can be found in stderr.log in this folder.\n"
);
cout << msg << endl;
cerr << msg << endl;
fatal("Not a known DF version - XML version mismatch (see console or stderr.log)");
}
else
{
fatal("Not a known DF version.\n");
}
errorstate = true;
delete p;
p = NULL;

@ -1 +0,0 @@
Subproject commit b67885c0c07931a402a3b642a4e2468f14782058

@ -1 +1 @@
Subproject commit b9178de68bd67442ff720f18b04d222302ce9f8c
Subproject commit 7d312334c320022cd6275cddcdb8a64d4ed8d722

@ -492,6 +492,14 @@ message BpAppearanceModifier
optional int32 mod_max = 3;
}
message TissueRaw
{
optional string id = 1;
optional string name = 2;
optional MatPair material = 3;
optional string subordinate_to_tissue = 4;
}
message CasteRaw
{
optional int32 index = 1;
@ -524,6 +532,7 @@ message CreatureRaw
optional ColorDefinition color = 8;
optional int32 adultsize = 9;
repeated CasteRaw caste = 10;
repeated TissueRaw tissues = 11;
}
message CreatureRawList

@ -62,6 +62,7 @@
#include "df/unit.h"
#include "df/creature_raw.h"
#include "df/caste_raw.h"
#include "df/tissue.h"
#include "df/enabler.h"
#include "df/graphic.h"
@ -2409,6 +2410,21 @@ static command_result GetCreatureRaws(color_ostream &stream, const EmptyMessage
send_caste->set_description(orig_caste->description);
send_caste->set_adult_size(orig_caste->misc.adult_size);
}
for (int j = 0; j < orig_creature->tissue.size(); j++)
{
auto orig_tissue = orig_creature->tissue[j];
auto send_tissue = send_creature->add_tissues();
send_tissue->set_id(orig_tissue->id);
send_tissue->set_name(orig_tissue->tissue_name_singular);
send_tissue->set_subordinate_to_tissue(orig_tissue->subordinate_to_tissue);
auto send_mat = send_tissue->mutable_material();
send_mat->set_mat_index(orig_tissue->mat_index);
send_mat->set_mat_type(orig_tissue->mat_type);
}
}
return CR_OK;

@ -0,0 +1 @@
Subproject commit b9f223612bbcebfa8aa3de368fd5deadc1d4589d