Compare commits

...

262 Commits

Author SHA1 Message Date
gitMarky 4a2048575f Refactor movement code (#87)
Improve readability by adding appropriate parentheses and braces, and fixing misleading/confusing whitespace. Extract SolidMask removal to a function since it's used in several places.
2019-03-05 21:15:39 +01:00
David Dormagen 765d9a24e9
Merge pull request #86 from fohly/master
better confetti for Boomshire
2019-03-02 10:19:55 +01:00
Philip Holzmann a844b6fe5b better confetti for Boomshire 2019-03-02 09:29:30 +01:00
Lukas Werling c9ee2c3eab Fix "no matching sound" error spam
Previously, the error message was only silenced for openclonk-server,
but appeared for openclonk if compiled without sounds.

Possible side effect: no local sounds will play if the global Sound.ocg
cannot be loaded. I don't think this is something we should support.
2019-02-20 09:36:35 +01:00
Lukas Werling 319dc87eea Remove #undef new/delete before Qt includes
This has not been necessary anymore since a1885006 ("Remove MS CRT
memory management debugging").
2019-02-19 15:35:00 +01:00
Lukas Werling 60841c1d96 Write text files with unix file endings
The old LineFeed constant caused problems with Qt. Using \n directly is
easier and I don't think there's a reason left to use \r\n anyways.
We've always converted the files in the repository. Nowadays, even
notepad.exe works with unix file endings.
2019-02-19 15:28:12 +01:00
isilkor a00566ca9e
Merge pull request #85 from isilkor/better-warning-pragma-parsing
Better warning pragma parsing
2019-02-17 14:04:00 +01:00
Nicolas Hake a0c9bfd931 Aul: Correctly check for enable/disable keywords in warning pragma
The parser was only checking that the passed setting matched the
beginning of the expected keyword, instead of checking for the full
length. This way, users could write "#warning e" instead of the
expected "#warning enable" and still have it work.
2019-02-17 11:58:03 +01:00
Nicolas Hake c8d22e321b Aul: Throw correct exception on parameter-less warning pragma
When no parameter followed the "#warning" pragma, because the end
iterator would be located before the begin iterator, basic_string's
constructor would throw std::length_error. Check for this case
beforehand so we can throw the expected C4ParseError instead.
2019-02-17 11:58:03 +01:00
Lukas Werling 918c4139e8 Add Flintbrawl by Zapper 2019-02-03 19:14:53 +01:00
Lukas Werling ee35d256aa Add basic character classes to WildcardMatch() 2019-02-03 19:14:53 +01:00
Lukas Werling 75d4ac2512 Fix team count inconsistency with random teams (#2051)
Switching to random teams would remove all teams but the first two on
the host, but not on the clients. With this fix, the extra teams are
removed on the clients as well. This fixes a desync when using
GetTeamCount() in a sync-relevant way.
2019-02-02 00:27:36 +01:00
Lukas Werling f6fba582f3 Fix star placement on full map screenshots (#1454) 2019-01-30 22:50:23 +01:00
Linus Heckemann c7550bd43c openclonk-server: install 2019-01-20 12:49:39 +01:00
Linus Heckemann 69fd50bee1 nix expression: fix build
Now that openclonk gets installed to bin, we don't need to (and
can't!) create the symlink anymore.
2019-01-20 12:38:54 +01:00
isilkor ad2eddcd63
Merge pull request #80 from isilkor/check-setlength-parameter-for-nil
Script: Test SetLength parameter 0 for nil (GH #79)
2019-01-05 19:47:38 +01:00
Nicolas Hake 486619b653 Script: Test SetLength parameter 0 for nil (GH #79)
SetLength didn't check whether its first parameter was valid, and
attempted to dereference a NULL pointer when passed nil.
2019-01-05 19:25:35 +01:00
Lukas Werling 3a59c15250 Add openclonk:// protocol handler (#1657) 2019-01-02 17:16:09 +01:00
Nicolas Hake d7ea9acfea C4Property: Don't use operator void* in tests anymore either 2019-01-01 22:20:04 +01:00
Nicolas Hake 5cf852d8ab C4Property: Add missing template<> specifier
MSVC doesn't care, apparently.
2019-01-01 21:55:42 +01:00
Nicolas Hake 0a81206b7e C4Property: Remove raw operator void*
operator void* is a quick and dirty workaround for the lack of
explicit operator bool in old C++ standards. Since we can use
explicit operator bool now, we don't need the operator void*
anymore.

Incidentally, that operator also allowed C4Set to equality compare
C4Property entries, which is unintuitive. Replace it with an
explicit specialization of C4Set::Equals.
2019-01-01 21:35:08 +01:00
Nicolas Hake 31c7805f10 C4Set: Replace elements with zero-initialized ones on clear
C4Set used to set its removed elements to nullptr. This requires
some special handling from non-pointer entries like C4Property.
Overwriting the element with a zero-initialized one removes this
requirement, leading to improved type safety on the part of
C4Property.
2019-01-01 21:35:08 +01:00
Nicolas Hake 15ad4fb690 MSVC: Disable incremental linking
LTCG doesn't work with incremental linking, but unless we explicitly
disable incremental linking, CMake tells the linker to attempt it.
2019-01-01 21:26:30 +01:00
Nicolas Hake 3a8830af6e C4Effect: Remove obsolete fire effect constants
These constants aren't used anywhere inside the engine anymore and
should therefore be removed.
2019-01-01 20:52:38 +01:00
Nicolas Hake 1b2f2889ad Old CMake: Correctly handle try_compile with language standard flags
CMake before 3.7 didn't properly pass the standard selection flags
to try_compile. Wrap try_compile on old CMake versions so that the
flag gets passed.
2018-12-31 17:34:34 +01:00
Nicolas Hake bc88820d57 Travis: Use CMake 3 on Ubuntu Trusty 2018-12-31 14:53:07 +01:00
Nicolas Hake 3edc6d9ead Fix misleading indentation on several controlled statements
The C++ standard doesn't require us to stuff multiple statements
onto the same line, so we should avoid this for readability reasons.
This is especially true if one of the statements is controlled and
others aren't.
2018-12-31 14:27:14 +01:00
Nicolas Hake dca6d2caaf C4Landscape: Correct really badly misleading indentation
Some code here was indented like it still belonged to the loop
above, but never did, and was never intended to. This is an
excellent argument for why braces are good, especially for
statements which span more than one line.
2018-12-31 14:17:23 +01:00
Nicolas Hake 7cd79b1eaa CMake: Use native Qt5 config instead of bad reimplementation
Qt5 already ships CMake configuration files with proper dependencies
so there's no need to build our own broken test for it.
2018-12-31 12:48:19 +01:00
Nicolas Hake 3b0891ba89 CMake: Remove #define for standard C++ features
We don't need to have a macro that just tells us that we're in fact
using standard C++. Especially if it isn't used anywhere.
2018-12-31 12:37:34 +01:00
Nicolas Hake b012189af4 CMake: Remove <stdint.h>, <inttypes.h> tests
<stdint.h> and <inttypes.h> are part of the C standard and available
on every platform with a conforming compiler.
2018-12-31 12:33:49 +01:00
Nicolas Hake c638647227 CMake: Remove <locale.h> test
We're not using the <locale.h> header anywhere besides including it
for no purpose, so we can drop the test (and the inclusion).
Additionally, the header is part of standard C++.
2018-12-31 12:30:06 +01:00
Nicolas Hake 8298813a90 CMake: Remove <direct.h> test
We're not using the <direct.h> header anywhere besides including it
for no purpose, so we can drop the test (and the inclusion).
2018-12-31 12:20:39 +01:00
Nicolas Hake 15f4a06cd4 CMake: Require C++14 support
CMake now supports compiler features (including language level), so
we can directly require C++14 instead of testing for compiler-
specific flags.
2018-12-31 12:15:49 +01:00
Nicolas Hake b702f1583c CMake: Update requirements to 3.5.1
CMake 3.5.1 is the version that ships with Ubuntu 16.04 LTS. Ubuntu
14.04 LTS was already unsupported by our build, so we don't need to
worry about that.
2018-12-31 11:51:21 +01:00
Nicolas Hake 606ad23e02 CMake: Deprecate CMAKE_ADDITIONAL_DEPS_PATH
The variable completely duplicates a different one and also intrudes
on CMake's own namespace. It should therefore be removed when
possible.
2018-12-31 11:34:18 +01:00
Mark a29d6f005c Added method for getting the connected object 2018-12-28 00:34:57 +01:00
Mark cd38671f61 Pipe control: Begin integrating limits into the library
Not sure about air pipes yet, those should theoretically be either
source or drain, instead of a separate connection category?

See also:
https://bugs.openclonk.org/view.php?id=1871
2018-12-28 00:14:54 +01:00
Mark 2a045a097b Renamed folder 2018-12-27 21:33:45 +01:00
Mark a8c475d212 Renamed pipe control internals 2018-12-27 21:31:36 +01:00
Mark 00b1b37787 Renamed Library_Tank to Library_PipeControl
The library did not depend on the Library_LiquidContainer script at all,
removed that include and added it to the previous includers.
Removed the IsLiquidTank() identifier, because it was unused.
2018-12-27 21:21:53 +01:00
Mark 94e200f201 Fix smoke and gravity issue
Smoke used to fly higher with gravity 40 than with gravity 10. Fixed
this by using a start value. At default gravity, light smoke will fly
rise a little higher now, and heavy smoke behaves the same.
With higher gravity the smoke may fall to the ground now.
2018-12-27 20:30:58 +01:00
Mark d0756e3b1c Producer: Allow overloading where the producer takes components from 2018-12-27 19:51:19 +01:00
Mark 68bb07f162 Allow more options for customization in the resource selection icons 2018-12-27 17:45:32 +01:00
Mark 3f2ee5080d Limit liquid input to the maximum available amount 2018-12-25 16:53:47 +01:00
Mark 1c9164b4be Collect cut pipes to Clonk inventory, if possible 2018-12-25 15:53:51 +01:00
Mark f5b1279cce Formatted code 2018-12-25 15:16:38 +01:00
Mark 431456d1fa Use new library in pump 2018-12-25 11:13:01 +01:00
Mark 8a26454f3c Library: Resource selection
The resource/material selection from the pump was practical, maybe even
applicable for cable cars and the like. Extracted a separate library for
that.
2018-12-25 11:11:44 +01:00
Mark bab1b7ee90 Extracted actual producer logic||Certain external projects have different systems and want to just use the logic on their own, without copy & paste of the file contents. 2018-12-21 21:29:45 +01:00
Mark 286d4d6a5b Added version info to the docu 2018-12-21 21:15:11 +01:00
Mark cf7469043d Simplified logic for substitutes
The production cost method returns an array of material cost arrays, but
their format has changed. Instead of
  [<default resource>, <cost>, <substitute(s)>]
it now returns an array of proplists
  [{Resource = optionA, Amount = costA}, {Resource = optionB, Amount =
costB}]
so that there are fewer cases to keep in mind: No "are there
substitutes?", but you can simply check all variants and pick the best.
This also allows different substitutions, for example "2 earth or 3
sand" is now possible.
2018-12-21 16:54:43 +01:00
Mark 36dbbd27e1 Formatted code 2018-12-21 14:26:24 +01:00
Mark c6254c2512 Added more producer tests 2018-12-21 14:05:30 +01:00
Mark 2ed69b96a5 Added producer test for substitute components 2018-12-21 11:57:39 +01:00
Mark b73169616b Fix producer test
Updating the values for substitutions was forgotten in 808e7fa, leading
to a failing test 5.
2018-12-21 11:49:56 +01:00
Mark 6bdb4275f7 Formatted code, no change in functionality
Brackets, protected/private func => func, whitespaces
2018-12-21 11:25:19 +01:00
Mark d9bc1d9142 Added callback for production progress 2018-12-21 11:08:10 +01:00
Mark 9deab8e6a9 Fix the logic again
Otherwise you can exit containers without an entrance area.
2018-12-21 09:56:19 +01:00
Mark b35a58a7fc Removed unused constants
This was a weird menu thing that I added about 2 years ago, and it is
not very useable, and not used :)
2018-12-21 09:10:33 +01:00
Mark ed514b7716 Added option for ignoring contents in the interaction menu
Also ignore Clonks as "inventory items" if they are contained.
2018-12-21 09:01:20 +01:00
Mark fcf2af1937 Fix not being able to exit a structure
It seems that the default structures have the entrance close to the
offset, so that there is an overlap and can_be_entered is true even
inside the structure.

In my case the structure offset and entrance area do not overlap, so you
could unfortunately not leave the structure.
2018-12-20 23:49:39 +01:00
Mark 6351fe7a66 GetEnergy() offers exact energy value optionally (Bug #2043) 2018-12-20 08:40:04 +01:00
Nicolas Hake 11cfcdd910 Appveyor: Stop depending on specific Qt build for building too 2018-11-18 10:15:28 +01:00
Nicolas Hake 5808ca8047 Appveyor: Stop depending on specific Qt build
AppVeyor occasionally updates platform images without really
versioning them, so in order to have a higher chance of not being
broken by those, we'll just use 5.11 instead of specifying 5.11.1
explicitly.
2018-11-18 10:02:11 +01:00
Nicolas Hake f90e424f4a Appveyor: Bundle C4Group
Users have requested that C4Group is bundled with the snapshots, and
the file itself is fairly small, so it should be fine to ship it as
well.
2018-11-14 20:03:52 +01:00
Lukas Werling 34d89adf47 Fix build on gcc 4.x 2018-10-15 21:01:15 +02:00
Clonkonaut c6d5c5044f Rework interaction menu into a new style. Also, style overloads are easily possible.
Because I did this in the test scenario first, it wasn't really possible to encapsulate different steps, sorry!
2018-10-15 17:38:22 +02:00
Lukas Werling 952cfef497 Add missing C4Include include in C4ConsoleQtShapes
Qt's moc generates another source file that includes this header without
including C4Include.h first. The generates source file thus doesn't
compile. It is unclear to me why this isn't an issue with our current
build setup (it is an issue with a meson-based build).
2018-10-14 23:19:32 +02:00
Lukas Werling a73e5fc871 undef "s" macro in C4Config
Necessary for unity builds, but also has a high conflict probability in
general.
2018-10-14 23:16:59 +02:00
Lukas Werling ca11d86893 Add missing include guards
These are necessary for unity builds.
2018-10-14 23:15:01 +02:00
Lukas Werling 7273b87b01 StdAdaptors: Replace array size macros with templates 2018-10-14 23:07:23 +02:00
Clonkonaut 2d3914b33b Fresh repository, fresh build on Windows, VS created these folders. Hope it's cool to put them on ignore. 2018-10-10 01:43:58 +02:00
Nicolas Hake a65dd5874f Appveyor: Fix library bundling path 2018-10-08 20:57:39 +02:00
Nicolas Hake ca2ba96969 Appveyor: Generate package and upload it if credentials are set 2018-10-07 20:21:17 +02:00
Nicolas Hake 6dcaaa7af5 Appveyor: Inject Google Test location 2018-10-07 20:21:17 +02:00
Nicolas Hake 9691c1e41a Appveyor: Build on Visual Studio 2017 x64 only
There is no pre-built binary package of Qt for 32 bit Visual Studio
2017, so we'll drop it for now.
2018-10-07 20:21:17 +02:00
Nicolas Hake 354b6be1c6 CI: Use AppVeyor to build MSVC binaries 2018-10-07 20:21:17 +02:00
Julius Michaelis 0d7738dce5 Drop broken GCC precompiled header support 2018-10-04 08:33:31 +02:00
Lukas Werling 04535b5438 Travis: Add update information for AppImage snapshots 2018-10-03 23:45:45 +02:00
Lukas Werling 55c34ecbd7 Add git branch to C4Version.h
The branch information is necessary for upcoming automatically-updating
snapshots. For Travis, cmake will also pick up the branch name from the
C4REVISION_BRANCH environment variable.
2018-10-03 23:44:35 +02:00
Lukas Werling 7616fa81be Travis: Update dependencies for AppImage snapshot 2018-09-25 20:02:51 +02:00
Lukas Werling 950ad4cf2f Fix C4ScriptLibrary destruction
C4PropListStaticMember must be deleted manually.
2018-09-25 20:02:51 +02:00
Lukas Werling 05e3648495 Travis: Skip TCP bind test because of missing IPv6 support 2018-09-25 20:02:51 +02:00
Lukas Werling 82feac4ccb Remove broken assert() 2018-09-25 20:02:51 +02:00
Lukas Werling 8aeef938fc Travis: Build and upload AppImage snapshot 2018-09-25 20:01:16 +02:00
Lukas Werling 8df71d3f32 Prevent parallel groups packing with ninja
For some reason, generating the groups in parallel fails frequently.
2018-09-24 19:22:32 +02:00
Lukas Werling 5395a8dc84 Add WITH_APPDIR_INSTALLATION configuration option
With this option enabled, `make install` will install the files in an
AppDir-compatible directory structure suitable for creating an AppImage.
2018-09-24 19:22:32 +02:00
Lukas Werling d8add861fe Fix LTO ar wrappers for versioned gcc executables
Debian packages older/newer gcc versions with executables named like
gcc-5, gcc-ar-5. The previous implementation did not handle this
correctly, breaking LTO-enabled linking.
2018-09-24 17:43:27 +02:00
Lukas Werling 2fb14b026d Script: Remove effect after error in Timer
As the timer tends to run more than once, you'd also very likely get the
error more than once. The timer also often determines the effect
lifetime, making a broken effect live forever.

This was especially annoying with one-off Schedule() invokations
that wouldn't even stop throwing errors after finishing the
designated number of repeats. Although fixing just that script
function would have been possible, I believe that a more general
solution for all effects is useful.
2018-08-26 23:15:05 +02:00
Nicolas Hake f5988085a7 Figure out whether a warning/error was #include'd or #appendto'd
We already notified the user on warning/error that the mistake
happened in a different script than the one we were currently
compiing. It's not too difficult to figure out whether that other
script was added due to an #include or an #appendto directive, so we
can just show the user which one it is.

We also don't show warnings in #include'd scripts anymore, since
they get compiled individually anyway and all warnings will show up
there. This way we don't duplicate warnings several times.
2018-07-24 14:35:12 +02:00
Nicolas Hake 829bb8cb28 Script functions: remove all BCCs at once instead of individually 2018-07-24 14:24:19 +02:00
Nicolas Hake 1cd3534740 C4KeyboardInput: Replace std::bind2nd &c by lambda
std::ptr_fun and std::bind_2nd have been deprecated since C++11, and
are no longer part of the standard since C++17.
2018-07-24 14:21:42 +02:00
Nicolas Hake 907c701fc6 Save scenario: Disable all warnings in auto-generated file 2018-07-24 14:20:09 +02:00
Nicolas Hake 4c5dfac952 Remove or use unused variables in Objects, System 2018-07-24 14:19:26 +02:00
Nicolas Hake 5ef52f2450 Fix variable_out_of_scope warnings in Worlds 2018-07-23 12:30:23 +02:00
Nicolas Hake 14ed608941 Fix variable_out_of_scope warnings in Missions 2018-07-23 12:30:23 +02:00
Nicolas Hake 7fb098c4df Fix variable_out_of_scope warnings in Defense 2018-07-23 12:30:23 +02:00
Nicolas Hake 1ef6b7a7fc Fix variable_out_of_scope warnings in Arena 2018-07-23 12:30:23 +02:00
Nicolas Hake 1bb728b047 Fix variable_out_of_scope warnings in Objects 2018-07-23 12:12:23 +02:00
Nicolas Hake 4c43ebf58c Warn when using variables outside of their block
When we introduce block scoping, using variables declared in a more
narrow scope from a block with wider scope will fail. Warn about
these so people can avoid it and fix their code.
2018-07-23 12:12:23 +02:00
Nicolas Hake b82cd52765 HotIce: Add closing brace omitted in c3ef039 2018-07-23 12:10:02 +02:00
Nicolas Hake a73c1998e4 Fix suspicious_assignment warnings in World 2018-07-23 10:45:52 +02:00
Nicolas Hake c4f47a6329 Fix suspicious_assignment warnings in Parkour 2018-07-23 10:45:52 +02:00
Nicolas Hake c3ef039872 Fix suspicious_assignment warnings in Arena 2018-07-23 10:45:52 +02:00
Nicolas Hake 8950db9cb4 Fix incorrect assignment instead of comparison in TutorialGuide 2018-07-23 10:45:52 +02:00
Nicolas Hake 30aa6abb55 Move PlaceBatches into System.ocg 2018-07-23 10:45:52 +02:00
Nicolas Hake 05ca450111 Fix suspicious_assignment warnings in Missions 2018-07-23 10:45:52 +02:00
Nicolas Hake 806357e283 Fix suspicious_assignment warnings in Defense 2018-07-23 10:45:52 +02:00
Nicolas Hake 808a90e5af Fix suspicious_assignment warnings in Decoration 2018-07-23 10:45:52 +02:00
Nicolas Hake e024bef54b Fix suspicious_assignment warnings in Objects, System 2018-07-23 10:45:52 +02:00
Nicolas Hake 81dff1b92a Disable suspicious_assigment warning in for conditions
While I do not agree with the idea of using straight assignments in
the condition of a for loop, people are divided on the argument and
lots of old code uses it.
2018-07-23 08:29:46 +02:00
Maikel de Vries ddc68d7ad3 column: proper rotation and allow smaller sizes 2018-07-04 08:30:53 +02:00
Maikel de Vries c3b114042d melt snow and ice much faster while submerged in lava 2018-07-04 08:17:11 +02:00
Maikel de Vries c47b790468 remove recently introduced debug logs 2018-06-25 08:49:10 +02:00
Maikel de Vries 7a933e81b7 windbag: scenario save full load to prevent air intake at scenario start 2018-06-23 15:36:20 +02:00
Maikel de Vries 5bb9fa228a ladder: climb up and down smoothly when grabbing ladder
I don't know the reason for not having this, but now we mimic normal wall climbing behaviour which is much smoother and leads to faster game play.
2018-06-23 10:05:45 +02:00
Maikel de Vries b11a25db4b fire: only reduce own fire strength if incineration of nearby object was successful 2018-06-23 10:05:45 +02:00
Maikel de Vries 446564f703 implement eternal flame saving 2018-06-23 10:05:45 +02:00
Lukas Werling f8c0fe6f82 Fix fallthrough in command line parsing 2018-04-23 12:12:32 +02:00
Lukas Werling 6d5dc2b92e c4group -l: Print both file and contents CRC
The contents CRC is the number that actually counts for group equality,
whereas the file CRC may differ, for example because of different
compression.
2018-04-21 21:41:28 +02:00
Martin Strohmeier a51560ce4f Add Nautilus to music folder 2018-04-21 15:13:32 +02:00
Romain Naour 4ae0a92d39 CMake: add C4GROUP_TOOL_ONLY
When cross-compiling c4group should be build for the host
machine before building OpenClonk for the target.

Without C4GROUP_TOOL_ONLY option, we have to build OpenClonk
for the host.

C4GROUP_TOOL_ONLY allow to build only c4group tool for the
host.

Signed-off-by: Romain Naour <romain.naour@gmail.com>
---
With this patch I can build OpenClonk with Buildroot.
2018-04-21 10:58:31 +02:00
Romain Naour 87b60e99f6 CMake: use FIND_PROGRAM
While cross-compiling, it is easier to find a binary
from the patch using FIND_PROGRAM instead of using
a cmake file.

Try to find c4group native tool with FIND_PROGRAM and
fallback to the cmake file if c4group is not found.

Signed-off-by: Romain Naour <romain.naour@gmail.com>
2018-04-21 10:18:50 +02:00
Romain Naour 48c38c91dc CMake: build libmisc and libc4script statically
As reported by [1], some distributions use shared libraries as
default preset in CMake.

Without explicitely linking statically libmisc and libc4script,
we have the following link issue:

[...]/host/bin/x86_64-linux-g++ --sysroot=[...]sysroot
-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os
-std=gnu++14 -Wall -Wextra -Wredundant-decls -Wendif-labels
-Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Winit-self
-Wsign-promo -Wno-reorder -Wno-unused-parameter -Wnon-virtual-dtor
-Woverloaded-virtual  -DNDEBUG
-rdynamic CMakeFiles/c4group.dir/src/c4group/C4GroupMain.cpp.o
-o c4group
-Wl,-rpath,[...]/build/openclonk-7.0:
liblibmisc.so -lz -lpthread -lrt
liblibmisc.so : référence indéfinie vers « C4LangStringTable::Translate(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const »
liblibmisc.so : référence indéfinie vers « C4LangStringTable::system_string_table »

[1] https://github.com/openclonk/openclonk/pull/26

While at it, build libopenclonk statically since libopenclonk is not
installed by the CMake build system.

Signed-off-by: Romain Naour <romain.naour@gmail.com>
2018-04-21 10:18:50 +02:00
Lukas Werling 9fed69f3fa Add resolution uniform for sprite and mesh shaders (#2031)
The landscape shader already has such a uniform.
2018-04-18 12:02:43 +02:00
Lukas Werling 9a6772c27e Fix phase by xdir for DFA_Push (#2030) 2018-04-18 11:35:28 +02:00
Maikel de Vries 899fbaa867 cable cars: let sawmill send empty hoist to pickup trees 2018-04-16 11:13:32 +02:00
Maikel de Vries a4d20d79d5 cable cars: extend order interface and let producer order more components at a time 2018-04-16 11:13:32 +02:00
Mark 75a82e172a Added a generic ambient sound object
Is more versatile than Ambience_Zicadas. Could need some editor
functions. Backported from OC Classic.
2018-04-14 14:12:52 +02:00
Mark 25d008e99d FatalError: Allow formatting the message directly
FatalError(Format(...)) was necessary previously. Actually it seems not
like a huge thing, but being able to format the string directly in
FatalError is a lot more convenient.
2018-04-12 21:39:06 +02:00
Maikel de Vries 1e060d6124 cable cars: improve deliveries and producer requests fuel 2018-04-12 09:21:00 +02:00
Maikel de Vries 618b4039b3 cable cars: fix finding crossing for power supply when previous fails 2018-04-12 09:21:00 +02:00
Maikel de Vries 051863db5f make cable crossing structure flippable
This makes it easier for now to go around cliffs, a better solution where crossings can be rotated needs more work in the hammer script.
2018-04-12 09:21:00 +02:00
Maikel de Vries f4991f9705 remove base respawn rule
Is deprecated in 8.0 and can be removed now, all functionality is implemented in the relaunch rule.
2018-04-12 09:21:00 +02:00
Julius Michaelis 5e60579bd2 Document the zoom factor in Graphics.8.png in sdk/definition/index 2018-04-12 01:41:32 +02:00
Maikel de Vries c00a8cf3c3 fix a bunch of suspicious assignment warnings 2018-04-09 11:53:55 +02:00
Lukas Werling d9f9a2a9a3 Find_Property: Implement searching for specific value (#2021) 2018-04-08 15:00:27 +02:00
Mark 5dc4282b56 Replaced old calls to GainMissionAccess 2018-04-05 19:36:50 +02:00
Mark 4212310a9f Renamed *MissionAccess functions
Added legacy wrappers and updated the documentation.
2018-04-05 19:34:16 +02:00
Sven Eberhardt 065c8b7d96 Fix zoom setting by PlayerStart object 2018-04-04 19:59:32 -07:00
Mark a987f87181 Add version parameter to legacy warning 2018-04-04 21:49:39 +02:00
Nicolas Hake 704994f1b9 Remove warning on assignment in while() conditions (for now) 2018-04-04 21:42:24 +02:00
Mark 75bfef6b06 Use SetNextScenario() in the scenarios 2018-04-04 21:22:04 +02:00
Mark 1682f62df8 Function: SetNextScenario
Renamed and documented the former function SetNextMission. Added a script wrapper for the old function that issues a warning. Renaming is based on the fact that the docu speaks of scenarios, and other functions, such as GainScenarioAchievement already use this terminology
2018-04-04 21:17:16 +02:00
Maikel de Vries 82e674ddb8 cable cars: make crossing proper structure and resource chute upgrade 2018-04-02 16:03:52 +02:00
Maikel de Vries a70ab8b843 cable cars: let steam engine request coal when needed 2018-04-01 20:54:12 +02:00
Maikel de Vries 7178cf6a0a cable cars: improve hoist destination selection 2018-04-01 20:54:12 +02:00
Maikel de Vries 42a62aa730 cable car: make car a power consumer via crossings 2018-04-01 20:54:12 +02:00
Maikel de Vries 3085bfd264 power system: add functions to check if production and consumption is registered 2018-04-01 20:54:12 +02:00
Mark b12e54ef21 New coal texture 2018-04-01 20:29:54 +02:00
Lukas Werling 1382478774 Extract Goal_MultiRoundMelee from HotIce
There are currently multiple multi-round scenarios in development that
all copy most of HotIce's >500-line scenario script for the multi-round
logic. This commit isolates that logic in a goal with an easy-to-use
interface.
2018-03-31 16:08:29 +02:00
Maikel de Vries 07e66279be cable cars: scenario saving for cable car 2018-03-31 11:33:08 +02:00
Maikel de Vries 816754a3de cable cars: improve tests and script clean up 2018-03-31 11:32:42 +02:00
Maikel de Vries c629661af2 cable reel: fix connecting, max cable length, ensure straight cables 2018-03-31 10:44:36 +02:00
Maikel de Vries a28b3b9ca1 cable cars: fix network recreation when cable has broken 2018-03-30 10:54:41 +02:00
Maikel de Vries d8736a56ac cable cars: improve network deletion and recreation + clean up
This is a rather chaotic commit and does not solve all problems of network creation yet, but is an improvement over the old system where deletion of a cable line would fail the network. However, we probably need a cleaner method to construct a network properly.
2018-03-29 21:28:07 +02:00
Maikel de Vries 49d03e52c6 improve cable car test scenario 2018-03-29 21:28:07 +02:00
Maikel de Vries 2b9c96de30 make hoist target move more fluently 2018-03-29 21:28:07 +02:00
Maikel de Vries ff21dc3cfa improve destination selection menu a bit 2018-03-29 21:28:07 +02:00
Maikel de Vries 330e275b3d cable hoist: new type effect, prevent interactions when attached, complete menu texts 2018-03-29 21:28:07 +02:00
Maikel de Vries 85f1c714f7 add material costs to cable car components 2018-03-29 21:28:07 +02:00
Maikel de Vries 7768e6c992 fix script error when accessing non-initialized cable request queue 2018-03-29 21:28:07 +02:00
Maikel de Vries abfeb86e30 add cable cars test scenario 2018-03-29 21:28:07 +02:00
Maikel de Vries d7e3a4acd6 cable car: not ready for a new delivery if currently doing one 2018-03-29 21:28:07 +02:00
Maikel de Vries b1d1079d88 prevent script error in cable station if other station could not be found 2018-03-29 21:28:07 +02:00
Maikel de Vries e603bce240 add interaction menu tooltip and description for disengaging a cable car 2018-03-29 21:28:07 +02:00
Maikel de Vries 2a344b4543 fix hide in editor for cable car objects 2018-03-29 21:28:07 +02:00
Nicolas Hake 18b23d3d1e Merge pull request from ckanibal:slashfix
Slashfix (GH-68)
2018-03-29 14:48:45 +02:00
Nicolas Hake b0336bc1a6 Merge pull request from ronnystandtke:patch-1
Update openclonk.desktop (GH-67)
2018-03-29 14:46:35 +02:00
Lukas Werling 8d6090e607 Fix documentation of OverlayType
Bit 3 (C4MatOv_Monochrome) was removed in fc5c38468 ("Material: Remove
color field, use textures as is", 2009), but was still mentioned in the
documentation.
2018-03-27 19:20:21 +02:00
Nicolas Hake c73b8b3ece Warn on assignments where an expression is expected
This introduces a new diagnostic (suspicious_assignment) which
issues when an the compiler finds an assignment either where a
condition is expected or as the parameter to return.
2018-03-27 08:12:21 +02:00
Lukas Werling 99c14b5547 docs: Drop major version part from <version>s
The actual release names dropped the 5.x.x scheme long ago, so there is
no reason to keep it in the docs. It's extra confusing there because the
version is given as a two-part version (e.g. 5.1) most of the time, so
it looks like everything happened in OC 5.x, even though the change was
actually in OC x.0.
2018-03-24 23:13:08 +01:00
Lukas Werling 8e17d7fd7b docs: Fix case-sensitivity in search 2018-03-24 22:19:58 +01:00
Lukas Werling f4c854b651 docs: Implement client-side search
Search is now performed with a pre-computed index file. This commit
removes the old PHP-based search.
2018-03-23 21:23:38 +01:00
Mark 6aa72c1bdd Fix axe 2018-03-22 22:12:00 +01:00
Nicolas Hake b12792dddb Merge branch 'blake2-no-sse2' 2018-03-21 13:04:15 +01:00
Nicolas Hake 570ba7a8ad Merge branch 'blake2-no-sse2'
This adds the BLAKE2 reference C implementation as a fallback for
architectures that don't guarantee SSE2 support out of the box.

Closes GH-69.
2018-03-21 07:58:56 +01:00
Nicolas Hake 1dd7cbb04a BLAKE2: Fall back to plain C implementation on non-amd64 platforms
While amd64 always supports the SSE2 instruction set extension,
other architectures don't (including 32 bit x86). For the platforms
that don't, we'll use the reference C implementation by default, but
allow users to override it with the BLAKE2_USE_SSE2 option.
2018-03-21 07:51:52 +01:00
Lukas Werling 69a08605cb docs: Change http:// links to https 2018-03-20 21:59:47 +01:00
Mark 21102bb4ef Melee Weapons: Code formatted for remaining melee weapons
No actual changes, just added spaces and brackets for improved readability
2018-03-20 21:13:45 +01:00
Mark 69d6b2e8d2 Melee Weapons: Code formatted
No actual changes, just added spaces and brackets for improved readability
2018-03-19 20:51:29 +01:00
Nicolas Hake c39d1b8679 Merge commit '9493ed1277ef924c3005a9ff51f194d1cda87947' as 'thirdparty/blake2' 2018-03-19 13:50:17 +01:00
Nicolas Hake ae0baf587d Remove BLAKE2b implementation requiring SSE2 2018-03-19 13:47:01 +01:00
Mark aea27f8758 Construction site: Take missing materials as interaction 2018-03-18 19:53:57 +01:00
Clonkonaut 4199a4060e Documentation: fixed example for GetRGBaValue(). 2018-03-18 13:41:23 +01:00
Clonkonaut 6f521a0805 Tutorial 8: fix in German language dialogue (#2009). 2018-03-17 17:21:18 +01:00
Clonkonaut 80b3a08770 Removed my stupid debug log. 2018-03-17 16:41:27 +01:00
Clonkonaut 4b0bca3c0d Tutorial 2: Tell the player about Roger a bit earlier (when entering the junction), so you do not miss him and mess up the scenario. 2018-03-17 16:31:43 +01:00
Maikel de Vries 52d8fdbafd warn about deprecated use of base respawn rule 2018-03-16 18:16:05 +01:00
Maikel de Vries 81b060ffb3 fix king of the hill graphics in editor mode 2018-03-16 14:00:04 +01:00
Maikel de Vries ffbda90130 convert paths to backslashes for Scenario.txt Definition entries 2018-03-16 13:54:52 +01:00
Kanibal f24d685a47 win32: fix handling of forward slashes 2018-03-15 23:49:00 +01:00
Maikel de Vries 3da209462e moving brick: fix movement graph saving
Did not test all corner cases but this improves the situation for sure.
2018-03-14 17:54:25 +01:00
Maikel de Vries 6efb292fa7 flame: option to make eternal for editor mode 2018-03-14 16:50:57 +01:00
Maikel de Vries f81d41ba84 correctly update active fire effect when NoBurnDecay changes 2018-03-14 16:38:33 +01:00
Maikel de Vries 017960cbc2 do not show compensator burning battery in editor creation list 2018-03-14 16:35:11 +01:00
Maikel de Vries 9ffab151c6 remove duplicate cloud effect object
The particle had the same graphics as the real Cloud object and the script does not seem to have any uses. Also unused for more than 4 years.
2018-03-14 11:49:02 +01:00
Maikel de Vries 3808c22df4 make time object more editor friendly 2018-03-13 22:32:03 +01:00
Maikel de Vries e084947bcd fix meteor graphics 2018-03-13 20:40:33 +01:00
Maikel de Vries d01aaa20bd waterfall: implement editor interface 2018-03-13 20:37:46 +01:00
Maikel de Vries b534bbb5f9 hide some more objects in editor creation list
The burned object may be creatable, but must then be moved such that the libraries parent folder remains invisble in the editor.
2018-03-12 22:30:02 +01:00
Maikel de Vries e7b4ce7bf2 relaunch rule: fix scoreboard updating and scenario overloading 2018-03-11 17:06:02 +01:00
Maikel de Vries 9fc94509c4 remove playground scenario
Sandbox is the new playground.
2018-03-11 17:06:02 +01:00
Maikel de Vries 0e535f880e sandbox: more scenario options and better map generation 2018-03-11 17:06:02 +01:00
David Dormagen 29a1a21526 club respects Rule_NoFriendFire and IsProjectileTarget (#1993)
Not recommended for 8.1, because there are semantic changes: The club can now also hit targets (IsProjectileTarget) while before it could only hit OCF_Alive and C4D_Object. It's similar to the sword now.
Oh, and before it could also not hit livings that were stuck.
2018-03-11 15:04:59 +01:00
Lukas Werling 99ef4ce853 Implement TCP Simultaneous Open for IPv6 2018-03-09 23:20:00 +01:00
Lukas Werling 9a5103d02c Don't link openclonk-server with SDL and audio libraries
Seems to build fine without, which apparently wasn't always the case.
2018-03-09 23:10:11 +01:00
Lukas Werling ee34ac1b06 Add C4NetIOTCP::Bind() for binding without connect 2018-03-07 17:30:58 +01:00
Lukas Werling 82a43b7cd9 Disable broken console input on Windows
C4StdInProc blocks on read() on Windows, stopping everything.
2018-03-07 15:27:51 +01:00
Maikel de Vries 1748797172 treasure hunt: fix wrong dialogue translation of Dagobert to Scrooge 2018-03-05 10:40:14 +01:00
Maikel de Vries 2d0221b8d0 add wooden sign object
Graphics made by Foaly.
2018-03-04 09:43:44 +01:00
Maikel de Vries 478a4e7f85 signpost and stone sign: clean up scripts and lessen code duplication 2018-03-04 09:37:20 +01:00
Maikel de Vries 03d0bb49dc c4script: some fixes for style guidelines and typos 2018-03-03 12:27:34 +01:00
Maikel de Vries e9f87ca028 add stone sign object
Graphics made by Foaly.
2018-03-03 12:22:19 +01:00
Maikel de Vries 65daa55156 fix guide post pictures and interaction icons 2018-03-03 12:19:03 +01:00
Maikel de Vries a2d7374302 prevent floor switch from making object stuck while moving 2018-02-28 10:35:17 +01:00
Maikel de Vries a023b63fda item spawn: prevent pickung up two carry heavy objects 2018-02-26 12:25:00 +01:00
Maikel de Vries f199169c8f item spawn: instantly pick carry heavy items 2018-02-25 21:32:27 +01:00
Nicolas Hake 701adc2eae Enable SSE2 for BLAKE2 library 2018-02-25 12:50:08 +01:00
Maikel de Vries 0c12b02727 keypad: save code hashed, so that they can't be read off in editor mode 2018-02-25 11:31:39 +01:00
Nicolas Hake e3de9f1003 Add BLAKE2 library and expose its a CS hash algorithm to script
The crypto "library" only consists of a single function at the
moment because that's all that users have asked for so far. It is
also highly experimental. We will make an attempt to keep the public
interface (i.e. the interface provided by Library_Crypto.c) stable,
but it might still change if necessary. The internal interface
(provided via the global _Crypto proplist) is not for public
consumption and will probably change at some point.
2018-02-25 10:23:30 +01:00
Nicolas Hake 8e57c0a9f4 Make cross-compiling work with GCC 6+
GCC6 doesn't like getting some of its default include search paths
passed with the -isystem flag, and the devs seem unlikely to change
whatever they did back to before they broke it. Work around CMake
not dealing with it well either by figuring out the paths at
configure time and telling CMake about them so it can avoid adding
them superfluously.
2018-02-25 01:11:53 +01:00
Maikel de Vries 3224e2c5cd fix dialogue image size for use as icon 2018-02-21 17:15:41 +01:00
Maikel de Vries 1f1149861a add star icon 2018-02-21 15:30:48 +01:00
Lukas Werling 4a3c9f2fc2 Add EvaluateOnAbort scenario flag for Tower of Despair
In Tower of Despair, the scenario saves per-room progress in the
player files. Players win individual rooms, but never the whole
scenario. Consequently, they currently have to give up to make sure
they don't lose their progress. This is not intuitive at all. With the
new flag enabled, players will be saved even if the scenario is aborted.
2018-02-18 21:46:56 +01:00
Lukas Werling fa3e8c2a50 Fix editor keyboard input on FreeBSD (hopefully)
Assuming keyboard scancodes on FreeBSD are the same as on Linux.
2018-02-18 01:05:28 +01:00
Lukas Werling c0375bba72 Fix IPv4 address serialization on FreeBSD (hopefully) 2018-02-18 00:42:17 +01:00
Lukas Werling 5b21505efd Editor join: Serialize reference as INI
On FreeBSD, the binary serialization doesn't work for IPv4 addresses,
and we never serialize game references as binary anywhere else.
2018-02-18 00:30:08 +01:00
Lukas Werling 55a81ea76a Launch editor via argv[0] on Unix systems without /proc/self/exe (#1999) 2018-02-17 12:57:43 +01:00
Lukas Werling 9855f9355e Autodetect "/proc/self/exe"-equivalent on FreeBSD (#1999) 2018-02-17 12:41:16 +01:00
Lukas Werling 334c57f296 Disable -Wformat-security in parts of C4AulCompiler (#1992, GH-64) 2018-02-17 12:12:16 +01:00
Kevin Zheng 0c8371f113 Fix networking on FreeBSD (#1998) 2018-02-17 11:59:24 +01:00
Lukas Werling e3017ba4ac Credits: Fix Kevin Zheng's name 2018-02-17 11:56:57 +01:00
Sven Eberhardt 9c32ee0336 Make QT library deployment optional via CMake option DEPLOY_QT_LIBRARIES (default off) 2018-02-15 21:40:25 -08:00
Sven Eberhardt b95dd50564 Simplify DeployQt to work with CMake<3.2 (hopefully). 2018-02-14 21:33:06 -08:00
Mark b0a790c747 Volcano: Fix copy & paste error 2018-02-13 23:28:38 +01:00
Mark c792833d98 Volcano: Additional script possibilities
Added settings for minimal and maximal strength, reset to defaults if passing nil as a parameter, possibility to overload chunk effects on eruption
2018-02-13 23:23:00 +01:00
Mark f62050cf5b Docu: Volcano strength 2018-02-13 23:03:11 +01:00
Sven Eberhardt 8a050c1ff9 Disable Qt library deployment for mac.
Doesn't seem to work on the autobuild server.
2018-02-12 21:51:50 -08:00
Sven Eberhardt 9df7a193e4 Deploy Qt libraries; fix platforms NSIS installer include 2018-02-12 21:44:18 -08:00
Armin Burgmeier ef1e348442 Install platforms/ folder in windows installer 2018-02-12 19:58:03 +01:00
ronnystandtke 26af088548
Update openclonk.desktop
- added a German translation of the GenericName field
- left out the "multiplayer" part, because OpenClonk is also a very fine single player game but this would make the German translation much too long...
2018-02-12 16:08:47 +01:00
Julius Michaelis a130f59f54 Fix mac build likely broken in 13f082e8c8. (Attempt 1) 2018-02-12 11:28:14 +01:00
Misty De Meo b492ae456f osx_bundle_libs: skip system libraries 2018-02-12 02:57:05 +01:00
Maikel de Vries f9e7a983f2 docs: removed obsolote Components entry and add IsEditor function 2018-02-11 10:33:58 +01:00
Maikel de Vries 18dce041e1 floor switch: improve object detection and save switch mass 2018-02-09 11:30:58 +01:00
Lukas Werling 08edf3bb58 Enable -Wformat-security for gcc and fix one warning (GH-64)
Fedora has -Werror=format-security enabled per default, so enabling and
fixing these warnings is a good idea.
2018-02-06 23:31:50 +01:00
Maikel de Vries 3ad91ee02b add stalactites to hot ice as decoration (#1564) 2018-02-05 16:54:02 +01:00
Maikel de Vries 42310548d8 stalactite: fix raindrop, allow placing in sky, fix stalagmite, clean up 2018-02-05 16:53:07 +01:00
Maikel de Vries e94a0b3c36 molten monarch: fix fire particles and fade out gravestones (#1560) 2018-02-05 15:04:46 +01:00
Maikel de Vries 81abbce77a flammable library: burned object copies motion from inflamed object 2018-02-04 21:20:39 +01:00
Lukas Werling cd2b8370da Fix warnings in DirectExec crashing (#1990) 2018-02-04 12:33:58 +01:00
Maikel de Vries 369e2d0b0c sandbox: remove god mode objects on departure
This ensures that their too large graphics do not appear for the player, the only departure is when the clonk dies or is removed.
2018-02-03 09:34:45 +01:00
Maikel de Vries 1113761679 sandbox: use spraycan and overload functionality 2018-02-01 21:38:24 +01:00
Maikel de Vries 3a866caa73 maze: fix warning for declaration of variables and move spray can to Decoration.ocd 2018-02-01 21:23:14 +01:00
Maikel de Vries 22ca0513cc remove strange pixel artefacts from signpost graphics 2018-02-01 20:58:13 +01:00
Maikel de Vries d65dd96851 sandbox: add english translations and clean up scripts 2018-02-01 20:55:24 +01:00
Lukas Werling 8f285299d1 Fix Mortimer missing in Credits 2018-01-31 21:18:27 +01:00
Lukas Werling 1f94d66000 Bump version to 9.0 alpha 2018-01-31 21:08:32 +01:00
Lukas Werling 13f082e8c8 Implement Credits.txt export from StartupAboutDlg
Pressing Ctrl+S while on the Credits screen will save everything to
Credits.txt in the current working directory. This is only meant for
developers modifying the credits; the shortcut isn't mentioned anywhere.
2018-01-31 21:07:09 +01:00
Maikel de Vries 9e01a861ce fix some more structure vertices, also for asymmetric ones when flipped (#1979) 2018-01-31 19:59:41 +01:00
1061 changed files with 15459 additions and 7964 deletions

28
.gitignore vendored
View File

@ -18,7 +18,7 @@ C4Version.h
Makefile
C4Include.h.gch
intermediate
build*
/build*
CMakeScripts
CMakeFiles
CMakeCache.txt
@ -35,13 +35,15 @@ tests/CTestTestfile.cmake
# Documentation
*.pyc
docs/online
docs/chm
docs/sdk-de
docs/sdk/content.xml
docs/*.mo
docs/doku.pot
docs/Functions.txt
node_modules
/docs/online
/docs/chm
/docs/sdk-de
/docs/sdk/content.xml
/docs/*.mo
/docs/doku.pot
/docs/Functions.txt
/docs/lunr.js
# Visual studio files
openclonk.opensdf
@ -82,6 +84,16 @@ openclonk.ilk
*.vcxproj
*.vcxproj.filters
/ipch
.vs/
c4group_autogen/
c4script_autogen/
libc4script_autogen/
libmisc_autogen/
libopenclonk_autogen/
netpuncher_autogen/
openclonk-server_autogen/
openclonk_autogen/
thirdparty/blake2/blake2_autogen/
# Temporary files created by Microsoft Visual Studio
*.ncb

View File

@ -2,7 +2,7 @@
language: cpp
dist: trusty
sudo: required # not actually required, but the virtualization builds are more stable and have better single core performance. If in doubt, remove.
sudo: required # for Qt libraries. Additionally, the virtualization builds are more stable and have better single core performance.
matrix:
include:
@ -11,7 +11,7 @@ matrix:
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.9', 'build-essential', 'cmake', 'libfreetype6-dev', 'libgl1-mesa-dev', 'libglew-dev', 'libgtk-3-dev', 'libjpeg-dev', 'libpng-dev', 'libsdl2-dev', 'libupnp-dev', 'libxrandr-dev', 'x11proto-core-dev', 'zlib1g-dev', 'libalut0', 'libgtest-dev']
packages: ['g++-4.9', 'build-essential', 'cmake3', 'libfreetype6-dev', 'libgl1-mesa-dev', 'libglew-dev', 'libgtk-3-dev', 'libjpeg-dev', 'libpng-dev', 'libsdl2-dev', 'libupnp-dev', 'libxrandr-dev', 'x11proto-core-dev', 'zlib1g-dev', 'libalut0', 'libgtest-dev']
env:
- CCOMPILER=gcc-4.9
- CXXCOMPILER=g++-4.9
@ -22,21 +22,25 @@ matrix:
compiler: gcc
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-5', 'build-essential', 'cmake', 'libfreetype6-dev', 'libgl1-mesa-dev', 'libglew-dev', 'libgtk-3-dev', 'libjpeg-dev', 'libpng-dev', 'libsdl2-dev', 'libupnp-dev', 'libxrandr-dev', 'x11proto-core-dev', 'zlib1g-dev', 'libalut0', 'ninja-build', 'libgtest-dev']
sources:
- ubuntu-toolchain-r-test
- sourceline: ppa:beineri/opt-qt596-trusty
packages: ['g++-5', 'build-essential', 'cmake3', 'libpng-dev', 'libjpeg-dev', 'libfreetype6-dev', 'libglew-dev', 'libreadline-dev', 'libsdl2-dev', 'qt59base', 'libalut-dev', 'libvorbis-dev', 'libopenal-dev', 'libdw-dev', 'libgtest-dev', 'ninja-build']
env:
- CCOMPILER=gcc-5
- CXXCOMPILER=g++-5
- TYPE=Debug
- CXX_FLAGS="-fdiagnostics-color"
- TYPE=RelWithDebInfo
- CXX_FLAGS="-fdiagnostics-color -I/usr/include/AL"
- BSYS="Ninja#ninja -k30" PCH=on
- UPLOAD_SNAPSHOT=1
- CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=/usr -DWITH_AUTOMATIC_UPDATE=ON -DWITH_APPDIR_INSTALLATION=ON"
- os: linux
compiler: clang
addons:
apt:
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.8']
packages: ['clang-3.8', 'build-essential', 'cmake', 'libfreetype6-dev', 'libgl1-mesa-dev', 'libglew-dev', 'libgtk-3-dev', 'libjpeg-dev', 'libpng-dev', 'libsdl2-dev', 'libupnp-dev', 'libxrandr-dev', 'x11proto-core-dev', 'zlib1g-dev', 'libalut0', 'ninja-build', 'libc++-dev', 'libc++1', 'libgtest-dev']
packages: ['clang-3.8', 'build-essential', 'cmake3', 'libfreetype6-dev', 'libgl1-mesa-dev', 'libglew-dev', 'libgtk-3-dev', 'libjpeg-dev', 'libpng-dev', 'libsdl2-dev', 'libupnp-dev', 'libxrandr-dev', 'x11proto-core-dev', 'zlib1g-dev', 'libalut0', 'ninja-build', 'libc++-dev', 'libc++1', 'libgtest-dev']
env:
- CCOMPILER=clang-3.8
- CXXCOMPILER=clang++-3.8
@ -47,8 +51,12 @@ matrix:
before_install:
- for t in test mock; do wget https://github.com/google/google$t/archive/release-1.7.0.tar.gz -Og$t.tgz && tar xvf g$t.tgz; done
install:
- '[ -e /opt/qt59/bin/qt59-env.sh ] && source /opt/qt59/bin/qt59-env.sh || echo building without Qt'
before_script:
- export CXX="$CXXCOMPILER" CC="$CCOMPILER"
- export C4REVISION_BRANCH="$TRAVIS_BRANCH"
- >
cmake
-G"${BSYS/\#*/}"
@ -57,9 +65,20 @@ before_script:
-DUSE_GCC_PCH=${PCH:-off}
-DGTEST_ROOT=$PWD/googletest-release-1.7.0
-DGMOCK_ROOT=$PWD/googlemock-release-1.7.0
$CMAKE_FLAGS
.
script:
- ${BSYS/*#/} all netpuncher tests aul_test
- ./tests/tests
# TODO: Remove SKIP_IPV6_TEST once Travis generally adds ::1 as loopback address.
- SKIP_IPV6_TEST=1 ./tests/tests
- ./tests/aul_test
after_success:
- >
[ "$UPLOAD_SNAPSHOT" = 1 ] &&
echo "Creating AppImage..." &&
tools/create_appimage.sh &&
echo "Uploading snapshot..." &&
tools/upload_snapshot.sh OpenClonk-x86_64.AppImage OpenClonk-x86_64.AppImage.zsync ||
echo "Snapshot creation has failed"

View File

@ -1,6 +1,6 @@
# OpenClonk, http://www.openclonk.org
#
# Copyright (c) 2009-2016, The OpenClonk Team and contributors
# Copyright (c) 2009-2018, The OpenClonk Team and contributors
#
# Distributed under the terms of the ISC license; see accompanying file
# "COPYING" for details.
@ -11,7 +11,7 @@
# To redistribute this file separately, substitute the full license texts
# for the above references.
cmake_minimum_required (VERSION 3.0.2)
cmake_minimum_required (VERSION 3.5.1)
# Don't allow people to build "Release" builds because there's no reason to do that.
# Use one of RelWithDebInfo or MinSizeRel instead.
@ -23,31 +23,61 @@ if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RelWithDebInfo)
endif()
project (openclonk CXX C)
if(POLICY CMP0067)
cmake_policy(SET CMP0067 NEW)
else()
# Wrap try_compile such that it correctly passes the standard flags to the
# compiler on CMake versions below 3.8. Remove when you update the minimum
# required version to 3.8 or later.
macro(try_compile)
set(_tc_langs)
foreach(_tc_lang CXX C)
if(DEFINED CMAKE_${_tc_lang}_STANDARD)
list(APPEND _tc_langs ${_tc_lang})
endif()
endforeach()
foreach(_tc_lang ${_tc_langs})
if (${CMAKE_${_tc_lang}_EXTENSIONS})
set(_tc_ext EXTENSION)
else()
set(_tc_ext STANDARD)
endif()
set(_backup_${_tc_lang}_flags "${CMAKE_${_tc_lang}_FLAGS}")
set(CMAKE_${_tc_lang}_FLAGS "${CMAKE_${_tc_lang}_FLAGS} ${CMAKE_${_tc_lang}${CMAKE_${_tc_lang}_STANDARD}_${_tc_ext}_COMPILE_OPTION}")
endforeach()
# CMP0054: Only interpret if() arguments as variables or keywords when unquoted
# (since CMake 3.1)
if(POLICY CMP0054)
cmake_policy(SET CMP0054 NEW)
_try_compile(${ARGN})
foreach(_tc_lang ${_tc_langs})
set(CMAKE_${_tc_lang}_FLAGS "${_backup_${_tc_lang}_flags}")
endforeach()
endmacro()
endif()
project (openclonk CXX C)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(Version)
set(CMAKE_ADDITIONAL_DEPS_PATH "${CMAKE_CURRENT_BINARY_DIR}/deps" CACHE PATH "Additional directory to search for libraries and headers")
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_ADDITIONAL_DEPS_PATH})
if(DEFINED CMAKE_ADDITIONAL_DEPS_PATH)
message(WARNING "CMAKE_ADDITIONAL_DEPS_PATH is deprecated and will be removed in a future version. Set CMAKE_PREFIX_PATH instead.")
set(CMAKE_PREFIX_PATH ${CMAKE_ADDITIONAL_DEPS_PATH})
endif()
############################################################################
# User selectable options
############################################################################
include(CMakeDependentOption)
option(PROJECT_FOLDERS "Put source files into subfolders in project file" ON)
option(DEPLOY_QT_LIBRARIES "Deploy Qt libraries to executable path" OFF)
CMAKE_DEPENDENT_OPTION(USE_COCOA "Use Apple Cocoa widgets." ON "APPLE" OFF)
CMAKE_DEPENDENT_OPTION(USE_WIN32_WINDOWS "Use Microsoft Desktop App User Interface widgets." ON "WIN32" OFF)
CMAKE_DEPENDENT_OPTION(USE_SDL_MAINLOOP "Use SDL to create windows etc. Qt editor." ON "NOT USE_COCOA AND NOT USE_WIN32_WINDOWS AND NOT HEADLESS_ONLY" OFF)
option(WITH_AUTOMATIC_UPDATE "Automatic updates are downloaded from the project website." OFF)
CMAKE_DEPENDENT_OPTION(WITH_APPDIR_INSTALLATION "Install into an AppDir" OFF "UNIX AND NOT APPLE AND WITH_AUTOMATIC_UPDATE" ON)
option(HEADLESS_ONLY "Only build headless parts. Somewhat reduces dependencies. (still needs libpng because that one's small and hard to remove.) Only tested with make/gcc/linux." OFF)
option(C4GROUP_TOOL_ONLY "Only build c4group binary." OFF)
set_property(GLOBAL PROPERTY USE_FOLDERS ${PROJECT_FOLDERS})
@ -56,13 +86,8 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ${PROJECT_FOLDERS})
############################################################################
include(CheckCXXCompilerFlag)
# Required for CMake >= 3.1.0 and Qt >= 5.7
set(CMAKE_CXX_STANDARD 14)
CHECK_CXX_COMPILER_FLAG("-std=gnu++14" USE_GCC_STD_14)
if(USE_GCC_STD_14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14")
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Enable link-time code generation. We have to do this manually because while
# there is a INTERPROCEDURAL_OPTIMIZATION cmake flag, it's only implemented
@ -99,9 +124,11 @@ if(USE_GCC_STYLE_LTCG)
# Use GCC's ar and ranlib wrappers if necessary, because the plain ones
# don't understand lto objects without an explicit plugin parameter
if(CMAKE_C_COMPILER MATCHES "gcc$")
# Note that versioned gcc executables need splitting: gcc-5 -> gcc-ar-5
if(CMAKE_C_COMPILER MATCHES "^(.*gcc)(-[0-9.])?$")
set(LTCG_NEEDS_AR_WRAPPER 1)
set(LTCG_AR_WRAPPER_PREFIX "${CMAKE_C_COMPILER}")
set(LTCG_AR_WRAPPER_PREFIX "${CMAKE_MATCH_1}")
set(LTCG_AR_WRAPPER_SUFFIX "${CMAKE_MATCH_2}")
elseif(CMAKE_C_COMPILER MATCHES "cc$")
set(LTCG_NEEDS_AR_WRAPPER 1)
set(LTCG_AR_WRAPPER_PREFIX "gcc")
@ -110,12 +137,12 @@ if(USE_GCC_STYLE_LTCG)
endif()
if(LTCG_NEEDS_AR_WRAPPER)
find_program(AR_WRAPPER "${LTCG_AR_WRAPPER_PREFIX}-ar")
find_program(AR_WRAPPER "${LTCG_AR_WRAPPER_PREFIX}-ar${LTCG_AR_WRAPPER_SUFFIX}")
if (AR_WRAPPER)
message("Using ${AR_WRAPPER} instead of ${CMAKE_AR} to support lto objects.")
set(CMAKE_AR "${AR_WRAPPER}" CACHE FILEPATH "Path to an ar that supports lto objects." FORCE)
endif()
find_program(RANLIB_WRAPPER "${LTCG_AR_WRAPPER_PREFIX}-ranlib")
find_program(RANLIB_WRAPPER "${LTCG_AR_WRAPPER_PREFIX}-ranlib${LTCG_AR_WRAPPER_SUFFIX}")
if (RANLIB_WRAPPER)
message("Using ${RANLIB_WRAPPER} instead of ${CMAKE_RANLIB} to support lto objects.")
set(CMAKE_RANLIB "${RANLIB_WRAPPER}" CACHE FILEPATH "Path to a ranlib that supports lto objects." FORCE)
@ -141,6 +168,7 @@ if(MSVC)
# Enable LTCG for release builds
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Ob2 /GL")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /Ob2 /GL")
add_linker_flags(optimized MODULES exe shared FLAGS "/INCREMENTAL:NO")
add_linker_flags(optimized MODULES exe shared static FLAGS "/LTCG:incremental")
# do not link the release CRT in debug builds
@ -158,7 +186,7 @@ endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wextra-tokens -Wpointer-arith -Wno-cast-align -Wno-reorder -Wno-unused-parameter -Wnon-virtual-dtor -Woverloaded-virtual")
elseif(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wredundant-decls -Wendif-labels -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Winit-self -Wsign-promo -Wno-reorder -Wno-unused-parameter -Wnon-virtual-dtor -Woverloaded-virtual")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wredundant-decls -Wendif-labels -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Winit-self -Wsign-promo -Wno-reorder -Wno-unused-parameter -Wnon-virtual-dtor -Woverloaded-virtual -Wformat-security")
endif()
if(WIN32 AND MINGW)
@ -166,10 +194,6 @@ if(WIN32 AND MINGW)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
endif()
if(UNIX)
add_definitions("-DOC_SYSTEM_DATA_DIR=\"${CMAKE_INSTALL_PREFIX}/share/games/openclonk\"")
endif()
if(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-arc -headerpad_max_install_names")
endif()
@ -177,6 +201,12 @@ endif()
############################################################################
# Check for compiler quirks and features
############################################################################
if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CROSSCOMPILING)
include(HandleGccCrossIncludePaths)
HANDLE_GCC_CROSS_INCLUDE_PATHS(CXX c++)
HANDLE_GCC_CROSS_INCLUDE_PATHS(C c)
endif()
include(CheckCXXSourceCompiles)
include(RequireCXXSourceCompiles)
include(CheckCXXSymbolExists)
@ -200,13 +230,9 @@ check_cxx_symbol_exists(vasprintf stdio.h HAVE_VASPRINTF)
############################################################################
include(CheckIncludeFileCXX)
include(CheckIncludeFilesCXX)
CHECK_INCLUDE_FILE_CXX(direct.h HAVE_DIRECT_H)
CHECK_INCLUDE_FILE_CXX(io.h HAVE_IO_H)
CHECK_INCLUDE_FILE_CXX(locale.h HAVE_LOCALE_H)
CHECK_INCLUDE_FILE_CXX(share.h HAVE_SHARE_H)
CHECK_INCLUDE_FILE_CXX(signal.h HAVE_SIGNAL_H)
CHECK_INCLUDE_FILE_CXX(stdint.h HAVE_STDINT_H)
CHECK_INCLUDE_FILE_CXX(inttypes.h HAVE_INTTYPES_H)
CHECK_INCLUDE_FILE_CXX(sys/stat.h HAVE_SYS_STAT_H)
CHECK_INCLUDE_FILE_CXX(sys/types.h HAVE_SYS_TYPES_H)
CHECK_INCLUDE_FILE_CXX(unistd.h HAVE_UNISTD_H)
@ -224,25 +250,30 @@ CHECK_CXX_SOURCE_COMPILES("#include <getopt.h>\nint main(int argc, char * argv[]
# Locate libraries
############################################################################
SET(JPEG_NAMES ${JPEG_NAMES} libjpeg jpeg-static)
if(NOT HEADLESS_ONLY)
if(NOT HEADLESS_ONLY AND NOT C4GROUP_TOOL_ONLY)
find_package(Freetype REQUIRED)
include_directories(
${FREETYPE_INCLUDE_DIRS})
link_directories(
${FREETYPE_LIBRARY_DIRS})
endif()
find_package(JPEG REQUIRED)
find_package(PNG REQUIRED)
# Needed for c4group
find_package(ZLIB REQUIRED)
include_directories(
${JPEG_INCLUDE_DIR}
${PNG_INCLUDE_DIR}
${ZLIB_INCLUDE_DIR})
if(CMAKE_SYSTEM MATCHES "Windows")
message(STATUS "Using Win32 threading.")
else()
find_package("Threads" REQUIRED)
SET(HAVE_PTHREAD ${CMAKE_USE_PTHREADS_INIT} CACHE INTERNAL "libpthread available")
if (NOT C4GROUP_TOOL_ONLY)
find_package(JPEG REQUIRED)
find_package(PNG REQUIRED)
include_directories(
${JPEG_INCLUDE_DIR}
${PNG_INCLUDE_DIR}
${ZLIB_INCLUDE_DIR})
if(CMAKE_SYSTEM MATCHES "Windows")
message(STATUS "Using Win32 threading.")
else()
find_package("Threads" REQUIRED)
SET(HAVE_PTHREAD ${CMAKE_USE_PTHREADS_INIT} CACHE INTERNAL "libpthread available")
endif()
endif()
# FINDLIB works the same as find_library, but also marks the resulting var as
@ -267,19 +298,20 @@ if(NOT HAVE_GETOPT_H)
set(GETOPT_LIBRARIES getopt)
endif()
# TinyXML
find_package(TinyXML)
if(NOT TinyXML_FOUND)
add_subdirectory(thirdparty/tinyxml)
set_property(TARGET tinyxml PROPERTY FOLDER "Third-party libraries")
set(TinyXML_INCLUDE_DIRS thirdparty/tinyxml)
set(TinyXML_LIBRARIES tinyxml)
set(TinyXML_FOUND TRUE)
if (NOT C4GROUP_TOOL_ONLY)
# TinyXML
find_package(TinyXML)
if(NOT TinyXML_FOUND)
add_subdirectory(thirdparty/tinyxml)
set_property(TARGET tinyxml PROPERTY FOLDER "Third-party libraries")
set(TinyXML_INCLUDE_DIRS thirdparty/tinyxml)
set(TinyXML_LIBRARIES tinyxml)
set(TinyXML_FOUND TRUE)
endif()
include_directories(SYSTEM ${TinyXML_INCLUDE_DIRS})
endif()
include_directories(SYSTEM ${TinyXML_INCLUDE_DIRS})
if(NOT HEADLESS_ONLY)
if(NOT HEADLESS_ONLY AND NOT C4GROUP_TOOL_ONLY)
find_package(OpenGL)
find_package(GLEW REQUIRED)
include_directories(${GLEW_INCLUDE_DIRS})
@ -291,13 +323,26 @@ if(NOT HEADLESS_ONLY)
CHECK_CXX_SOURCE_COMPILES("#include <GL/glew.h>\nvoid GLAPIENTRY OpenGLDebugProc(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const char* message, const void* userParam) {}\nint main() { GLDEBUGPROCARB proc = &OpenGLDebugProc; }" GLDEBUGPROCARB_USERPARAM_IS_CONST)
endif()
if(UNIX AND NOT APPLE)
FINDLIB(X11_LIBRARIES X11)
if(NOT C4GROUP_TOOL_ONLY)
if(UNIX AND NOT APPLE)
FINDLIB(X11_LIBRARIES X11)
set(Backward_DIR thirdparty/backward-cpp)
find_package(Backward)
if(Backward_FOUND)
set(HAVE_BACKWARD 1)
set(Backward_DIR thirdparty/backward-cpp)
find_package(Backward)
if(Backward_FOUND)
set(HAVE_BACKWARD 1)
endif()
if(NOT DEFINED PROC_SELF_EXE)
macro(FIND_PROC_SELF_EXE path)
if(EXISTS ${path})
set(PROC_SELF_EXE ${path} CACHE FILEPATH "Path to /proc/self/exe (Linux) or equivalent")
endif()
endmacro()
FIND_PROC_SELF_EXE(/proc/self/exe) # Linux
FIND_PROC_SELF_EXE(/proc/curproc/file) # FreeBSD
FIND_PROC_SELF_EXE(/proc/curproc/exe) # NetBSD
endif()
endif()
endif()
@ -309,71 +354,74 @@ if (WIN32)
set(HAVE_DBGHELP ${DBGHELP_FOUND})
endif()
find_package(Upnp)
if(UPNP_FOUND)
include_directories(SYSTEM ${UPNP_INCLUDE_DIR})
endif()
if(NOT C4GROUP_TOOL_ONLY)
find_package(Upnp)
if(UPNP_FOUND)
include_directories(SYSTEM ${UPNP_INCLUDE_DIR})
endif()
find_package(Readline)
if(READLINE_FOUND)
include_directories(SYSTEM ${READLINE_INCLUDE_DIR})
endif()
SET(HAVE_LIBREADLINE ${READLINE_FOUND} CACHE INTERNAL "libreadline available")
find_package(Readline)
if(READLINE_FOUND)
include_directories(SYSTEM ${READLINE_INCLUDE_DIR})
endif()
SET(HAVE_LIBREADLINE ${READLINE_FOUND} CACHE INTERNAL "libreadline available")
find_package(GTK3 COMPONENTS gthread gio gobject glib OPTIONAL_COMPONENTS gtksourceview)
find_package(GTK3 COMPONENTS gthread gio gobject glib OPTIONAL_COMPONENTS gtksourceview)
# Select an audio library
find_package("Audio")
if(Audio_FOUND)
include_directories(${Audio_INCLUDE_DIRS})
endif()
# Select an audio library
find_package("Audio")
if(Audio_FOUND)
include_directories(${Audio_INCLUDE_DIRS})
endif()
# SDL
if(USE_SDL_MAINLOOP)
find_package(SDL2 REQUIRED)
else()
# for gamepads
find_package(SDL2)
endif()
set(HAVE_SDL ${SDL2_FOUND})
include_directories(SYSTEM ${SDL2_INCLUDE_DIRS})
# SDL
if(USE_SDL_MAINLOOP)
find_package(SDL2 REQUIRED)
else()
# for gamepads
find_package(SDL2)
endif()
set(HAVE_SDL ${SDL2_FOUND})
include_directories(SYSTEM ${SDL2_INCLUDE_DIRS})
# Qt5 for editor
find_path(Qt5DIR qt.pro PATHS ${CMAKE_ADDITIONAL_DEPS_PATH}/qt-5.5.0)
find_package(Qt5Widgets 5.4 PATHS ${Qt5DIR}/qtbase/lib/cmake/Qt5Widgets)
if(Qt5Widgets_FOUND)
SET(WITH_QT_EDITOR ${Qt5Widgets_FOUND} "Qt editor dialogues available")
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
# As moc files are generated in the binary dir, tell CMake
# to always look for includes there:
set(CMAKE_INCLUDE_CURRENT_DIR ON)
else()
message("Qt5Widgets not found. Building openclonk without editor.")
UNSET(WITH_QT_EDITOR)
# Qt5 for editor
find_package(Qt5 5.4 CONFIG COMPONENTS Core Widgets)
if(TARGET Qt5::Core)
SET(WITH_QT_EDITOR ON "Qt editor dialogues available")
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
# As moc files are generated in the binary dir, tell CMake
# to always look for includes there:
set(CMAKE_INCLUDE_CURRENT_DIR ON)
else()
message("Qt5Widgets not found. Building openclonk without editor.")
UNSET(WITH_QT_EDITOR)
endif()
endif()
############################################################################
# generated source files
############################################################################
find_program(GLIB_COMPILE_RESOURCES glib-compile-resources)
if(NOT C4GROUP_TOOL_ONLY)
find_program(GLIB_COMPILE_RESOURCES glib-compile-resources)
add_custom_command(
OUTPUT mape-resource.c
COMMAND
${GLIB_COMPILE_RESOURCES} "--internal" "--generate"
"--target" "mape-resource.c"
"--sourcedir" ${CMAKE_CURRENT_SOURCE_DIR}/src/res
"${CMAKE_CURRENT_SOURCE_DIR}/src/res/mape.xml"
MAIN_DEPENDENCY src/res/mape.xml
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/src/res/ocd.ico
${CMAKE_CURRENT_SOURCE_DIR}/src/res/ocf.ico
${CMAKE_CURRENT_SOURCE_DIR}/src/res/ocg.ico
${CMAKE_CURRENT_SOURCE_DIR}/src/res/ocm.ico
${CMAKE_CURRENT_SOURCE_DIR}/src/res/ocs.ico
VERBATIM
)
add_custom_command(
OUTPUT mape-resource.c
COMMAND
${GLIB_COMPILE_RESOURCES} "--internal" "--generate"
"--target" "mape-resource.c"
"--sourcedir" ${CMAKE_CURRENT_SOURCE_DIR}/src/res
"${CMAKE_CURRENT_SOURCE_DIR}/src/res/mape.xml"
MAIN_DEPENDENCY src/res/mape.xml
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/src/res/ocd.ico
${CMAKE_CURRENT_SOURCE_DIR}/src/res/ocf.ico
${CMAKE_CURRENT_SOURCE_DIR}/src/res/ocg.ico
${CMAKE_CURRENT_SOURCE_DIR}/src/res/ocm.ico
${CMAKE_CURRENT_SOURCE_DIR}/src/res/ocs.ico
VERBATIM
)
endif()
############################################################################
# Mac OS bundle setup
@ -973,7 +1021,7 @@ include_directories(SYSTEM
############################################################################
add_definitions(-DHAVE_CONFIG_H)
add_library(libmisc
add_library(libmisc STATIC
src/C4Include.cpp
src/c4group/C4Group.cpp
src/c4group/C4Group.h
@ -1038,7 +1086,7 @@ if(UNIX AND NOT APPLE)
target_link_libraries(libmisc rt)
endif()
add_library(libc4script
add_library(libc4script STATIC
src/C4Include.cpp
src/c4group/C4ComponentHost.cpp
src/c4group/C4ComponentHost.h
@ -1072,6 +1120,8 @@ src/script/C4PropList.h
src/script/C4Script.cpp
src/script/C4ScriptHost.cpp
src/script/C4ScriptHost.h
src/script/C4ScriptLibraries.cpp
src/script/C4ScriptLibraries.h
src/script/C4StringTable.cpp
src/script/C4StringTable.h
src/script/C4Value.cpp
@ -1081,10 +1131,11 @@ src/script/C4ValueArray.h
src/script/C4ValueMap.cpp
src/script/C4ValueMap.h
)
add_subdirectory(thirdparty/blake2)
set_property(TARGET blake2 PROPERTY FOLDER "Third-party libraries")
target_link_libraries(libc4script blake2 libmisc)
target_link_libraries(libc4script libmisc)
add_library(libopenclonk
add_library(libopenclonk STATIC
src/c4group/C4Extra.cpp
src/c4group/C4Extra.h
src/control/C4PlayerInfoConflicts.cpp
@ -1154,7 +1205,7 @@ target_link_libraries(c4script
${GETOPT_LIBRARIES}
)
if(NOT HEADLESS_ONLY)
if(NOT HEADLESS_ONLY AND NOT C4GROUP_TOOL_ONLY)
add_executable(openclonk WIN32 MACOSX_BUNDLE
${OC_SYSTEM_SOURCES}
${OC_GUI_SOURCES}
@ -1187,6 +1238,17 @@ if(NOT HEADLESS_ONLY)
if(WITH_QT_EDITOR)
set_target_properties(openclonk PROPERTIES COMPILE_DEFINITIONS WITH_QT_EDITOR)
target_link_libraries(openclonk Qt5::Widgets)
# Deploy dependency libraries and platforms/ folder
if(DEPLOY_QT_LIBRARIES)
if(WIN32)
include(DeployQt)
windeployqt(openclonk)
elseif(APPLE)
include(DeployQt)
macdeployqt(nitroshare-client)
endif()
endif()
endif()
if(HAVE_BACKWARD)
@ -1194,40 +1256,41 @@ if(NOT HEADLESS_ONLY)
endif()
endif()
add_executable(openclonk-server
${OC_SYSTEM_SOURCES}
${OC_CLONK_SOURCES}
src/platform/C4AppT.cpp
src/platform/C4StdInProc.cpp
src/platform/C4StdInProc.h
)
target_compile_definitions(openclonk-server PRIVATE "USE_CONSOLE")
if(NOT C4GROUP_TOOL_ONLY)
add_executable(openclonk-server
${OC_SYSTEM_SOURCES}
${OC_CLONK_SOURCES}
src/platform/C4AppT.cpp
src/platform/C4StdInProc.cpp
src/platform/C4StdInProc.h
)
target_compile_definitions(openclonk-server PRIVATE "USE_CONSOLE")
target_link_libraries(openclonk-server
${PNG_LIBRARIES}
${JPEG_LIBRARIES}
${EXECINFO_LIBRARY}
${SDL2_LIBRARIES}
${READLINE_LIBRARIES}
${Audio_LIBRARIES}
${GETOPT_LIBRARIES}
${TinyXML_LIBRARIES}
${DBGHELP_LIBRARIES}
libmisc
libc4script
libopenclonk
)
if(UPNP_FOUND)
target_link_libraries(openclonk-server ${UPNP_LIBRARIES})
endif()
if(USE_COCOA)
target_link_libraries(openclonk-server "-framework Cocoa")
endif()
if(HAVE_BACKWARD)
target_link_libraries(openclonk-server Backward::Backward)
target_link_libraries(openclonk-server
${PNG_LIBRARIES}
${JPEG_LIBRARIES}
${EXECINFO_LIBRARY}
${READLINE_LIBRARIES}
${GETOPT_LIBRARIES}
${TinyXML_LIBRARIES}
${DBGHELP_LIBRARIES}
libmisc
libc4script
libopenclonk
)
if(UPNP_FOUND)
target_link_libraries(openclonk-server ${UPNP_LIBRARIES})
endif()
if(USE_COCOA)
target_link_libraries(openclonk-server "-framework Cocoa")
endif()
if(HAVE_BACKWARD)
target_link_libraries(openclonk-server Backward::Backward)
endif()
install(TARGETS openclonk-server DESTINATION bin)
endif()
if(GTK3_FOUND AND GTK3_gtksourceview_FOUND AND NOT HEADLESS_ONLY)
if(GTK3_FOUND AND GTK3_gtksourceview_FOUND AND NOT HEADLESS_ONLY AND NOT C4GROUP_TOOL_ONLY)
add_executable(mape ${MAPE_BASE_SOURCES} ${MAPE_SOURCES})
target_compile_options(mape PRIVATE ${GTK3_COMPILE_DEFINITIONS} ${GTK3_gtksourceview_COMPILE_DEFINITIONS})
set_property(TARGET mape PROPERTY FOLDER "Utilities")
@ -1254,17 +1317,19 @@ target_link_libraries(c4group
libmisc
)
add_executable(netpuncher EXCLUDE_FROM_ALL
src/netpuncher/C4PuncherHash.h
src/netpuncher/main.cpp
)
if(NOT C4GROUP_TOOL_ONLY)
add_executable(netpuncher EXCLUDE_FROM_ALL
src/netpuncher/C4PuncherHash.h
src/netpuncher/main.cpp
)
target_link_libraries(netpuncher
libmisc
)
target_link_libraries(netpuncher
libmisc
)
if(WIN32)
target_link_libraries(libmisc iphlpapi ws2_32)
if(WIN32)
target_link_libraries(libmisc iphlpapi ws2_32)
endif()
endif()
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:_DEBUG>)
@ -1281,7 +1346,7 @@ if (APPLE AND NOT CMAKE_GENERATOR STREQUAL "Xcode")
set(EXECUTABLE_NAME openclonk)
endif()
if(NOT HEADLESS_ONLY)
if(NOT HEADLESS_ONLY AND NOT C4GROUP_TOOL_ONLY)
set_target_properties(openclonk PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/src/res/Info.plist")
endif()
@ -1367,7 +1432,9 @@ endif()
############################################################################
# Miscellaneous
############################################################################
add_subdirectory(tests)
if(NOT C4GROUP_TOOL_ONLY)
add_subdirectory(tests)
endif()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
@ -1391,42 +1458,33 @@ if(CMAKE_GENERATOR MATCHES "^Visual Studio 14 2015")
)
endif()
############################################################################
# Precompiled header support, gcc part (it needs the cxx flags)
############################################################################
if(CMAKE_COMPILER_IS_GNUCXX)
include(GccPchSupport)
option(USE_GCC_PCH "Use GCC precompiled headers" OFF)
endif()
if(USE_GCC_PCH)
add_precompiled_header(libmisc src/C4Include.h)
add_precompiled_header(libc4script src/C4Include.h)
add_precompiled_header(openclonk src/C4Include.h)
add_precompiled_header(openclonk-server src/C4Include.h)
endif()
############################################################################
# installation
############################################################################
# Don't allow installation for WITH_AUTOMATIC_UPDATE because otherwise
# the installed binary wouldn't find its game data in the system data path.
IF(WITH_AUTOMATIC_UPDATE)
INSTALL(CODE "MESSAGE(SEND_ERROR \"Installation is only supported for WITH_AUTOMATIC_UPDATE disabled\")")
if(WITH_APPDIR_INSTALLATION)
INSTALL(CODE "MESSAGE(\"WITH_APPDIR_INSTALLATION is enabled, installation will create an AppDir\")")
else()
INSTALL(CODE "MESSAGE(SEND_ERROR \"Installation is only supported for WITH_AUTOMATIC_UPDATE disabled\")")
endif()
ENDIF()
# hack to build the data on install, see
# http://public.kitware.com/Bug/view.php?id=8438
add_custom_target(data)
set_property(TARGET data PROPERTY FOLDER "Setup")
install(
CODE
"execute_process(
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target data
)"
)
if(NOT C4GROUP_TOOL_ONLY)
# hack to build the data on install, see
# http://public.kitware.com/Bug/view.php?id=8438
add_custom_target(data)
set_property(TARGET data PROPERTY FOLDER "Setup")
install(
CODE
"execute_process(
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target data
)"
)
endif()
if (NOT APPLE)
if (NOT APPLE AND NOT C4GROUP_TOOL_ONLY)
install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc32.png
DESTINATION share/icons/hicolor/32x32/apps
@ -1461,78 +1519,89 @@ ENDIF()
# When cross-compiling, import c4group from a native build
IF(CMAKE_CROSSCOMPILING)
SET(IMPORT_NATIVE_TOOLS "IMPORT_NATIVE_TOOLS-NOTFOUND" CACHE FILEPATH "Export file from a native build")
INCLUDE(${IMPORT_NATIVE_TOOLS})
SET(native_c4group native-c4group)
FIND_PROGRAM(C4GROUP_PATH NAMES c4group PATHS)
IF (NOT C4GROUP_PATH)
SET(IMPORT_NATIVE_TOOLS "IMPORT_NATIVE_TOOLS-NOTFOUND" CACHE FILEPATH "Export file from a native build")
INCLUDE(${IMPORT_NATIVE_TOOLS})
SET(native_c4group native-c4group)
ELSE()
SET(native_c4group ${C4GROUP_PATH})
ENDIF()
ELSE()
SET(native_c4group c4group)
ENDIF()
# NOTE: The scripts that does the autobuilds and ultimately the automated
# releases as well do keep their own list of group files around currently.
# So if you change anything here, change it in the release scripts as well.
# See openclonk-release-scripts.git/groupcontent.py
set(OC_C4GROUPS
Graphics.ocg
Material.ocg
Sound.ocg
System.ocg
Objects.ocd
Decoration.ocd
Arena.ocf
Parkour.ocf
Defense.ocf
Missions.ocf
Tutorials.ocf
Worlds.ocf
)
if(APPLE)
list(APPEND OC_C4GROUPS Music.ocg)
endif()
foreach(group ${OC_C4GROUPS})
if (APPLE)
if (CMAKE_GENERATOR STREQUAL Xcode)
add_custom_command(TARGET openclonk
POST_BUILD COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tools/osx_pack_gamedata.sh"
"$<TARGET_FILE:${native_c4group}>"
"${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}"
# leave out third parameter here so the script can figure out Xcode-ish paths as usual
DEPENDS "${native_c4group}"
)
else()
add_custom_command(TARGET openclonk
POST_BUILD COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tools/osx_pack_gamedata.sh"
"$<TARGET_FILE:${native_c4group}>"
"${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}"
"${CMAKE_CURRENT_BINARY_DIR}/openclonk.app/Contents/Resources"
DEPENDS "${native_c4group}"
)
endif()
else()
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${group}
COMMAND "${native_c4group}" ARGS "${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}" -t "${CMAKE_CURRENT_BINARY_DIR}/${group}"
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}
DEPENDS "${native_c4group}"
VERBATIM
)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${group} DESTINATION share/games/openclonk)
if(NOT C4GROUP_TOOL_ONLY)
# NOTE: The scripts that does the autobuilds and ultimately the automated
# releases as well do keep their own list of group files around currently.
# So if you change anything here, change it in the release scripts as well.
# See openclonk-release-scripts.git/groupcontent.py
set(OC_C4GROUPS
Graphics.ocg
Material.ocg
Sound.ocg
System.ocg
Objects.ocd
Decoration.ocd
Arena.ocf
Parkour.ocf
Defense.ocf
Missions.ocf
Tutorials.ocf
Worlds.ocf
)
if(APPLE)
list(APPEND OC_C4GROUPS Music.ocg)
endif()
endforeach()
foreach(group ${OC_C4GROUPS})
if (APPLE)
if (CMAKE_GENERATOR STREQUAL Xcode)
add_custom_command(TARGET openclonk
POST_BUILD COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tools/osx_pack_gamedata.sh"
"$<TARGET_FILE:${native_c4group}>"
"${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}"
# leave out third parameter here so the script can figure out Xcode-ish paths as usual
DEPENDS "${native_c4group}"
)
else()
add_custom_command(TARGET openclonk
POST_BUILD COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tools/osx_pack_gamedata.sh"
"$<TARGET_FILE:${native_c4group}>"
"${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}"
"${CMAKE_CURRENT_BINARY_DIR}/openclonk.app/Contents/Resources"
DEPENDS "${native_c4group}"
)
endif()
else()
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${group}
COMMAND "${native_c4group}" ARGS "${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}" -t "${CMAKE_CURRENT_BINARY_DIR}/${group}"
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/planet/${group}
DEPENDS "${native_c4group}"
VERBATIM
USES_TERMINAL # Hack: prevent parallel execution (for ninja), c4group tends to fail otherwise
)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${group} DESTINATION share/games/openclonk)
endif()
endforeach()
endif()
if(NOT APPLE)
if(NOT HEADLESS_ONLY)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/planet/Music.ocg DESTINATION share/games/openclonk)
endif()
# group files (game data)
add_custom_target(groups DEPENDS ${OC_C4GROUPS})
set_property(TARGET groups PROPERTY FOLDER "Setup")
add_dependencies(data groups)
if(NOT C4GROUP_TOOL_ONLY)
# group files (game data)
add_custom_target(groups DEPENDS ${OC_C4GROUPS})
set_property(TARGET groups PROPERTY FOLDER "Setup")
add_dependencies(data groups)
endif()
# Install binaries
install(TARGETS c4group DESTINATION bin)
endif()
if(NOT HEADLESS_ONLY)
if(NOT HEADLESS_ONLY AND NOT C4GROUP_TOOL_ONLY)
if(NOT APPLE)
# Install new files
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/openclonk.desktop DESTINATION share/applications)
@ -1543,7 +1612,12 @@ if(NOT HEADLESS_ONLY)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/openclonk.appdata.xml DESTINATION share/appdata)
# Install binaries
install(TARGETS openclonk DESTINATION games)
if(WITH_APPDIR_INSTALLATION)
# AppDir expects binaries in /usr/bin
install(TARGETS openclonk DESTINATION bin)
else()
install(TARGETS openclonk DESTINATION games)
endif()
else()
install(TARGETS openclonk
BUNDLE DESTINATION .
@ -1558,26 +1632,28 @@ endif()
# setup_openclonk.exe
############################################################################
find_program(MAKENSIS makensis PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS])
if(NOT C4GROUP_TOOL_ONLY)
find_program(MAKENSIS makensis PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS])
if(NOT HEADLESS_ONLY)
add_custom_command(
OUTPUT setup_openclonk.exe
COMMAND ${MAKENSIS} -NOCD -DSRCDIR=${CMAKE_CURRENT_SOURCE_DIR} -DPROGRAMFILES=$PROGRAMFILES "-DPRODUCT_NAME=${C4ENGINENAME}" "-DPRODUCT_COMPANY=${C4PROJECT}" "-DCLONK=$<TARGET_FILE_DIR:openclonk>\\$<TARGET_FILE_NAME:openclonk>" "-DC4GROUP=$<TARGET_FILE_DIR:c4group>\\$<TARGET_FILE_NAME:c4group>" ${CMAKE_CURRENT_SOURCE_DIR}/tools/install/oc.nsi "-XOutFile setup_openclonk.exe"
MAIN_DEPENDENCY
${CMAKE_CURRENT_SOURCE_DIR}/tools/install/oc.nsi
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/tools/install/header.bmp
${CMAKE_CURRENT_SOURCE_DIR}/tools/install/inst.ico
${CMAKE_CURRENT_SOURCE_DIR}/tools/install/uninst.ico
${OC_C4GROUPS} openclonk c4group
VERBATIM
)
if(NOT HEADLESS_ONLY)
add_custom_command(
OUTPUT setup_openclonk.exe
COMMAND ${MAKENSIS} -NOCD -DSRCDIR=${CMAKE_CURRENT_SOURCE_DIR} -DPROGRAMFILES=$PROGRAMFILES "-DPRODUCT_NAME=${C4ENGINENAME}" "-DPRODUCT_COMPANY=${C4PROJECT}" "-DCLONK=$<TARGET_FILE_DIR:openclonk>\\$<TARGET_FILE_NAME:openclonk>" "-DC4GROUP=$<TARGET_FILE_DIR:c4group>\\$<TARGET_FILE_NAME:c4group>" ${CMAKE_CURRENT_SOURCE_DIR}/tools/install/oc.nsi "-XOutFile setup_openclonk.exe"
MAIN_DEPENDENCY
${CMAKE_CURRENT_SOURCE_DIR}/tools/install/oc.nsi
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/tools/install/header.bmp
${CMAKE_CURRENT_SOURCE_DIR}/tools/install/inst.ico
${CMAKE_CURRENT_SOURCE_DIR}/tools/install/uninst.ico
${OC_C4GROUPS} openclonk c4group
VERBATIM
)
add_custom_target(setup
DEPENDS setup_openclonk.exe groups
)
set_property(TARGET setup PROPERTY FOLDER "Setup")
add_custom_target(setup
DEPENDS setup_openclonk.exe groups
)
set_property(TARGET setup PROPERTY FOLDER "Setup")
endif()
endif()
############################################################################

View File

@ -1,15 +1,17 @@
<Engine and Tools>
Sven Eberhardt (Sven2)
Armin Burgmeier (Clonk-Karl)
Günther Brammer (Günther)
Nicolas Hake (Isilkor)
Armin Burgmeier (Clonk-Karl)
Lukas Werling (Luchs)
Martin Plicht (Mortimer)
Julius Michaelis (JCaesar)
Peter Wortmann (PeterW)
Julius Michaelis (Caesar)
<Scripting and Content>
Maikel de Vries (Maikel)
David Dormagen (Zapper)
Mark Haßelbusch (Marky)
Felix Wagner (Clonkonaut)
Bernhard Bonigl (Boni)
@ -26,11 +28,8 @@ Martin Strohmeier (K-Pone)
<Administration>
Tobias Zwick (Newton)
<Thanks to our package maintainers>
Benedict Etzel (B_E), Philipp Kern (pkern), Kevin Zheng and more
<Special Thanks to Contributors>
Martin Adam (Win), Florian Graier (Nachtfalter), Mark Haßelbusch (Marky), Merten Ehmig (pluto), Benjamin Herr (Loriel), Armin Schäfer, Pyrit, Philip Holzmann (Batman), Alexander Semeniuk (AlteredARMOR), Andriel, Peewee, Oliver Schneider (ker), Fabian Pietsch, Manuel Rieke (MrBeast), Felix Riese (Fungiform), Carl-Philip Hänsch (Carli), Sebastian Rühl, Gurkenglas and many more:
Luchs, Asmageddon, mizipzor, Tim Blume, Apfelclonk, Sven-Hendrik Haase, Lauri Niskanen (Ape), Daniel Theuke (ST-DDT), Russell, Stan, TomyLobo, Clonkine, Koronis, Johannes Nixdorf (mixi), grgecko, Dominik Bayerl, Misty de Meo, Lorenz Schwittmann, hasufell, Jan Heberer, dylanstrategie, Checkmaty, Faby
Also, big thanks to Matthes Bender and all those who contributed to previous Clonk titles for the passion they put into the game and for agreeing to make Clonk open source.
Contributors for OpenClonk 8.0: George Tokmaji (Fulgen), Martin Adam (Win), Merten Ehmig (pluto), Florian Graier (Nachtfalter), Philip Holzmann (Foaly), Dominik Bayerl (Kanibal), Linus Heckemann (sphalerite), Pyrit, Armin Schäfer, Tushar Maheshwari, jok, Tarte, Philip Kern (pkern), Arne Schauf (NativeException), Matthias Mailänder, marsmoon
Previous contributors: Tim Blume, Sven-Hendrik Haase, Carl-Philip Hänsch (Carli), Jan Heberer, Benjamin Herr (Loriel), Lauri Niskanen (Ape), Johannes Nixdorf (mixi), Misty de Meo, Fabian Pietsch, Manuel Rieke (MrBeast), Felix Riese (Fungiform), Sebastian Rühl, Oliver Schneider (ker), Lorenz Schwittmann, Alexander Semeniuk (AlteredARMOR), Daniel Theuke (ST-DDT), Andriel, Apfelclonk, Asmageddon, Checkmaty, Clonkine, dylanstrategie, Faby, grgecko, Gurkenglas, hasufell, Koronis, mizipzor, Peewee, Russell, Stan, TomyLobo
Also thanks to our Linux package maintainers Benedict Etzel (B_E), Linus Heckemann (sphalerite), Philip Kern (pkern), Matthias Mailänder, Julian Ospald (hasufell), Kevin Zheng, and more
Finally, a big thanks to Matthes Bender and all those who contributed to previous Clonk titles for the passion they put into the game and for agreeing to make Clonk open source.

View File

@ -1,6 +1,6 @@
# OpenClonk, http://www.openclonk.org
#
# Copyright (c) 2009-2015, The OpenClonk Team and contributors
# Copyright (c) 2009-2018, The OpenClonk Team and contributors
#
# Distributed under the terms of the ISC license; see accompanying file
# "COPYING" for details.
@ -22,9 +22,9 @@ SET(C4PROJECT_URL "http://${C4PROJECT_DOMAIN}.${C4PROJECT_TLD}")
SET(C4ENGINENAME "OpenClonk")
SET(C4ENGINENICK "openclonk")
SET(C4XVER1 8)
SET(C4XVER1 9)
SET(C4XVER2 0)
# Set this variable to any string for pre-release versions, like "alpha" or
# "rc1". Don't supply a value (FALSE) for release versions.
SET(C4VERSIONEXTRA "rc1")
SET(C4VERSIONEXTRA "alpha")

32
appveyor.yml 100644
View File

@ -0,0 +1,32 @@
version: "{build}"
pull_requests:
do_not_increment_build_number: true
shallow_clone: true
cache: ..\openclonk-cache
image: Visual Studio 2017
configuration: RelWithDebInfo
platform:
- x64
install:
- ps: "& $env:APPVEYOR_BUILD_FOLDER\\tools\\ci\\appv-Install.ps1"
before_build:
- ps: "& $env:APPVEYOR_BUILD_FOLDER\\tools\\ci\\appv-BeforeBuild.ps1"
build:
project: ../openclonk-build/openclonk.sln
parallel: true
verbosity: minimal
# The after_build and test_script scripts need to be called in a real
# powershell instance because they call into the MSBuild API, which has issues
# finding its data files when called from AppVeyor's powershell host, because
# it attempts to read the application config instead of the registry to find
# them (starting with MSBuild 15, which ships with Visual Studio 2017).
after_build:
- cmd: powershell -NoLogo -NoProfile -ExecutionPolicy Unrestricted -Command "& $env:APPVEYOR_BUILD_FOLDER\\tools\\ci\\appv-AfterBuild.ps1"
test_script:
- cmd: powershell -NoLogo -NoProfile -ExecutionPolicy Unrestricted -Command "& $env:APPVEYOR_BUILD_FOLDER\\tools\\ci\\appv-Test.ps1"
deploy: off

View File

@ -0,0 +1,89 @@
# The MIT License (MIT)
#
# Copyright (c) 2018 Nathan Osman
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
find_package(Qt5Core REQUIRED)
# Retrieve the absolute path to qmake and then use that path to find
# the windeployqt and macdeployqt binaries
get_target_property(_qmake_executable Qt5::qmake IMPORTED_LOCATION)
get_filename_component(_qt_bin_dir "${_qmake_executable}" DIRECTORY)
find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${_qt_bin_dir}")
if(WIN32 AND NOT WINDEPLOYQT_EXECUTABLE)
message(FATAL_ERROR "windeployqt not found")
endif()
find_program(MACDEPLOYQT_EXECUTABLE macdeployqt HINTS "${_qt_bin_dir}")
if(APPLE AND NOT MACDEPLOYQT_EXECUTABLE)
message(FATAL_ERROR "macdeployqt not found")
endif()
# Add commands that copy the required Qt files to the same directory as the
# target after being built as well as including them in final installation
function(windeployqt target)
# Run windeployqt immediately after build
add_custom_command(TARGET ${target} POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E
env PATH="${_qt_bin_dir}" "${WINDEPLOYQT_EXECUTABLE}"
--verbose 0
--no-compiler-runtime
--no-angle
--release-with-debug-info
--no-translations
\"$<TARGET_FILE:${target}>\"
COMMENT "Deploying Qt..."
)
# windeployqt doesn't work correctly with the system runtime libraries,
# so we fall back to one of CMake's own modules for copying them over
# Doing this with MSVC 2015 requires CMake 3.6+
if((MSVC_VERSION VERSION_EQUAL 1900 OR MSVC_VERSION VERSION_GREATER 1900)
AND CMAKE_VERSION VERSION_LESS "3.6")
message(WARNING "Deploying with MSVC 2015+ requires CMake 3.6+")
endif()
set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE)
include(InstallRequiredSystemLibraries)
foreach(lib ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS})
get_filename_component(filename "${lib}" NAME)
add_custom_command(TARGET ${target} POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E
copy_if_different "${lib}" \"$<TARGET_FILE_DIR:${target}>\"
COMMENT "Copying ${filename}..."
)
endforeach()
endfunction()
# Add commands that copy the required Qt files to the application bundle
# represented by the target.
function(macdeployqt target)
add_custom_command(TARGET ${target} POST_BUILD
COMMAND "${MACDEPLOYQT_EXECUTABLE}"
\"$<TARGET_FILE_DIR:${target}>/../..\"
-always-overwrite
COMMENT "Deploying Qt..."
)
endfunction()
mark_as_advanced(WINDEPLOYQT_EXECUTABLE MACDEPLOYQT_EXECUTABLE)

View File

@ -1,72 +0,0 @@
#Copied from http://www.mail-archive.com/cmake@cmake.org/msg04394.html which copied it from the rosengarden project
#see also: http://gcc.gnu.org/onlinedocs/gcc-4.0.4/gcc/Precompiled-Headers.html
MACRO(ADD_PRECOMPILED_HEADER _targetName _input)
# Prepare environment
GET_FILENAME_COMPONENT(_name ${_input} NAME)
SET(_pchdir "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${_targetName}_pch.dir")
MAKE_DIRECTORY(${_pchdir})
SET(_source "${CMAKE_CURRENT_SOURCE_DIR}/${_input}")
SET(_includeput "${_pchdir}/${_name}")
SET(_output "${_includeput}.gch")
# Assemble the compiler command with which future stuff will be built
STRING(TOUPPER "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}" _flags_var_name) # Don't worry: CMake won't use any of the R/D/RWDI/MSR vars if the build type is not defined
if(CMAKE_CXX_COMPILER_ARG1) # please, know what you're doing if you rely on this...
STRING(STRIP ${CMAKE_CXX_COMPILER_ARG1} _ccache_tweak)
SET(_ccache_tweak "\"${_ccache_tweak}\"")
endif()
SET(_compiler_FLAGS ${_ccache_tweak} ${CMAKE_CXX_FLAGS} ${${_flags_var_name}})
if(CMAKE_BUILD_TYPE)
if(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
LIST(APPEND _compiler_FLAGS "-D_DEBUG")
endif()
endif()
GET_TARGET_PROPERTY(_compile_defines ${_targetName} COMPILE_DEFINITIONS)
if(_compile_defines)
FOREACH(item ${_compile_defines})
STRING(REPLACE "\"" "\\\"" item ${item})
LIST(APPEND _compiler_FLAGS "-D${item}")
ENDFOREACH(item)
endif()
GET_TARGET_PROPERTY(_compile_defines ${_targetName} COMPILE_DEFINITIONS_${CMAKE_BUILD_TYPE})
if(_compile_defines)
FOREACH(item ${_compile_defines})
STRING(REPLACE "\"" "\\\"" item ${item})
LIST(APPEND _compiler_FLAGS "$<$<NOT:$<STREQUAL:,${item}>>:-D${item}>")
ENDFOREACH(item)
endif()
GET_DIRECTORY_PROPERTY(_compile_defines COMPILE_DEFINITIONS)
if(_compile_defines)
FOREACH(item ${_compile_defines})
STRING(REPLACE "\"" "\\\"" item ${item})
LIST(APPEND _compiler_FLAGS "$<$<NOT:$<STREQUAL:,${item}>>:-D${item}>")
ENDFOREACH(item)
endif()
GET_DIRECTORY_PROPERTY(_compile_defines COMPILE_DEFINITIONS_${CMAKE_BUILD_TYPE})
if(_compile_defines)
FOREACH(item ${_compile_defines})
STRING(REPLACE "\"" "\\\"" item ${item})
LIST(APPEND _compiler_FLAGS "$<$<NOT:$<STREQUAL:,${item}>>:-D${item}>")
ENDFOREACH(item)
endif()
GET_DIRECTORY_PROPERTY(_directory_flags INCLUDE_DIRECTORIES)
FOREACH(item ${_directory_flags})
LIST(APPEND _compiler_FLAGS "-I\"${item}\"")
ENDFOREACH(item)
SEPARATE_ARGUMENTS(_compiler_FLAGS)
list(REMOVE_DUPLICATES _compiler_FLAGS)
# Add a target with the pch
ADD_CUSTOM_COMMAND(
OUTPUT ${_output}
COMMAND "${CMAKE_CXX_COMPILER}"
${_compiler_FLAGS} -x c++-header -o ${_output} ${_source}
IMPLICIT_DEPENDS CXX ${_source}
)
FILE(WRITE "${_pchdir}/${_name}" "#ifdef __cplusplus\n#warning Precompiled header not used. Turn off or fix!\n#endif") # This file is added so the cc-units don't stumble over not being able to include the file
ADD_CUSTOM_TARGET(${_targetName}_pch DEPENDS ${_output})
ADD_DEPENDENCIES(${_targetName} ${_targetName}_pch)
SET_TARGET_PROPERTIES(${_targetName} PROPERTIES COMPILE_FLAGS "-include ${_includeput}")
ENDMACRO(ADD_PRECOMPILED_HEADER)

View File

@ -42,6 +42,19 @@ function(git_get_changeset_id VAR)
OUTPUT_VARIABLE GIT_TIMESTAMP
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(DEFINED ENV{C4REVISION_BRANCH})
set(GIT_BRANCH "$ENV{C4REVISION_BRANCH}")
else()
execute_process(WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMAND "${GIT_EXECUTABLE}" "symbolic-ref" "--short" "HEAD"
RESULT_VARIABLE GIT_RESULT
OUTPUT_VARIABLE GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT GIT_RESULT EQUAL 0)
set(GIT_BRANCH "unknown")
endif()
endif()
endif()
endif()
if (NOT C4REVISION)
@ -64,6 +77,7 @@ function(git_get_changeset_id VAR)
REGEX "date: .+"
)
string(SUBSTRING "${C4REVISION_TS}" 6 -1 GIT_TIMESTAMP)
set(GIT_BRANCH "unknown")
endif()
if(WORKDIR_DIRTY)
set(WORKDIR_DIRTY 1)
@ -71,4 +85,5 @@ function(git_get_changeset_id VAR)
set(${VAR} "${C4REVISION}" PARENT_SCOPE)
set(${VAR}_DIRTY ${WORKDIR_DIRTY} PARENT_SCOPE)
set(${VAR}_TS "${GIT_TIMESTAMP}" PARENT_SCOPE)
set(${VAR}_BRANCH "${GIT_BRANCH}" PARENT_SCOPE)
endfunction()

View File

@ -0,0 +1,37 @@
# OpenClonk, http://www.openclonk.org
#
# Copyright (c) 2018, The OpenClonk Team and contributors
#
# Distributed under the terms of the ISC license; see accompanying file
# "COPYING" for details.
#
# "Clonk" is a registered trademark of Matthes Bender, used with permission.
# See accompanying file "TRADEMARK" for details.
#
# To redistribute this file separately, substitute the full license texts
# for the above references.
# GCC6 doesn't work well with CMake while cross-compiling. See bugs:
# https://gitlab.kitware.com/cmake/cmake/issues/16291
# https://gitlab.kitware.com/cmake/cmake/issues/16919
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129
function(HANDLE_GCC_CROSS_INCLUDE_PATHS _lang _gcc_lang_flag)
set(_compiler "${CMAKE_${_lang}_COMPILER}")
set(_compile_flags "${CMAKE_${_lang}_FLAGS}")
separate_arguments(_compile_flags UNIX_COMMAND "${_compile_flags}")
execute_process(
COMMAND ${_compiler} ${_compile_flags} -v -E -x ${_gcc_lang_flag} /dev/null
OUTPUT_QUIET
ERROR_VARIABLE _compiler_output
)
if ("${_compiler_output}" MATCHES "#include <\\.\\.\\.> search starts here:\n *(.*)\nEnd of search list\\.")
string(REGEX REPLACE "[\n ]+" " " _search_list "${CMAKE_MATCH_1}")
separate_arguments(_search_list)
foreach(_directory ${_search_list})
get_filename_component(_fixed_component "${_directory}" REALPATH)
set(_resolved_list ${_resolved_list} "${_fixed_component}")
endforeach()
set(CMAKE_${_lang}_IMPLICIT_INCLUDE_DIRECTORIES ${CMAKE_${_lang}_IMPLICIT_INCLUDE_DIRECTORIES} ${_resolved_list} PARENT_SCOPE)
endif()
endfunction()

View File

@ -5,18 +5,12 @@
/* Use backward-cpp to print stack traces on crash */
#cmakedefine HAVE_BACKWARD 1
/* Define to 1 if you have the <direct.h> header file. */
#cmakedefine HAVE_DIRECT_H 1
/* The backtrace function is declared in execinfo.h and works */
#cmakedefine HAVE_EXECINFO_H 1
/* Define to 1 if you have the <history.h> header file. */
#cmakedefine HAVE_HISTORY_H 1
/* Define to 1 if you have the <inttypes.h> header file. */
#cmakedefine HAVE_INTTYPES_H 1
/* Define to 1 if you have the <io.h> header file. */
#cmakedefine HAVE_IO_H 1
@ -26,9 +20,6 @@
/* Define to 1 if you have the <locale.h> header file. */
#cmakedefine HAVE_LOCALE_H 1
/* Define to 1 if your stdlib has std::make_unique */
#cmakedefine HAVE_MAKE_UNIQUE 1
/* Define to 1 if you have the <poll.h> header file. */
#cmakedefine HAVE_POLL_H 1
@ -44,9 +35,6 @@
/* Define to 1 if you have the <signal.h> header file. */
#cmakedefine HAVE_SIGNAL_H 1
/* Define to 1 if you have the <stdint.h> header file. */
#cmakedefine HAVE_STDINT_H 1
/* Define to 1 if you have the <sys/eventfd.h> header file. */
#cmakedefine HAVE_SYS_EVENTFD_H 1
@ -71,9 +59,6 @@
/* Define to 1 if you have the <unistd.h> header file. */
#cmakedefine HAVE_UNISTD_H 1
/* Define to 1 if your compiler supports variadic templates */
#cmakedefine HAVE_VARIADIC_TEMPLATES 1
/* Define to 1 if you have the `vasprintf' function. */
#cmakedefine HAVE_VASPRINTF 1
@ -105,12 +90,13 @@
/* Enable automatic update system */
#cmakedefine WITH_AUTOMATIC_UPDATE 1
#cmakedefine WITH_APPDIR_INSTALLATION 1
/* Select an audio provider */
#define AUDIO_TK AUDIO_TK_${Audio_TK_UPPER}
#else
#define AUDIO_TK AUDIO_TK_NONE
#endif
#endif // USE_CONSOLE
#define AUDIO_TK_NONE 0
#define AUDIO_TK_OPENAL 1
@ -118,3 +104,13 @@
/* Include OpenAL extensions (alext.h) for sound modifiers */
#cmakedefine HAVE_ALEXT 1
/* Path to data directory */
#ifdef WITH_APPDIR_INSTALLATION
#define OC_SYSTEM_DATA_DIR "../share/games/openclonk"
#else
#define OC_SYSTEM_DATA_DIR "${CMAKE_INSTALL_PREFIX}/share/games/openclonk"
#endif
/* Path to /proc/self/exe (Linux) or equivalent */
#cmakedefine PROC_SELF_EXE "${PROC_SELF_EXE}"

View File

@ -19,6 +19,7 @@ HHC = hhc.exe
MKDIR_P = mkdir -p
CP = cp
CP_R = cp -r
NODE = node
stylesheet = clonk.xsl
@ -29,9 +30,10 @@ sdk-dirs := $(shell find sdk -name '.*' -prune -o -type d -print)
# find all *.xml files recursively in sdk/
xmlfiles := $(sort $(shell find sdk -name '.*' -prune -o -name 'content.xml' -prune -o -name \*.xml -print))
xmlfiles-de := $(subst sdk, sdk-de, $(xmlfiles))
# misc
extra-files := $(sort $(wildcard *.css *.php *.js images/*.*))
extra-files := $(sort $(wildcard *.css *.js images/*.*) lunr.js)
extra-files-chm := $(sort $(wildcard *.css *.js images/*.*))
# Targets:
@ -46,15 +48,16 @@ sdk-de-dirs := $(subst sdk, sdk-de, $(sdk-dirs))
online-dirs := $(foreach lang, en de, $(addprefix online/$(lang)/, $(sdk-dirs) images))
online-sdk-files := $(foreach lang, en de, $(addprefix online/$(lang)/, $(htmlfiles) sdk/content.html))
online-extra-files := $(foreach lang, en de, $(addprefix online/$(lang)/, $(extra-files)))
online-index-files := $(foreach lang, en de, $(addprefix online/$(lang)/, index.json))
# For Entwickler.chm
chm-dirs := $(foreach lang, en de, $(addprefix chm/$(lang)/, . $(sdk-dirs) images))
.PHONY: all online-en chm install check clean
all: $(sdk-de-dirs) $(online-dirs) $(online-sdk-files) $(online-extra-files)
all: $(sdk-de-dirs) $(online-dirs) $(online-sdk-files) $(online-extra-files) $(online-index-files)
online-en: $(addprefix online/en/, $(sdk-dirs) images $(htmlfiles) sdk/content.html $(extra-files))
online-en: $(addprefix online/en/, $(sdk-dirs) images $(htmlfiles) sdk/content.html $(extra-files) index.json)
chm: $(sdk-de-dirs) $(chm-dirs) chm/en/Developer.chm chm/de/Entwickler.chm
@ -69,23 +72,36 @@ clean:
rm -f *.mo Entwickler.chm Developer.chm doku.pot sdk/content.xml
rm -rf online sdk-de chm
sdk/content.xml: sdk/content.xml.in $(xmlfiles) build_contents.py experimental.py
sdk/content.xml: sdk/content.xml.in $(xmlfiles) tools/build_contents.py tools/experimental.py
@echo generate $@
@python2 build_contents.py $(xmlfiles)
@python2 tools/build_contents.py $(xmlfiles)
chm/en/Output.hhp: $(xmlfiles) chm/en/. build_hhp.py Template.hhp
# Node dependencies for index.
node_modules/.make: package.json
npm install
@touch $@
lunr.js: node_modules/.make
$(CP) node_modules/lunr/lunr.js $@
online/en/index.json: node_modules/.make $(xmlfiles) tools/build_index.js
@$(NODE) tools/build_index.js $@ $(xmlfiles)
online/de/index.json: node_modules/.make $(xmlfiles-de) tools/build_index.js
@$(NODE) tools/build_index.js $@ $(xmlfiles-de)
chm/en/Output.hhp: $(xmlfiles) chm/en/. tools/build_hhp.py Template.hhp
@echo generate $@
@python2 build_hhp.py $@ Template.hhp $(xmlfiles)
chm/de/Output.hhp: $(xmlfiles) chm/de/. build_hhp.py Template.de.hhp
@python2 tools/build_hhp.py $@ Template.hhp $(xmlfiles)
chm/de/Output.hhp: $(xmlfiles) chm/de/. tools/build_hhp.py Template.de.hhp
@echo generate $@
@python2 build_hhp.py $@ Template.de.hhp $(xmlfiles)
@python2 tools/build_hhp.py $@ Template.de.hhp $(xmlfiles)
$(sdk-de-dirs) $(online-dirs) $(chm-dirs):
mkdir -p $@
doku.pot: $(xmlfiles) extra-strings.xml sdk/content.xml.in xml2po.py clonk.py
doku.pot: $(xmlfiles) extra-strings.xml sdk/content.xml.in tools/xml2po.py tools/clonk.py
@echo extract strings to $@
@python2 xml2po.py -e -m clonk -o $@ $(xmlfiles) extra-strings.xml sdk/content.xml.in
@python2 tools/xml2po.py -e -m clonk -o $@ $(xmlfiles) extra-strings.xml sdk/content.xml.in
%.po: doku.pot
@echo update $@
@ -96,9 +112,9 @@ doku.pot: $(xmlfiles) extra-strings.xml sdk/content.xml.in xml2po.py clonk.py
@echo compile $@
@msgfmt --statistics -o $@ $<
sdk-de/%.xml: sdk/%.xml de.mo xml2po.py clonk.py
sdk-de/%.xml: sdk/%.xml de.mo tools/xml2po.py tools/clonk.py
@echo generate $@
@python2 xml2po.py -e -m clonk -t de.mo -o $@ $<
@python2 tools/xml2po.py -e -m clonk -t de.mo -o $@ $<
define run-xslt
@echo generate $@

View File

@ -35,7 +35,12 @@
</title>
</xsl:template>
<xsl:template match="script">
<xsl:copy><xsl:apply-templates select="@*|node()" /></xsl:copy>
<xsl:copy>
<xsl:for-each select="@*">
<xsl:copy />
</xsl:for-each>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<xsl:template match="func|const" mode="head">
<xsl:apply-templates mode="head" />
@ -349,16 +354,6 @@
<caption><xsl:apply-templates select="@id|node()" /></caption>
</xsl:template>
<xsl:template match="search">
<xsl:if test="not($chm)">
<form action="../search.php" method="get">
<input name="search" type="text"></input>
<input type="submit" name="func" value="Search"></input>
<input type="submit" name="fulltext" value="Fulltext"></input>
</form>
</xsl:if>
</xsl:template>
<xsl:template match="table/bitmask">
<xsl:value-of select="." />:
<input id="input" onKeyUp="Calc();" name="input" type="text">

2131
docs/de.po

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
@font-face{
font-family: Endeavour;
src: url('/Endeavour.eot');
src: local('Endeavour'),url('/Endeavour.ttf') format("truetype");
/*src: url('/Endeavour.eot');
src: local('Endeavour'),url('/Endeavour.ttf') format("truetype");*/
}
body {
@ -243,10 +243,6 @@ ul.nav a {
text-decoration: none;
}
ul.nav a:hover, ul.nav a:hover {
background: #333 url(images/stripe-wide.gif) left repeat-x;
}
ul.nav li.switchlang img {
margin: 0;
}

View File

@ -3,17 +3,17 @@ Unfortunately, xml documents can only have one root, so there needs to be a dumm
header is an appropiate html element, so it's arbitrarily chosen.
clonk.xsl also uses it to match the processing for it. -->
<header>
<style type="text/css">@import url("http://www.openclonk.org/header/header.css");</style>
<style type="text/css">@import url("https://www.openclonk.org/header/header.css");</style>
<div id="nav_header">
<div id="nav_doclangswitch">
<a href="http://docs.openclonk.org/en/sdk/" target="_top"><img src="http://forum.openclonk.org/flags/gb.png"/></a>
<a href="http://docs.openclonk.org/de/sdk/" target="_top"><img src="http://forum.openclonk.org/flags/de.png"/></a>
<a href="https://docs.openclonk.org/en/sdk/" target="_top"><img src="https://forum.openclonk.org/flags/gb.png"/></a>
<a href="https://docs.openclonk.org/de/sdk/" target="_top"><img src="https://forum.openclonk.org/flags/de.png"/></a>
</div>
<div id="nav_search">
<form action="http://www.openclonk.org/header/search.php" id="nav_searchform" method="get" target="_top"><div>
<form action="https://www.openclonk.org/header/search.php" id="nav_searchform" method="get" target="_top"><div>
<input id="nav_searchInput" name="s" type="text" value="search" onfocus="if(this.value == 'search') { this.value = ''; }" onblur="if(this.value == '') { this.value = 'search'; }"/> in the
<select value="docs" name="p">
<option value="blog">blog</option>
@ -29,21 +29,21 @@ clonk.xsl also uses it to match the processing for it. -->
</div>
<div id="nav_logo">
<a href="http://www.openclonk.org/" target="_top"><img src="http://www.openclonk.org/header/logo.png" width="450" height="94" alt="OpenClonk"/></a>
<a href="https://www.openclonk.org/" target="_top"><img src="https://www.openclonk.org/header/logo.png" width="450" height="94" alt="OpenClonk"/></a>
</div>
<div id="nav_navigation">
<div id="nav_links">
<ul>
<li><a href="http://www.openclonk.org/" target="_top">Home</a></li>
<li><a href="http://www.openclonk.org/download/" target="_top">Download</a></li>
<li><a href="http://blog.openclonk.org/" target="_top">Blog</a></li>
<li><a href="http://forum.openclonk.org/" target="_top">Forum</a></li>
<li><a href="http://league.openclonk.org/" target="_top">League</a></li>
<li><a href="http://wiki.openclonk.org/w/C4Script_Documentation" target="_top">Docs</a></li>
<li><a href="http://wiki.openclonk.org/w/Development" target="_top">Developers</a></li>
<li><a href="http://git.openclonk.org/openclonk.git" target="_top">Repository</a></li>
<li><a href="http://bugs.openclonk.org" target="_top">Bugs</a></li>
<li><a href="https://www.openclonk.org/" target="_top">Home</a></li>
<li><a href="https://www.openclonk.org/download/" target="_top">Download</a></li>
<li><a href="https://blog.openclonk.org/" target="_top">Blog</a></li>
<li><a href="https://forum.openclonk.org/" target="_top">Forum</a></li>
<li><a href="https://league.openclonk.org/" target="_top">League</a></li>
<li><a href="https://wiki.openclonk.org/w/C4Script_Documentation" target="_top">Docs</a></li>
<li><a href="https://wiki.openclonk.org/w/Development" target="_top">Developers</a></li>
<li><a href="https://git.openclonk.org/openclonk.git" target="_top">Repository</a></li>
<li><a href="https://bugs.openclonk.org" target="_top">Bugs</a></li>
</ul>
</div>
</div>

32
docs/package-lock.json generated 100644
View File

@ -0,0 +1,32 @@
{
"name": "openclonk-docs",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"lunr": {
"version": "2.1.6",
"resolved": "https://registry.npmjs.org/lunr/-/lunr-2.1.6.tgz",
"integrity": "sha512-ydJpB8CX8cZ/VE+KMaYaFcZ6+o2LruM6NG76VXdflYTgluvVemz1lW4anE+pyBbLvxJHZdvD1Jy/fOqdzAEJog=="
},
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"xml2js": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
"integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
"requires": {
"sax": "1.2.4",
"xmlbuilder": "9.0.7"
}
},
"xmlbuilder": {
"version": "9.0.7",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
"integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
}
}
}

22
docs/package.json 100644
View File

@ -0,0 +1,22 @@
{
"name": "openclonk-docs",
"version": "1.0.0",
"description": "Developer documentation for OpenClonk",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/openclonk/openclonk.git"
},
"author": "The OpenClonk Team",
"license": "ISC",
"bugs": {
"url": "https://github.com/openclonk/openclonk/issues"
},
"homepage": "https://github.com/openclonk/openclonk#readme",
"dependencies": {
"lunr": "^2.1.6",
"xml2js": "^0.4.19"
}
}

View File

@ -56,7 +56,7 @@
<dd>
<text>Searches for a network game on the specified address and joins it. No local scenario (*.ocs) should be specified. Implies --network.</text>
</dd>
<dt id="clonkp">clonk://&lt;<em>Address</em>&gt;/</dt>
<dt id="clonkp">[open]clonk://&lt;<em>Address</em>&gt;/</dt>
<dd>
<text>Same as --join if an address is specified. If "update" is specified as an address, this will cause the engine to perform an update check instead.</text>
</dd>

View File

@ -211,6 +211,10 @@
window.scrollTo(0, y0);
}
})();
// Collapse the index.
document.querySelector('.index > img').onclick();
]]>
</script>
<script src="../lunr.js"></script>
<script src="../search.js"></script>
</toc>

View File

@ -60,11 +60,6 @@
<col>Integer</col>
<col>Weight of the object. Rock 10, clonk 50, hut 1000, castle 10000.</col>
</row>
<row>
<literal_col>Components</literal_col>
<col>ID list</col>
<col>Elements from which the object is composed. Uncompleted or half grown objects will only have the respective fraction of the components.</col>
</row>
<row>
<literal_col>SolidMask</literal_col>
<col>6 integers</col>

View File

@ -27,9 +27,9 @@
</dl>
<h id="RasterGraphics">Raster Graphics</h>
<dl>
<dt id="Graphicspng"><img height="16" src="../../images/icon_image.png" width="16"/>Graphics.png</dt>
<dt id="Graphicspng"><img height="16" src="../../images/icon_image.png" width="16"/>Graphics.png/Graphics.*.png</dt>
<dd>
<text>Graphics of the object. Base graphics, animation phases and a picture for display in menus are stored in a 32 bit picture with transparency channel (PNG format, 32 bit RGBA color, non interlaced).</text>
<text>Graphics of the object. Base graphics, animation phases and a picture for display in menus are stored in a 32 bit picture with transparency channel (PNG format, 32 bit RGBA color, non interlaced). An optional zoom factor for high-resolution graphics can be provided in the '*'-portion of the name.</text>
</dd>
<dt id="Overlaypng"><img height="16" src="../../images/icon_image.png" width="16"/>Overlay.png</dt>
<dd>
@ -39,7 +39,7 @@
<dd>
<text>An optional normal map for the object, where the red, green and blue components in the image correspond to the normal vectors to be used for the lighting of the object. If this file is not present, the normal vector at each pixel points straight into Z direction (outside of the screen).</text>
</dd>
<dt id="Graphicsex"><img height="16" src="../../images/icon_image.png" width="16"/>Graphics*.png/Overlay*.png</dt>
<dt id="Graphicsex"><img height="16" src="../../images/icon_image.png" width="16"/>Graphics*.png/Overlay*.png (Graphics*.*.png/Overlay*.*.png)</dt>
<dd>
<text>Objects can also contain alternative sets of graphics which can be selected ingame using the script command <funclink>SetGraphics</funclink>(). The name corresponds to the file name portion following "Graphics". The matching overlay is automatically selected. For more information see <funclink>SetGraphics</funclink>().</text>
</dd>

View File

@ -13,8 +13,6 @@
<h>Get started</h>
<text><emlink href="files.html">Game data</emlink> - Get an overview over the game data needed for the creation of custom game content.</text>
<text><emlink href="script/index.html">C4Script</emlink> - View the introduction to the script language C4Script.</text>
<h>Search the documentation</h>
<search/>
</part>
<author>Newton</author><date>2011-08</date>
</doc>

View File

@ -206,7 +206,7 @@
<row>
<col>OverlayType</col>
<col>Integer</col>
<col>Bit mask for texture calculation on this material. Bit 0 (1): exact (no zoom), bit 1 (2): no texture, bit 2 (4): extra large zoom, bit 3 (8): calculate texture based on gray scale.</col>
<col>Bit mask for texture calculation on this material. Bit 0 (1): exact (no zoom), bit 1 (2): no texture, bit 2 (4): extra large zoom</col>
</row>
<row>
<col>PXSGfx</col>

View File

@ -68,7 +68,7 @@
<row>
<col>MissionAccess</col>
<col>String</col>
<col>The scenario will only load if the player gained this password in another scenario. See script function <funclink>GainMissionAccess</funclink>().</col>
<col>The scenario will only load if the player gained this password in another scenario. See script function <funclink>GainScenarioAccess</funclink>().</col>
</row>
<row>
<col>Secret</col>
@ -122,9 +122,14 @@
</row>
<row>
<col>FoWEnabled</col>
<col>Integer</col>
<col>Bool</col>
<col>0 or 1. If 0, FoW is disabled, and the whole landscape is visible. Default 1.</col>
</row>
<row>
<col>EvaluateOnAbort</col>
<col>Bool</col>
<col>If enabled, the game will be evaluated even when aborted by the player. This is intended for scenarios like Tower of Despair that save progress in players. Default false.</col>
</row>
</table>
</text>
<text>

View File

@ -166,6 +166,25 @@ func f() {
<code>func f() {
&#9;var i;
&#9;var i;
}</code>
</part>
</col>
</row>
<row>
<col>variable_out_of_scope</col>
<col>
<text>
A variable has been used outside of the block it has been
declared in. This is accepted only for backwards compatibility
and may be removed in a future release.
</text>
<part>
<code>func f(a) {
&#9;i = 0;
&#9;if (a) {
&#9;&#9;var i = 1;
&#9;}
&#9;return i;
}</code>
</part>
</col>
@ -229,6 +248,24 @@ func g(a, ...) {
</part>
</col>
</row>
<row>
<col>suspicious_assignment</col>
<col>
<text>
An assignment was found where an expression was expected. While
an assignment returns its own value, usually a comparison was
intended instead.
</text>
<part>
<code>if (a = b + 1) { /* Do something */}</code>
</part>
<text>
If the assignment is intentional, make this more obvious by
extracting it to a separate statement, or explicitly handle the
boolean conversion by adding a comparison operator.
</text>
</col>
</row>
</table>
</part>

View File

@ -6,7 +6,7 @@
<func>
<title>Abs</title>
<category>Arithmetics</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>AbsX</title>
<category>Objects</category>
<subcat>Position</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>AbsY</title>
<category>Objects</category>
<subcat>Position</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>ActIdle</title>
<category>Objects</category>
<subcat>Activity</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>bool</rtype></syntax>
<desc>Checks whether an object is currently performing an activity.</desc>
<related>

View File

@ -7,7 +7,7 @@
<title>AddCommand</title>
<category>Objects</category>
<subcat>Commands</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>bool</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>AddEffect</title>
<category>Effects</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<deprecated />
<syntax>
<rtype>proplist</rtype>

View File

@ -7,7 +7,7 @@
<title>AddMenuItem</title>
<category>Objects</category>
<subcat>Menu</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>AddMsgBoardCmd</title>
<category>Interface</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>AddVertex</title>
<category>Objects</category>
<subcat>Vertices</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>bool</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>Angle</title>
<category>Arithmetics</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>Anim_AbsX</title>
<category>Animations</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>Anim_AbsY</title>
<category>Animations</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>Anim_Action</title>
<category>Animations</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>array</rtype>
<params />

View File

@ -6,7 +6,7 @@
<func>
<title>Anim_Const</title>
<category>Animations</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>Anim_Dist</title>
<category>Animations</category>
<version>5.6 OC</version>
<version>6.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>Anim_Linear</title>
<category>Animations</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>Anim_R</title>
<category>Animations</category>
<version>5.3 OC</version>
<version>3.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>Anim_X</title>
<category>Animations</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>Anim_XDir</title>
<category>Animations</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>Anim_Y</title>
<category>Animations</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>Anim_YDir</title>
<category>Animations</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>array</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>AppendCommand</title>
<category>Objects</category>
<subcat>Commands</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>bool</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>ArcCos</title>
<category>Arithmetics</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>ArcSin</title>
<category>Arithmetics</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>AttachMesh</title>
<category>Objects</category>
<subcat>Display</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>BlastFree</title>
<category>Landscape</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>BlastObjects</title>
<category>Objects</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>BoundBy</title>
<category>Arithmetics</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>Bubble</title>
<category>Environment</category>
<subcat>Effects</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>bool</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>Buy</title>
<category>Objects</category>
<subcat>Creation</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>object</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>C4D_All</title>
<category>Objects</category>
<subcat>Category</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Object category: all categories.</desc>
<related>

View File

@ -7,7 +7,7 @@
<title>C4D_Background</title>
<category>Objects</category>
<subcat>Category</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int </rtype></syntax>
<desc>Object category: object is drawn behind the landscape. Useful for effects like clouds or celestial bodies.</desc>
<remark>This category does not work in the old 8 bit graphics system.</remark>

View File

@ -7,7 +7,7 @@
<title>C4D_Goal</title>
<category>Objects</category>
<subcat>Category</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Object category: game goal.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>C4D_Living</title>
<category>Objects</category>
<subcat>Category</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int </rtype></syntax>
<desc>Objects with this category are alive when created.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>C4D_Object</title>
<category>Objects</category>
<subcat>Category</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int </rtype></syntax>
<desc>Object category: Item that can hit alive objects.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>C4D_Parallax</title>
<category>Objects</category>
<subcat>Category</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int </rtype></syntax>
<desc>Object category: the object moves parallax with respect to the landscape. This means that the apparent object position changes depending on the scroll position of the viewport. This can be used to have objects apparently moving in the far background or to create status overlays.<br/>Parallax deviation from the normal location is specified in percent and stored in an array in the <emlink href="definition/properties.html#Parallaxity"><code>Parallaxity</code> property</emlink> of the object (<code>Parallaxity[0]</code> for horizontal, <code>Parallaxity[1]</code> for vertical deviation). This means for normal location these two values should be 100. A value of 0 will lock the object to the viewport. For parallax background object use values between 0 and 100. Object positions can also be negative values. Those objects will then be aligned with the right or bottom edge of the screen respectively.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>C4D_Rule</title>
<category>Objects</category>
<subcat>Category</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Object category: rule object.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>C4D_StaticBack</title>
<category>Objects</category>
<subcat>Category</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int </rtype></syntax>
<desc>Objects with this category do not move. This is useful for all kinds of stuff, like making sure rule objects don't fall out of the landscape.</desc>
<related>

View File

@ -7,7 +7,7 @@
<title>C4D_Structure</title>
<category>Objects</category>
<subcat>Category</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int </rtype></syntax>
<desc>Unused Object category.</desc>
<related>

View File

@ -7,7 +7,7 @@
<title>C4D_Vehicle</title>
<category>Objects</category>
<subcat>Category</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int </rtype></syntax>
<desc>Unused Object category.</desc>
<related>

View File

@ -6,7 +6,7 @@
<const>
<title>C4V_Array</title>
<category>Variables</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Data type: array.</desc>
<examples>

View File

@ -6,7 +6,7 @@
<const>
<title>C4V_Bool</title>
<category>Variables</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Data type: boolean value (<code>true</code> or <code>false</code>).</desc>
<examples>

View File

@ -6,7 +6,7 @@
<const>
<title>C4V_C4Object</title>
<category>Variables</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Data type: object pointer.</desc>
<examples>

View File

@ -6,7 +6,7 @@
<const>
<title>C4V_Def</title>
<category>Variables</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Data type: Definition. Definitions are a special type of proplist, and this data type is used for distinguishing definitions from proplists.</desc>
<examples>

View File

@ -6,7 +6,7 @@
<const>
<title>C4V_Int</title>
<category>Variables</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Data type: integer.</desc>
<examples>

View File

@ -6,7 +6,7 @@
<const>
<title>C4V_Nil</title>
<category>Variables</category>
<version>5.2 OC</version>
<version>2.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Data type: nil.</desc>
<examples>

View File

@ -6,7 +6,7 @@
<const>
<title>C4V_PropList</title>
<category>Variables</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Data type: Proplist.</desc>
<examples>

View File

@ -6,7 +6,7 @@
<const>
<title>C4V_String</title>
<category>Variables</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Data type: string.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>COMD_Down</title>
<category>Objects</category>
<subcat>Movement</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Movement direction: down. For more information see <funclink>SetComDir</funclink>.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>COMD_DownLeft</title>
<category>Objects</category>
<subcat>Movement</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Movement direction: diagonally down and to the left. For more information see <funclink>SetComDir</funclink>.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>COMD_DownRight</title>
<category>Objects</category>
<subcat>Movement</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Movement direction: diagonally down and to the right. For more information see <funclink>SetComDir</funclink>.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>COMD_Left</title>
<category>Objects</category>
<subcat>Movement</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Movement direction: left. For more information see <funclink>SetComDir</funclink>.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>COMD_None</title>
<category>Objects</category>
<subcat>Movement</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Movement direction: keep current motion. For more information see <funclink>SetComDir</funclink>.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>COMD_Right</title>
<category>Objects</category>
<subcat>Movement</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Movement direction: right. For more information see <funclink>SetComDir</funclink>.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>COMD_Stop</title>
<category>Objects</category>
<subcat>Movement</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Movement direction: stop, hence end current motion. For more information see <funclink>SetComDir</funclink>.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>COMD_Up</title>
<category>Objects</category>
<subcat>Movement</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Movement direction: up. For more information see <funclink>SetComDir</funclink>.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>COMD_UpLeft</title>
<category>Objects</category>
<subcat>Movement</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Movement direction: diagonally up and to the left. For more information see <funclink>SetComDir</funclink>.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>COMD_UpRight</title>
<category>Objects</category>
<subcat>Movement</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Movement direction: diagonally up and to the right. For more information see <funclink>SetComDir</funclink>.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>Call</title>
<category>Script</category>
<subcat>Function call</subcat>
<version>5.1 OC<extversion>5.4 OC</extversion></version>
<version>1.0 OC<extversion>4.0 OC</extversion></version>
<syntax>
<rtype>any</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>CanConcatPictureWith</title>
<category>Objects</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>bool</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>CanInsertMaterial</title>
<category>Landscape</category>
<subcat>Material</subcat>
<version>5.4 OC</version>
<version>4.0 OC</version>
<syntax>
<rtype>bool</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>CastObjects</title>
<category>Objects</category>
<subcat>Creation</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>CastPXS</title>
<category>Landscape</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>ChangeDef</title>
<category>Objects</category>
<subcat>Status</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>bool</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>CheckConstructionSite</title>
<category>Objects</category>
<subcat>Creation</subcat>
<version>5.2 OC</version>
<version>2.0 OC</version>
<syntax>
<rtype>bool</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>CheckEffect</title>
<category>Effects</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>int</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>CheckVisibility</title>
<category>Objects</category>
<subcat>Visibility</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>bool</rtype>
<params>

View File

@ -6,7 +6,7 @@
<func>
<title>ClearFreeRect</title>
<category>Landscape</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>void</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>ClearMenuItems</title>
<category>Objects</category>
<subcat>Menu</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>int</rtype></syntax>
<desc>Removes all entries from a menu.</desc>
<examples>

View File

@ -6,7 +6,7 @@
<func>
<title>ClearParticles</title>
<category>Particles</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>bool</rtype>
</syntax>

View File

@ -6,7 +6,7 @@
<func>
<title>ClearScheduleCall</title>
<category>Script</category>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>bool</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>CloseMenu</title>
<category>Objects</category>
<subcat>Menu</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax><rtype>bool</rtype></syntax>
<desc>Closes the menu of the calling object.</desc>
<examples>

View File

@ -7,7 +7,7 @@
<title>Collect</title>
<category>Objects</category>
<subcat>Contents</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>bool</rtype>
<params>

View File

@ -7,7 +7,7 @@
<title>Construction</title>
<category>Callbacks</category>
<subcat>Objects</subcat>
<version>5.1 OC</version>
<version>1.0 OC</version>
<syntax>
<rtype>any</rtype>
<params>

Some files were not shown because too many files have changed in this diff Show More