Commit Graph

45 Commits

Author SHA1 Message Date
Tamás Bálint Misius
f70cc705cb
Remove GameSave::Collapse and GameSave::originalData
... and everything built around them.

A GameSave would hold at least one but sometimes two representations of a save:
one serialized, and one "friendly", accessible for modification. Thus, a
GameSave would have three states:

 - "Collapsed": only the serialized representation was present; this was the
   initial state of GameSaves loaded from files;
 - "Expanded With Data": both the serialized and the friendly representations
   were present; this was the state of GameSaves loaded from files after a call
   to Expand;
 - "Expanded Without Data": only the friendly representation was present; this
   was the initial state of GameSaves being prepared for being saved to files.

A GameSave would be able to go from Collapsed to Expanded With Data with a call
to Expand, and back with a call to Collapse. Of course, this latter transition
would discard any changes made to the friendly representation, for example with
Translate. A GameSave would however be unable to go from Expanded Without Data
to any other state; a call to Collapse in this state would have been a no-op.

There were two instances of Collapse being called, one in the GameSave
constructor taking the serialized representation, immediately after a call to
Expand, and another in SaveRenderer, which would Collapse a save "back down" if
it had originally been Collapsed. Now, consider that there reasons for
constructing a GameSave from the serialized representation are as follows:

 - loading an online save at startup from the command line;
 - loading a local save at startup from the command line;
 - loading a local save when it is dropped into the window;
 - loading a local save for placement of the most recently used stamp;
 - loading a local save for stamp placement via Lua;
 - loading an online save for preview generation while browsing;
 - loading a local save in the stamp browser for thumbnail generation;
 - loading a local save in the local save browser for thumbnail generation.

In some cases, the friendly representation is needed for thumbnail generation
by ThumbnailRendererTask. ThumbnailRendererTask operates on its own copy of the
GameSave, because it runs SaveRenderer on a thread different from the main one
and cannot be sure of the lifetime of the original GameSave. It destroys this
copy when it is done rendering, so the call SaveRenderer makes to Collapse is
pointless.

In all other cases, the friendly representation is needed immediately. In some
of these, SaveRenderer is used from the main thread, but since the friendly
representation of the GameSave will be needed for pasting anyway, the call
SaveRenderer makes to Collapse is pointless again.

So, Collapse goes away. This also means that it is pointless for GameSaves to
hold on to the serialized representation, since in all cases in which they have
access to it, the friendly representation is needed immediately, and with
Collapse gone, they will never need it again.
2022-11-10 12:03:48 +01:00
Tamás Bálint Misius
f18bd6553f
Remove long defunct OpenGL code paths 2022-10-11 20:11:14 +02:00
Tamás Bálint Misius
04e899e824
Use std::vector<char> consistently for file operations
This made it possible to get rid of two GameSave constructors.

Also clean up Client::LoadSaveFile, Client::ReadFile, and Client::WriteFile in the process, and remove unused SaveRenderer::Render
2022-09-08 06:45:25 +02:00
Tamás Bálint Misius
df7bbd3b8e
Prevent SaveRenderer from calling into Lua
Also clear SaveRenderer graphics cache along with the main Renderer's when needed, and revert to built-in element callbacks rather than nothing at all when assigning nil to a callback slot in Lua.
2022-02-23 22:22:10 +01:00
Tamás Bálint Misius
fe15566d2c
Only change modes when the lock is being held, see 2333786 (fixes #700) 2020-03-23 23:08:52 +01:00
Tamás Bálint Misius
23337862a4
Use current rendering modes when placing a save (fixes #446) 2019-07-22 10:38:13 +02:00
Tamás Bálint Misius
a407aba087
Make Simulation.IncludePressure pref node accessible from OptionsView
Also remove ugly and messy behaviour depending on whether
shift is being held while copying or stamping.
2019-07-10 00:35:49 +02:00
Tamás Bálint Misius
0179cefc78
Flatten include trees 2019-04-20 15:36:11 +02:00
Tamás Bálint Misius
2e76b10619
Use C++11 threads 2019-04-17 00:23:57 +02:00
Tamás Bálint Misius
3a76a3a514 Turn RequestBroker::RetrieveThumbnail into a request derived from Download
Also start moving RenderThumbnail out of RequestBroker into its own Task. Add mutex to SaveRenderer to guard Render().
2019-03-07 22:56:08 -05:00
jacob1
87fb94ce94 Delete unused Thumbnail handling code 2018-11-27 22:13:29 -05:00
wolfy1339
27f6a6b297 Strip whitespace from files in repo (#553) 2018-04-03 21:46:01 -04:00
Ryan Jacobs
55a30673c4 Remove unnecessary pointer checks.
There are *no* more spacing issues. I used tabs exclusively.
Also, I made changes off of the develop branch.

Here's the Ruby regex that I used:
text.gsub!(/(( |\t)*)if ?\((.*)\) ?{?\n?( |\t)*(free ?\(|delete |delete\[\] )(.*)\)?;/, "\\1\\5\\6;")
2015-02-14 22:13:26 -08:00
jacksonmj
236ff08da9 Fix some problems noted in http://www.viva64.com/en/b/0298/
I've left some of the less important items, like SearchView.cpp "'then' statement is equivalent to the 'else' statement", and RequestBroker::Request::~Request, because I don't feel like spending a few days entirely rewriting those files at the moment (which is what I'd end up doing if I started fixing minor problems and refactoring...)

GameSave::readOPS - not changed. At some point we may have to move to a larger type for element IDs (probably two or four bytes), but PT_NUM isn't likely to be raised to the maximum value of that type immediately, so this check will be needed then. There should be an elements[partsData[i]].Enabled check in there too, but it might be a bit difficult - I'm not sure how to access a Simulation object from GameSave::readOPS...

Notes on changes:

Graphics::textsize, Element_FRZW::Element_FRZW - typos

Button::Draw - the extra case was originally used to invert the icon (draw it in black instead of in white) when the button was clicked. However, the icon colour is now automatically set depending on the background colour. (Note similar conditions "if(Enabled) { if(isButtonDown || (isTogglable && toggle)) " near the start of the function - same logic but in a different place, setting icon colour indirectly).

Simulation::transform_save - unused redundant function, everything uses GameSave::Transform which does much the same thing.

PreviewView::NotifySaveChanged - should be height==YRES/2, it's checking whether the preview image is the correct size, and resizing it if it isn't.

Element_FWRK::update - no idea why that line was there, even though it was my commit that originally added it...
2014-12-25 17:09:35 +00:00
mniip
fdfaa3a29b add defines for window resolution
--amend
2013-12-29 20:12:50 +04:00
Simon Robertshaw
9abe51526c Move all GUI source files into gui/ 2013-03-22 14:14:17 +00:00
Simon Robertshaw
73b6ff4efb Use VideoBuffer in place of thumbnail 2013-03-15 12:59:55 +00:00
jacob1
037618e6f8 remove auto generated comments from all files, fix some missing tabs, remove unused variables from config.h 2013-03-06 12:05:59 -05:00
jacob1
5c59b9d6cb don't render fire on stamps (reduces lag) 2012-10-05 15:49:54 +01:00
Simon Robertshaw
3b2f4d59fc Better fire rendering for saves 2012-09-14 23:53:58 +01:00
Simon Robertshaw
92f3ad5814 Black decorations only in thumbnails 2012-08-28 15:53:07 +01:00
Simon Robertshaw
0ca680f4c8 Enable decorations in renderer for local save items, disable for server save previews. 2012-08-27 13:32:17 +01:00
Simon Robertshaw
ebc4116675 Disable decorations when rendering saves 2012-08-26 16:37:17 +01:00
Simon Robertshaw
074dcd0b42 Precompile some headers. Fix sconscript to prevent recompiling everything 2012-08-13 15:43:57 +01:00
Simon Robertshaw
8ca27520a4 Use forward declarations more to avoid excessive includes 2012-08-12 22:32:57 +01:00
Simon Robertshaw
aa774771a0 Collapse gamesave to save space in memory 2012-07-28 02:23:21 +01:00
Simon Robertshaw
5befe5c25f Local file browser + some more interesting things like Progress bar UI component 2012-07-27 20:06:17 +01:00
Simon Robertshaw
2b4ec99894 Use two functions for renderer drawing instead of several, fix alignment with Zoom Window border 2012-07-19 16:37:56 +01:00
Simon Robertshaw
adc9cc0816 Move graphics into seperate folder 2012-07-06 16:06:26 +01:00
Simon Robertshaw
694a6ed4f2 Ammend to previous commit - the issue was not with smaller saves, but the accumulation of rendered particles on the framebuffer - fixed by clearing the fbo and pbo before rendering 2012-06-25 22:34:04 +01:00
Simon Robertshaw
2ffb45581f SaveRenderer working on OpenGL - doesn't seem to work with small saves though 2012-06-25 22:26:53 +01:00
Simon Robertshaw
dacb774ae0 Resizable window when using OpenGL interface 2012-06-25 16:10:40 +01:00
Simon Robertshaw
550f6e28e0 Stage 1 of update process completed 2012-06-21 15:49:32 +01:00
Bryan Hoyle
3b29a74767 fixes to code and a option for opengl building for release 2012-06-20 15:05:25 -04:00
Bryan Hoyle
c775126272 Merging 2012-06-20 14:45:06 -04:00
Simon Robertshaw
09758b9152 SaveRenderer returns a placeholder thumbnail in case of OpenGL 2012-06-20 19:43:03 +01:00
Bryan Hoyle
e5e638448c remove some debugging 2012-06-20 14:42:42 -04:00
Bryan Hoyle
b35255b722 Renders an X in place of save icons, atm. 2012-06-20 14:25:41 -04:00
Bryan Hoyle
c9f837f21d Opengl can open saves now, just need to get it to render accurately later 2012-06-20 14:23:22 -04:00
Simon Robertshaw
6f814528fc Correct save reloading, add Vac and NGrav tools 2012-06-12 15:37:46 +01:00
Simon Robertshaw
0ee1e1875d Load save data when showing the save preview 2012-06-08 22:04:14 +01:00
Simon Robertshaw
2e48fc6115 'No Image' icon when save rendering fails 2012-06-06 01:54:27 +01:00
Simon Robertshaw
8fae7dbade Saving and loading at position, yuse exceptions for parsing saves 2012-06-06 01:46:13 +01:00
Simon Robertshaw
49dafbfd26 Use a different method for decoding saves with uncompressed object in memory for stamps and clipboard, also allows for transformation (rotation), missing failure states and code for loading it into a Simulation 2012-06-05 20:08:35 +01:00
Simon Robertshaw
838a612026 Use a single instance of a background simulation for thumbnail rendering 2012-04-03 17:08:56 +01:00