might work good on cmake+msvc now
authorPerttu Ahola <celeron55@gmail.com>
Tue, 15 Feb 2011 18:53:29 +0000 (20:53 +0200)
committerPerttu Ahola <celeron55@gmail.com>
Tue, 15 Feb 2011 18:53:29 +0000 (20:53 +0200)
CMakeLists.txt
cmake/Modules/FindIrrlicht.cmake
data/stone.png
doc/README.txt
minetest.conf.example
src/CMakeLists.txt
src/defaultsettings.cpp
src/tile.cpp

index 0e218990c22678d2ac8248e8e939d643b2ef5f54..a0f248d13b9db22defa37c6d27e1372ae1881bc5 100644 (file)
@@ -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")
 
index 01e7088c9fb0f7ed3bc524050fbab9251b3c0a97..a5d0bdd0b6747e9c1efddb54d6d0a13c7c893318 100644 (file)
@@ -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
 )
index 1d8aee9d59637b94c54ec9beff029bc3006e2de4..c7a453e3f7be95a2dd091542441108ad05b1bca5 100644 (file)
Binary files a/data/stone.png and b/data/stone.png differ
index 7c672478b7035602687f035df067c50250227c15..fe64487707ce13b9864a04650c21a06066708159 100644 (file)
@@ -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
 -----------------------
index 37c93a5a2479a1a26bd9163479cf873bd73f32d6..24865da7d8e10371bffa10661366e5a03681e5f7 100644 (file)
@@ -26,6 +26,8 @@
 #new_style_water = true
 #new_style_leaves = true
 #frametime_graph = false
+#enable_texture_atlas = true
+#texture_path =
 
 # Server side stuff
 
index 6d9601c6548f7916a1654c9224aca80e634e6999..3fccce665458121187c2ab5ff6c697ba1226d7b9 100644 (file)
@@ -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()
index 63163add9344a089f574e8d73381820ef3990847..72f63d9fb64e55e84789053790c5191057b90be6 100644 (file)
@@ -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");
index 1bf09caffddda46b5fddffb90b7c97c284c1b82c..aa4b3d042463b473356d74c6743bb8fecff9203b 100644 (file)
@@ -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;