1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2024-11-25 09:44:02 +00:00
Commit graph

50 commits

Author SHA1 Message Date
fgenesis
c44c67a063 Worldmap overhaul, part 1
In short:
- No more grid-for-alpha; everything uses generated textures now
  (With proper bilinear filtering so it looks like the old method)
- All tiles are now shown partially uncovered at the same time;
  selecting one is no longer needed
- Gems can now be local (associated to a tile) or global.
  Local games move with their tile, global ones stay where they were placed

Background:
Originally there were two possible implementations of how to render the world map:
- One used write-alpha-to-texture to implement graual uncovering.
- The other (permanently enabled) used the DrawGrid to render the map tiles
  as a fine grid, each little square having its own alpha value
The downside of the first method was that it didn't look as good as the
second, so i guess that's why it was never fully finished.
The main downside of the second method was that it burned a lot of vertices
just to do alpha, so only one tile at a time could show the detailed grid.

I also never liked how an entire tile was effectively fully uncovered once
the map was first entered, taking away a lot of the exploration feeling
that could have been there if everything that hasn't been explored would be
completely invisible.
I've added this worldmap uncovering method as an optional config param,
<WorldMap revealMethod="1"/> but i've decided to fully switch over now.

Things left to be done:
- create a WorldMapRender instance only once and keep the tiles across map loads
- add debug option to reload/recreate worldmap at runtime
- cleanup gem storage and carry over the player gem properly (ged rid of std::list)
- remove "worldmap" grid render type
- Add more user "pyramid" gems as world map markers. More colors!
- check that gems and beacons still work as they should
2024-11-15 03:12:14 +01:00
fgenesis
fef32b042c keep texture data in host RAM when pixel data are needed, eg. for collision calculations
This avoids downloading from the GPU *every single time*
the pixel data are needed
2024-09-23 03:28:03 +02:00
fgenesis
f1796475f1 undo parts of prev commits; move old fudge from font atlas code to tile rendering.
this should now be correct and much simpler to maintain from now on.
downside is that it breaks the appearance of quads with tex repeat on,
but i don't think anyone ever used this ever since i've added the Lua functions;
so i'm just calling it broken in older versions and move on.
2023-10-20 02:06:45 +02:00
fgenesis
b33080b0ea remove immediate mode from quad rendering. breaks a couple rendering details too. WIP. 2023-10-20 00:37:00 +02:00
fgenesis
3c48349e94 remove tiny unused things 2023-08-25 01:57:28 +02:00
fgenesis
d31d320719 set GL textures to always repeat to avoid unnecessary calls to glTexParameteri()
Shouldn't have any visual changes because edge clamp is never actually used
2023-08-25 00:38:36 +02:00
fgenesis
368271c40e More work on tile rendering:
- Use indexed triangle rendering, no more GL_QUADS for tiles
- Fix aquarian text on maps
- Tile tex repeat mode works again

Known broken:
- Editor
- Tile repeat with grid effects
2023-08-09 02:41:04 +02:00
fgenesis
bd5b2b3495 Rework + optimize map tile storage & rendering, initial working draft.
class Element is completely gone.
(The files are still there but no longer compiled in. Will delete later)

Broken still:
- support for vertical flip
- the editor
- culling
2023-07-14 00:19:33 +02:00
fgenesis
70b8dcdc3a Rework texture loading, part 1
Major code/logic cleanups + it has a multithreaded batch mode now.
The VFS code doesn't like multiple threads at all,
so for now there's a big lock in front of where it matters.
Changed precacher, map/tileset, and worldmap loading to batched mode.

Still TODO:
- fix broken mod preview images
- reloading resources on debug key
- make mod recache entirely unnecessary
- actually drop resources when no longer needed
2023-05-31 00:55:16 +02:00
fgenesis
c7c9cae999 remove semi-broken editor tile alignment functions and related code 2023-05-25 17:54:38 +02:00
fgenesis
68b3c61852 Add RenderState to be passed through the scene graph
This will eventually handle all mutable state during rendering
2022-05-20 01:04:19 +02:00
fgenesis
b6fb6944f6 first step towards making the render process const 2022-05-19 05:17:00 +02:00
fgenesis
f0f9f1a719 Fix wrongly disabled mipmap sampling in GL_GENERATE_MIPMAP mode 2022-04-05 10:02:33 +02:00
fgenesis
96216503c4 remove zlib, libpng, glpng and related code; add some stb libs; rework texture loading 2022-03-31 21:03:40 +02:00
fgenesis
03c698320a Merge branch 'experimental' into controllerfixup
# Conflicts:
#	Aquaria/AnimationEditor.cpp
#	Aquaria/AquariaComboBox.cpp
#	Aquaria/AquariaMenuItem.h
#	Aquaria/Avatar.cpp
#	Aquaria/BitBlotLogo.cpp
#	Aquaria/Continuity.cpp
#	Aquaria/DSQ.cpp
#	Aquaria/DSQ.h
#	Aquaria/Game.cpp
#	Aquaria/Game.h
#	Aquaria/Intro.cpp
#	Aquaria/RecipeMenuEntry.cpp
#	Aquaria/SceneEditor.cpp
#	Aquaria/States.h
#	Aquaria/UserSettings.cpp
#	BBGE/ActionMapper.cpp
#	BBGE/Base.cpp
#	BBGE/BitmapFont.h
#	BBGE/Core.cpp
#	BBGE/Core.h
#	BBGE/ParticleManager.cpp
#	BBGE/Particles.h
#	BBGE/RenderObject.h
#	BBGE/Shader.cpp
#	BBGE/Shader.h
#	BBGE/SkeletalSprite.h
#	BBGE/Texture.cpp
#	BBGE/Vector.h
2021-01-12 00:26:44 +01:00
fgenesis
25696c4436 Enable msvc signed/unsigned mismatch warnings and fix remaining cases 2021-01-11 19:27:54 +01:00
Valentin Ochs
b9d402199c Get rid of a lot of gcc warnings
Mostly signed/unsigned comparisons. Also some bugs, but I don't remember
where :D
2021-01-11 12:28:27 +01:00
James Le Cuirot
0dd19f9cb3
Add option to use system copy of GLPNG 2017-02-10 10:01:35 +00:00
fgenesis
58e3a247e4 Fix build on osx 2017-02-06 03:37:07 +01:00
fgenesis
9bb3fe86f6 More signed/unsigned comparison fixes. int -> size_t. 2017-01-19 18:50:33 +01:00
Valentin Ochs
f9357e7fca Merge branch 'gccwarn' into controllerfixup 2017-01-17 11:15:47 +01:00
Valentin Ochs
2374c1a86b Revert ~0 to -1 2017-01-14 19:22:37 +01:00
Valentin Ochs
fe0ab0418b Get rid of a lot of gcc warnings
Mostly signed/unsigned comparisons. Also some bugs, but I don't remember
where :D
2017-01-14 18:10:20 +01:00
fgenesis
0dc30e668d Merge branch 'experimental' into controllerfixup
# Conflicts:
#	Aquaria/Avatar.cpp
#	Aquaria/Continuity.cpp
#	Aquaria/DSQ.cpp
#	Aquaria/DSQ.h
#	Aquaria/Game.cpp
#	Aquaria/Game.h
#	Aquaria/Main.cpp
#	Aquaria/UserSettings.cpp
#	BBGE/Base.cpp
#	BBGE/Base.h
#	BBGE/Core.cpp
#	BBGE/Core.h
#	BBGE/DebugFont.cpp
#	BBGE/Shader.cpp
#	BBGE/SoundManager.h
2017-01-13 12:19:23 +01:00
fgenesis
8af953cb63 Replace spaces with tabs (future self: i'm sorry)
In most places, that is. Left some files unchanges because they are a mess.
2017-01-12 22:51:46 +01:00
Valentin Ochs
dcd21b57bd Merge pull request #41 2017-01-12 22:14:26 +01:00
fgenesis
8472718fb7 Major include refactor; changes to pretty much everything
This untangles some of the gigantic kitchen sink headers
in an attempt to split things into smaller files.
Also don't include gl.h, glext.h, windows.h,
and other such nonsense *everywhere*.

Lots of cleanups on the way too. More dead/unused code removal.

Remove incrFlag(), decrFlag() Lua functions.
2016-07-09 04:18:40 +02:00
Nicolas Braud-Santoni
bb50895595
Removing Z2D_J2K texture option
Given that j2k-codec/ is nowhere to be found,
  this cannot possibly build.
2016-05-05 20:15:11 +02:00
Nicolas Braud-Santoni
eb128e65a4 Remove commented-out code 2016-05-05 19:57:50 +02:00
Nicolas Braud-Santoni
276265be1d Eliminating obsolete #ifdefs and friends (#26)
The following options have been applied globally, using unifdef(1):
```c
 #undef BBGE_BUILD_DIRECTX

 #define BBGE_BUILD_OPENGL 1
 #define GL_GLEXT_LEGACY   1
 #define HAVE_PUTENV       1
 #define TIXML_USE_STL     1
 #define BBGE_BUILD_SDL    1
```
2016-05-05 03:49:41 +02:00
fgenesis
62c949f640 Fix rare texture loading problems introduced in 8bd40be8aa and f0d580d873. 2016-03-13 01:37:43 +01:00
fgenesis
f0d580d873 Refactor texture loading code; should fix a crash that started appearing recently. 2015-03-24 00:06:51 +01:00
fgenesis
9973afbac6 Allow custom capes in mods 2015-03-09 04:55:03 +01:00
fgenesis
6203bc7ce4 Update Aquaria/BBGE/External sources to comply with the new ttvfs API 2014-04-07 02:10:05 +02:00
fgenesis
26d056d924 Slightly more sensible error/msgbox handling 2013-06-23 18:50:10 +02:00
fgenesis
636c069403 _mods/x/locales/y/* now works 2012-07-14 15:00:37 +02:00
fgenesis
319b9d09ed Fix regression that prevented few textures from loading (Labyrinth mod icon, for example) 2012-07-12 03:46:18 +00:00
fgenesis
7b2fa39428 Move localisation code to BBGE, and allow textures to be localised. 2012-07-10 22:16:48 +02:00
fgenesis
b719b8fd60 Removed textureMemoryMultiplier again; a bit more debug output for differing texture sizes 2012-06-15 17:58:18 +02:00
fgenesis
0ea9ba0770 oops, very stupid thing i made there. 2012-06-15 04:23:22 +02:00
fgenesis
a5b5da6f4b gcc complaining... 2012-06-15 04:19:03 +02:00
fgenesis
063b1c0dfc Moved most uses of glGetTexImage() into a single function with better error checking.
Also small config addition to optionally increase memory allocation size
for temporary texture pixel data; the nouveau drivers seem notoriously
awkward and keep writing over the buffer.
2012-06-15 04:12:20 +02:00
fgenesis
6d92cd24c8 Fixed more weirdness in functions using glGetTexImage(), add proper bounds checking 2012-06-14 17:40:01 +02:00
fgenesis
6dc1c1e8d1 [vfs, #3] All file reading code goes through the VFS now, new mod downloader & mod selector in place. Also a bunch of other stuff. (...)
- HTTP networking support, mods can be downloaded via the builtin downloader.
  All network activity runs in a seperate thread, which is started
  as soon as any network activity is requested.
- The master server is hard-coded to fg.wzff.de/aqmods/ if not specified otherwise;
  this setting can be overridden in the config file.
- The mod selector screen is now a grid-view for much better navigation;
  also works with joystick.
- VFS code is functionally similar to the old molebox-packed release
  for win32. The game could also have its data shipped in a Zip file
  or any other kind of archive.
- It is still possible to build without VFS support, but then the mod
  downloader and soft-patching will not be available.

The full commit history can be found here:
https://github.com/fgenesis/Aquaria_clean/compare/master...vfs

The most important commit messages follow:
[...]
    This replaces all std::ifstream with InStream, and fopen(), ... with vfopen(), ...
    Some code is #ifdef'd for better performance and less memory-copying.
    VFILE is defined to whatever type of file is in use:
    - FILE if BBGE_BUILD_VFS is not defined
    - tttvfs::VFSFile if it is.

    Other changes:
    - [un]packFile() is now unused and obsolete. That code has not been adjusted to use VFILE.
    - glpng can now load from a memory buffer.
    - TinyXML uses the VFS for reading operations now.
    - The rather clunky binary stream loading of glfont2 got replaced with ByteBuffer,
      which gets its data in one block (necessary to use the VFS without implementing
      a somewhat STL-compliant std::ifstream replacement.)
-------------
Implement loading mods from zip files.
-------------
Implement soft-patching game data files. (Replacing textures/audio/... on the fly)
-------------
Misc bits:
- Extended GUI focus handling a bit
- Fixed weirdness in texture loading... not sure but this seems more correct to me.
  Actually, considering that the texture will have its native size after restarting the game,
  the lines removed with this commit seem pretty useless.
2012-06-01 17:52:19 +02:00
fgenesis
fc7fa440da Fix currents not displaying correctly after resolution change. 2012-04-01 21:24:31 +02:00
fgenesis
9b63b400d5 Misc code cleanups, little SkeletalSprite loading improvement.
- Removed some unused member variables.

- The BBGE_BUILD_WIDESCREEN define is now gone.

- Added an TiXMLDocument cache to prevent parsing the same file
once for each entity on the map with the same skeletal.

- Removed Lua func entity_warpToPathStart, which was essentially a no-op
because Entity::followingPath was always NULL. Removed related code.

- Set texture wrap only when required.

(Some changes taken from https://bitbucket.org/mattbierner/ios-aquaria,
special thanks for changeset 72d6460d9e60)
2012-02-19 04:57:04 +01:00
fgenesis
75e7b137d6 Drop use of tempfiles when loading compressed files.
Also simplified .zga texture and .aqs savegame loading.
Dropped support for "crunched" .sav files (those were never used),
and the corresponding crunch functions.

To be done: Temp files are still used when compressing files,
will address this in a later commit.
2012-02-10 00:10:50 +01:00
fgenesis
56c6833220 Revert "added partial VFS support - enough to read static data from any source"
This reverts commit fa3e9e7329.
2011-09-15 19:18:53 +02:00
fgenesis
fa3e9e7329 added partial VFS support - enough to read static data from any source 2011-09-15 18:33:13 +02:00
fgenesis
3096eaf5e2 initial commit. This is icculus version 5542b94cae02a6333845854bbbd1abe0a259f1a4 2011-08-03 22:05:33 +02:00