Commit Graph

3143 Commits (56d228b6e4f227fa5d5c68b1138989d5f033af39)

Author SHA1 Message Date
Sven Eberhardt 80fe1aa658 Avoid some C4Group rewinds in scenario list and player loading. 2015-09-10 22:32:51 -04:00
Armin Burgmeier 80791ec5ec Add a low-level PerformMultiBlt function to C4Draw
This allows drawing with custom sprite shaders. Plan is to make the sky draw
with a separate shader.
2015-09-10 20:45:42 -04:00
Armin Burgmeier f3da8525d0 Prefix most shader defines with "OC_" 2015-09-10 19:45:43 -04:00
Sven Eberhardt 3723024e2f Added implicit layer check to local calls of FindObjects-family functions (#1383).
Also fixed some docs links. Note that GetObjectLayer and SetObjectLayer are still not documented.
2015-09-09 20:19:45 -04:00
Sven Eberhardt 5a7e110e1e Fix clonks and objects falling off airships on vertical movement (#1391).
The sub-pixel position adjustment on SolidMask movement caused much smoother visuals on objects on an airship, but at the cost of things falling down because object vertices wouldn't cross the sub-pixel barrier to the next pixel value at the same time as the SolidMask.

The smooth movement is kept for horizontal.

Also fix a bug that caused objects to be added to the SolidMask movement list twice.
2015-09-08 20:20:29 -04:00
Sven Eberhardt e3213812a9 Implement GetStartupTeamCount() script function (#1246).
Returns number of teams containing active players at game start.
2015-09-06 23:29:22 -04:00
Sven Eberhardt 5f0b96d11b Fix empty controlled statement on undefined BREAKPOINT_HERE. 2015-09-06 22:56:14 -04:00
Sven Eberhardt c22157c04b Simplified implementation of StartupPlayerCount.
Setting it by player filenames in the beginning is not necessery (and wrong for invalid files). Also copying it through C4S.Head didn't serve any purpose because PlayerInfo is synchronized in network and replays and startup player count can be deduced from that.

Tested in standalone, network, savegames, runtime join and replays from standalone, savegames and runtime join (Some replays of network games were bugged but that's an unrelated error).
2015-09-06 22:31:04 -04:00
David Dormagen cc3452bd0d custom guis: properly scale with font size now
Previously, the em <-> pixels conversion was a hardcoded value. Now the GUI scales with the font size that can be selected in the options.
Sadly, all scales were off since the hardcoded value was too low.
2015-09-06 19:02:31 +02:00
Sven Eberhardt 283277ac82 Do not pre-load file contents from unpacked music folders ($1378).
Removes several seconds from startup time and ~150MB memory usage. Note that tags are still loaded so all file headers do have to be accessed.
2015-09-06 00:02:17 -04:00
Sven Eberhardt ec0b9a0dd1 Fix deleted object usage when script gui close call is issued in response to deleted parent object. 2015-09-05 20:37:12 -04:00
David Dormagen 4682b6c668 script GUIs: fixed a fistful of memory leaks
There are some ownership rules (PropList::GetProperties, Ui::Element..) which are not very clear imo. But there also was at least one clear oversight (name retaining, that is).
The only issue would be an assertion firing at game exit.
2015-09-05 11:01:58 +02:00
Sven Eberhardt 0ceda6734b Fix memory leak in TextureMap initialization.
The Default call from C4Game is issued before construction of all members, which causes a memory leak when TextureMap is actually constructed.

Just merge Default() into Clear(). The separation into two calls serves no other purpose than putting the class into an inconsistent state between them.

It actually does that in almost all other subclasses as well but they don't allocate memory.
2015-09-04 21:49:36 -04:00
Sven Eberhardt c6518cc203 Fix out-of-bounds vector access in map script mask specification calculation. 2015-09-04 21:45:15 -04:00
Sven Eberhardt cb995eb158 Fix several memory leaks in script gui. 2015-09-04 21:08:28 -04:00
Martin Plicht b15f6bfb38 mac: Sprinkle some #include <GL/glew.h> onto 2 .mm files to make compiler happy
Also a break in a switch because clang told me so!
2015-09-04 18:28:57 +02:00
Nicolas Hake 4ae2d9f70b C4Script: Allow executing strings from cmdline instead of only files 2015-09-04 13:40:27 +02:00
Nicolas Hake 2b876a6cb6 C4Script: Split stubs from script runner 2015-09-04 13:21:06 +02:00
Nicolas Hake 082b3e7360 C4AulParse: Properly escape strings when dumping bytecode
Instead of just writing the raw string to stderr, escape them first so
newlines and other control characters don't result in strangely
formatted output.
2015-09-04 12:57:30 +02:00
Sven Eberhardt 0b308e75fe Remove duplicate sound system initialization. 2015-09-03 23:47:41 -04:00
Sven Eberhardt a4629e0758 Clear container of contents prior to removing them.
The container had already set Status==0 and cleared these objects from its contents, which can cause access to dead objects when anything container-relevant is done in the destruction callback.
2015-09-03 23:39:06 -04:00
Sven Eberhardt 8f4494745d Fix C4ScriptGuiWindow MouseInput/MouseEnter/MouseLeave overloads.
MouseInput silently shadowed the variant in C4GUI::Element and MouseEnter/MouseLeave were never called without parameters.
2015-09-03 23:27:20 -04:00
Sven Eberhardt 3edcc2b043 GUI: Readded "using Window::MouseInput;" in Screen to make the overload clear.
It got lost when moving some functions from protected to public.
2015-09-03 23:04:26 -04:00
Sven Eberhardt 3e4b30b2ba Added parentheses to clarify when an assignment result was intentionally used as truth value.
To silence some warnings.
2015-09-03 22:54:08 -04:00
Sven Eberhardt 36fbbb34a4 Change deactivated MenuDebugLogF to a definition that does not evaluate its parameters. 2015-09-03 22:50:58 -04:00
Sven Eberhardt 9e6f7896ac Make MouseInput, MouseEnter and MouseLeave public in GUI elements.
They were public in some and protected in other classes and they're also called from several places outside the GUI.
2015-09-03 22:42:29 -04:00
Sven Eberhardt b74750f1cb Fix sound modifier parameter in SoundAt script function.
The modifier was created but not applied.
2015-09-03 21:26:50 -04:00
Sven Eberhardt 20d3de46cd Fix some unused variables. 2015-09-03 21:26:49 -04:00
Armin Burgmeier db29160fea Revert "revert workaround made for #1368, doesn't work on (certain) Intel chipsets. Instead, limit the maximum bone count to 64 so to meet the limit of 1024 uniform components by certain graphics cards (#1285)"
This reverts commit f57bfa089c.

This was committed by mistake. Fixes #1375.
2015-09-03 20:38:53 -04:00
Clonkonaut 5f4978d3e6 S2Fix 2015-09-03 20:04:56 +02:00
Julius Michaelis 2b004e637b Fix 2a9b481: Add forgotten ! that broke rope bridges.
(and probably some other stuff)
Thanks to Maikel for reporting it!
2015-09-03 15:39:52 +09:00
Sven Eberhardt 3e2e9d5ed4 Fix some warnings. 2015-09-03 00:16:25 -04:00
Sven Eberhardt 84fbff95a8 Add Find_Property. 2015-09-02 23:55:45 -04:00
Sven Eberhardt 54619930c7 Fix crash at game end due to callbacks into deleted objects. 2015-09-02 22:57:24 -04:00
David Dormagen ac738735b2 Merge branch 'master' into Controls
Conflicts:
	planet/Objects.ocd/Vehicles.ocd/Airplane.ocd/Script.c
	src/game/C4Game.cpp
	src/game/C4GraphicsSystem.cpp
	src/gamescript/C4GameScript.cpp
2015-09-02 08:19:34 +02:00
Sven Eberhardt 43165e24cd Change C4AbstractApp:SetVideoMode spatial resolution parameters to signed int.
The magic value -1 is used to denote "current screen mode", but it has trouble fitting into the unsigned concept. An alternative would be to use 0 as the magic value, but that would include quite a few places (including existing configuration settings) to change.
2015-09-01 22:51:32 -04:00
Sven Eberhardt 7d9f7aee02 Fix some unused variables and integer type conversions. 2015-09-01 22:18:39 -04:00
Sven Eberhardt e5814f8841 Silence some spurious compiler warnings about partially initialized structures. 2015-09-01 21:37:16 -04:00
Sven Eberhardt 15a1a62521 Automatically deduce shift state in combo keys with Control/Shift combo. 2015-09-01 19:11:13 -04:00
Peter Wortmann 38806f4c0b Define left + right control for Mac
Higher wizardry.
2015-09-01 19:11:31 +01:00
Sven Eberhardt 0b37c96490 Fix Windows builds.
Removed some leftover gamma ramp functionality from Win32 AbstractApp.
2015-09-01 08:20:34 -04:00
Sven Eberhardt 95baaa7934 Enable usage of LeftControl, RightControl, LeftShift and RightShift as player control keys. 2015-08-31 20:50:54 -04:00
Tobias Zwick f57bfa089c revert workaround made for #1368, doesn't work on (certain) Intel chipsets. Instead, limit the maximum bone count to 64 so to meet the limit of 1024 uniform components by certain graphics cards (#1285) 2015-08-31 19:28:00 +02:00
Peter Wortmann a45c865be1 Fixed preprocessor for AUDIO_TK != AUDIO_TK_OPENAL 2015-08-31 17:35:08 +01:00
Peter Wortmann 30857e835e Shader gamma implementation
In comparison to the old system, this is a downgrade - instead of being
able to set a full color mapping by gamma ramp, we now get just a value
per colour channel.

Upside is that we do not need to play around with the global gamma ramps
any more, which was arguably the wrong way to do it.

This commit will likely break everything that has been using gamma so far.
2015-08-31 17:35:08 +01:00
Peter Wortmann 6a016f807d Alternate light drawing, v2
This is now a "mix" between the original and the alternate drawing
strategy, hopefully combining its strength. In detail:

1. Intensity of light sources aren't added together anymore. Instead,
   the brightest light source decides end brightness pre-smoothing.

2. For smoothing, we update normals more quickly than brightness. This is
   the main change relative to the first "alternate" version. Actually
   quite embarassing that I didn't think of this solution before %)

This is still a tad busier than what we have currently, simply due to
normals changing around more quickly. On the plus side, Clonk faces
shouldn't go dark anymore while walking, so that's something.
2015-08-31 17:35:08 +01:00
Julius Michaelis 2a9b481087 Add a new variant of vehicle that can be passed from below but be walked on from above. 2015-08-30 22:19:36 +09:00
Sven Eberhardt 3886f76bf3 Do not hang when a C4Value with prop list pointer is not cleared at game end.
Just cause an assertion in debug mode instead.
2015-08-29 13:22:55 -04:00
Sven Eberhardt 7813d87338 Fix prop list leak on game end when a sound with a modifier is currently playing. 2015-08-29 13:20:51 -04:00
Sven Eberhardt 535fc79c0f Silence a few compiler warnings. 2015-08-29 08:33:00 -04:00
Sven Eberhardt ca3ae81658 Play OpenAL sounds in front instead of rear for 5.1 surround setups [Win]. 2015-08-29 07:26:36 -04:00
Sven Eberhardt bc2259d197 MSVC/Apple CMake: Search for alext.h separately and make OpenAL extensions optional if only al.h is found. 2015-08-28 20:11:59 -04:00
Sven Eberhardt 41fd8c38b0 Ignore mission access in editor mode. 2015-08-27 22:19:09 -04:00
Sven Eberhardt da4a45c8a4 Fix mape build. 2015-08-27 21:57:08 -04:00
Sven Eberhardt b73689fc33 Make C4SoundModifier destructor virtual.
It shouldn't matter because the derived classes have no on fields or custom destruction, but silences a warning.
2015-08-27 21:51:10 -04:00
Sven Eberhardt 6ab6a1ac3c Add script interface for some EFX sound modifiers. 2015-08-27 21:44:23 -04:00
Sven Eberhardt d7a0d291e2 Fix 64 bit build. 2015-08-21 15:03:13 -04:00
Sven Eberhardt cf940d639b Fix memory leak caused by circular prop list chains.
The shapes library has such pointer chains. The leaks were getting pretty heavy because they included pointers to C4AulFuncs, which kept a lot of parts of the script engine and string tables in memory.
2015-08-20 20:19:38 -04:00
Sven Eberhardt 5ec9999d4c Fix crash on global or scenario script reload.
The string table of System.ocg scripts (except the global System.ocg) pointed to nowhere after the initial load phase, but is still required for reload. Added a ref counting option to keep these string tables alive.
2015-08-20 13:15:11 -04:00
Armin Burgmeier 0cdafc278b Transform all mesh data to Clonk reference frame on load
Instead of doing the transformation when drawing a mesh. This allows making
the OpenGL normal matrix more consistent, since it does not include the
Ogre-To-Clonk transformation, and so that the transformation does not need
to be inverted in the shader.

As a side effect, all Attach transformations were updated, since before
they were specified in the OGRE reference frame, not the Clonk reference
frame.
2015-08-18 20:30:20 -04:00
Armin Burgmeier 035cbb01b2 mape: draw mattex indices above 127 2015-08-18 19:37:38 -04:00
Armin Burgmeier 5d047d4e44 mape: Move second texture map read pass before crossmapping materials
Otherwise the default textures are not set correctly.
2015-08-18 19:36:58 -04:00
Armin Burgmeier 1827ed53ca Enhance mapscript functions for use with background materials
Add GetBackPixel, GetDefaultBackgroundIndex, GetMaterialTextureIndex, and make
SetPixel accept a background color.
2015-08-18 19:20:36 -04:00
Armin Burgmeier dfebd7996c Make sure mape loads texture map indices as specified in TexMap.txt
What happens is that mape first loads the TexMap.txt, however adding all the
texmap entries internally fails, because the materials and textures are not
yet loaded. However, mape must first load the TexMap to see if
OverloadMaterials or OverloadTextures are present in it, to know what
materials/textures to actually load.
2015-08-17 21:52:59 -04:00
Nicolas Hake 5ef76d63a9 Log the same shader code as is actually compiled
For whatever reason, the shader code that was passed to the compiler was
different from the code that got written to the shader log. This is a
huge pain in the ass when trying to debug shader errors because the line
information is completely wrong. I assume this decision was a premature
optimization, so I've removed it and we'll now log the exact same code
as the shader compiler sees.
2015-08-16 14:20:50 +02:00
Sven Eberhardt 0d16e67066 Order mat-tex combinations by appearance in texture map instead of by palette index when zooming map to landscape.
This should simplify insertion of new textures at arbitrary drawing orders without reassigning palette indices (the latter would invalidate all old maps).
2015-08-10 00:34:43 -04:00
Sven Eberhardt 134fc2799b Do not remove looping sounds on inaudibility in OpenAL.
This caused some sounds to not play at all when the object was inaudible at the position the sound was initially launched, but then moved into view (e.g. elevator cases or the planes in The Raid).
2015-08-09 21:28:29 -04:00
Sven Eberhardt a45c5afe60 Fix mape build. 2015-08-09 19:41:16 -04:00
Sven Eberhardt d92df758a8 Added pitch parameter to Sound() script function and allow pitch and sound level to be modified for sounds that have already been started.
Sound() called when the instance is already running used to fail. Now, it always succeeds (also for script sync safety) but updates the sound level and pitch parameters. SoundAt has not been modified since it allows creation of multiple concurrent sound instance of the same effect without object context.
2015-08-09 18:40:42 -04:00
Sven Eberhardt 8ca07b7bc4 Fix left/right audio pan in OpenAL build. 2015-08-09 17:36:54 -04:00
Sven Eberhardt 638ed81608 Implement background material controls in Windows editor.
Also removed auto-sort from the material combo boxes (so sky is on top in both) and put true background materials (i.e. sky and tunnel) on top.
2015-08-09 13:36:44 -04:00
Nicolas Hake 8e5aed4bea Update TRADEMARK and add trademark reference to credits (#1370)
I don't like that the FMOD and Clonk trademarks are separated, but we
don't have enough space in the credits screen to do it differently.
2015-08-09 19:20:53 +02:00
Sven Eberhardt 8ec159d755 Remove some unnecessary restrictions from /script message board command (#1369). 2015-08-08 21:52:13 -04:00
Tobias Zwick 20f95bf018 buildfix for MSVC compiler 2015-08-06 20:06:13 +02:00
Armin Burgmeier cd2d525b5b Rename C4Landscape::TRANSPARENT to C4Landscape::Transparent
Some stupid windows header seems to have a #define for TRANSPARENT.
2015-08-04 23:15:52 -04:00
Armin Burgmeier ad57b5a9c9 Fix fill tool in developer mode 2015-08-04 23:15:16 -04:00
Armin Burgmeier 94ce958e4c editor: sort background textures differently than foreground textures
The sort order in the combo boxes depends on the selected material.
2015-08-04 21:39:23 -04:00
Armin Burgmeier 3ec53c2c40 Update GTK+ editor so that one can draw background materials 2015-08-04 21:21:24 -04:00
Armin Burgmeier 08ae643c2c Add a draw mode which shows the background 8-bit surface 2015-08-04 21:21:24 -04:00
Armin Burgmeier 0d806fbcbf Add syntax for drawing background materials with Map.c 2015-08-04 21:21:24 -04:00
Armin Burgmeier 51986b68ef Allow script functions to access background landscape
Add GetBackMaterial() and GetBackTexture(), and allow DrawMaterialQuad to
specify a background mat-tex combination.
2015-08-04 21:21:24 -04:00
Armin Burgmeier 1f6825fb4b Make solidmask not overwrite background material
Also, remove Landscape.SetPix in favor of Landscape.SetPix2
2015-08-04 21:21:24 -04:00
Armin Burgmeier c43ca4ce9a Increase maximum number of material-texture combinations to 255
This is the maximum we can do. One value is reserved for diff / transparency,
and we have 8bpp surfaces.
2015-08-04 21:21:24 -04:00
Armin Burgmeier 56d48f5300 Fix mape 2015-08-04 21:21:24 -04:00
Armin Burgmeier b8343786b6 Make MapScript create a background map
This removes the last occurence of the IFT flag
2015-08-04 21:21:23 -04:00
Armin Burgmeier 006cf68874 Some refactoring, and restore support for Map.bmp
The new behaviour that allows 255 mat-tex combinations (once we increased
C4M_MaxTexCount...) is enabled with MapFg.bmp, and then MapBg.bmp can be
used to draw IFT or other fancy things.
2015-08-04 21:21:23 -04:00
Armin Burgmeier fe74cac663 Make the C4MapCreatorS2 create background maps 2015-08-04 21:21:23 -04:00
Armin Burgmeier eb98e73b76 Introduce background map
The background landscape is generated from the background map.
2015-08-04 21:21:23 -04:00
Armin Burgmeier b1e9c3924d Make the Map field private in C4Landscape 2015-08-04 21:21:23 -04:00
Armin Burgmeier 92f3a3e749 Remove GBackIFT in favor of a lookup in the background surface 2015-08-04 21:21:23 -04:00
Armin Burgmeier bb241f49ae Duplicate getters to query landscape pixels for background surface 2015-08-04 21:20:06 -04:00
Armin Burgmeier 73e1b33e65 Make massmover and PXS not overwrite the background material 2015-08-04 21:20:06 -04:00
Armin Burgmeier 54666aeb2d Introduce background landscape
The background landscape is a 8-bit landscape which stores the material
that a particular pixel will be replaced with when it is cleared, e.g.
by digging or blasting.

This is just the groundwork for this and does not offer much advantage
over the IFT flag that was used previously for that purpose. However,
additional features such as keeping the background material/texture
fixed when loam bridges are built, PXS are incorporated into the landscape
or the massmover is moving things around can be added.

See http://bugs.openclonk.org/view.php?id=1338 for more details.
2015-08-04 21:20:06 -04:00
David Dormagen f05345375c fixed wrong offset in scripted GUIs when upper-board is active 2015-08-02 23:19:28 +02:00
David Dormagen 36544bd56c Merge branch 'master' into Controls
Conflicts:
	planet/Objects.ocd/Libraries.ocd/Producer.ocd/Script.c
	planet/Objects.ocd/Structures.ocd/Foundry.ocd/Script.c
	planet/Objects.ocd/Vegetation.ocd/Branch.ocd/Script.c
	planet/Objects.ocd/Vegetation.ocd/Trunk.ocd/Script.c
	planet/System.ocg/FindLocation.c
2015-08-02 19:24:04 +02:00
David Dormagen d5f4805f18 fixed desync
The desync was caused by PropList->GetProperties returning the properties in an arbitrary order. They are now sorted first.
The debug logs are left in place, because I assume that I will need them again and they prove to be helpful.
2015-08-02 19:12:09 +02:00
Armin Burgmeier 08aaf662a9 Add support for alpha_rejection in OGRE material scripts 2015-07-31 22:50:21 -04:00
Sven Eberhardt 0d48105b46 Added shape library.
Also fixed some coconut tree reproduction issues.
2015-07-31 00:42:01 -04:00
Armin Burgmeier a172245c1e Illuminate materials with no backface culling from both sides
This might need adaptions in some materials, but is probably the right thing
to do.
2015-07-20 22:11:19 -04:00
Maikel de Vries 9632ff03d8 default value (white) for object's light color (#1355) 2015-07-19 09:06:46 +02:00
Mark d45cc7c95b Colored lights improvements
Color value is now uint32_t, removed superfluous conversion to unsigned value, simplification in the shader.

Open: C4DP_Last and number of drawing passes
2015-07-11 17:46:00 +02:00
Sven Eberhardt 103eb2528f Add sanity check for animation length when using Anim_Linear as a position provider in PlayAnimation script function. 2015-07-07 22:59:41 -04:00
Armin Burgmeier 5f63e9d4b3 Skip mission access check in debug builds 2015-06-30 22:08:37 -04:00
Mark 02fd798631 Colored lights
The color of object lights can now be changed. This includes the following changes:
- added light test scenario, based on DarkCastle, with some lights,
- new functions SetLightColor() and GetLightColor() with C4Script documentation,
- third drawing pass for rendering the light color, the drawing passes are now referenced by enum,
- the blending of light from multiple colored light sources works correctly with alpha blending,
- light color value affects the intensity of the light,
- alpha blending of the light depends on color value and lightness. This means that brighter (= more value) and lighter (= more whiteish) light will be preferred in blending over other lights,
- the object light color is rendered to the lower half of the fow light texture now,
- the shader accesses the brightness/direction information and color information correctly,

The patch was created from the following commits:
dab898a SetLightColor()
f57286e Color texture experiment
d0702f5 Dynamic color
fa14cdf Light test scenario
f99203d Alternate lights
474bade Bugfixes
3113698 Brightness handled better
516fb21 GetLightColor
1d91ec9 Improvements
3cfbf6c Documentation
95ec185 Improvements: Light Shader
a63bffc Scope of alpha
20c7ca0 Improvement: C4FoWLight
17d9123 Undo code style
d79411b Cleaner code

(cherry picked from commit 36dec610e36860b88417e91ce727250673bc2ec2)

Conflicts:
	src/landscape/fow/C4FoWRegion.cpp, merged
2015-06-28 21:28:40 +02:00
Armin Burgmeier ecaedb7106 Add GetAnimationList() script function (#1344) 2015-06-22 19:58:58 -04:00
Nicolas Hake 9eb8eedf82 Fix headless build
Several rendering changes have resulted in a non-rendering build that
failed to build from source. Dummy out all of these functions to make it
work again.
2015-06-17 21:30:56 +02:00
Armin Burgmeier 45c3d1ff2e Remove dead/superfluous code in C4Landscape 2015-06-16 20:56:53 -04:00
Nicolas Hake 79b702ac4b GLX: Don't crash when multisampling is supported
std::copy'ing into an empty vector doesn't work, and wasn't what was
intended in the first place. Assigning the full range should work better.
2015-06-15 07:03:49 +02:00
Fabian Pietsch 706e9e71a9 Fix logic error in shader log file locking
On success, flock() returns 0, so !flock() is true then. Testing for
!flock() to detect a locking error is therefore wrong. This got the log
file closed immediately after opening it on my GNU/Linux machine,
resulting in an always empty OpenClonkShader.log.
2015-06-06 21:31:19 +02:00
David Dormagen 196f528201 Merge branch 'master' into Controls
Conflicts:
	planet/Objects.ocd/HUD.ocd/FancyGridMenu.ocd/DefCore.txt
	planet/Objects.ocd/HUD.ocd/GridMenu.ocd/DefCore.txt
	planet/Objects.ocd/Helpers.ocd/Dummy.ocd/Graphics.png
	planet/Objects.ocd/Items.ocd/Tools.ocd/WindBag.ocd/Script.c
	planet/Objects.ocd/Items.ocd/Weapons.ocd/Javelin.ocd/Script.c
	planet/Objects.ocd/Libraries.ocd/ClonkControl.ocd/Script.c
	planet/Objects.ocd/Libraries.ocd/Constructor.ocd/ConstructionMenu.ocd/Script.c
	planet/Objects.ocd/Libraries.ocd/Constructor.ocd/Script.c
	planet/Objects.ocd/Libraries.ocd/Flag.ocd/Marker.ocd/Script.c
	planet/Objects.ocd/Libraries.ocd/Producer.ocd/Script.c
	planet/Objects.ocd/Structures.ocd/Flagpole.ocd/Script.c
	planet/Objects.ocd/Structures.ocd/Pump.ocd/Script.c
	src/game/C4Game.cpp
	src/gamescript/C4GameScript.cpp
	src/gui/C4GameMessage.cpp
	src/landscape/C4Landscape.cpp
2015-06-03 22:32:36 +02:00
Nicolas Hake 22dfa97a7f Remove C4Draw::DebugLog
I'm sure there was a reason to have a separate DebugLog function inside
C4Draw, with a different visibility trigger, but I don't see it. Also
there was no DebugLogF, so that's fun too.
2015-05-28 23:34:29 +02:00
Nicolas Hake 0db5950c8d GL: Test for GL_KHR_debug before enabling GL_DEBUG_OUTPUT
The GLEW headers of Ubuntu 12.04 LTS don't know about GL_KHR_debug yet,
so we have to test for it before using its enum. Additionally, drivers
without support for GL_KHR_debug would emit INVALID_ENUM, so we test for
driver support too.
2015-05-28 22:56:48 +02:00
Fabian Pietsch 0f65ab4b35 GL: Avoid endless recursion via OpenGLDebugProc
When an error's log output is represented graphically the graphics
operation can lead to another error (or the same error again), which
will be logged graphically again and so forth, until stack overflow.
So log to the log file only.
2015-05-28 21:34:15 +02:00
Fabian Pietsch 8ef6d65520 GLX: More debug output, to be able to trace the code paths taken 2015-05-28 21:34:14 +02:00
Fabian Pietsch 72366a56b7 GLX: Get debug callback to work even when the driver violates the specs
According to Isilkor, the initial state of DEBUG_OUTPUT should be TRUE
on a debug context. This was not the case on my system (Mesa 10.3.2).
2015-05-28 21:34:12 +02:00
Nicolas Hake 36d348d94d GLX: Allow creating debug contexts
To create debug contexts, we have to use glXCreateContextAttribsARB. To use
that, we have to initialize GLEW, which means creating a dummy GL context. To
create a dummy context with the same FB config as the final one, we need to...
initialize GLEW, because it suppresses the GLX 1.4 function declarations.
So instead we'll just manually initialize the three function pointers we're
going to need.
2015-05-28 21:34:11 +02:00
Nicolas Hake 0a8c367d6c GLX: Don't request indirect contexts, ever
We're trying to do 3D rendering here, there's no point asking for an indirect
rendering context.
2015-05-25 23:59:47 +02:00
Nicolas Hake d53c8bffad WGL: Reinitialize GLEW after creating rendering context
The GL driver is allowed to use different entry points depending on the
context. This means that we can't just initialize GLEW once and use it
all the time, but we must refresh the entry point list every time we
create a new context.
2015-05-25 18:32:35 +02:00
Nicolas Hake 7a4dc6ac79 Remove superfluous return value qualifier
Type qualifiers on a function return value are ignored anyway.
2015-05-25 16:28:04 +02:00
Nicolas Hake b791404147 Remove superfluous pointer check
The pointer to a member variable of a static object is never NULL, so
checking for this is useless.
2015-05-25 16:27:16 +02:00
Nicolas Hake 4b1b06388e Replace inverted condition with something more obvious
Instead of checking the inverse of the category against a bit mask, just
check whether none of the mask bits are set in the category.
2015-05-25 16:17:58 +02:00
Nicolas Hake d18f7b9fa4 Correctly wrap multi-statement macro
A multi-statement macro requires the user to wrap its invocation in
curly braces if it's used as body of a conditional or loop. This is
confusing and leads to strange errors (like in lines 550f).
2015-05-25 16:16:22 +02:00
Sven Eberhardt d3a9a3bc39 Change mission unlock key to Ctrl+M (from Alt+M).
Alt+Key was problematic for some Linux people. Also most other combinations have been changed to Ctrl+Key already.
2015-05-22 21:41:34 +02:00
Sven Eberhardt 593723e687 Windows: Fix saving of custom keys (#1313)
The registry compiler couldn't handle strings beginning with a separator, which was used for marking keys defined by scan code.
2015-05-22 21:20:36 +02:00
Nicolas Hake f41ea3cd86 Set C4VERSION macros from CMake assembled vars
There's no reason to have CMake assemble a version string, then have a
similar (but slightly different) string built by the C preprocessor.
Since CMake already has the values we want, just dump those into the
macros.
2015-05-21 23:09:00 +02:00
Maikel de Vries 0157e7b496 remove obsolete BuildTurnTo defcore entry 2015-05-11 21:47:55 +02:00
Nicolas Hake a405dcdf4c StdCompilerINIRead: Maintain line break cache for error msgs (#1310)
Deserializing proplists tries to read a boolean variable from the
representation in order to be backwards compatible to old (<6.0)
savegames. Newer savegames do not write this boolean, so StdCompiler
(correctly) throws an exception. This exception uses line numbers, which
StdCompiler used to obtain by scanning through the entire buffer. Having
to scan through the entire buffer for every serialized proplist is
ridiculously slow (and the data isn't used anyway in this instance).
Since line information is still valuable outside of proplist
deserialization, replace the repeated SGetLine calls with an on-demand
cache.
This reduces load times of a 14 MB Game.txt from slightly over 3 minutes
to 7 seconds on my computer.
2015-05-10 20:52:35 +02:00
Nicolas Hake 0fe248692e Fix mismatched mape function stub
21500a8 changed a function prototype inside C4Landscape but neglected to
change the mape stub to match. Fix this so the build stops failing.
2015-05-09 22:14:40 +02:00
Sven Eberhardt 21500a81a9 Fix pump to clear the last row of pixels (#1057) and allow pumping from pump without source pipe.
ExtractMaterial has been changed to be able to slurp in from the most distant horizontal position rather than the closest to the extraction top center.

Also speed up ExtractMaterial for the common case of no required horizontal shifts.
2015-05-01 18:13:41 +02:00
Sven Eberhardt 116a5b4ae6 Add Find_InArray (#1073). 2015-04-28 18:59:50 +02:00
Sven Eberhardt 976ed549b6 Change C4FO and C4SO constants to be increasing regularly.
Regular values allows compilers to use jump table optimizations for switch statements and I don't see any upsides of the previous values.
2015-04-28 18:29:27 +02:00
Sven Eberhardt 38131aae74 Allow CNAT_* constants in VertexCNAT definition of DefCore (#1307)
Also fix decompiling of none-values in bitfields.
2015-04-28 00:18:32 +02:00
Martin Plicht c82adb7853 C4DrawGLMac: Put OSX 10.9 API usage into #ifdef block 2015-04-27 22:13:15 +02:00
Misty De Meo 5768410a83 StdSchedulerMac: don't call setTolerance:
respondsToSelector isn't properly guarding against calling this method
on unsupported platforms, possibly because it existed as a private
method in OS X before 10.9. For example, attempting to build this on
OS X 10.8 fails with the error:
no visible @interface for 'NSTimer' declares the selector 'setTolerance:'

Since the default tolerance is 0 anyway, this can be removed without
adverse effect.
2015-04-26 12:08:02 -07:00
Armin d03271ec6e SetCommand Jump uses flight control and fix ObjectComJump()
Signed-off-by: Maikel de Vries <mdt.maikel@gmail.com>
2015-04-11 12:03:39 +02:00
Armin Burgmeier cd80784140 Save ambient brightness value in savegames 2015-04-06 20:48:59 -04:00
Nicolas Hake 7381ef7df0 gl: Enable shader logging if DebugOpenGL is active 2015-03-31 17:57:59 +02:00
Nicolas Hake 5f46161433 Remove unused clone of C4PathFinder
Why the hell is there a second implementation of C4PathFinder around? It
wasn't even used anywhere.
2015-03-31 17:57:58 +02:00
Nicolas Hake 2338bead11 Move C4PathFinderRay from header into implementation
C4PathFinder is the only consumer of C4PathFinderRay, so we don't need
to declare it in the public header.
2015-03-31 17:57:56 +02:00
Nicolas Hake 874a9f2632 Pathfinder: Use callback functors instead of raw function ptrs 2015-03-31 17:21:52 +02:00
Nicolas Hake 22a838a0f3 Don't use formatting log function for fixed string (#1293) 2015-03-28 15:10:35 +01:00
David Dormagen 9968b0000c custom GUIs: restrict the maximum size of a menu window to 100em x ~62em
Fullscreen GUIs on wide-screen monitors look stupid. This patch tackles this by restricting the maximum size to something that can still be seen with a glance.
For very high-DPI or low-DPI screens, the user would most likely adjust the font size in the options (todo) anyway and thus also change the maximum menu size.
2015-03-27 11:33:57 +01:00
Maikel de Vries fce2bce58e clonks do not attempt to scale underwater (#1176) 2015-03-26 19:52:26 +01:00
Nicolas Hake d951827f17 Particles: Don't force vertex buffer workaround on Win32
Win32 now uses a single rendering context, so it's no longer necessary
to disable VBA use in the editor.
2015-03-26 15:51:03 +01:00
Nicolas Hake c58e474f76 win32/GL: Reuse the same rendering context for everything
Some resources can't be shared across different rendering contexts while
others can. Additionally, the standard GLEW library does not support
multiple rendering contexts (that's what GLEX MX is for), even though it
might work on some (or even most) cards. WGL supports reuse of a
rendering context across multiple windows as long as the pixel formats
are the same.
2015-03-26 15:51:01 +01:00
David Dormagen d077d3343e reworked bucket & producer library to work with stackable earth objects instead of magic material amounts 2015-03-26 12:27:10 +01:00
David Dormagen 7d1d70f017 removed NoCollectDelay from engine; it's now handled by script
Which allows a lot more fine-grained controls as all the control and UI stuff is now also in script anyway.
2015-03-26 12:23:20 +01:00
Nicolas Hake b2f742f997 gl: Check glew for GL_KHR_debug support
Debian wheezy's glew doesn't support GL_KHR_debug yet, so make sure
we're only using it if we can.
2015-03-25 23:15:45 +01:00
Nicolas Hake be1a148915 Aul: Remove C4AulAccess enum
We're not doing access controls anyway, so tracking information about it
isn't useful.
2015-03-25 22:32:19 +01:00
Nicolas Hake cd266d2352 gl: Attach debug labels to objects
Doing GL debugging is way easier if your logs talk about "Clonk/VBO"
instead of "buffer object 21".
2015-03-25 22:00:36 +01:00