Lukas Werling
042e3c9602
SDL: Fix crash when opening resolution selector
2016-05-07 22:03:25 +02:00
Lukas Werling
9fa16c5e14
SDL: Enable multisampling
...
Unfortunately, there doesn't seem to be an easy way to apply
multisampling changes in SDL. As a workaround, a message requesting the
player to restart the game is shown.
2016-05-07 12:25:11 +02:00
Lukas Werling
1919d81f9d
SDL: Implement FlashWindow for X11
2016-05-07 00:33:26 +02:00
Julius Michaelis
30bb12164b
gtk_window_set_urgency_hint
2016-05-05 22:20:52 +02:00
Günther Brammer
69427a484a
C4AulParse: Check for function names after '->' with the helper function
2016-05-05 02:47:17 +02:00
Günther Brammer
994cb52cea
C4AulParse: Don't escape spaces in bytecode dumps of strings
2016-05-05 02:38:36 +02:00
Günther Brammer
99f704fbb8
Script: Prevent writes to constant arrays
2016-05-05 02:10:41 +02:00
Lukas Werling
60e9383a42
Improve seeding of UnsyncedRandomRng
2016-05-01 19:21:09 +02:00
Günther Brammer
9741af42fd
Replace all usages of the old local variables list with properties
2016-05-01 00:28:37 +02:00
Günther Brammer
7792acdff0
Script: Check for functions before keywords
...
This unifies the lookup for local variables and functions. Its slightly
awkward that global functions can overload if and Par now, but local
variables already could.
2016-05-01 00:28:37 +02:00
Günther Brammer
30f7457d89
Remove unused macros leftover from removed script features
2016-05-01 00:28:37 +02:00
Günther Brammer
b8f2d0ca87
Script: Repeat the parser error message when executing a broken function
2016-05-01 00:28:37 +02:00
Günther Brammer
17b18da26c
Make bytecode dump work again
...
Dumping the bytecode before adding EOFN while depending on that to signal
the end isn't such a hot idea.
2016-05-01 00:28:37 +02:00
Günther Brammer
904bf78d68
Don't crash when deserializing an effect with object command target ( #1730 )
2016-04-29 00:16:20 +02:00
Günther Brammer
4092911349
Move code generation into its own class
2016-04-28 03:25:47 +02:00
Günther Brammer
b00b8554ab
Merge branch script
2016-04-28 03:25:44 +02:00
Günther Brammer
d45ac946fe
Add C4AulParseError constructor and cease reusing it for warnings
...
The nontrivial code that formats the position is now a function of
C4AulParse used by both warnings and errors.
2016-04-28 02:59:12 +02:00
Nicolas Hake
a8f4bd3960
C4AulParseError: Avoid the second string parameter
...
While I'm not a big fan of hiding flow control in a function, Error()
handles formatting and saves me from calling FormatString().getData() a
lot.
2016-04-28 02:59:12 +02:00
Günther Brammer
4b43576f83
Script: Complain about some attempts to Call nonexistant function again
...
This code got lost in the function pointer rewrite.
2016-04-28 02:59:12 +02:00
Nicolas Hake
072661239d
GRBroadcast: Don't noisily fail when a callback function does not exist
...
Since GRBroadcast calls all goal and rule objects and the scenario,
there is a high likelyhood that not all of them implement whatever
arbitrary callback is called. Instead of throwing script errors about
calling undefined functions, just swallow that error and continue.
2016-04-28 02:59:12 +02:00
Günther Brammer
3760363a3b
Script: Add GetPrototype and SetPrototype functions
...
This should eventually replace the Prototype property, so that proplists
can be used as a key-value-storage without any hidden gotchas.
The Prototype is such a magical property that any code dealing with all
properties has to special-case it anyway, and isn't even returned by
GetProperties().
2016-04-28 02:59:11 +02:00
Günther Brammer
525cdc11a3
Deduplicate calculation of the relative stack position of local variables
2016-04-28 02:59:11 +02:00
Günther Brammer
071feaa78f
Deduplicate loop control handling in the script parser
2016-04-28 02:59:11 +02:00
Günther Brammer
efd4724084
Script: Add Scenario effects
...
These work just like global effects, except that effects from CreateEffect
get the scenario as target parameter in the callbacks.
2016-04-28 02:53:21 +02:00
Günther Brammer
97406d24d2
Script: Add Construction and Destruction effect callbacks
2016-04-28 01:08:04 +02:00
Günther Brammer
50378ffda0
Script: CreateEffect starts effects that receive callbacks themselves
2016-04-28 01:08:04 +02:00
Sven Eberhardt
881534bee0
Qt Editor: Shape properties
2016-04-25 16:17:10 -04:00
Lukas Werling
c349254d8b
Remove C4Particles.h include from C4Object.h
...
This reduces the number of files indirectly including PCG from ~50 to 7.
2016-04-25 21:24:27 +02:00
Lukas Werling
e33066a4f2
Rename SafeRandom() to UnsyncedRandom()
2016-04-25 17:32:23 +02:00
Lukas Werling
e734f15117
Remove RNG implementation from C4Random.h
2016-04-25 17:28:04 +02:00
Lukas Werling
aeabe28d82
Remove AsyncRandom() script function
...
We couldn't think of any reason you'd want to use this over regular
Random() in script.
2016-04-25 17:18:07 +02:00
Günther Brammer
e5cfb1858f
Script: GetName() can return the property a proplist was defined in
...
This means that the ActMaps do not need to repeat their name anymore,
provided that all Scripts use GetName() instead of directly accessing .Name.
2016-04-24 19:40:29 +02:00
Günther Brammer
5a470f51f8
Move Effect functions to C4Script.cpp
2016-04-24 19:40:29 +02:00
Günther Brammer
2cdf553953
Change effect list getting function parameter type to C4PropList*
...
This makes it possible to move the effect functions to C4Script.cpp.
2016-04-24 19:40:29 +02:00
Günther Brammer
e8811a7b21
Move global effects from ::Game to ::ScriptEngine
...
This even enables some simplification in the CompileFuncs, since the global
effects were already put in the same section as the other ScriptEngine
parts. The callback for updates due to relinks also fits nicely.
The reset in C4Game::Default was redundant with C4Game::Clear already.
2016-04-24 19:40:28 +02:00
Günther Brammer
e2c6c2a841
Do not use C4Object in C4Effect
...
Instead, the pointer to the effect list is passed to the functions that
previously used the object to determine it.
2016-04-24 19:40:28 +02:00
Günther Brammer
c89e73608b
Unite getting the effects list from a C4Object pointer into a function
...
This way, that function can be re-implemented in standalone c4script.
2016-04-24 19:40:28 +02:00
Günther Brammer
42a15e3be9
Convert C4Effect parameters that do not need to be C4Object* to C4PropList*
2016-04-24 19:40:28 +02:00
Günther Brammer
bfb9b6b1fd
Drop the roundtrip through C4ID for the effect C4Def command target
...
Unfortunately, this complicates the C4Effect::CompileFunc to stay
compatible.
2016-04-24 19:40:27 +02:00
Günther Brammer
632c5cbd0f
Refactor effect callbacks into helper functions
2016-04-24 19:40:27 +02:00
Günther Brammer
e22ca51f72
Don't leak references to Strings on script errors ( #583 )
2016-04-24 19:40:27 +02:00
Günther Brammer
5fbac346d3
Incompatible type warnings work for parameters with type declarations
2016-04-24 19:40:27 +02:00
Günther Brammer
55572720bc
Make the C4ScriptHost a ComponentHost again
2016-04-24 19:40:27 +02:00
Günther Brammer
fb76308812
Make C4ValueConv::Type a constexpr variable instead of an inline function
2016-04-24 19:40:26 +02:00
Nicolas Hake
19a3d43558
Fix definition of explicitly sized enums
2016-04-24 15:20:28 +02:00
Nicolas Hake
baad3aef3c
C4ScriptHost: add const proplist accessor
...
This accessor does not need to be virtual itself, because we don't want
people to override it; it calls the nonconst accessor anyway, which is
virtual.
2016-04-24 14:01:23 +02:00
Nicolas Hake
96223f154c
C4ValueMapNames: mark GetItemNr const
...
It doesn't change anything, so callers don't need a nonconst object.
2016-04-24 14:01:23 +02:00
Nicolas Hake
caf44e2473
Remove specious space from Aul operator table
2016-04-24 14:01:23 +02:00
Nicolas Hake
770be2dafe
Aul: Allow AB_ERR to carry more detailed error information
2016-04-24 14:01:23 +02:00
Nicolas Hake
367f58b1cc
C4AulParseError: Enable creation from host and source pointer
...
Instead of having a C4AulParseError constructor read the location data
from the parse state, allow explicit construction from a known location.
2016-04-24 14:01:23 +02:00
Nicolas Hake
cfdb1142b8
Move C4AulParse declaration into separate header
2016-04-24 14:01:23 +02:00
Lukas Werling
5471fe6cff
Fix randomness in particles with identical properties
...
Several issues:
- The RNG wasn't copied with the value provider (which is always
copied), resulting in unseeded RNGs.
- Separate PCG streams with the same seed start with identical values.
As particles often draw only a single value, we just always advance
the RNG a bit to make the streams diverge.
- The C++ specification requires a <= b for its distributions, but that
wasn't guaranteed by the particle startValue/endValue.
2016-04-23 23:29:36 +02:00
Sven Eberhardt
bc32456ac1
Fix crash on Random(0)
2016-04-22 16:44:35 -04:00
Lukas Werling
b0c1d819af
Reduce game list refresh limit to 1 second
2016-04-22 10:50:03 +02:00
Lukas Werling
0fefc7abae
Merge branch 'pcg'
2016-04-21 20:47:34 +02:00
Lukas Werling
e6a39392dd
Use PCG for C4Particle
2016-04-21 20:39:40 +02:00
Lukas Werling
febc5f91bd
Replace rand() with SafeRandom()
2016-04-20 22:42:00 +02:00
Lukas Werling
1f9c15e388
Allow MapZoom values smaller than 5
2016-04-20 22:42:00 +02:00
Lukas Werling
7005eae55d
Use PCG as random number generator
2016-04-20 22:42:00 +02:00
Sven Eberhardt
f41d3b8869
Fix out-of-bounds memory access in C4Team [sphalerite] #1717
2016-04-19 21:16:47 -04:00
Lukas Werling
abf32cf00b
LoadScenarioSection: Allow reloading the current section
2016-04-18 23:03:35 +02:00
Lukas Werling
4a9553bd20
Fix LoadScenarioSection() resetting the Random seed
2016-04-18 22:57:38 +02:00
Nicolas Hake
f09d26e39f
Merge PR 20: Make memory allocation/deallocation more consistent
2016-04-18 13:49:37 +02:00
Linus Heckemann
042161a627
Fix subsequent deallocation to use free too
2016-04-17 22:56:36 +01:00
David Dormagen
60b9558b56
script GUIs: fixed clipping over parent's boundaries ( #1718 )
...
The window would always use its very own rectangle for clipping - bad luck if it was larger than the parent.
Now children can only additionally restrict the parent rectangle (which defaults to the whole screen at root).
2016-04-17 22:28:34 +02:00
Linus Heckemann
25fd930242
Fix some malloc/free mismatches
...
Discovered with valgrind. Previously, some memory that later gets freed using
free(...) (in StdBuf::Clear) was allocated with new char[...] rather than
malloc, in which case delete[] should be used to free them.
2016-04-17 20:13:33 +01:00
Nicolas Hake
8ffc1ab8cb
Apply DrawTransform to meshes too
...
This will make lighting look weird again for meshes flipped via FlipDir.
Avoid doing that until we implement FlipDir for meshes via an internal
MeshTransform.
2016-04-17 17:56:56 +02:00
Sven Eberhardt
f594737d7e
Fix Definition() call order to prevent possible sync loss.
2016-04-16 23:00:31 -04:00
Sven Eberhardt
901399f5c2
MSVC compile warning fix
2016-04-16 22:05:37 -04:00
Sven Eberhardt
c0228be4e7
Qt Editor: More editor property types and functionality
2016-04-16 22:05:35 -04:00
Armin Burgmeier
0580132d81
Fix the build on Linux
...
With NULL, the function call was ambiguous. Use nullptr to choose the overload
taking a pointer and not the one taking an integer.
2016-04-10 13:27:16 -07:00
Armin Burgmeier
d04c4a16ae
Fix comparing strings of different lengths
...
Strings should not compare equal if they only share a common prefix.
2016-04-10 13:22:56 -07:00
Armin Burgmeier
208cb12b2e
Fix crash on shutdown
...
a) make sure the context is deselected on destruction, so that
CStdGL::Clear() destructor doesn't try to deselect a non-existing context.
b) Calling Clear() in CStdGLCtx::~CStdGLCtx() does only call
CStdGLCtx::Clear(), even though Clear() is virtual. The reason is that by
the time the CStdGLCtx destructor is executed, the CStdGLCtxQt part of the
object has already been destructed. Therefore, make CStdGLCtx::Clear() safe
to be run without the context ever having been initialized, and explicitly
call CStdGLCtxQt::Clear() in CStdGLCtxQt::~CStdGLCtxQt(). This is certainly
not the most elegant way to handle this, but it should do the job for now.
2016-04-10 12:06:57 -07:00
Armin Burgmeier
cf708a7cb1
Some cleanup in CStdGLCtxQt
2016-04-10 12:06:57 -07:00
Maikel de Vries
97f316a35a
fix debug build
2016-04-10 09:48:42 +02:00
Sven Eberhardt
2a2fc68e3f
Qt Editor: Add user properties
2016-04-09 14:29:02 -04:00
Nicolas Hake
aa06b3b6f6
C4AulParse: Drop unused ATT_STAR
...
ATT_STAR has been rolled into ATT_OPERATOR and is no longer used
anywhere.
2016-04-07 20:52:31 +02:00
Nicolas Hake
f963a398aa
Define NORETURN annotation for MSVC
2016-04-07 20:52:28 +02:00
Lukas Werling
de98bbef46
Fix compile errors on Linux/SDL
2016-04-06 19:17:52 +02:00
Nicolas Hake
d0c800d27a
Scripted landscape: Always release surfaces back to C4Landscape
...
Even when scripted landscape generation fails, C4Landscape wants its
surfaces back to work with whatever landscape may have been created from
Map.bmp.
2016-04-05 13:50:49 +02:00
Sven Eberhardt
879d501592
Merge remote-tracking branch 'remotes/origin/qteditor' into qteditor
...
Conflicts:
src/editor/C4ConsoleQtPropListViewer.cpp
src/editor/C4ConsoleQtPropListViewer.h
src/script/C4ValueArray.cpp
2016-04-04 19:34:02 -04:00
Nicolas Hake
1e1532ef8a
Darwin: What the hell does "#import" do anyway?
2016-04-04 23:27:50 +02:00
Sven Eberhardt
98c36e5955
Qt Editor: Implement setting of properties
2016-04-03 23:46:58 -04:00
Sven Eberhardt
e8f48fd53e
Qt Editor: Win32 build fixes
2016-04-03 23:46:20 -04:00
Nicolas Hake
9dddf289db
Merge branch 'master' into qteditor
2016-04-03 21:06:32 +02:00
Nicolas Hake
eabca223f5
Update all copyright notices for 2016
2016-04-03 20:24:42 +02:00
Nicolas Hake
493c276126
Rewrite header inclusions to #include "path/to/file.h" style
2016-04-03 20:24:42 +02:00
Nicolas Hake
5134a0a0a4
Fix mape build
2016-04-03 20:24:42 +02:00
Nicolas Hake
267bb1c3f1
Landscape: Make script-edited maps work again
2016-04-03 17:23:00 +02:00
Nicolas Hake
5c0d8a9ce6
Landscape: Make script-generated maps work again
...
...by actually storing the result of the generator somewhere.
2016-04-03 17:02:41 +02:00
Nicolas Hake
ebfacb928d
GLSL: Improve line information in error messages
...
Instead of making the user count lines from the shader log, we'll now
emit #line directives and a file number->name mapping to make it easier
to figure out which file and line the error message comes from.
2016-04-03 16:17:39 +02:00
Nicolas Hake
3641509462
Mesh rotation: Keep rendered mesh inside shape
2016-04-03 13:37:04 +02:00
Nicolas Hake
de1d00eb68
Meshes: Enable reload for custom material shaders
2016-04-03 13:37:03 +02:00
Nicolas Hake
ccadd2bec3
C4Object: Remove some unimplemented func declarations
2016-04-03 13:24:28 +02:00
Nicolas Hake
0537df5f23
C4Object: Move C4Def.h dep out of header
...
C4Def is only ever used as a pointer inside C4Object.h, so we don't need
to include C4Def.h from it.
2016-04-03 13:24:26 +02:00
Nicolas Hake
735f9cc06b
C4Landscape: Pull everything private out of the header
...
Since LTCG is enabled now, we don't have to define every function inside
the headers for ~xXx super speed xXx~, which means we can strip the
headers down to their bare minimum and reduce interdependencies and
therefore recompilation times by a lot.
2016-04-03 13:24:24 +02:00
Nicolas Hake
893d4e295b
C4Landscape: Set dynamic mode when map was successfully generated
...
...instead of when it failed to generate.
2016-04-01 14:38:47 +02:00
Nicolas Hake
0abef8dac5
Remove "High-res landscape" option
...
We're requiring shaders for everything else we render, so there's no
point in having a shader-free landscape renderer around.
2016-03-31 19:22:17 +02:00
Nicolas Hake
33b8d404a5
GL: Add "frameCounter" uniform
...
Add the current frame counter as a uniform variable to the shaders, so
people can use it to do time-based animation.
2016-03-31 01:44:44 +02:00
Nicolas Hake
cd0032ccf0
Do mesh rotation outside of DrawTransform
...
Mesh rotation needs to happen as part of the MeshTransform so lighting
is applied correctly. DrawTransform applies after lighting which made
rotated meshes look weird.
2016-03-31 01:19:58 +02:00
Sven Eberhardt
370b9cf898
Qt Editor: Disable vsync to avoid laggy viewports
2016-03-28 23:10:10 -04:00
Lukas Werling
a12e485458
Qt Editor: Add scroll bars to the viewports
2016-03-28 22:07:43 +02:00
Maikel de Vries
6bdbc5b5c7
add InsertVertex script function to insert a vertex at arbitrary position
2016-03-28 17:36:00 +02:00
Maikel de Vries
12ae155015
GetVertex: return nil for invalid vertex index and improve documentation
2016-03-28 17:36:00 +02:00
Sven Eberhardt
9294d8b9dc
Qt Editor: Fix title and icon
...
Using the .ico needs a plugin that is not always loaded.
2016-03-26 23:55:28 -04:00
Lukas Werling
a79d5d1802
Fix openclonk-server build on Windows
2016-03-26 23:26:52 +01:00
Lukas Werling
baf54a88b9
Fix assertion when comparing strings of different lengths
2016-03-26 21:59:46 +01:00
Lukas Werling
ca88a0a52a
Implement new Linux editor todos
2016-03-26 21:43:37 +01:00
Lukas Werling
6d9aef33c2
Merge branch 'qteditor-sdl' into qteditor
2016-03-26 20:57:10 +01:00
Lukas Werling
f8dc58e0ed
Remove Windows editor rendering hacks (untested)
2016-03-26 20:54:26 +01:00
Lukas Werling
61e97ee87e
Fix zooming not working in the editor
2016-03-26 20:40:09 +01:00
Lukas Werling
f9190cd1ea
Fix keyboard input for Qt editor/SDL
...
The SDL port used to define a separate set of key codes differing from
the usual ones. The SDL codes are now translated to make the Qt input
easy.
This also fixes a broken keycode for the '0' key.
2016-03-26 20:29:07 +01:00
Lukas Werling
30dd360a57
Update the Qt rendering widget periodically
2016-03-26 19:03:16 +01:00
Sven Eberhardt
dc7259bb1e
Qt Editor: Allow opening of user path from welcome page
2016-03-26 14:02:40 -04:00
Sven Eberhardt
b3712ace97
qt editor: Add "Editor" button to startup main menu
2016-03-26 02:15:15 -04:00
Sven Eberhardt
f2daa51fa7
Qt Editor: Add "Welcome" dock widget
2016-03-26 01:36:40 -04:00
Armin Burgmeier
fca5106a33
FoW rendering: reset to previous framebuffer instead of default one
...
The QOpenGLWidget is set up to render into a custom framebuffer, and by
resetting to render into the default framebuffer, we don't draw anything in
the buffer that is actually going to be displayed by the widget.
2016-03-25 17:29:23 -07:00
Armin Burgmeier
b6e573296a
CStdGLCtxQt: share with Qt's global share context
...
This allows the OpenGL context that Qt creates for QOpenGLWidget to use the
GL objects that we created beforehand.
2016-03-25 14:17:16 -07:00
Armin Burgmeier
56545dc5f3
Fix crash when constructing C4ConsoleQtDefinitionListViewer
2016-03-25 14:16:43 -07:00
Sven Eberhardt
1613885f47
Qt Editor: Use qt resource to set icon
2016-03-23 22:56:17 -04:00
Sven Eberhardt
9690174007
Qt Editor: Fix windows includes
2016-03-23 18:20:23 -04:00
Sven Eberhardt
b1ac208249
Qt Editor: Add "File->New" menu entry
2016-03-22 23:08:05 -04:00
Maikel de Vries
d6b963d321
remove unused LineMaxDistance property
2016-03-22 22:26:46 +01:00
Maikel de Vries
dc1e828cfb
add callback OnLineChange when line changes its vertices or vertex positions
2016-03-22 21:53:32 +01:00
Maikel de Vries
fc008241cd
rename LineBreak callback to OnLineBreak
2016-03-22 18:58:55 +01:00
Lukas Werling
4290038909
Move all viewport drawing to QOpenGLWidget::paintGL
...
Unfortunately, this still doesn't fix rendering. Note that the paintGL()
isn't called periodically yet, only when resizing the window.
2016-03-22 16:50:38 +01:00
Lukas Werling
eefa8749a8
Fix viewport Zoom getting set to NaN
2016-03-22 16:49:39 +01:00
Lukas Werling
19caa65b7b
Merge branch 'sdl-gamecontroller' (pull request GH-17)
2016-03-21 16:39:28 +01:00
Lukas Werling
21fd0805d0
Merge branch 'gtk-mousegrab' (pull request #18 )
2016-03-21 16:27:24 +01:00
Lukas Werling
e1eb62a552
Fix warnings about overridden functions
2016-03-20 21:16:52 +01:00
Lukas Werling
75f62e52f2
Make Qt editor work with the SDL engine
...
Viewport rendering doesn't quite work yet, though.
2016-03-20 21:16:52 +01:00
Lukas Werling
08d7c9dcea
Implement GetShiftWParam() with Qt
2016-03-20 21:16:52 +01:00
Sven Eberhardt
a3cdfa3221
Qt Editor: Add shadow to landscape brush circle
...
To be more visible e.g. when drawing snow or in front of a white sky
2016-03-20 11:35:20 -04:00
Sven Eberhardt
3f7d68ff2c
Qt Editor: Sort objects in object creator by name
2016-03-19 14:40:23 -04:00
Sven Eberhardt
ed0647866e
Qt Editor: Add preview for new object placement
2016-03-19 14:40:22 -04:00
Lukas Werling
b64b4e8574
Compilation fixes for Linux
2016-03-18 21:34:21 +01:00
Sven Eberhardt
4f70fdbfc8
Qt Editor landscape drawing fixes and improvements. Add brush size preview.
2016-03-18 00:26:14 -04:00
Sven Eberhardt
645520c7af
Qt Editor: Fix viewport focus and keyboard handling.
2016-03-15 22:58:41 -04:00
Sven Eberhardt
f6ce50e9e7
Qt Editor: Use qt widgets for viewports
2016-03-10 00:07:17 -05:00
ckanibal
8f31ae22bf
Make Windows build great again!
2016-03-07 00:58:23 +01:00
Sven Eberhardt
63bbba06bb
Qt Editor: Add missing creator files
2016-03-06 13:17:14 -05:00
Sven Eberhardt
80549ca2cc
Qt Editor: Add object creator
2016-03-06 13:06:29 -05:00
Maikel de Vries
5acf34c2ba
allow larger font sizes for exotic monitor configurations ( #1695 )
...
This can be still improved depending on the monitors dpi and select automatically a font that fits best to the dpi.
2016-03-04 21:07:42 +01:00
Sven Eberhardt
74b3983f7f
Fix some Qt editor crashes
...
Fix use-after-delete on proplists by item view and crash on recursive execution of message processing.
2016-03-03 00:13:39 -05:00
Günther Brammer
b54ddc7663
Merge branch script
2016-03-01 03:04:17 +01:00
David Dormagen
3d71dfbfa9
Particles: added a "seed" parameter to PV_Random ( #1198 )
2016-02-27 12:24:15 +01:00
David Dormagen
bc5fededaf
particles: added PV_Cos
2016-02-27 11:45:13 +01:00
David Dormagen
4c6d347c4d
C4ValueArraySortStringscomp: silenced string-to-bool-conversion warning
...
VisualStudio gave a "performance warning" about this implicit cast. I actually don't know why, but this change makes the intention clearer anyway (since we are not returning the string contents but just whether they exist). So it's probably not bad regardless of whether the warning is weird.
http://stackoverflow.com/questions/1847860/why-is-there-a-performance-warning-on-cast-pointer-to-bool
2016-02-27 11:42:37 +01:00
Lukas Werling
2d4747029d
Make analog axis strength symmetrical (0 to 2^15 - 1)
2016-02-26 20:40:07 +01:00
Lukas Werling
3a4e667f4d
Implement mouse grabbing for GTK on X11 ( #1637 )
...
The same thing should somehow also be possible using gdk_device_grab(),
but I couldn't get it to work properly.
2016-02-25 18:21:53 +01:00
Nicolas Hake
48ccc5f983
Render objects in front of landscape only once
...
The plane limits in C4ObjectList::Draw were not properly checked,
leading to objects in front of the landscape being drawn twice (once
before the landscape was rendered, and once after).
2016-02-25 01:09:48 +01:00
Nicolas Hake
bfd9989fc6
Landscape Renderer: Create and bind 1D mat map texture before using
...
The landscape renderer used to store texture data into the default 1D
texture, which works but is a bad idea for several reasons (and would
have broken if we had a reason to use another 1D texture anywhere else).
2016-02-24 19:18:27 +01:00
Nicolas Hake
f64f131f1b
StdMesh*: Explicitly delete copy ctors/assignment ops
2016-02-24 01:46:58 +01:00
Nicolas Hake
72dc205582
GL: Add an object label to mesh IBOs
2016-02-24 01:46:58 +01:00
Lukas Werling
e52bf6962b
Fix gamepads only working after game start
...
This affected all platforms other than SDL.
2016-02-23 20:20:41 +01:00
Lukas Werling
8811356141
Make C4GamePadControl manage all controllers
...
The available gamepads are distributed automatically among players.
This also implements controller hot-plugging: It is possible to start a
game without a controller and plug it in later, and to reconnect a
controller after plugging it out.
2016-02-23 17:06:59 +01:00
Sven Eberhardt
771a333e21
Qt Editor: Add effects to object list view + fixes
...
Also remove cache of C4Values and use callbacks on object and effect deletion instead.
2016-02-21 22:23:42 -05:00
Lukas Werling
9e0143b998
Remove gamepad ids from key codes
...
We want one gamepad key mapping to work with multiple gamepads, so
including the id there doesn't make sense.
Additionally, the gamepad id may change during the game (controller
hot-plugging).
2016-02-21 18:27:02 +01:00
Lukas Werling
9f69c650d6
Use icons for all controller buttons
...
The icons currently only show Xbox 360 controller labeling. The icon set
also includes icons for PlayStation controllers, so we could extend this
in the future.
2016-02-21 18:27:02 +01:00
Lukas Werling
7155ff90eb
Implement controller rumbling
...
New script functions:
- PlayRumble(int plr, int strength, int length)
- StopRumble(int plr)
2016-02-21 18:27:01 +01:00
Lukas Werling
046cacc26c
Remove unused and unimplemented gamepad functions
...
- GamePadControl::AnyButtonDown
- GamePadOpener::SetGamePad
2016-02-21 18:27:01 +01:00
Lukas Werling
aa42d1deb7
Make controller button strings nicer
...
This also removes the controller id from the control definitions,
instead defaulting to 0. This doesn't change anything for now as we only
had definitions for controller 0 anyways.
2016-02-21 18:27:01 +01:00
Lukas Werling
24622f3a9c
Update main menu GUI gamepad control bindings
...
It is now possible to control all GUI menus using the left stick or the
dpad, along with the A and B buttons on the controller.
This also doubles the button emulation dead zone to make navigating the
menus with the stick easier.
2016-02-21 18:26:44 +01:00
Lukas Werling
985f1b99e5
Make GetPlayerControlState() query the current controller state
...
To keep compatibility with scripts which expect only binary buttons,
this adds a third parameter to the function which enables the new
functionality.
Bonus /script to test the controller stick x axis:
Schedule(GetCursor(), "Message(\"%d / %d\", GetPlayerControlState(0, CON_Left, true), GetPlayerControlState(0, CON_Right, true))", 10, 100000000)
Note that the values will be inconsistent if multiple analog sticks are
bound to the same control, as values from one stick will overwrite those
from the other one. This can happen even if you move only one stick.
2016-02-21 18:26:44 +01:00
Lukas Werling
8dd1450e94
Implement "gamepad stick moved" events for analog input
...
Analog moved events are only sent once per control frame.
2016-02-21 18:26:18 +01:00
Armin Schäfer
9dca94a6b8
New Title image overlay.
2016-02-20 17:26:43 +01:00
Armin Schäfer
1ab375488f
Fix AppendCommand(Jump) without target.
2016-02-20 17:21:31 +01:00
Sven Eberhardt
a4d28c383b
Qt Editor: Implement object list view
2016-02-18 00:11:35 -05:00
Sven Eberhardt
e0e09133d6
Qt Editor: Add some string translations.
2016-02-18 00:10:30 -05:00
Sven Eberhardt
2af22ee824
New editor (Qt-based)
...
Work in progress. So far only for Windows.
2016-02-15 08:38:06 -05:00
Nicolas Hake
25deef7857
Merge fix for AnimationNode deserialization crash
2016-02-13 23:28:09 +01:00
Lukas Werling
937ddaf722
Update key code strings for game controllers
...
With the SDL_GameController interface, buttons and axes have actual
names we can refer to. This also allows for advanced mappings using both
sticks (this probably needs script changes) as well as the triggers.
2016-02-13 23:28:00 +01:00
Nicolas Hake
ad01c2e48f
Fix NULL deref when deserializing CustomNode AnimationNodes (GH #13 )
2016-02-13 23:22:21 +01:00
Günther Brammer
c9c8b0c408
Move modifier key masks to the keycode definitions
2016-02-13 22:36:41 +01:00
Lukas Werling
bd3f020068
Replace Joystick controls with SDL GameController
2016-02-13 21:03:19 +01:00
Lukas Werling
9c840724f2
Re-enable gamepad controls
2016-02-13 18:42:23 +01:00
Lukas Werling
97f06fd0cd
Fix openclonk-server build
2016-02-12 22:40:55 +01:00
Günther Brammer
c332fe940b
Merge branch 'sdl-mouse'
2016-02-12 21:11:21 +01:00
Lukas Werling
24ef8b43af
Grab the mouse while in-game ( #1637 )
...
This only implements this for the SDL port for now.
2016-02-12 21:09:40 +01:00
Günther Brammer
92217e51e0
GLX: Use gdk instead of XLib to make glXCreateContextAttribsARB not exit
2016-02-12 20:39:39 +01:00
Günther Brammer
0c0c64642a
Remove unused #define in C4AulParse
2016-02-12 17:15:46 +01:00
Sven Eberhardt
ba3160c4c3
Fix crash when console window creation fails
2016-02-11 23:35:38 -05:00
Lukas Werling
f505b31032
SDL: Fix mouse button handling
...
- The right mouse button didn't work at all.
- The left mouse button stopped working when clicking multiple times
without moving the cursor.
2016-02-11 22:29:10 +01:00
Lukas Werling
392b7bab72
SDL: Add support for the mouse wheel
...
Fixes #0001682
2016-02-11 22:17:42 +01:00
Nicolas Hake
5f895c14fc
Materials: Fix misspelling of "Incendiary" ( #1680 )
...
The wrong spelling will still be accepted as a material value, as long
as no value with the correct spelling exists.
2016-02-09 23:45:02 +01:00
David Dormagen
91391c64af
draw global particles on plane 900
...
Previously, global particles would be drawn even in front of Plane 1000+ (GUI) objects. Additionally, it was impossible to specify particles that were supposed to always be in front of all other particles (e.g. fog, clouds, emulated FoW, ...).
Now, you can attach particles to an object on plane 901+ and have them be in front of everything else.
2016-02-09 20:43:23 +01:00
Armin Burgmeier
582cba01ed
Build Fix
2016-02-08 21:28:44 -08:00
Nicolas Hake
43aa11623a
Fix off-by-one error in FoW renderer ( #1678 )
...
The FoW renderer would try drawing to texture coordinates one pixel
too high (i.e. if the texture was 256 pixels high, it would draw to
pixels with 1 <= y <= 256 instead of 0..255).
2016-02-08 22:58:18 +01:00
Nicolas Hake
a204439f80
C4FontLoader: Stop manually managing memory
...
Instead of implementing a dynamically growable array with new and delete
and memcpy like cavemen, we'll use a vector of smart pointers.
2016-02-08 22:58:17 +01:00
Maikel de Vries
159dbf071f
make ContactCalls a property instead of DefCore entry
...
This allows for useful runtime changes, like disabling contact calls when an animal dies.
2016-02-08 21:25:43 +01:00
Nicolas Hake
142b7ea7c3
RegCreateKeyEx: Pass NULL as lpClass
...
The lpClass parameter isn't used, and it is valid to pass NULL for it.
It is, however, not valid to pass a string literal, because the
conversion to nonconst char* has been deprecated in C++ for a long time
and doesn't exist anymore in C++11.
2016-02-08 17:36:50 +01:00
Nicolas Hake
d5dbcb71da
ShowGfxErrorDialog: Fix handle leak
...
CreateProcessW will return a handle the main thread and a process handle
to the child process. These handles must be closed to avoid a resource
leak.
2016-02-08 17:36:50 +01:00
Nicolas Hake
3d9b322f51
Fix incorrect CreateProcessW call
...
Quoth MSDN: "The Unicode version of this function, CreateProcessW, can
modify the contents of this string. Therefore, this parameter cannot be
a pointer to read-only memory (such as a const variable or a literal
string). If this parameter is a constant string, the function may cause
an access violation."
It can, however, be NULL, which does the right thing automatically.
2016-02-08 17:36:50 +01:00
Nicolas Hake
64a5388d4d
C4Surface: Remove broken "support" for split textures
...
Most code already didn't handle textures larger than GL_MAX_TEXTURE_SIZE
and only used the first one in case of a split texture.
2016-02-08 17:36:50 +01:00
Nicolas Hake
7b04914fc4
C4Surface: Make dbg_index unsigned int instead of int*
...
It seems like an odd decision to add a layer of indirection to this,
especially since it's just a pointer to int instead of a pointer to a
larger structure.
2016-02-08 17:36:50 +01:00
Nicolas Hake
059e9e7060
C4Surface: Explicitly mark copy ctor/assignment op deleted
2016-02-08 17:36:50 +01:00
Nicolas Hake
5fe327663f
Fix signed int overflow in BltAlpha ( #1661 )
...
The red color channel calculation could overflow into the sign bit,
which is undefined behavior. At least one compiler takes advantage of
this and assumes it cannot happen, resulting in incorrect results.
BltAlphaAdd looks similar, but does in fact not have this bug because it
shifts the color channel far enough that multiplication can't overflow.
2016-02-08 02:39:54 +01:00
Nicolas Hake
4fdafbc78a
Move StdColors.h ref from C4Surface.h to files that actually need it
...
C4Surface.h doesn't require anything from StdColors.h, so there's no
reason to reference the latter there.
2016-02-08 02:13:18 +01:00
David Dormagen
59739b5cf6
script GUIs: do not catch mouse-up without prior mouse-down ( #1327 )
...
Otherwise, you could open a menu on mouse-down, which would then block the mouse-up event. The control system (not the script but the engine!) would then never know that the button was released and issue a key event with repeated=1 when you pressed the button the next time.
This could lead to issues.
2016-02-07 10:47:33 +01:00
Sven Eberhardt
439b1f481c
Register Objects.c script as global constant to make it accessible from outside
2016-02-06 21:12:22 -05:00