aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-02-15 20:53:29 +0200
committerPerttu Ahola <celeron55@gmail.com>2011-02-15 20:53:29 +0200
commita0e8f3afd3444e4ad7e8647672c51555b74bd218 (patch)
tree7b84b3c73b24f6d6c78963a1691a9da6a570d759
parent95c88d258b46dde75a17a0d711b436f7063ae496 (diff)
downloadminetest-a0e8f3afd3444e4ad7e8647672c51555b74bd218.tar.gz
minetest-a0e8f3afd3444e4ad7e8647672c51555b74bd218.tar.bz2
minetest-a0e8f3afd3444e4ad7e8647672c51555b74bd218.zip
might work good on cmake+msvc now
-rw-r--r--CMakeLists.txt13
-rw-r--r--cmake/Modules/FindIrrlicht.cmake4
-rw-r--r--data/stone.pngbin951 -> 1563 bytes
-rw-r--r--doc/README.txt99
-rw-r--r--minetest.conf.example2
-rw-r--r--src/CMakeLists.txt12
-rw-r--r--src/defaultsettings.cpp2
-rw-r--r--src/tile.cpp27
8 files changed, 121 insertions, 38 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0e218990c..a0f248d13 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -77,12 +77,13 @@ set(CPACK_PACKAGE_CONTACT "Perttu Ahola <celeron55@gmail.com>")
if(WIN32)
# For some reason these aren't copied otherwise
- if(BUILD_CLIENT)
- install(FILES bin/minetest.exe DESTINATION bin)
- endif()
- if(BUILD_SERVER)
- install(FILES bin/minetestserver.exe DESTINATION bin)
- endif()
+ # NOTE: For some reason now it seems to work without these
+ #if(BUILD_CLIENT)
+ # install(FILES bin/minetest.exe DESTINATION bin)
+ #endif()
+ #if(BUILD_SERVER)
+ # install(FILES bin/minetestserver.exe DESTINATION bin)
+ #endif()
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-win32")
diff --git a/cmake/Modules/FindIrrlicht.cmake b/cmake/Modules/FindIrrlicht.cmake
index 01e7088c9..a5d0bdd0b 100644
--- a/cmake/Modules/FindIrrlicht.cmake
+++ b/cmake/Modules/FindIrrlicht.cmake
@@ -22,7 +22,7 @@ endif()
FIND_PATH(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h
PATHS
- "${IRRLICHT_SOURCE_DIR_INCLUDE}"
+ ${IRRLICHT_SOURCE_DIR_INCLUDE}
/usr/local/include/irrlicht
/usr/include/irrlicht
)
@@ -31,7 +31,7 @@ FIND_PATH(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h
FIND_LIBRARY(IRRLICHT_LIBRARY NAMES libIrrlicht.a Irrlicht
PATHS
- "${IRRLICHT_SOURCE_DIR_LIBS}"
+ ${IRRLICHT_SOURCE_DIR_LIBS}
/usr/local/lib
/usr/lib
)
diff --git a/data/stone.png b/data/stone.png
index 1d8aee9d5..c7a453e3f 100644
--- a/data/stone.png
+++ b/data/stone.png
Binary files differ
diff --git a/doc/README.txt b/doc/README.txt
index 7c672478b..fe6448770 100644
--- a/doc/README.txt
+++ b/doc/README.txt
@@ -1,7 +1,7 @@
Minetest-c55
---------------
An InfiniMiner/Minecraft inspired game.
-Copyright (c) 2010 Perttu Ahola <celeron55@gmail.com>
+Copyright (c) 2010-2011 Perttu Ahola <celeron55@gmail.com>
This is a development version:
------------------------------
@@ -9,11 +9,6 @@ This is a development version:
- Please report any bugs to me. That way I can fix them to the next release.
- debug.txt is useful when the game crashes.
-Public servers:
----------------
- kray.dy.fi :30000 (friend's server)
- celeron.55.lt :30000 (my own server)
-
Controls:
---------
- See the in-game pause menu
@@ -22,7 +17,7 @@ Map directory:
--------------
- Map is stored in a directory, which can be removed to generate a new map.
- There is a command-line option for it: --map-dir
-- As default, it is located in:
+- For a RUN_IN_PLACE build, it is located in:
../map
- Otherwise something like this:
Windows: C:\Documents and Settings\user\Application Data\minetest\map
@@ -35,7 +30,7 @@ Configuration file:
- Path to file can be passed as a parameter to the executable:
--config <path-to-file>
- Defaults:
- - If built with -DRUN_IN_PLACE:
+ - If built with -DRUN_IN_PLACE=1:
../minetest.conf
../../minetest.conf
- Otherwise something like this:
@@ -73,21 +68,89 @@ $ ./minetest
- Note that the Debug build is considerably slower
Compiling on Windows:
-- NOTE: Seems that the CMake build system produces executables that don't work
- for many people. The old build system is still included, but it's not
- documented anywhere.
-- You need CMake, Irrlicht, Zlib and Visual Studio or MinGW
- - you can get zlibwapi.lib from a file called zlib125dll.zip
-- NOTE: Probably it will not work easily and you will need to fix some stuff.
+---------------------
+
+- You need:
+ * CMake:
+ http://www.cmake.org/cmake/resources/software.html
+ * MinGW or Visual Studio
+ http://www.mingw.org/
+ http://msdn.microsoft.com/en-us/vstudio/default
+ * Irrlicht SDK 1.7:
+ http://irrlicht.sourceforge.net/downloads.html
+ * Zlib headers (zlib125.zip)
+ http://www.winimage.com/zLibDll/index.html
+ * Zlib library (zlibwapi.lib and zlibwapi.dll from zlib125dll.zip):
+ http://www.winimage.com/zLibDll/index.html
+ * And, of course, Minetest-c55:
+ http://celeron.55.lt/~celeron55/minetest/download
- Steps:
+ - Select a directory called DIR hereafter in which you will operate.
+ - Make sure you have CMake and a compiler installed.
+ - Download all the other stuff to DIR and extract them into there. All those
+ packages contain a nice base directory in them, which should end up being
+ the direct subdirectories of DIR.
+ - You will end up with a directory structure like this (+=dir, -=file):
+ -----------------
+ + DIR
+ - zlib-1.2.5.tar.gz
+ - zlib125dll.zip
+ - irrlicht-1.7.1.zip
+ - 110214175330.zip (or whatever, this is the minetest source)
+ + zlib-1.2.5
+ - zlib.h
+ + win32
+ ...
+ + zlib125dll
+ - readme.txt
+ + dll32
+ ...
+ + irrlicht-1.7.1
+ + lib
+ + include
+ ...
+ + minetest
+ + src
+ + doc
+ - CMakeLists.txt
+ ...
+ -----------------
- Start up the CMake GUI
+ - Select "Browse Source..." and select DIR/minetest
+ - Now, if using MSVC:
+ - Select "Browse Build..." and select DIR/minetest-build
+ - Else if using MinGW:
+ - Select "Browse Build..." and select DIR/minetest
+ - Select "Configure"
- Select your compiler
- - Hit "Configure"
- - Set up some options and paths
+ - It will warn about missing stuff, ignore that at this point. (later don't)
+ - Make sure the configuration is as follows
+ (note that the versions may differ for you):
+ -----------------
+ BUILD_CLIENT [X]
+ BUILD_SERVER [ ]
+ CMAKE_BUILD_TYPE Release
+ CMAKE_INSTALL_PREFIX DIR/minetest-install
+ IRRLICHT_SOURCE_DIR DIR/irrlicht-1.7.1
+ RUN_IN_PLACE [X]
+ WARN_ALL [ ]
+ ZLIB_DLL DIR/zlib125dll/dll32/zlibwapi.dll
+ ZLIB_INCLUDE_DIR DIR/zlib-1.2.5
+ ZLIB_LIBRARIES DIR/zlib125dll/dll32/zlibwapi.lib
+ -----------------
- Hit "Configure"
- Hit "Generate"
- - MSVC: Open the generated .sln and build it
- MinGW: Browse to the build directory and run 'make'
+ If using MSVC:
+ - Open the generated minetest.sln
+ - Build the ALL_BUILD project
+ - Build the INSTALL project
+ - You should now have a working game executable in
+ DIR/minetest-install/bin/minetest.exe
+ - Additionally you may create a zip package by building the PACKAGE project.
+ If using MinGW:
+ - Using a command line, browse to the build directory and run 'make'
+ - You should now have a working game executable in
+ DIR/minetest/bin/minetest.exe
License of Minetest-c55
-----------------------
diff --git a/minetest.conf.example b/minetest.conf.example
index 37c93a5a2..24865da7d 100644
--- a/minetest.conf.example
+++ b/minetest.conf.example
@@ -26,6 +26,8 @@
#new_style_water = true
#new_style_leaves = true
#frametime_graph = false
+#enable_texture_atlas = true
+#texture_path =
# Server side stuff
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6d9601c65..3fccce665 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -5,7 +5,9 @@ if(RUN_IN_PLACE)
add_definitions ( -DRUN_IN_PLACE )
endif(RUN_IN_PLACE)
-set(USE_GPROF 0 CACHE BOOL "Use -pg flag for g++")
+if(NOT MSVC)
+ set(USE_GPROF 0 CACHE BOOL "Use -pg flag for g++")
+endif()
# Use cmake_config.h
add_definitions ( -DUSE_CMAKE_CONFIG_H )
@@ -22,9 +24,9 @@ if(WIN32)
set(ZLIB_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/../../zlib/zlib-1.2.5"
CACHE PATH "Zlib include directory")
set(ZLIB_LIBRARIES "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.lib"
- CACHE PATH "Path to zlibwapi.lib")
+ CACHE FILEPATH "Path to zlibwapi.lib")
set(ZLIB_DLL "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.dll"
- CACHE PATH "Path to zlibwapi.dll (for installation)")
+ CACHE FILEPATH "Path to zlibwapi.dll (for installation)")
else()
# Unix probably
if(BUILD_CLIENT)
@@ -149,7 +151,7 @@ if(MSVC)
if(BUILD_SERVER)
set_target_properties(minetestserver PROPERTIES
- COMPILE_FLAGS "/D SERVER")
+ COMPILE_DEFINITIONS "/D SERVER")
endif(BUILD_SERVER)
else()
@@ -170,7 +172,7 @@ else()
if(BUILD_SERVER)
set_target_properties(minetestserver PROPERTIES
- COMPILE_FLAGS "-DSERVER")
+ COMPILE_DEFINITIONS "-DSERVER")
endif(BUILD_SERVER)
endif()
diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp
index 63163add9..72f63d9fb 100644
--- a/src/defaultsettings.cpp
+++ b/src/defaultsettings.cpp
@@ -42,6 +42,8 @@ void set_default_settings()
g_settings.setDefault("new_style_water", "false");
g_settings.setDefault("new_style_leaves", "true");
g_settings.setDefault("frametime_graph", "false");
+ g_settings.setDefault("enable_texture_atlas", "true");
+ g_settings.setDefault("texture_path", "");
g_settings.setDefault("free_move", "false");
g_settings.setDefault("continuous_forward", "false");
diff --git a/src/tile.cpp b/src/tile.cpp
index 1bf09caff..aa4b3d042 100644
--- a/src/tile.cpp
+++ b/src/tile.cpp
@@ -19,6 +19,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "tile.h"
#include "debug.h"
+#include "main.h" // for g_settings
+
+inline std::string getTexturePath(std::string filename)
+{
+ std::string texture_path = g_settings.get("texture_path");
+ if(texture_path == "")
+ return porting::getDataPath(filename.c_str());
+ else
+ return texture_path + '/' + filename;
+}
TextureSource::TextureSource(IrrlichtDevice *device):
m_device(device),
@@ -36,7 +46,10 @@ TextureSource::TextureSource(IrrlichtDevice *device):
m_name_to_id[""] = 0;
// Build main texture atlas
- buildMainAtlas();
+ if(g_settings.getBool("enable_texture_atlas"))
+ buildMainAtlas();
+ else
+ dstream<<"INFO: Not building texture atlas."<<std::endl;
}
TextureSource::~TextureSource()
@@ -412,7 +425,7 @@ void TextureSource::buildMainAtlas()
std::string name = sourcelist[i];
/*video::IImage *img = driver->createImageFromFile(
- porting::getDataPath(name.c_str()).c_str());
+ getTexturePath(name.c_str()).c_str());
if(img == NULL)
continue;
@@ -517,7 +530,7 @@ void TextureSource::buildMainAtlas()
Write image to file so that it can be inspected
*/
/*driver->writeImageToFile(atlas_img,
- porting::getDataPath("main_atlas.png").c_str());*/
+ getTexturePath("main_atlas.png").c_str());*/
}
video::IImage* generate_image_from_scratch(std::string name,
@@ -596,7 +609,7 @@ bool generate_image(std::string part_of_name, video::IImage *& baseimg,
if(part_of_name[0] != '[')
{
// A normal texture; load it from a file
- std::string path = porting::getDataPath(part_of_name.c_str());
+ std::string path = getTexturePath(part_of_name.c_str());
dstream<<"INFO: getTextureIdDirect(): Loading path \""<<path
<<"\""<<std::endl;
@@ -710,7 +723,7 @@ bool generate_image(std::string part_of_name, video::IImage *& baseimg,
core::position2d<s32> pos_other(0, 16 * progression);
video::IImage *crackimage = driver->createImageFromFile(
- porting::getDataPath("crack.png").c_str());
+ getTexturePath("crack.png").c_str());
if(crackimage)
{
@@ -755,7 +768,7 @@ bool generate_image(std::string part_of_name, video::IImage *& baseimg,
<<"\" to combined ("<<x<<","<<y<<")"
<<std::endl;
video::IImage *img = driver->createImageFromFile(
- porting::getDataPath(filename.c_str()).c_str());
+ getTexturePath(filename.c_str()).c_str());
if(img)
{
core::dimension2d<u32> dim = img->getDimension();
@@ -814,7 +827,7 @@ bool generate_image(std::string part_of_name, video::IImage *& baseimg,
std::string filename = part_of_name.substr(9);
- std::string path = porting::getDataPath(filename.c_str());
+ std::string path = getTexturePath(filename.c_str());
dstream<<"INFO: getTextureIdDirect(): Loading path \""<<path
<<"\""<<std::endl;