commit
d6eb095f27
|
@ -2,11 +2,11 @@ language: cpp
|
|||
compiler:
|
||||
- gcc
|
||||
- clang
|
||||
script: mkdir build; cd build; cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON -DOPENAL_SOUND=0 -DTESTS=1 && make all doc test && DESTDIR=. make install
|
||||
script: mkdir build; cd build; cmake .. -DCMAKE_VERBOSE_MAKEFILE=ON -DOPENAL_SOUND=1 -DTESTS=1 && make all doc test && DESTDIR=. make install
|
||||
before_install:
|
||||
- git submodule update --init --recursive
|
||||
- sudo add-apt-repository ppa:mapnik/boost -y
|
||||
- sudo apt-get update -qq
|
||||
- sudo apt-get install -qq --no-install-recommends libgl1-mesa-dev libsdl1.2-dev libsdl-image1.2-dev libsdl-ttf2.0-dev libpng12-dev libglew-dev libboost-dev libboost-system-dev libboost-filesystem-dev libboost-regex-dev google-mock libgtest-dev doxygen graphviz po4a librsvg2-bin libsndfile-dev
|
||||
- sudo apt-get install -qq --no-install-recommends libgl1-mesa-dev libsdl1.2-dev libsdl-image1.2-dev libsdl-ttf2.0-dev libpng12-dev libglew-dev libboost-dev libboost-system-dev libboost-filesystem-dev libboost-regex-dev google-mock libgtest-dev doxygen graphviz po4a librsvg2-bin libsndfile-dev libopenal-dev
|
||||
notifications:
|
||||
email: false
|
||||
|
|
|
@ -13,7 +13,7 @@ project(colobot C CXX)
|
|||
set(COLOBOT_VERSION_CODENAME "Gold")
|
||||
set(COLOBOT_VERSION_MAJOR 0)
|
||||
set(COLOBOT_VERSION_MINOR 1)
|
||||
set(COLOBOT_VERSION_REVISION 1)
|
||||
set(COLOBOT_VERSION_REVISION 2)
|
||||
|
||||
# Used on official releases
|
||||
set(COLOBOT_VERSION_RELEASE_CODENAME "-alpha")
|
||||
|
@ -45,12 +45,18 @@ if("${CMAKE_SYSTEM_NAME}" MATCHES "Windows")
|
|||
set(PLATFORM_LINUX 0)
|
||||
set(PLATFORM_MACOSX 0)
|
||||
set(PLATFORM_OTHER 0)
|
||||
|
||||
# Platform-dependent implementation of system.h
|
||||
set(SYSTEM_CPP_MODULE "system_windows.cpp")
|
||||
elseif("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
|
||||
message(STATUS "Build for Linux system")
|
||||
set(PLATFORM_WINDOWS 0)
|
||||
set(PLATFORM_LINUX 1)
|
||||
set(PLATFORM_MACOSX 0)
|
||||
set(PLATFORM_OTHER 0)
|
||||
|
||||
# Platform-dependent implementation of system.h
|
||||
set(SYSTEM_CPP_MODULE "system_linux.cpp")
|
||||
elseif("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
|
||||
message(STATUS "Build for Mac OSX system")
|
||||
set(PLATFORM_WINDOWS 0)
|
||||
|
@ -58,6 +64,9 @@ elseif("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
|
|||
set(PLATFORM_MACOSX 1)
|
||||
set(PLATFORM_OTHER 0)
|
||||
|
||||
# Platform-dependent implementation of system.h
|
||||
set(SYSTEM_CPP_MODULE "system_macosx.cpp")
|
||||
|
||||
set(USE_SDL_MAIN 1) # fixes SDL_main
|
||||
else()
|
||||
message(STATUS "Build for other system")
|
||||
|
@ -65,6 +74,9 @@ else()
|
|||
set(PLATFORM_LINUX 0)
|
||||
set(PLATFORM_MACOSX 0)
|
||||
set(PLATFORM_OTHER 1)
|
||||
|
||||
# Platform-dependent implementation of system.h
|
||||
set(SYSTEM_CPP_MODULE "system_other.cpp")
|
||||
endif()
|
||||
|
||||
|
||||
|
@ -309,6 +321,12 @@ if(PLATFORM_WINDOWS)
|
|||
set(COLOBOT_INSTALL_I18N_DIR ${CMAKE_INSTALL_PREFIX}/lang CACHE PATH "Colobot translations directory")
|
||||
set(COLOBOT_INSTALL_DOC_DIR ${CMAKE_INSTALL_PREFIX}/doc CACHE PATH "Colobot documentation directory")
|
||||
endif()
|
||||
elseif(PLATFORM_MACOSX)
|
||||
set(COLOBOT_INSTALL_BIN_DIR ../MacOS CACHE STRING "Colobot binary directory")
|
||||
set(COLOBOT_INSTALL_LIB_DIR ../MacOS CACHE STRING "Colobot libraries directory")
|
||||
set(COLOBOT_INSTALL_DATA_DIR . CACHE STRING "Colobot shared data directory")
|
||||
set(COLOBOT_INSTALL_I18N_DIR i18n CACHE SRING "Colobot translations directory")
|
||||
set(COLOBOT_INSTALL_DOC_DIR doc CACHE STRING "Colobot documentation directory")
|
||||
else()
|
||||
set(COLOBOT_INSTALL_BIN_DIR ${CMAKE_INSTALL_PREFIX}/games CACHE PATH "Colobot binary directory")
|
||||
set(COLOBOT_INSTALL_LIB_DIR ${CMAKE_INSTALL_PREFIX}/lib/colobot CACHE PATH "Colobot libraries directory")
|
||||
|
|
|
@ -29,7 +29,6 @@ To cross-compile Colobot using MXE:
|
|||
* check-requirements
|
||||
* expat
|
||||
* flac
|
||||
* flac
|
||||
* freetype
|
||||
* gcc
|
||||
* gcc-gmp
|
||||
|
@ -55,15 +54,25 @@ To cross-compile Colobot using MXE:
|
|||
* xz
|
||||
* zlib
|
||||
|
||||
4. Now `cd` to directory with colobot sources. To cross-compile a CMake project,
|
||||
you have to specify a CMake toolchain file. MXE has such file in MXE's directory:
|
||||
`usr/i686-pc-mingw32/share/cmake/mxe-conf.cmake`
|
||||
Toolchain file is specified thus:`cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/mxe-conf.cmake .`
|
||||
4. Now `cd` to directory with colobot sources.
|
||||
It is recommended that you create a separate directory for out-of-source build:
|
||||
`mkdir build-mxe && cd build-mxe`
|
||||
|
||||
In order to cross-compile a CMake project, you have to specify a CMake toolchain file.
|
||||
MXE has such file in MXE's directory: `usr/i686-pc-mingw32/share/cmake/mxe-conf.cmake`
|
||||
So you should use the following cmake command: `cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/mxe-conf.cmake ..`
|
||||
CMake files in Colobot should detect that MXE is being used and they will
|
||||
modify flags, paths, etc. as required. You should not run into any problems.
|
||||
*Note:* you may also want to use a separate out-of-source build directory for MXE.
|
||||
|
||||
5. `make` should now compile the game with the resulting exe in `bin/colobot.exe`.
|
||||
5. `make` should now compile the game with the resulting executable as `colobot.exe`.
|
||||
The exe is linked against all libraries *statically*, so there are no dependencies
|
||||
on external DLLs. However, the resulting binary will be huge with all these libraries,
|
||||
so you might want to do: `strip bin/colobot.exe`.
|
||||
so you might want to do: `strip colobot.exe`.
|
||||
|
||||
6. If you want to create a Colobot installer, you need to additionally build 'nsis'
|
||||
in MXE. Then you can create the NSIS installer that way:
|
||||
`PATH=/path/to/mxe/binaries:$PATH make package`
|
||||
where `/path/to/mxe/binaries` is path to cross-compiled MXE binaries available
|
||||
in MXE's directory under `usr/i686-pc-mingw32/bin`.
|
||||
This will create a versioned colobot-$version.exe installer that will install Colobot
|
||||
in system directories, add a shortcut in the start menu and setup an uninstaller.
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
# Compile and install instructions on MacOSX
|
||||
|
||||
To compile Colobot on MacOS X, you need to first get all tools, all
|
||||
building dependencies (including the recompilation of some of them), and
|
||||
finally compile colobot.
|
||||
|
||||
* Install git from [git-osx-installer on Google Code](https://code.google.com/p/git-osx-installer/)
|
||||
* Install Xcode through the Mac AppStore
|
||||
* Accept the Xcode license
|
||||
|
||||
xcodebuild -license
|
||||
|
||||
* Download and install Apple's Command Line Developer Tools from within Xcode (Preferences, Download, Components)
|
||||
* Download and install [Mac Ports](http://www.macports.org/install.php#requirements)
|
||||
* Install GCC 4.8 through MacPorts
|
||||
|
||||
sudo port install gcc48
|
||||
|
||||
* Install all colobot build depends
|
||||
|
||||
sudo port install cmake libsdl libsdl_image libsdl_ttf boost libsndfile glew libicns librsvg
|
||||
|
||||
> [po4a](http://po4a.alioth.debian.org/) should also be installed for the translation of levels, but the [MacPorts' Portfiles have not been accepted yet](http://trac.macports.org/ticket/41227).
|
||||
|
||||
* Rebuild libtiff locally
|
||||
|
||||
This is needed because of the following error:
|
||||
|
||||
> libtiff.5.dylib (for architecture x86_64) because larger updated load
|
||||
> commands do not fit (the program must be relinked, and you may need to
|
||||
> use -headerpad or -headerpad_max_install_names)
|
||||
|
||||
MacPorts changed the default linker flag, a simple local rebuild suffices:
|
||||
|
||||
sudo port -ns upgrade --force tiff
|
||||
|
||||
* Rebuild boost with the same gcc that we want to use
|
||||
|
||||
This is needed because boost is compiled against Mac's system libstdc++
|
||||
which is older than the one used by gcc-4.8
|
||||
|
||||
sudo port -ns upgrade --force boost configure.compiler=macports-gcc-4.8
|
||||
|
||||
* Build colobot with gcc-4.8
|
||||
|
||||
mkdir -p build
|
||||
cd build
|
||||
CC=/opt/local/bin/gcc-mp-4.8 CXX=/opt/local/bin/g++-mp-4.8 cmake ..
|
||||
make
|
||||
|
||||
* Build a Colobot drag-n-drop package
|
||||
|
||||
make package
|
||||
|
||||
* Open the package
|
||||
|
||||
open colobot-*.dmg
|
||||
|
||||
* Once opened, drag the Colobot application and drop it in the
|
||||
Application directory. Then just launch it as any other application.
|
160
INSTALL.md
160
INSTALL.md
|
@ -3,15 +3,40 @@
|
|||
## Source and data files
|
||||
|
||||
Colobot source files can be downloaded from Github repository (https://github.com/colobot/colobot). You can either download
|
||||
the repository as a ZIP archive, or, clone the repository using git or a GUI frontent for git.
|
||||
the repository as a ZIP archive, or, clone the repository using git or a GUI frontend for git.
|
||||
|
||||
Make sure that once you download/clone the repository, you have the neeeded data files in `data/` subdirectory.These files
|
||||
Make sure that once you download/clone the repository, you have the needed data files in `data/` subdirectory.These files
|
||||
are provided as git submodule, hosted at a separate Github repository (https://github.com/colobot/colobot-data).
|
||||
If you don't have them, you can either download the repository manually and unpack its content into `data/` or,
|
||||
if you're working with git cloned repository, `git submodule update --init` will download the data submodule repository.
|
||||
|
||||
|
||||
## Compiling on Windows
|
||||
## Important notes
|
||||
|
||||
It is highly recommended that while compiling, you do an out-of-source build, that is create a separate directory where all build files
|
||||
will be created. This isolates the generated CMake files and makes it easy to clean them (simply remove the build directory)
|
||||
as CMake lacks "make clean" command.
|
||||
|
||||
As of 0.1.2-alpha, running the game with source data directory is no longer supported as the data files
|
||||
are now generated to support multiple languages. You have to perform installation, at least of the data files, to a destination
|
||||
directory. If you fail to do that, and try to run the game with source data directory, the game will run, but you will not be able to access
|
||||
any of the missions.
|
||||
|
||||
|
||||
## Compilation
|
||||
|
||||
### Compiling on Windows
|
||||
|
||||
The recommended way of compiling for Windows is using Linux in a cross-compilation environment called MXE.
|
||||
This is the way our build bot service (http://colobot.info/files/compiled.php) prepares the release packages.
|
||||
You can also try to compile with MSYS/MinGW but this is more difficult.
|
||||
|
||||
#### Cross-compiling using MXE
|
||||
|
||||
MXE (M cross environment, http://mxe.cc/) is a very good cross-compiling framework, complete with a suite of libraries
|
||||
that make it extremely easy to port applications to Win32. It runs on pretty much any *nix flavor and generates generic,
|
||||
statically linked Win32 binaries. More information is available in
|
||||
[INSTALL-MXE.md](https://github.com/colobot/colobot/blob/master/INSTALL-MXE.md) file.
|
||||
|
||||
#### Compiling with MSYS/MinGW
|
||||
|
||||
|
@ -19,47 +44,53 @@ If you like challenges ;-), you can try to compile Colobot directly under MSYS/M
|
|||
You need to manually compile about 20 packages and resolve many problems. Fortunately, the developers took pity on you,
|
||||
and provide a download package containing all the necessary libraries and tools.
|
||||
|
||||
To use this package, you must first install a vanilla MSYS/MinGW enviromnent. To do this, download and run
|
||||
To use this package, you must first install a vanilla MSYS/MinGW environment. To do this, download and run
|
||||
mingw-get installer (http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/).
|
||||
When installing, select **all** possible packages in the installer.
|
||||
|
||||
Next, download the development package available at Colobot site (http://colobot.info/) and unpack the files
|
||||
from the archive to MinGW directory. This should provide a working environment, including CMake and
|
||||
Next, download the development package available at Colobot site (http://colobot.info/files/ - files named msys-devpack-*)
|
||||
and unpack the files from the archive to MinGW directory. This should provide a working environment, including CMake and
|
||||
all necessary packages. However, make sure you get the right package. There are slight changes between GCC 4.6 and 4.7,
|
||||
especially with boost library which will result in build failure or error in runtime.
|
||||
|
||||
To compile Colobot, `cd` to directory with sources and run:
|
||||
$ cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release .
|
||||
and then:
|
||||
Once you have installed the development package, run the MSYS shell. This shell works as a hybrid *nix/Windows environment,
|
||||
so you have regular bash commands but can specify paths using Windows syntax: "C:\some\path", CRLF is the endline separator and so forth.
|
||||
CMake should automatically detect this build environment and use the Windows options to compile.
|
||||
|
||||
To compile colobot, change the directory to where you have downloaded the source files:
|
||||
$ cd "C:\path\to\colobot\sources"
|
||||
|
||||
It is recommended that you create a build directory:
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
|
||||
Then you have to configure CMake. You should specify the following options:
|
||||
$ cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="C:\some\directory" ..
|
||||
where "C:\some\directory" is the directory you want to run colobot from. It can be a proper installation path if you want
|
||||
to install it in system, or some temporary directory like "..\colobot-temporary-install" if you just want to try the game.
|
||||
You can also skip this argument and use the default install path: "C:\Program Files\colobot".
|
||||
Make sure you specify "MSYS Makefiles" as the CMake generator because otherwise, the default for Windows is to use MSVC nmake
|
||||
and it will not work.
|
||||
|
||||
Then to compile:
|
||||
$ make
|
||||
|
||||
Everything should compile just fine. If you see any errors, it most likely means missing libraries or invalid installation.
|
||||
Warnings may occur, but are mostly harmless.
|
||||
|
||||
You'll get the binary `colobot.exe`, which you can run directly, pointing it to the data directory:
|
||||
$ colobot.exe -datadir ./data
|
||||
|
||||
You can also install Colobot in your system using
|
||||
Now you need to perform the installation:
|
||||
$ make install
|
||||
|
||||
The default install path is `C:\Program Files\colobot`, but you can change it by adding `-DCMAKE_INSTALL_PREFIX="C:\your\path"`
|
||||
to CMake arguments.
|
||||
You should get all files ready to use under the installation prefix you specified. Run `colobot.exe` and enjoy the game.
|
||||
|
||||
See also "Hints and notes" below on some useful advice.
|
||||
### Compiling on Linux
|
||||
|
||||
#### Cross-compiling using MXE
|
||||
Since there are so many Linux flavors, it is difficult to write generic instructions. However, here is the general gist of what
|
||||
you will need to compile colobot.
|
||||
|
||||
MXE (http://mxe.cc/) is a very good cross-compiling framework, complete with a suite of libraries
|
||||
that make it extremely easy to port applications to Win32. It runs on pretty much any *nix flavor and generates generic,
|
||||
statically linked Win32 binaries. More information is available in INSTALL-MXE.md file.
|
||||
|
||||
|
||||
## Compiling on Linux
|
||||
|
||||
Depending on your distribution, you'll need to install different packages, so here's just an outline, the details will
|
||||
be different for different distros:
|
||||
* recent compiler (GCC >= 4.6 or a newer clang) since we are using some features of C++11.
|
||||
* CMake >= 2.8.
|
||||
You will need:
|
||||
* recent compiler (GCC >= 4.6 or a newer clang) since we are using some features of C++11
|
||||
* CMake >= 2.8
|
||||
* Boost >= 1.51 (header files + components: filesystem and regex)
|
||||
* SDL >= 1.2.10
|
||||
* SDL_image >= 1.2
|
||||
|
@ -71,45 +102,66 @@ be different for different distros:
|
|||
* libvorbis >= 1.3.2
|
||||
* libogg >= 1.3.0
|
||||
* OpenAL (OpenAL-Soft) >= 1.13
|
||||
* po4a >= 0.45 (to generate translated data files)
|
||||
|
||||
Instructions for compiling are universal:
|
||||
$ cmake -DCMAKE_BUILD_TYPE=Release .
|
||||
$ make
|
||||
Make sure you install the packages along with header files (often distributed in separate *-dev packages). If you miss any requirements,
|
||||
CMake should warn you.
|
||||
|
||||
To compile colobot, run your favorite shell and change the directory to where you downloaded colobot source files:
|
||||
$ cd /path/to/colobot/sources
|
||||
|
||||
It is recommended that you create a build directory:
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
|
||||
Now to configure CMake:
|
||||
$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/some/prefix ..
|
||||
where "/some/prefix" is installation prefix where you want to put the game files. It could be a proper installation directory
|
||||
if you want to install colobot in the system or simply temporary directory like "/tmp/colobot-temporary-install" if you just want to try it.
|
||||
You can also use clang as the compiler. In that case, before issuing cmake, set the following variables:
|
||||
$ export CC=clang CXX=clang++
|
||||
|
||||
Then to compile:
|
||||
$ make
|
||||
|
||||
Everything should compile just fine. If you see any errors, it most likely means missing libraries. Warnings may occur,
|
||||
but are mostly harmless.
|
||||
|
||||
You'll get the binary in `bin/colobot`, which you can run directly, pointing it to the data directory:
|
||||
$ bin/colobot -datadir ./data
|
||||
|
||||
To install colobot in the system, you can run:
|
||||
Now you need to install the game files:
|
||||
$ make install
|
||||
|
||||
The default installation path is `/usr/local/` but you can change it by adding `-DCMAKE_INSTALL_PREFIX="/your/custom/path"`
|
||||
to CMake arguments.
|
||||
You can now run the game from the prefix you specified. Note that colobot binary is installed in `games/` subdirectory.
|
||||
So if you provided prefix "/some/prefix", you can run:
|
||||
$ /some/prefix/games/colobot
|
||||
|
||||
See also "Hints and notes" below on some useful advice.
|
||||
### Compiling on MacOS X
|
||||
|
||||
As of 0.1.2-alpha, we have added MacOS X support. See [INSTALL-MacOSX.md](https://github.com/colobot/colobot/blob/master/INSTALL-MacOSX.md)
|
||||
file for details.
|
||||
|
||||
## Other platforms
|
||||
|
||||
The code isn't particularly tied to any compiler or platform, so in theory it should work on any platform provided you have
|
||||
the required libraries there. Also, other compilers than currently supported GCC >= 4.6 and Clang may happen to work with our code.
|
||||
If you can, please try to compile the code on your platform and let us know how it goes.
|
||||
|
||||
|
||||
## Compiling on other platforms
|
||||
## Error reports and debugging
|
||||
|
||||
We haven't checked other platforms yet but the code isn't particularly tied to any compiler or platform, so in theory
|
||||
it should work. If you can, please try to compile the code on your platform and let us know how it goes.
|
||||
Before reporting errors, please make sure you compile the dev branch to make sure that the issue is not yet fixed there. Also, search the
|
||||
existing issues (https://github.com/colobot/colobot/issues) to check if a similar error has not been already reported.
|
||||
|
||||
|
||||
## Hints and notes
|
||||
|
||||
CMake has a very useful feature - out-of-source builds - using a separate directory for the output of CMake and compiler.
|
||||
This way, you can keep clean the directory with your source files. Example of use (starting from directory with sources):
|
||||
$ mkdir build/
|
||||
$ cd build/
|
||||
$ cmake ../
|
||||
$ make
|
||||
|
||||
|
||||
If you want to submit debug reports, please use special Debug and Dev builds (`-DDEV_BUILD=1 -DCMAKE_BUILD_TYPE=Debug`)
|
||||
If you want to submit error reports, please use special Debug and Dev builds (add `-DDEV_BUILD=1 -DCMAKE_BUILD_TYPE=Debug` to CMake arguments)
|
||||
and run the game in debug mode and with logging on higher level (commandline arguments: `-loglevel debug`).
|
||||
Also, `-help` will give full list of available arguments.
|
||||
|
||||
|
||||
## Language support
|
||||
|
||||
In order to run colobot in different language, you need to run with fully installed data files.
|
||||
If you run a system with locale settings set to your language, colobot should auto-detect it and use appropriate language. If that does not happen,
|
||||
you can force a specific language using option `-language xx` where xx is language code like `en` or `de`. `-help` will show all possible settings.
|
||||
|
||||
|
||||
## Help
|
||||
|
||||
If you encounter any problems, you can get help at our forum or IRC channels.
|
||||
|
|
37
README.md
37
README.md
|
@ -2,11 +2,11 @@
|
|||
|
||||
Welcome to the Colobot project code repository
|
||||
|
||||
This is official repository for the open-source Colobot project developed by Polish Portal of Colobot (PPC; in Polish: Polski Portal Colobota) with the official site at: http://colobot.info/.
|
||||
This is official repository for the open-source Colobot project developed by Polish Portal of Colobot (PPC; in Polish: Polski Portal Colobota) with the official site at: [colobot.info](http://colobot.info/joomla).
|
||||
|
||||
The source code contained here was released by Epsitec -- the original creator of the game -- on open source (GPLv3) license. The code was given and the rights granted specifically to PPC community in March 2012. Since then, we have been developing the game further.
|
||||
|
||||
More information for developers (in English) can be found on the [developer wiki](https://colobot.info/wiki/Dev:Main_Page) or [our forum](http://colobot.info/forum/). However, the freshest source of information is our IRC channels (see below).
|
||||
More information for developers (in English) can be found on the [developer wiki](http://colobot.info/w/Dev:Main_Page) or (in Polish) [our forum](http://colobot.info/forum/). However, the freshest source of information is our IRC channels (see below).
|
||||
|
||||
This repository contains only the source code of the project. The game requires also data files which are now provided as git submodule and are hosted in [separate repository](https://github.com/colobot/colobot-data).
|
||||
|
||||
|
@ -17,14 +17,23 @@ The original version of the game, as released to us by Epsitec, is available as
|
|||
|
||||
We are now working on refreshed and updated version of original game, codename Colobot Gold and this is the version currently hosted in this repository. The goal is to rewrite the game engine to be multi-platform, refresh the graphics, include some enhancements and refactor the code to make the game easier to modify.
|
||||
|
||||
The project at this point is in alpha stage - the game is mostly playable, both on Windows and Linux, and most major bugs have been corrected. However, there is still a lot of work to be done. We are now working steadily towards subsequent beta releases, correcting other bugs and introducing enhancements and new features. There is a lot of work ahead and we will gladly accept any and all help.
|
||||
The project at this point is in alpha stage - the game is mostly playable, both on Windows and Linux, and most major bugs have been corrected. We are now working steadily towards subsequent beta releases, correcting other bugs and introducing enhancements and new features. There is a lot of work ahead and we will gladly accept any and all help.
|
||||
|
||||
In the future, we will begin development on a new installment in the Colobot series, codename Colobot 2. We have many ideas for the new game and we are still discussing them. Generally, the development of this version will begin only after finishing Colobot Gold (it will be probably hosted in another repository, forked off the Colobot Gold code).
|
||||
|
||||
|
||||
## Download packages
|
||||
|
||||
We provide compiled packages of most recent versions using an [automated build bot service](http://colobot.info/files/compiled.php). Available versions include packages for Windows and Linux in both Release and Debug configurations.
|
||||
|
||||
On some Linux distributions there are also distribution packages available:
|
||||
* Debian Sid (unstable): http://packages.debian.org/sid/colobot
|
||||
* Arch Linux (AUR): https://aur.archlinux.org/packages/colobot-gold
|
||||
|
||||
|
||||
## Compiling and running the game
|
||||
|
||||
For these instructions see INSTALL.md file.
|
||||
If you want to compile colobot yourself, see [INSTALL.md](https://github.com/colobot/colobot/blob/master/INSTALL.md) file.
|
||||
|
||||
|
||||
## Contact
|
||||
|
@ -41,11 +50,11 @@ If you want to help in the project, please contact us on our IRC channels or [ou
|
|||
|
||||
Witamy w repozytorium projektu Colobot
|
||||
|
||||
To jest oficjalne repozytorium z kodem projektu open-source Colobot rozwijanego przez Polski Portal Colobota (PPC; po angielsku: Polish Portal of Colobot) z oficjalną stroną: http://colobot.info/.
|
||||
To jest oficjalne repozytorium z kodem projektu open-source Colobot rozwijanego przez Polski Portal Colobota (PPC; po angielsku: Polish Portal of Colobot) z oficjalną stroną: [colobot.info](http://colobot.info/joomla/?lang=pl).
|
||||
|
||||
Kod źródłowy zawarty tutaj został wydany przez Epsitec -- oryginalnego twórcę gry -- na otwartej licencji (GPLv3). Kod został wydany i prawa nadane specjalnie dla społeczności PPC w marcu 2012. Od tamtej pory, zajmowaliśmy się dalszym rozwojem gry.
|
||||
|
||||
Więcej informacji dla developerów projektu (po angielsku) można znaleźć na [wiki dla developerów](http://colobot.info/wiki/Dev:Main_Page) lub [naszym forum](http://colobot.info/forum/). Jednak źródłem najświeższych informacji są nasze kanały IRC (patrz niżej).
|
||||
Więcej informacji dla developerów projektu (po angielsku) można znaleźć na [wiki dla developerów](htt://colobot.info/w/Dev:Main_Page) lub (po polsku) na [naszym forum](http://colobot.info/forum/). Jednak źródłem najświeższych informacji są nasze kanały IRC (patrz niżej).
|
||||
|
||||
To repozytorium zawiera jedynie kod źródłowy projektu. Gra wymaga jeszcze plików danych, które są teraz udostępniane jako submoduł gita i hostowane w [osobnym repozytorium]((https://github.com/colobot/colobot-data).
|
||||
|
||||
|
@ -56,20 +65,30 @@ Oryginalna wersja gry, jaka została udostępniona nam przez Epsitec, jest dost
|
|||
|
||||
Obecnie pracujemy nad odświeżoną i uaktualnioną wersją oryginalnej gry, którą nazywamy Colobot Gold i jest to wersja obecnie dostępna w tym repozytorium. Celem tego projektu jest przepisanie silnika gry na wersję wieloplatformową, odświeżenie grafiki, dodanie pewnych usprawnień i zrefaktorowanie kodu tak, by dało się łatwiej modyfikować grę.
|
||||
|
||||
W tym momencie, gra jest w stadium alpha - gra jest w większości grywalna, pod Windowsem i Linuksem i większość poważnych bugów została poprawiona. Jednakże, jest nadal sporo pracy do zrobienia. Teraz systematycznie pracujemy do kolejnych wydań w fazie beta, poprawiając pozostałe bugi i wprowadzając usprawnienia i nowe funkcje. Jest sporo pracy przed nami i chętnie przyjmiemy pomoc w jakielkolwiek formie.
|
||||
W tym momencie, gra jest w stadium alpha - gra jest w większości grywalna, pod Windowsem i Linuksem i większość poważnych bugów została poprawiona. Teraz systematycznie pracujemy do kolejnych wydań w fazie beta, poprawiając pozostałe bugi i wprowadzając usprawnienia i nowe funkcje. Jest sporo pracy przed nami i chętnie przyjmiemy pomoc w jakiejkolwiek formie.
|
||||
|
||||
W przyszłości, planujemy rozpocząć prace nad nową częścią z serii Colobot, pod nazwą Colobot 2.Mamy wiele pomysłów na nową grę i nadal dyskutujemy nad nimi. Ogólnie, rozwój tej wersji zacznie się po skończeniu wersji Colobot Gold (prawdopodobnie będzie hostowane w osobnym repozytorium, sforkowanym z kodu Colobot Gold).
|
||||
W przyszłości, planujemy rozpocząć prace nad nową częścią z serii Colobot, pod nazwą Colobot 2. Mamy wiele pomysłów na nową grę i nadal dyskutujemy nad nimi. Ogólnie, rozwój tej wersji zacznie się po skończeniu wersji Colobot Gold (prawdopodobnie będzie hostowane w osobnym repozytorium, sforkowanym z kodu Colobot Gold).
|
||||
|
||||
|
||||
## Paczki do pobrania
|
||||
|
||||
Udostępniamy gotowe skompilowane paczki z ostatnich wersji używając [automatycznego build bota](http://colobot.info/files/compiled.php?lang=pl). Dostępne są paczki dla Windowsa i Linuksa w konfiguracjach Release i Debug.
|
||||
|
||||
Dla niektórych dystrybucji Linuksa, dostępne są pakiety danej dystrybucji:
|
||||
* Debian Sid (unstable): http://packages.debian.org/sid/colobot
|
||||
* Arch Linux (AUR): https://aur.archlinux.org/packages/colobot-gold
|
||||
|
||||
|
||||
## Kompilacja i uruchomienie gry
|
||||
|
||||
Instrukcje te znajdują się w pliku INSTALL.md (po angielsku).
|
||||
Jeżeli chcesz sam skompilować colobota, zobacz plik [INSTALL.md](https://github.com/colobot/colobot/blob/master/INSTALL.md) (po angielsku).
|
||||
|
||||
|
||||
## Kontakt
|
||||
|
||||
Jeżeli chcesz pomóc w projekcie, prosimy o kontakt na naszych kanałach IRC lub [naszym forum](http://colobot.info/forum/).
|
||||
|
||||
|
||||
### Kanały IRC
|
||||
|
||||
* [#colobot on pirc.pl](irc://pirc.pl#colobot) polski;
|
||||
|
|
|
@ -8,5 +8,4 @@ if (MSYS AND (NOT MXE))
|
|||
|
||||
set(COLOBOT_CXX_FLAGS "${COLOBOT_CXX_FLAGS} -U__STRICT_ANSI__") # fixes putenv()
|
||||
set(USE_SDL_MAIN 1) # fixes SDL_main
|
||||
set(DESKTOP OFF) # MSYS doesn't have the necessary tools
|
||||
endif()
|
||||
|
|
|
@ -41,6 +41,8 @@ if((${CMAKE_CROSSCOMPILING}) AND (DEFINED MSYS))
|
|||
${CMAKE_FIND_ROOT_PATH}/lib/libbz2.a
|
||||
${OPENAL_MXE_LIBS}
|
||||
)
|
||||
# This fixes problem with multiple definition of `IID_IDirectSoundNotify'
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--allow-multiple-definition")
|
||||
else()
|
||||
set(MXE 0)
|
||||
endif()
|
||||
endif()
|
||||
|
|
2
data
2
data
|
@ -1 +1 @@
|
|||
Subproject commit bab520ebec08a3a8e8763918e3db52b95f0d29d0
|
||||
Subproject commit 456ab4d4806ffe9aad93b7046f1b8074501f28f5
|
|
@ -1,105 +1,180 @@
|
|||
cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
if(NOT PLATFORM_WINDOWS)
|
||||
# Install Desktop Entry file
|
||||
set(COLOBOT_DESKTOP_FILE colobot.desktop)
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${COLOBOT_DESKTOP_FILE}
|
||||
COMMAND ./create_desktop_file.sh > ${CMAKE_CURRENT_BINARY_DIR}/${COLOBOT_DESKTOP_FILE}
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
COMMENT "Build ${COLOBOT_DESKTOP_FILE}"
|
||||
)
|
||||
add_custom_target(desktopfile ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${COLOBOT_DESKTOP_FILE})
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${COLOBOT_DESKTOP_FILE}
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications/
|
||||
)
|
||||
|
||||
# Install Icon
|
||||
set(COLOBOT_ICON_FILE colobot.svg)
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_SOURCE_DIR}/${COLOBOT_ICON_FILE}
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps/
|
||||
)
|
||||
|
||||
# Render SVG icon in various sizes
|
||||
find_program(RSVG_CONVERT rsvg-convert)
|
||||
if(RSVG_CONVERT)
|
||||
foreach(PNGSIZE "48" "32" "16")
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PNGSIZE})
|
||||
add_custom_target(resize_icon_${PNGSIZE} ALL
|
||||
COMMAND ${RSVG_CONVERT} -w ${PNGSIZE} -h ${PNGSIZE} ${CMAKE_CURRENT_SOURCE_DIR}/${COLOBOT_ICON_FILE}
|
||||
> ${CMAKE_CURRENT_BINARY_DIR}/${PNGSIZE}/colobot.png
|
||||
)
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${PNGSIZE}/colobot.png
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/${PNGSIZE}x${PNGSIZE}/apps/
|
||||
)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
# Create manpage from pod-formatted file
|
||||
find_program(POD2MAN pod2man)
|
||||
if(POD2MAN)
|
||||
set(COLOBOT_MANPAGE_SECTION 6)
|
||||
|
||||
macro(podman)
|
||||
cmake_parse_arguments(PM "" "PODFILE;LOCALE;" "" ${ARGN})
|
||||
if(PM_LOCALE)
|
||||
# This copes with the fact that english has no "/LANG" in the paths and filenames.
|
||||
set(SLASHLOCALE /${PM_LOCALE})
|
||||
endif()
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE})
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${PM_PODFILE}
|
||||
COMMAND ${POD2MAN} ARGS --section=${COLOBOT_MANPAGE_SECTION}
|
||||
--center="Colobot" --stderr --utf8
|
||||
--release="${COLOBOT_VERSION_FULL}"
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PM_PODFILE}
|
||||
${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION}
|
||||
COMMENT "Create ${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION} manpage"
|
||||
)
|
||||
add_custom_target(man${PM_LOCALE} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION})
|
||||
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION}
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man${SLASHLOCALE}/man${COLOBOT_MANPAGE_SECTION}/ )
|
||||
|
||||
add_dependencies(man man${PM_LOCALE})
|
||||
endmacro()
|
||||
|
||||
# Create the english manpage
|
||||
podman(PODFILE colobot.pod)
|
||||
|
||||
endif()
|
||||
set(COLOBOT_ICON_FILE colobot.svg)
|
||||
|
||||
# Render SVG icon in various sizes
|
||||
find_program(RSVG_CONVERT rsvg-convert)
|
||||
if(RSVG_CONVERT AND (PLATFORM_LINUX OR PLATFORM_MACOSX))
|
||||
add_custom_target(png-icons ALL)
|
||||
foreach(PNGSIZE 512 256 128 48 32 16)
|
||||
add_custom_command(
|
||||
OUTPUT ${PNGSIZE}/colobot.png
|
||||
COMMAND mkdir -p ${PNGSIZE}
|
||||
COMMAND ${RSVG_CONVERT} -w ${PNGSIZE} -h ${PNGSIZE} ${CMAKE_CURRENT_SOURCE_DIR}/${COLOBOT_ICON_FILE} > ${PNGSIZE}/colobot.png
|
||||
)
|
||||
add_custom_target(png-icon-${PNGSIZE} ALL DEPENDS ${PNGSIZE}/colobot.png)
|
||||
add_dependencies(png-icons png-icon-${PNGSIZE})
|
||||
|
||||
if(PLATFORM_LINUX)
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${PNGSIZE}/colobot.png
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/${PNGSIZE}x${PNGSIZE}/apps/
|
||||
)
|
||||
endif()
|
||||
# Prepare the ICNS icon generation
|
||||
list(APPEND ICNS_SRCS "${PNGSIZE}/colobot.png")
|
||||
endforeach()
|
||||
|
||||
# Pack icon for Mac OS
|
||||
find_program(PNG2ICNS png2icns)
|
||||
if(PNG2ICNS AND PLATFORM_MACOSX)
|
||||
add_custom_command(OUTPUT Colobot.icns
|
||||
COMMAND ${PNG2ICNS} Colobot.icns ${ICNS_SRCS}
|
||||
DEPENDS png-icons
|
||||
)
|
||||
add_custom_target(icns-icon ALL DEPENDS Colobot.icns)
|
||||
endif()
|
||||
|
||||
else() # if(NOT PLATFORM_WINDOWS)
|
||||
set(COLOBOT_VERSION_4COMMAS "${COLOBOT_VERSION_MAJOR},${COLOBOT_VERSION_MINOR},${COLOBOT_VERSION_REVISION},0")
|
||||
configure_file(colobot.rc.cmake ${CMAKE_CURRENT_BINARY_DIR}/colobot.rc)
|
||||
endif()
|
||||
|
||||
# Translate translatable material
|
||||
find_program(PO4A po4a)
|
||||
if(PLATFORM_LINUX)
|
||||
# Install Desktop Entry file
|
||||
set(COLOBOT_DESKTOP_FILE colobot.desktop)
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${COLOBOT_DESKTOP_FILE}
|
||||
COMMAND ./create_desktop_file.sh > ${CMAKE_CURRENT_BINARY_DIR}/${COLOBOT_DESKTOP_FILE}
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
COMMENT "Build ${COLOBOT_DESKTOP_FILE}"
|
||||
)
|
||||
add_custom_target(desktopfile ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${COLOBOT_DESKTOP_FILE})
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${COLOBOT_DESKTOP_FILE}
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications/
|
||||
)
|
||||
|
||||
if(PO4A)
|
||||
add_custom_target(desktop_po4a
|
||||
COMMAND ${PO4A} po4a.cfg
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
add_dependencies(desktopfile desktop_po4a)
|
||||
# Install Icon
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_SOURCE_DIR}/${COLOBOT_ICON_FILE}
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps/
|
||||
)
|
||||
|
||||
if(POD2MAN)
|
||||
add_custom_target(man_po4a
|
||||
# Translate translatable material
|
||||
find_program(PO4A po4a)
|
||||
if(PO4A)
|
||||
add_custom_target(desktop_po4a
|
||||
COMMAND ${PO4A} po4a.cfg
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
add_dependencies(man man_po4a)
|
||||
file(GLOB LINGUAS_PO RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/po/ ${CMAKE_CURRENT_SOURCE_DIR}/po/*.po)
|
||||
string(REGEX REPLACE ".po$" "" LINGUAS ${LINGUAS_PO})
|
||||
foreach(LOCALE ${LINGUAS})
|
||||
podman(PODFILE lang/${LOCALE}/colobot.pod LOCALE ${LOCALE})
|
||||
add_dependencies(man${PM_LOCALE} man_po4a)
|
||||
endforeach()
|
||||
add_dependencies(desktopfile desktop_po4a)
|
||||
endif()
|
||||
|
||||
# Create manpage from pod-formatted file
|
||||
find_program(POD2MAN pod2man)
|
||||
if(POD2MAN)
|
||||
set(COLOBOT_MANPAGE_SECTION 6)
|
||||
|
||||
macro(podman)
|
||||
cmake_parse_arguments(PM "" "PODFILE;LOCALE;" "" ${ARGN})
|
||||
if(PM_LOCALE)
|
||||
# This copes with the fact that english has no "/LANG" in the paths and filenames.
|
||||
set(SLASHLOCALE /${PM_LOCALE})
|
||||
endif()
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE})
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${PM_PODFILE}
|
||||
COMMAND ${POD2MAN} ARGS --section=${COLOBOT_MANPAGE_SECTION}
|
||||
--center="Colobot" --stderr --utf8
|
||||
--release="${COLOBOT_VERSION_FULL}"
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PM_PODFILE}
|
||||
${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION}
|
||||
COMMENT "Create ${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION} manpage"
|
||||
)
|
||||
add_custom_target(man${PM_LOCALE} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION})
|
||||
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}${SLASHLOCALE}/colobot.${COLOBOT_MANPAGE_SECTION}
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man${SLASHLOCALE}/man${COLOBOT_MANPAGE_SECTION}/ )
|
||||
|
||||
add_dependencies(man man${PM_LOCALE})
|
||||
endmacro()
|
||||
|
||||
# Create the english manpage
|
||||
podman(PODFILE colobot.pod)
|
||||
|
||||
if(PO4A)
|
||||
# Translate the manpage to other languages
|
||||
add_dependencies(man desktop_po4a)
|
||||
file(GLOB LINGUAS_PO RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/po/ ${CMAKE_CURRENT_SOURCE_DIR}/po/*.po)
|
||||
string(REGEX REPLACE ".po$" "" LINGUAS ${LINGUAS_PO})
|
||||
foreach(LOCALE ${LINGUAS})
|
||||
podman(PODFILE lang/${LOCALE}/colobot.pod LOCALE ${LOCALE})
|
||||
add_dependencies(man${PM_LOCALE} desktop_po4a)
|
||||
endforeach()
|
||||
endif()
|
||||
endif()
|
||||
endif(PLATFORM_LINUX)
|
||||
|
||||
if(PLATFORM_MACOSX)
|
||||
configure_file(Info.plist.cmake ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
|
||||
endif(PLATFORM_MACOSX)
|
||||
|
||||
if(PLATFORM_WINDOWS)
|
||||
set(COLOBOT_VERSION_4COMMAS "${COLOBOT_VERSION_MAJOR},${COLOBOT_VERSION_MINOR},${COLOBOT_VERSION_REVISION},0")
|
||||
configure_file(colobot.rc.cmake ${CMAKE_CURRENT_BINARY_DIR}/colobot.rc)
|
||||
endif(PLATFORM_WINDOWS)
|
||||
|
||||
|
||||
##
|
||||
# Packaging
|
||||
##
|
||||
set(CPACK_BUNDLE_NAME "Colobot")
|
||||
set(CPACK_PACKAGE_FILE_NAME "colobot-${COLOBOT_VERSION_FULL}")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../README.md")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Colobot - Colonize with Bots")
|
||||
set(CPACK_PACKAGE_VENDOR "Polish Portal of Colobot")
|
||||
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR ${COLOBOT_VERSION_MAJOR})
|
||||
set(CPACK_PACKAGE_VERSION_MINOR ${COLOBOT_VERSION_MINOR})
|
||||
set(CPACK_PACKAGE_VERSION_PATCH ${COLOBOT_VERSION_REVISION})
|
||||
|
||||
if(PLATFORM_WINDOWS)
|
||||
set(CPACK_STRIP_FILES TRUE)
|
||||
|
||||
# Don't version the install directory, and allow overwriting
|
||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "Colobot")
|
||||
set(CPACK_NSIS_DEFINES "SetOverwrite on\nBrandingText \\\"Colobot ${COLOBOT_VERSION_CODENAME} (${COLOBOT_VERSION_FULL})\\\"")
|
||||
# Install the executable directly in Program Files/Colobot/
|
||||
set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".")
|
||||
set(CPACK_PACKAGE_EXECUTABLES "colobot" "Colobot ${COLOBOT_VERSION_CODENAME}")
|
||||
|
||||
# Branding
|
||||
## Installation and uninstallation icons
|
||||
set(CPACK_NSIS_MUI_ICON ${CMAKE_CURRENT_SOURCE_DIR}/colobot.ico)
|
||||
set(CPACK_NSIS_MUI_UNIICON ${CMAKE_CURRENT_SOURCE_DIR}/colobot.ico)
|
||||
## Header and Left banner images
|
||||
set(CPACK_PACKAGE_ICON "")
|
||||
set(CPACK_NSIS_INSTALLER_ICON_CODE "!define MUI_HEADERIMAGE_BITMAP \\\"${CMAKE_CURRENT_SOURCE_DIR}/colobot_nsis.bmp\\\"
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP \\\"${CMAKE_CURRENT_SOURCE_DIR}/colobot_nsis_left.bmp\\\"")
|
||||
|
||||
## Allow to directly run Colobot at the end of the installation
|
||||
set(CPACK_NSIS_MUI_FINISHPAGE_RUN "colobot.exe")
|
||||
|
||||
## TODO: Find a way to have no license prompt. Until that, display the GPL-3
|
||||
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/../LICENSE.txt)
|
||||
|
||||
elseif(PLATFORM_MACOSX)
|
||||
set(CPACK_GENERATOR "Bundle")
|
||||
set(CPACK_BUNDLE_ICON ${CMAKE_CURRENT_BINARY_DIR}/Colobot.icns)
|
||||
set(CPACK_PACKAGE_ICON ${CMAKE_CURRENT_BINARY_DIR}/Colobot.icns)
|
||||
set(CPACK_BUNDLE_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
|
||||
|
||||
set(CPACK_BINARY_DRAGNDROP ON)
|
||||
|
||||
install(CODE "
|
||||
include(BundleUtilities)
|
||||
message(STATUS \"fixup_bundle(\${CMAKE_INSTALL_PREFIX}/${COLOBOT_INSTALL_BIN_DIR}/colobot/\")
|
||||
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/${COLOBOT_INSTALL_BIN_DIR}/colobot\" \"\" \"\")
|
||||
")
|
||||
endif()
|
||||
|
||||
include(CPack)
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Colobot</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>colobot</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>Colobot</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>info.colobot.colobot</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Colobot</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>cbot</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>@COLOBOT_VERSION_FULL@</string>
|
||||
</dict>
|
||||
</plist>
|
Binary file not shown.
After Width: | Height: | Size: 9.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 101 KiB |
|
@ -33,6 +33,9 @@
|
|||
|
||||
#include "CBot.h"
|
||||
|
||||
#include <cassert>
|
||||
|
||||
|
||||
CBotInstr::CBotInstr()
|
||||
{
|
||||
name = "CBotInstr";
|
||||
|
@ -285,7 +288,7 @@ CBotInstr* CBotInstr::Compile(CBotToken* &p, CBotCStack* pStack)
|
|||
bool CBotInstr::Execute(CBotStack* &pj)
|
||||
{
|
||||
CBotString ClassManquante = name;
|
||||
ASM_TRAP(); // should never go through this routine
|
||||
assert(0); // should never go through this routine
|
||||
// but use the routines of the subclasses
|
||||
return false;
|
||||
}
|
||||
|
@ -300,26 +303,26 @@ bool CBotInstr::Execute(CBotStack* &pj, CBotVar* pVar)
|
|||
void CBotInstr::RestoreState(CBotStack* &pj, bool bMain)
|
||||
{
|
||||
CBotString ClassManquante = name;
|
||||
ASM_TRAP(); // should never go through this routine
|
||||
assert(0); // should never go through this routine
|
||||
// but use the routines of the subclasses
|
||||
}
|
||||
|
||||
|
||||
bool CBotInstr::ExecuteVar(CBotVar* &pVar, CBotCStack* &pile)
|
||||
{
|
||||
ASM_TRAP(); // dad do not know, see the girls
|
||||
assert(0); // dad do not know, see the girls
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CBotInstr::ExecuteVar(CBotVar* &pVar, CBotStack* &pile, CBotToken* prevToken, bool bStep, bool bExtend)
|
||||
{
|
||||
ASM_TRAP(); // dad do not know, see the girls
|
||||
assert(0); // dad do not know, see the girls
|
||||
return false;
|
||||
}
|
||||
|
||||
void CBotInstr::RestoreStateVar(CBotStack* &pile, bool bMain)
|
||||
{
|
||||
ASM_TRAP(); // dad do not know, see the girls
|
||||
assert(0); // dad do not know, see the girls
|
||||
}
|
||||
|
||||
// this routine is defined only for the subclass CBotCase
|
||||
|
@ -531,7 +534,7 @@ void CBotLeftExprVar::RestoreState(CBotStack* &pj, bool bMain)
|
|||
CBotVar* var1;
|
||||
|
||||
var1 = pj->FindVar(m_token.GetString());
|
||||
if (var1 == NULL) ASM_TRAP();
|
||||
if (var1 == NULL) assert(0);
|
||||
|
||||
var1->SetUniqNum(m_nIdent); // with the unique identifier
|
||||
}
|
||||
|
@ -1747,7 +1750,7 @@ bool CBotExpression::Execute(CBotStack* &pj)
|
|||
pile2->SetVar(result);
|
||||
break;
|
||||
default:
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
if (!IsInit)
|
||||
pile2->SetError(TX_NOTINIT, m_leftop->GetToken());
|
||||
|
@ -2270,7 +2273,7 @@ CBotIndexExpr::~CBotIndexExpr()
|
|||
bool CBotIndexExpr::ExecuteVar(CBotVar* &pVar, CBotCStack* &pile)
|
||||
{
|
||||
if (pVar->GetType(1) != CBotTypArrayPointer)
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
|
||||
pVar = (static_cast<CBotVarArray*>(pVar))->GetItem(0, false); // at compile time makes the element [0]
|
||||
if (pVar == NULL)
|
||||
|
@ -2291,7 +2294,7 @@ bool CBotIndexExpr::ExecuteVar(CBotVar* &pVar, CBotStack* &pile, CBotToken* prev
|
|||
CBotStack* pj = pile;
|
||||
|
||||
if (pVar->GetType(1) != CBotTypArrayPointer)
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
|
||||
pile = pile->AddStack();
|
||||
|
||||
|
@ -2372,7 +2375,7 @@ void CBotFieldExpr::SetUniqNum(int num)
|
|||
bool CBotFieldExpr::ExecuteVar(CBotVar* &pVar, CBotCStack* &pile)
|
||||
{
|
||||
if (pVar->GetType(1) != CBotTypPointer)
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
|
||||
pVar = pVar->GetItemRef(m_nIdent);
|
||||
if (pVar == NULL)
|
||||
|
@ -2395,7 +2398,7 @@ bool CBotFieldExpr::ExecuteVar(CBotVar* &pVar, CBotStack* &pile, CBotToken* prev
|
|||
|
||||
|
||||
if (pVar->GetType(1) != CBotTypPointer)
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
|
||||
CBotVarClass* pItem = pVar->GetPointer();
|
||||
if (pItem == NULL)
|
||||
|
@ -2648,7 +2651,7 @@ bool CBotLeftExpr::ExecuteVar(CBotVar* &pVar, CBotStack* &pile, CBotToken* prevT
|
|||
if (pVar == NULL)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
#endif
|
||||
pile->SetError(2, &m_token);
|
||||
return false;
|
||||
|
@ -3289,7 +3292,7 @@ bool CBotExprVar::ExecuteVar(CBotVar* &pVar, CBotStack* &pj, CBotToken* prevToke
|
|||
if (pVar == NULL)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
#endif
|
||||
pj->SetError(1, &m_token);
|
||||
return false;
|
||||
|
|
|
@ -32,13 +32,6 @@
|
|||
#define EOX (reinterpret_cast<CBotStack*>(-1)) /// \def tag special condition
|
||||
|
||||
|
||||
// fix for MSVC instruction __asm int 3 (setting a trap)
|
||||
#if defined(__MINGW32__) || defined(__GNUC__)
|
||||
#define ASM_TRAP() asm("int $3");
|
||||
#else
|
||||
#define ASM_TRAP() __asm int 3;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
// forward declaration
|
||||
|
||||
|
|
|
@ -20,6 +20,9 @@
|
|||
|
||||
#include "CBot.h"
|
||||
|
||||
#include <cassert>
|
||||
|
||||
|
||||
// various constructors / destructors
|
||||
// \TODO translation:to liberate all according to esteblished tree
|
||||
// pour libérer tout selon l'arbre établi
|
||||
|
@ -1046,7 +1049,7 @@ bool CBotDefParam::Execute(CBotVar** ppVars, CBotStack* &pj)
|
|||
}
|
||||
break;
|
||||
default:
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
}
|
||||
newvar->SetUniqNum(p->m_nIdent);
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
|
||||
|
||||
#include "CBot.h"
|
||||
|
||||
#include <cassert>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
|
||||
|
@ -80,12 +82,12 @@ CBotStack* CBotStack::FirstStack()
|
|||
CBotStack::CBotStack(CBotStack* ppapa)
|
||||
{
|
||||
// constructor must exist or the destructor is never called!
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
CBotStack::~CBotStack()
|
||||
{
|
||||
ASM_TRAP(); // use Delete () instead
|
||||
assert(0); // use Delete () instead
|
||||
}
|
||||
|
||||
void CBotStack::Delete()
|
||||
|
@ -693,7 +695,7 @@ void CBotStack::AddVar(CBotVar* pVar)
|
|||
*pp = pVar; // added after
|
||||
|
||||
#ifdef _DEBUG
|
||||
if ( pVar->GetUniqNum() == 0 ) ASM_TRAP();
|
||||
if ( pVar->GetUniqNum() == 0 ) assert(0);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1091,7 +1093,7 @@ bool CBotVar::RestoreState(FILE* pf, CBotVar* &pVar)
|
|||
}
|
||||
break;
|
||||
default:
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
if ( pPrev != NULL ) pPrev->m_next = pNew;
|
||||
|
@ -1388,7 +1390,7 @@ void CBotCStack::AddVar(CBotVar* pVar)
|
|||
*pp = pVar; // added after
|
||||
|
||||
#ifdef _DEBUG
|
||||
if ( pVar->GetUniqNum() == 0 ) ASM_TRAP();
|
||||
if ( pVar->GetUniqNum() == 0 ) assert(0);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
|
||||
#include "CBot.h"
|
||||
|
||||
#include <cassert>
|
||||
|
||||
// various constructors
|
||||
|
||||
CBotTwoOpExpr::CBotTwoOpExpr()
|
||||
|
@ -466,7 +468,7 @@ bool CBotTwoOpExpr::Execute(CBotStack* &pStack)
|
|||
if ( !IsNan(left, right, &err) ) result->SL(left , right);
|
||||
break;
|
||||
default:
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
delete temp;
|
||||
|
||||
|
|
|
@ -21,8 +21,10 @@
|
|||
// it never creates an instance of the class mother CBotVar
|
||||
|
||||
#include "CBot.h"
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <cassert>
|
||||
#include <cmath>
|
||||
#include <cstdio>
|
||||
|
||||
long CBotVar::m_identcpt = 0;
|
||||
|
||||
|
@ -124,7 +126,7 @@ void CBotVarClass::InitCBotVarClass( const CBotToken* name, CBotTypResult& type
|
|||
!type.Eq(CBotTypIntrinsic) && // by convenience there accepts these types
|
||||
!type.Eq(CBotTypPointer) &&
|
||||
!type.Eq(CBotTypArrayPointer) &&
|
||||
!type.Eq(CBotTypArrayBody)) ASM_TRAP();
|
||||
!type.Eq(CBotTypArrayBody)) assert(0);
|
||||
|
||||
m_token = new CBotToken(name);
|
||||
m_next = NULL;
|
||||
|
@ -169,7 +171,7 @@ void CBotVarClass::InitCBotVarClass( const CBotToken* name, CBotTypResult& type
|
|||
CBotVarClass::~CBotVarClass( )
|
||||
{
|
||||
if ( m_CptUse != 0 )
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
|
||||
if ( m_pParent ) delete m_pParent;
|
||||
m_pParent = NULL;
|
||||
|
@ -242,7 +244,7 @@ void CBotVar::SetUniqNum(long n)
|
|||
{
|
||||
m_ident = n;
|
||||
|
||||
if ( n == 0 ) ASM_TRAP();
|
||||
if ( n == 0 ) assert(0);
|
||||
}
|
||||
|
||||
long CBotVar::NextUniqNum()
|
||||
|
@ -267,7 +269,7 @@ bool CBotVar::Save1State(FILE* pf)
|
|||
// this routine "virtual" must never be called,
|
||||
// there must be a routine for each of the subclasses (CBotVarInt, CBotVarFloat, etc)
|
||||
// ( see the type in m_type )
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -335,7 +337,7 @@ CBotVar* CBotVar::Create(const CBotToken* name, CBotTypResult type)
|
|||
}
|
||||
}
|
||||
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -406,7 +408,7 @@ CBotVar* CBotVar::Create( const char* n, CBotTypResult type)
|
|||
}
|
||||
}
|
||||
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -519,25 +521,25 @@ CBotToken* CBotVar::GetToken()
|
|||
|
||||
CBotVar* CBotVar::GetItem(const char* name)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
CBotVar* CBotVar::GetItemRef(int nIdent)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
CBotVar* CBotVar::GetItemList()
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
CBotVar* CBotVar::GetItem(int row, bool bGrow)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -617,7 +619,7 @@ void CBotVar::SetVal(CBotVar* var)
|
|||
}
|
||||
break;
|
||||
default:
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
m_binit = var->m_binit; // copie l'état nan s'il y a
|
||||
|
@ -651,12 +653,12 @@ int CBotVar::GetPrivate()
|
|||
|
||||
void CBotVar::SetPointer(CBotVar* pVarClass)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
CBotVarClass* CBotVar::GetPointer()
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -665,167 +667,167 @@ CBotVarClass* CBotVar::GetPointer()
|
|||
|
||||
int CBotVar::GetValInt()
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
float CBotVar::GetValFloat()
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CBotVar::SetValInt(int c, const char* s)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void CBotVar::SetValFloat(float c)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void CBotVar::Mul(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void CBotVar::Power(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
int CBotVar::Div(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int CBotVar::Modulo(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CBotVar::Add(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void CBotVar::Sub(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
bool CBotVar::Lo(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CBotVar::Hi(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CBotVar::Ls(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CBotVar::Hs(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CBotVar::Eq(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CBotVar::Ne(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return false;
|
||||
}
|
||||
|
||||
void CBotVar::And(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void CBotVar::Or(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void CBotVar::XOr(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void CBotVar::ASR(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void CBotVar::SR(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void CBotVar::SL(CBotVar* left, CBotVar* right)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void CBotVar::Neg()
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void CBotVar::Not()
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void CBotVar::Inc()
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
void CBotVar::Dec()
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void CBotVar::Copy(CBotVar* pSrc, bool bName)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void CBotVar::SetValString(const char* p)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
CBotString CBotVar::GetValString()
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return CBotString();
|
||||
}
|
||||
|
||||
void CBotVar::SetClass(CBotClass* pClass)
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
}
|
||||
|
||||
CBotClass* CBotVar::GetClass()
|
||||
{
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -1398,7 +1400,7 @@ void CBotVarClass::Copy(CBotVar* pSrc, bool bName)
|
|||
pSrc = pSrc->GetPointer(); // if source given by a pointer
|
||||
|
||||
if ( pSrc->GetType() != CBotTypClass )
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
|
||||
CBotVarClass* p = static_cast<CBotVarClass*>(pSrc);
|
||||
|
||||
|
@ -1410,7 +1412,7 @@ void CBotVarClass::Copy(CBotVar* pSrc, bool bName)
|
|||
m_pClass = p->m_pClass;
|
||||
if ( p->m_pParent )
|
||||
{
|
||||
ASM_TRAP(); // "que faire du pParent";
|
||||
assert(0); // "que faire du pParent";
|
||||
}
|
||||
|
||||
// m_next = NULL;
|
||||
|
@ -1768,7 +1770,7 @@ bool CBotVarClass::Ne(CBotVar* left, CBotVar* right)
|
|||
CBotVarArray::CBotVarArray(const CBotToken* name, CBotTypResult& type )
|
||||
{
|
||||
if ( !type.Eq(CBotTypArrayPointer) &&
|
||||
!type.Eq(CBotTypArrayBody)) ASM_TRAP();
|
||||
!type.Eq(CBotTypArrayBody)) assert(0);
|
||||
|
||||
m_token = new CBotToken(name);
|
||||
m_next = NULL;
|
||||
|
@ -1791,7 +1793,7 @@ CBotVarArray::~CBotVarArray()
|
|||
void CBotVarArray::Copy(CBotVar* pSrc, bool bName)
|
||||
{
|
||||
if ( pSrc->GetType() != CBotTypArrayPointer )
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
|
||||
CBotVarArray* p = static_cast<CBotVarArray*>(pSrc);
|
||||
|
||||
|
@ -1825,7 +1827,7 @@ void CBotVarArray::SetPointer(CBotVar* pVarClass)
|
|||
|
||||
if ( !pVarClass->m_type.Eq(CBotTypClass) &&
|
||||
!pVarClass->m_type.Eq(CBotTypArrayBody))
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
|
||||
(static_cast<CBotVarClass*>(pVarClass))->IncrementUse(); // incement the reference
|
||||
}
|
||||
|
@ -1882,7 +1884,7 @@ CBotVarPointer::CBotVarPointer(const CBotToken* name, CBotTypResult& type )
|
|||
if ( !type.Eq(CBotTypPointer) &&
|
||||
!type.Eq(CBotTypNullPointer) &&
|
||||
!type.Eq(CBotTypClass) && // for convenience accepts Class and Intrinsic
|
||||
!type.Eq(CBotTypIntrinsic) ) ASM_TRAP();
|
||||
!type.Eq(CBotTypIntrinsic) ) assert(0);
|
||||
|
||||
m_token = new CBotToken(name);
|
||||
m_next = NULL;
|
||||
|
@ -1965,7 +1967,7 @@ void CBotVarPointer::SetPointer(CBotVar* pVarClass)
|
|||
|
||||
// if ( pVarClass->GetType() != CBotTypClass )
|
||||
if ( !pVarClass->m_type.Eq(CBotTypClass) )
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
|
||||
(static_cast<CBotVarClass*>(pVarClass))->IncrementUse(); // increment the reference
|
||||
m_pClass = (static_cast<CBotVarClass*>(pVarClass))->m_pClass;
|
||||
|
@ -2034,7 +2036,7 @@ void CBotVarPointer::Copy(CBotVar* pSrc, bool bName)
|
|||
{
|
||||
if ( pSrc->GetType() != CBotTypPointer &&
|
||||
pSrc->GetType() != CBotTypNullPointer)
|
||||
ASM_TRAP();
|
||||
assert(0);
|
||||
|
||||
CBotVarPointer* p = static_cast<CBotVarPointer*>(pSrc);
|
||||
|
||||
|
@ -2162,11 +2164,11 @@ int CBotTypResult::GetType(int mode) const
|
|||
m_type == CBotTypClass ||
|
||||
m_type == CBotTypIntrinsic )
|
||||
|
||||
if ( m_pClass == NULL ) ASM_TRAP();
|
||||
if ( m_pClass == NULL ) assert(0);
|
||||
|
||||
|
||||
if ( m_type == CBotTypArrayPointer )
|
||||
if ( m_pNext == NULL ) ASM_TRAP();
|
||||
if ( m_pNext == NULL ) assert(0);
|
||||
#endif
|
||||
if ( mode == 3 && m_type == CBotTypNullPointer ) return CBotTypPointer;
|
||||
return m_type;
|
||||
|
|
|
@ -56,21 +56,13 @@ if(PLATFORM_WINDOWS)
|
|||
set(RES_FILES "../desktop/colobot.rc")
|
||||
endif()
|
||||
|
||||
# Platform-dependent implementation of system.h
|
||||
if(PLATFORM_WINDOWS)
|
||||
set(SYSTEM_CPP_MODULE "system_windows.cpp")
|
||||
elseif(PLATFORM_LINUX)
|
||||
set(SYSTEM_CPP_MODULE "system_linux.cpp")
|
||||
else()
|
||||
set(SYSTEM_CPP_MODULE "system_other.cpp")
|
||||
endif()
|
||||
|
||||
# Source files
|
||||
set(SOURCES
|
||||
app/app.cpp
|
||||
app/main.cpp
|
||||
app/system.cpp
|
||||
app/${SYSTEM_CPP_MODULE}
|
||||
app/system_other.cpp
|
||||
common/event.cpp
|
||||
common/image.cpp
|
||||
common/iman.cpp
|
||||
|
@ -237,5 +229,6 @@ add_executable(colobot ${SOURCES})
|
|||
target_link_libraries(colobot ${LIBS})
|
||||
|
||||
install(TARGETS colobot RUNTIME DESTINATION ${COLOBOT_INSTALL_BIN_DIR})
|
||||
set_target_properties(colobot PROPERTIES INSTALL_RPATH ${COLOBOT_INSTALL_LIB_DIR})
|
||||
|
||||
if(NOT CBOT_STATIC)
|
||||
set_target_properties(colobot PROPERTIES INSTALL_RPATH ${COLOBOT_INSTALL_LIB_DIR})
|
||||
endif()
|
||||
|
|
|
@ -147,8 +147,8 @@ CApplication::CApplication()
|
|||
m_mouseButtonsState = 0;
|
||||
m_trackedKeys = 0;
|
||||
|
||||
m_dataPath = COLOBOT_DEFAULT_DATADIR;
|
||||
m_langPath = COLOBOT_I18N_DIR;
|
||||
m_dataPath = GetSystemUtils()->GetDataPath();
|
||||
m_langPath = GetSystemUtils()->GetLangPath();
|
||||
m_texPackPath = "";
|
||||
|
||||
m_runSceneName = "";
|
||||
|
@ -280,7 +280,7 @@ ParseArgsStatus CApplication::ParseArguments(int argc, char *argv[])
|
|||
GetLogger()->Message(" -debug modes enable debug modes (more info printed in logs; see code for reference of modes)\n");
|
||||
GetLogger()->Message(" -runscene sceneNNN run given scene on start\n");
|
||||
GetLogger()->Message(" -loglevel level set log level to level (one of: trace, debug, info, warn, error, none)\n");
|
||||
GetLogger()->Message(" -language lang set language (one of: en, de, fr, pl)\n");
|
||||
GetLogger()->Message(" -language lang set language (one of: en, de, fr, pl, ru)\n");
|
||||
GetLogger()->Message(" -datadir path set custom data directory path\n");
|
||||
GetLogger()->Message(" -langdir path set custom language directory path\n");
|
||||
GetLogger()->Message(" -texpack path set path to custom texture pack\n");
|
||||
|
@ -421,7 +421,10 @@ bool CApplication::Create()
|
|||
return false;
|
||||
}
|
||||
|
||||
#if !defined(PLATFORM_MACOSX)
|
||||
// On Mac OSX, the bundle can potentially change place, it doesn't make sense to cache it to the configuration file
|
||||
GetProfile().SetLocalProfileString("Resources", "Data", m_dataPath);
|
||||
#endif
|
||||
|
||||
SetLanguage(m_language);
|
||||
|
||||
|
@ -435,12 +438,16 @@ bool CApplication::Create()
|
|||
|
||||
m_sound->Create(true);
|
||||
|
||||
#if !defined(PLATFORM_MACOSX)
|
||||
// On Mac OSX, the bundle can potentially change place, it doesn't make sense to cache it to the configuration file
|
||||
|
||||
// Cache sound files
|
||||
if (defaultValues)
|
||||
{
|
||||
GetProfile().SetLocalProfileString("Resources", "Sound", GetDataSubdirPath(DIR_SOUND));
|
||||
GetProfile().SetLocalProfileString("Resources", "Music", GetDataSubdirPath(DIR_MUSIC));
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!m_customDataPath && GetProfile().GetLocalProfileString("Resources", "Sound", path))
|
||||
{
|
||||
|
@ -1681,6 +1688,10 @@ char CApplication::GetLanguageChar() const
|
|||
case LANGUAGE_POLISH:
|
||||
langChar = 'P';
|
||||
break;
|
||||
|
||||
case LANGUAGE_RUSSIAN:
|
||||
langChar = 'R';
|
||||
break;
|
||||
}
|
||||
return langChar;
|
||||
}
|
||||
|
@ -1707,6 +1718,11 @@ bool CApplication::ParseLanguage(const std::string& str, Language& language)
|
|||
language = LANGUAGE_POLISH;
|
||||
return true;
|
||||
}
|
||||
else if (str == "ru")
|
||||
{
|
||||
language = LANGUAGE_RUSSIAN;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -1740,6 +1756,10 @@ void CApplication::SetLanguage(Language language)
|
|||
case LANGUAGE_POLISH:
|
||||
locale = "pl_PL.utf8";
|
||||
break;
|
||||
|
||||
case LANGUAGE_RUSSIAN:
|
||||
locale = "ru_RU.utf8";
|
||||
break;
|
||||
}
|
||||
|
||||
if (locale.empty())
|
||||
|
@ -1770,6 +1790,10 @@ void CApplication::SetLanguage(Language language)
|
|||
{
|
||||
m_language = LANGUAGE_POLISH;
|
||||
}
|
||||
else if (strncmp(envLang,"ru",2) == 0)
|
||||
{
|
||||
m_language = LANGUAGE_RUSSIAN;
|
||||
}
|
||||
else
|
||||
{
|
||||
GetLogger()->Warn("Enviromnent locale ('%s') is not supported, setting default language\n", envLang);
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
#include "app/system_windows.h"
|
||||
#elif defined(PLATFORM_LINUX)
|
||||
#include "app/system_linux.h"
|
||||
#elif defined(PLATFORM_MACOSX)
|
||||
#include "app/system_macosx.h"
|
||||
#else
|
||||
#include "app/system_other.h"
|
||||
#endif
|
||||
|
@ -48,6 +50,8 @@ CSystemUtils* CSystemUtils::Create()
|
|||
m_instance = new CSystemUtilsWindows();
|
||||
#elif defined(PLATFORM_LINUX)
|
||||
m_instance = new CSystemUtilsLinux();
|
||||
#elif defined(PLATFORM_MACOSX)
|
||||
m_instance = new CSystemUtilsMacOSX();
|
||||
#else
|
||||
m_instance = new CSystemUtilsOther();
|
||||
#endif
|
||||
|
@ -188,6 +192,16 @@ float CSystemUtils::TimeStampDiff(SystemTimeStamp *before, SystemTimeStamp *afte
|
|||
return result;
|
||||
}
|
||||
|
||||
std::string CSystemUtils::GetDataPath()
|
||||
{
|
||||
return COLOBOT_DEFAULT_DATADIR;
|
||||
}
|
||||
|
||||
std::string CSystemUtils::GetLangPath()
|
||||
{
|
||||
return COLOBOT_I18N_DIR;
|
||||
}
|
||||
|
||||
std::string CSystemUtils::GetProfileFileLocation()
|
||||
{
|
||||
return std::string("colobot.ini");
|
||||
|
|
|
@ -130,6 +130,12 @@ public:
|
|||
/** The difference is \a after - \a before. */
|
||||
virtual long long TimeStampExactDiff(SystemTimeStamp *before, SystemTimeStamp *after) = 0;
|
||||
|
||||
//! Returns the data path (containing textures, levels, helpfiles, etc)
|
||||
virtual std::string GetDataPath();
|
||||
|
||||
//! Returns the translations path
|
||||
virtual std::string GetLangPath();
|
||||
|
||||
//! Returns the profile (colobot.ini) file location
|
||||
virtual std::string GetProfileFileLocation();
|
||||
|
||||
|
|
|
@ -0,0 +1,116 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2013, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
// * the Free Software Foundation, either version 3 of the License, or
|
||||
// * (at your option) any later version.
|
||||
// *
|
||||
// * This program is distributed in the hope that it will be useful,
|
||||
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// * GNU General Public License for more details.
|
||||
// *
|
||||
// * You should have received a copy of the GNU General Public License
|
||||
// * along with this program. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
#include "app/system_macosx.h"
|
||||
|
||||
#include "common/logger.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
// MacOS-specific headers
|
||||
#include <CoreFoundation/CFBundle.h>
|
||||
#include <CoreServices/CoreServices.h>
|
||||
|
||||
#include <boost/filesystem.hpp>
|
||||
|
||||
inline std::string CFStringRefToStdString(CFStringRef str) {
|
||||
|
||||
std::string stdstr;
|
||||
|
||||
char *fullPath;
|
||||
CFStringEncoding encodingMethod = CFStringGetSystemEncoding();
|
||||
|
||||
// 1st try for English system
|
||||
fullPath = const_cast<char*>(CFStringGetCStringPtr(str, encodingMethod));
|
||||
if( fullPath == NULL )
|
||||
{
|
||||
// 2nd try for Japanese system
|
||||
encodingMethod = kCFStringEncodingUTF8;
|
||||
fullPath = const_cast<char*>(CFStringGetCStringPtr(str, encodingMethod));
|
||||
}
|
||||
|
||||
// for safer operation.
|
||||
if( fullPath == NULL )
|
||||
{
|
||||
CFIndex length = CFStringGetLength(str);
|
||||
fullPath = static_cast<char *>(malloc( length + 1 ));
|
||||
|
||||
// TODO: Check boolean result of that conversion
|
||||
CFStringGetCString(str, fullPath, length, kCFStringEncodingUTF8 );
|
||||
|
||||
stdstr = fullPath;
|
||||
|
||||
free( fullPath );
|
||||
}
|
||||
else
|
||||
stdstr = fullPath;
|
||||
|
||||
return stdstr;
|
||||
}
|
||||
|
||||
void CSystemUtilsMacOSX::Init()
|
||||
{
|
||||
// These functions are a deprecated way to get the 'Application Support' folder, but they do work, in plain C++
|
||||
FSRef ref;
|
||||
OSType folderType = kApplicationSupportFolderType;
|
||||
char path[PATH_MAX];
|
||||
FSFindFolder( kUserDomain, folderType, kCreateFolder, &ref );
|
||||
FSRefMakePath( &ref, reinterpret_cast<UInt8*>(&path), PATH_MAX );
|
||||
|
||||
m_ASPath = path;
|
||||
m_ASPath.append("/colobot/");
|
||||
|
||||
// Make sure the directory exists
|
||||
boost::filesystem::create_directories(m_ASPath.c_str());
|
||||
|
||||
// Get the Resources bundle URL
|
||||
CFBundleRef mainBundle = CFBundleGetMainBundle();
|
||||
CFURLRef resourcesURL = CFBundleCopyBundleURL(mainBundle);
|
||||
CFStringRef str = CFURLCopyFileSystemPath( resourcesURL, kCFURLPOSIXPathStyle );
|
||||
CFRelease(resourcesURL);
|
||||
|
||||
m_dataPath = CFStringRefToStdString(str);
|
||||
m_dataPath += "/Contents/Resources";
|
||||
}
|
||||
|
||||
std::string CSystemUtilsMacOSX::GetDataPath()
|
||||
{
|
||||
return m_dataPath;
|
||||
}
|
||||
|
||||
std::string CSystemUtilsMacOSX::GetLangPath()
|
||||
{
|
||||
return m_dataPath + "/i18n";
|
||||
}
|
||||
|
||||
std::string CSystemUtilsMacOSX::GetProfileFileLocation()
|
||||
{
|
||||
std::string profileFile = m_ASPath + "/colobot.ini";
|
||||
|
||||
GetLogger()->Trace("Profile file is %s\n", profileFile.c_str());
|
||||
return profileFile;
|
||||
}
|
||||
|
||||
std::string CSystemUtilsMacOSX::GetSavegameDirectoryLocation()
|
||||
{
|
||||
std::string savegameDir = m_ASPath + "/savegame";
|
||||
boost::filesystem::create_directories(savegameDir.c_str());
|
||||
GetLogger()->Trace("Saved game files are going to %s\n", savegameDir.c_str());
|
||||
|
||||
return savegameDir;
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
// * This file is part of the COLOBOT source code
|
||||
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
||||
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
||||
// *
|
||||
// * This program is free software: you can redistribute it and/or modify
|
||||
// * it under the terms of the GNU General Public License as published by
|
||||
// * the Free Software Foundation, either version 3 of the License, or
|
||||
// * (at your option) any later version.
|
||||
// *
|
||||
// * This program is distributed in the hope that it will be useful,
|
||||
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// * GNU General Public License for more details.
|
||||
// *
|
||||
// * You should have received a copy of the GNU General Public License
|
||||
// * along with this program. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
/**
|
||||
* \file app/system_macosx.h
|
||||
* \brief MacOSX-specific implementation of system functions
|
||||
*/
|
||||
|
||||
#include "app/system.h"
|
||||
#include "app/system_other.h"
|
||||
|
||||
class CSystemUtilsMacOSX : public CSystemUtilsOther
|
||||
{
|
||||
public:
|
||||
virtual void Init() override;
|
||||
|
||||
virtual std::string GetDataPath() override;
|
||||
virtual std::string GetLangPath() override;
|
||||
virtual std::string GetProfileFileLocation() override;
|
||||
virtual std::string GetSavegameDirectoryLocation() override;
|
||||
private:
|
||||
std::string m_ASPath;
|
||||
std::string m_dataPath;
|
||||
};
|
||||
|
|
@ -6,6 +6,11 @@
|
|||
#cmakedefine PLATFORM_MACOSX @PLATFORM_MACOSX@
|
||||
#cmakedefine PLATFORM_OTHER @PLATFORM_OTHER@
|
||||
|
||||
#ifdef PLATFORM_MACOSX
|
||||
// Assume we have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework
|
||||
#define HAVE_CFLOCALECOPYCURRENT 1
|
||||
#endif
|
||||
|
||||
#cmakedefine GLEW_STATIC
|
||||
|
||||
#cmakedefine OPENAL_SOUND
|
||||
|
|
|
@ -173,7 +173,8 @@ enum Language
|
|||
LANGUAGE_ENGLISH = 0,
|
||||
LANGUAGE_FRENCH = 1,
|
||||
LANGUAGE_GERMAN = 2,
|
||||
LANGUAGE_POLISH = 3
|
||||
LANGUAGE_POLISH = 3,
|
||||
LANGUAGE_RUSSIAN = 4
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -218,15 +218,30 @@ void CImage::PadToNearestPowerOfTwo()
|
|||
int w = Math::NextPowerOfTwo(m_data->surface->w);
|
||||
int h = Math::NextPowerOfTwo(m_data->surface->h);
|
||||
|
||||
BlitToNewRGBASurface(w, h);
|
||||
}
|
||||
|
||||
void CImage::ConvertToRGBA()
|
||||
{
|
||||
assert(m_data != nullptr);
|
||||
|
||||
int w = m_data->surface->w;
|
||||
int h = m_data->surface->h;
|
||||
|
||||
BlitToNewRGBASurface(w, h);
|
||||
}
|
||||
|
||||
void CImage::BlitToNewRGBASurface(int width, int height)
|
||||
{
|
||||
m_data->surface->flags &= (~SDL_SRCALPHA);
|
||||
SDL_Surface* resizedSurface = SDL_CreateRGBSurface(0, w, h, 32, 0x00ff0000, 0x0000ff00,
|
||||
0x000000ff, 0xff000000);
|
||||
assert(resizedSurface != NULL);
|
||||
SDL_BlitSurface(m_data->surface, NULL, resizedSurface, NULL);
|
||||
SDL_Surface* convertedSurface = SDL_CreateRGBSurface(0, width, height, 32, 0x00FF0000, 0x0000FF00,
|
||||
0x000000FF, 0xFF000000);
|
||||
assert(convertedSurface != nullptr);
|
||||
SDL_BlitSurface(m_data->surface, nullptr, convertedSurface, nullptr);
|
||||
|
||||
SDL_FreeSurface(m_data->surface);
|
||||
|
||||
m_data->surface = resizedSurface;
|
||||
m_data->surface = convertedSurface;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -376,6 +391,11 @@ bool CImage::Load(const std::string& fileName)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (m_data->surface->format->palette != nullptr)
|
||||
{
|
||||
ConvertToRGBA();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -97,6 +97,9 @@ public:
|
|||
//! Pads the image to nearest power of 2 dimensions
|
||||
void PadToNearestPowerOfTwo();
|
||||
|
||||
//! Convert the image to RGBA surface
|
||||
void ConvertToRGBA();
|
||||
|
||||
//! Loads an image from the specified file
|
||||
bool Load(const std::string &fileName);
|
||||
|
||||
|
@ -107,6 +110,9 @@ public:
|
|||
std::string GetError();
|
||||
|
||||
private:
|
||||
//! Blit to new RGBA surface with given size
|
||||
void BlitToNewRGBASurface(int width, int height);
|
||||
|
||||
//! Last encountered error
|
||||
std::string m_error;
|
||||
//! Image data
|
||||
|
|
|
@ -3138,9 +3138,9 @@ void CRobotMain::CreateTooltip(Math::Point pos, const char* text)
|
|||
start, end);
|
||||
|
||||
start.x -= 0.010f;
|
||||
start.y -= 0.002f;
|
||||
start.y -= 0.006f;
|
||||
end.x += 0.010f;
|
||||
end.y += 0.004f; // ch'tite (?) margin
|
||||
end.y += 0.008f; // small'ish margin
|
||||
|
||||
pos.x = start.x;
|
||||
pos.y = start.y;
|
||||
|
|
|
@ -57,7 +57,7 @@ CControl::~CControl()
|
|||
|
||||
bool CControl::Create(Math::Point pos, Math::Point dim, int icon, EventType eventType)
|
||||
{
|
||||
char text[100];
|
||||
char text[200];
|
||||
std::string str_text;
|
||||
|
||||
if ( eventType == EVENT_NULL )
|
||||
|
|
|
@ -1191,8 +1191,8 @@ void CWindow::DrawVertex(Math::Point pos, Math::Point dim, int icon)
|
|||
else if ( icon == 1 )
|
||||
{
|
||||
m_engine->SetTexture("button1.png");
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_TTEXTURE_WHITE);
|
||||
uv1.x = 128.0f/256.0f; // yellow tooltip
|
||||
m_engine->SetState(Gfx::ENG_RSTATE_NORMAL);
|
||||
uv1.x = 128.0f/256.0f; // white tooltip
|
||||
uv1.y = 0.0f/256.0f;
|
||||
uv2.x = 224.0f/256.0f;
|
||||
uv2.y = 16.0f/256.0f;
|
||||
|
|
|
@ -2,15 +2,6 @@ set(SRC_DIR ${colobot_SOURCE_DIR}/src)
|
|||
|
||||
configure_file(${SRC_DIR}/common/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/common/config.h)
|
||||
|
||||
# Platform-dependent implementation of system.h
|
||||
if(PLATFORM_WINDOWS)
|
||||
set(SYSTEM_CPP_MODULE "system_windows.cpp")
|
||||
elseif(PLATFORM_LINUX)
|
||||
set(SYSTEM_CPP_MODULE "system_linux.cpp")
|
||||
else()
|
||||
set(SYSTEM_CPP_MODULE "system_other.cpp")
|
||||
endif()
|
||||
|
||||
set(TEXTURE_SOURCES
|
||||
${SRC_DIR}/graphics/core/color.cpp
|
||||
${SRC_DIR}/graphics/opengl/gldevice.cpp
|
||||
|
@ -28,6 +19,7 @@ ${SRC_DIR}/common/image.cpp
|
|||
${SRC_DIR}/common/stringutils.cpp
|
||||
${SRC_DIR}/app/system.cpp
|
||||
${SRC_DIR}/app/${SYSTEM_CPP_MODULE}
|
||||
${SRC_DIR}/app/system_other.cpp
|
||||
model_test.cpp
|
||||
)
|
||||
|
||||
|
@ -38,6 +30,7 @@ ${SRC_DIR}/common/logger.cpp
|
|||
${SRC_DIR}/common/image.cpp
|
||||
${SRC_DIR}/app/system.cpp
|
||||
${SRC_DIR}/app/${SYSTEM_CPP_MODULE}
|
||||
${SRC_DIR}/app/system_other.cpp
|
||||
transform_test.cpp
|
||||
)
|
||||
|
||||
|
@ -48,6 +41,7 @@ ${SRC_DIR}/common/logger.cpp
|
|||
${SRC_DIR}/common/image.cpp
|
||||
${SRC_DIR}/app/system.cpp
|
||||
${SRC_DIR}/app/${SYSTEM_CPP_MODULE}
|
||||
${SRC_DIR}/app/system_other.cpp
|
||||
light_test.cpp
|
||||
)
|
||||
|
||||
|
@ -68,6 +62,7 @@ ${SDLIMAGE_LIBRARY}
|
|||
${OPENGL_LIBRARY}
|
||||
${GLEW_LIBRARY}
|
||||
${PNG_LIBRARIES}
|
||||
${Boost_LIBRARIES}
|
||||
)
|
||||
|
||||
add_executable(texture_test ${TEXTURE_SOURCES})
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Test programs for OpenGL engine:
|
||||
- texture_test -> multitexturing test with 2 textures (included as files: ./tex1.png, ./tex2.png)
|
||||
- model_test -> simple model viewer to test model loading
|
||||
usage: ./model_test {dxf|mod} model_file
|
||||
usage: ./model_test {old|new_txt|new_bin} model_file
|
||||
second argument is the loaded format (DXF or Colobot .mod files)
|
||||
requires ./tex folder (or symlink) with Colobot textures
|
||||
viewer is controlled from keyboard - the bindings can be found in code
|
||||
|
|
|
@ -365,6 +365,9 @@ int SDL_MAIN_FUNC(int argc, char *argv[])
|
|||
{
|
||||
CLogger logger;
|
||||
|
||||
CSystemUtils* systemUtils = CSystemUtils::Create(); // platform-specific utils
|
||||
systemUtils->Init();
|
||||
|
||||
PREV_TIME = GetSystemUtils()->CreateTimeStamp();
|
||||
CURR_TIME = GetSystemUtils()->CreateTimeStamp();
|
||||
|
||||
|
|
|
@ -265,6 +265,9 @@ int SDL_MAIN_FUNC(int argc, char *argv[])
|
|||
{
|
||||
CLogger logger;
|
||||
|
||||
CSystemUtils* systemUtils = CSystemUtils::Create(); // platform-specific utils
|
||||
systemUtils->Init();
|
||||
|
||||
PREV_TIME = GetSystemUtils()->CreateTimeStamp();
|
||||
CURR_TIME = GetSystemUtils()->CreateTimeStamp();
|
||||
|
||||
|
@ -273,7 +276,7 @@ int SDL_MAIN_FUNC(int argc, char *argv[])
|
|||
|
||||
if (argc != 3)
|
||||
{
|
||||
std::cerr << "Usage: " << argv[0] << "{old|new_txt|new_bin} model_file" << std::endl;
|
||||
std::cerr << "Usage: " << argv[0] << " {old|new_txt|new_bin} model_file" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -243,6 +243,9 @@ int SDL_MAIN_FUNC(int argc, char *argv[])
|
|||
{
|
||||
CLogger logger;
|
||||
|
||||
CSystemUtils* systemUtils = CSystemUtils::Create(); // platform-specific utils
|
||||
systemUtils->Init();
|
||||
|
||||
PREV_TIME = GetSystemUtils()->CreateTimeStamp();
|
||||
CURR_TIME = GetSystemUtils()->CreateTimeStamp();
|
||||
|
||||
|
|
|
@ -18,20 +18,12 @@ endif()
|
|||
# Configure file
|
||||
configure_file(${SRC_DIR}/common/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/common/config.h)
|
||||
|
||||
# Platform-dependent implementation of system.h
|
||||
if(PLATFORM_WINDOWS)
|
||||
set(SYSTEM_CPP_MODULE "system_windows.cpp")
|
||||
elseif(PLATFORM_LINUX)
|
||||
set(SYSTEM_CPP_MODULE "system_linux.cpp")
|
||||
else()
|
||||
set(SYSTEM_CPP_MODULE "system_other.cpp")
|
||||
endif()
|
||||
|
||||
# Code sources
|
||||
set(COLOBOT_SOURCES
|
||||
${SRC_DIR}/app/app.cpp
|
||||
${SRC_DIR}/app/system.cpp
|
||||
${SRC_DIR}/app/${SYSTEM_CPP_MODULE}
|
||||
${SRC_DIR}/app/system_other.cpp
|
||||
${SRC_DIR}/common/event.cpp
|
||||
${SRC_DIR}/common/image.cpp
|
||||
${SRC_DIR}/common/iman.cpp
|
||||
|
|
|
@ -7,10 +7,15 @@ ${GTEST_INCLUDE_DIR}
|
|||
|
||||
add_executable(image_test ${SRC_DIR}/common/image.cpp image_test.cpp)
|
||||
target_link_libraries(image_test ${SDL_LIBRARY} ${SDLIMAGE_LIBRARY} ${PNG_LIBRARIES})
|
||||
add_test(NAME image_test
|
||||
COMMAND ${CMAKE_BINARY_DIR}/image_test ${CMAKE_SOURCE_DIR}/test/envs/opengl/tex1.png ${CMAKE_BINARY_DIR}/tex1_test.png)
|
||||
|
||||
file(COPY colobot.ini DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
# add_executable(profile_test ${SRC_DIR}/common/profile.cpp ${SRC_DIR}/common/logger.cpp profile_test.cpp)
|
||||
# target_link_libraries(profile_test gtest ${Boost_LIBRARIES})
|
||||
add_executable(profile_test ${SRC_DIR}/common/profile.cpp ${SRC_DIR}/common/logger.cpp profile_test.cpp)
|
||||
set_target_properties(profile_test PROPERTIES COMPILE_DEFINITIONS "DEV_BUILD=1")
|
||||
target_link_libraries(profile_test gtest ${Boost_LIBRARIES})
|
||||
|
||||
# add_test(profile_test ./profile_test)
|
||||
add_test(NAME profile_test
|
||||
COMMAND ${CMAKE_BINARY_DIR}/profile_test
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
|
|
@ -10,21 +10,18 @@ ${CLIPBOARD_INCLUDE_DIR}
|
|||
|
||||
# Platform-dependent implementation of CSystemUtils
|
||||
if(PLATFORM_WINDOWS)
|
||||
set(SYSTEM_CPP_MODULE "system_windows.cpp")
|
||||
elseif(PLATFORM_LINUX)
|
||||
set(SYSTEM_CPP_MODULE "system_linux.cpp")
|
||||
set(ADDITIONAL_LIB "-lX11")
|
||||
elseif(PLATFORM_MACOSX)
|
||||
set(SYSTEM_CPP_MODULE "system_other.cpp")
|
||||
set(ADDITIONAL_LIB "${X11_X11_LIB}")
|
||||
else()
|
||||
set(SYSTEM_CPP_MODULE "system_other.cpp")
|
||||
set(ADDITIONAL_LIB "-lX11")
|
||||
endif()
|
||||
|
||||
add_executable(edit_test
|
||||
${SRC_DIR}/app/system.cpp
|
||||
${SRC_DIR}/app/${SYSTEM_CPP_MODULE}
|
||||
${SRC_DIR}/app/system_other.cpp
|
||||
${SRC_DIR}/common/event.cpp
|
||||
${SRC_DIR}/common/logger.cpp
|
||||
${SRC_DIR}/common/misc.cpp
|
||||
|
|
Loading…
Reference in New Issue