Development news : AAO goes open-source NOW !

Read and comment on the latest community news and site updates.
User avatar
Unas
Admin / Site programmer
Posts: 8850
Joined: Tue Jul 10, 2007 4:43 pm
Gender: Male
Spoken languages: Français, English, Español
Contact:

Re: Development news : AAO goes open-source NOW !

Post by Unas »

Don't go and oversimplify everything xD

getPropertyConverter, just like populateAtRulesConverters and populateFunctionConverters, is here to provide a manual mapping from one standard CSS property to an experimental one.
(And yes, this style_loader is the closest thing in the AAO code to the browser hacks I mentioned in 1., though it almost doesn't rely on any browser-specific trick. It mostly just detects if CSS functionalities are implemented in the current browser as stable feature or an experimental one, and adapts the CSS code appropriately. This is what enables me to write CSS using only the standard syntax, and not experimental ones. But I only use properties which are being added to the standard anyway.)

It just so happens that for properties I haven't found any that needs manual mapping as it always follows the browser-prefix convention, so this one currently only returns false (ie no manual mapping, let the generic conversion function add the prefix).
If such a property suddenly appears, however, I can just add a case to the switch in that function and be done with it.
ImageImageImage
If knowledge can create problems, it is not through ignorance that we can solve them.
Si le savoir peut créer des problèmes, ce n'est pas l'ignorance qui les résoudra. ( Isaac Asimov )
User avatar
Enthalpy
Community Manager
Posts: 5169
Joined: Wed Jan 04, 2012 4:40 am
Gender: Male
Spoken languages: English, limited Spanish

Re: Development news : AAO goes open-source NOW !

Post by Enthalpy »

Ha, no, I'm focused more on understanding the code. Simplifications are a nice side-benefit.

I'm working through the objects module and am a bit confused on objCompare. What is it trying to accomplish? What does it even mean to loop for var keyname in obj, where obj is a function? Some experimenting on my own has show that the loop acts as if the function is empty, but does that generalize?
[D]isordered speech is not so much injury to the lips that give it forth, as to the disproportion and incoherence of things in themselves, so negligently expressed. ~ Ben Jonson
User avatar
Unas
Admin / Site programmer
Posts: 8850
Joined: Tue Jul 10, 2007 4:43 pm
Gender: Male
Spoken languages: Français, English, Español
Contact:

Re: Development news : AAO goes open-source NOW !

Post by Unas »

Well, objCompare compares two JS objects, to detemine if they are identical or not using a deep comparison (checking all properties recursively).


As far as functions go, well, functions are Javascript objects like any other : you can assign properties to a function and so on, so "for ... in f" will iterate through all the properties assigned to f.

That being said, this comparison does not make sense for functions to begin with : you can't compare the function body, and two functions can be very different even if they expose the same properties...
It could probably be updated with a "case 'function' : return false" or something, so that functions be assumed different as soon as they failed the "obj1 === obj2" test.
(=== will check if they are actually the same object in memory, which is a safe comparison; if they are not, then no other comparison really makes sense so they should be considered different)

I doesn't matter much though : I use objCompare to compare pieces of object model, so JSON-like objects : no functions in there.
ImageImageImage
If knowledge can create problems, it is not through ignorance that we can solve them.
Si le savoir peut créer des problèmes, ce n'est pas l'ignorance qui les résoudra. ( Isaac Asimov )
User avatar
Enthalpy
Community Manager
Posts: 5169
Joined: Wed Jan 04, 2012 4:40 am
Gender: Male
Spoken languages: English, limited Spanish

Re: Development news : AAO goes open-source NOW !

Post by Enthalpy »

Huh... I assumed JavaScript would naturally check for object equality that way, but no, it's memory location-based...

I've been working on module summaries. Right now, I have two complete ones for nodes and events, and a mostly complete one for var_environments. Would anybody be interested in looking over them? I figure they could be useful once we have the forum.

For Unas specifically... What are the objectives for the expression engine rewrite? That module is next on my list to look over, so if it's not too ambitious, I've been playing with the idea of working on that.
[D]isordered speech is not so much injury to the lips that give it forth, as to the disproportion and incoherence of things in themselves, so negligently expressed. ~ Ben Jonson
AceAttorneyMaster111
Posts: 468
Joined: Sat Sep 27, 2014 6:46 pm
Gender: Male
Spoken languages: English, français, un poco de español, עברית
Location: USA

Re: Development news : AAO goes open-source NOW !

Post by AceAttorneyMaster111 »

One question about the code editor: I have seen many pull requests accepted, but none of them are actually in the site. Is this a bug, or has it not been implemented? If the latter, when will it be implemented?

Thank you,
AceAttorneyMaster111
User avatar
Singidava
Posts: 1621
Joined: Fri Jul 23, 2010 6:56 pm
Gender: Female
Spoken languages: Suomi, English & 日本語
Location: Finland
Contact:

Re: Development news : AAO goes open-source NOW !

Post by Singidava »

AceAttorneyMaster111 wrote:One question about the code editor: I have seen many pull requests accepted, but none of them are actually in the site. Is this a bug, or has it not been implemented? If the latter, when will it be implemented?

Thank you,
AceAttorneyMaster111
The changes have been made to the develop branch. I'm assuming AAO runs on the master branch (or a local clone of it) and thus what has been done doesn't actually affect the site yet. Dunno if Unas has any plans for a merge anytime soon though.
User avatar
Unas
Admin / Site programmer
Posts: 8850
Joined: Tue Jul 10, 2007 4:43 pm
Gender: Male
Spoken languages: Français, English, Español
Contact:

Re: Development news : AAO goes open-source NOW !

Post by Unas »

@AAM111 : What Sing said is mostly correct.
At the moment there are a few changes on master not yet reflected on the site, but it will indeed work this way : develop will be merged to master when I decide it's fit to go to production; I'll then copy the code from the master branch to update the site.

It's not automated because updating the actual site is something I take pretty seriously in terms of security so I'd rather do it by hand, checking it at every step, and not storing my credentials anywhere dangerous. :-)

As for when, well... I planned this week end, but forgot. I guess some time this week.
ImageImageImage
If knowledge can create problems, it is not through ignorance that we can solve them.
Si le savoir peut créer des problèmes, ce n'est pas l'ignorance qui les résoudra. ( Isaac Asimov )
AceAttorneyMaster111
Posts: 468
Joined: Sat Sep 27, 2014 6:46 pm
Gender: Male
Spoken languages: English, français, un poco de español, עברית
Location: USA

Re: Development news : AAO goes open-source NOW !

Post by AceAttorneyMaster111 »

Until there is a subforum, should we post questions in this topic?
If so, then
Spoiler : I have a question :
If I were to edit code about the part of the Editor where you add psyche locks, where would I find that?
Thank you!
User avatar
Singidava
Posts: 1621
Joined: Fri Jul 23, 2010 6:56 pm
Gender: Female
Spoken languages: Suomi, English & 日本語
Location: Finland
Contact:

Re: Development news : AAO goes open-source NOW !

Post by Singidava »

AceAttorneyMaster111 wrote:Until there is a subforum, should we post questions in this topic?
If so, then
Spoiler : I have a question :
If I were to edit code about the part of the Editor where you add psyche locks, where would I find that?
Thank you!
I warmly recommend using word search.

Code: Select all

Searching 418 files for "psyche"

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\mocked_install\config.php:
   20  			'defaultplaces_subdir' => "defaultplaces/",
   21  			'popups_subdir' => "popups/",
   22: 			'locks_subdir' => "psycheLocks/",
   23  		'music_dir' => "../test_install/resources/music/",
   24  		'sounds_dir' => "../test_install/resources/sounds/",

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\player.html:
   51  						<a class="bs-button topleft" id="press" data-locale-content="press"></a>
   52  						<a class="bs-button topmiddle" id="present-center" data-locale-content="present"></a>
   53: 						<a id="locks"><img src="img/magatama.gif" alt="Psyche locks" /></a>
   54  						<a class="bs-button topright"  id="present-topright" data-locale-content="present"></a>
   55  					</div>

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\test_install\config.php:
   20  			'defaultplaces_subdir' => "defaultplaces/",
   21  			'popups_subdir' => "popups/",
   22: 			'locks_subdir' => "psycheLocks/",
   23  		'music_dir' => "../test_install/resources/music/",
   24  		'sounds_dir' => "../test_install/resources/sounds/",

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\test_static\mock_bridge.js:
   13    "defaultplaces_subdir": "defaultplaces/",
   14    "popups_subdir": "chars/Cour/",
   15:   "locks_subdir": "psycheLocks/",
   16    "music_dir": "test_install/resources/music/",
   17    "sounds_dir": "test_install/resources/sounds/",

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\trunk\CSS\player_global.css:
  245  }
  246  
  247: /* Psyche locks button */
  248  #locks
  249  {

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\trunk\CSS\player_pwstyle.css:
   86  }
   87  
   88: /* Psyche locks button */
   89  #locks
   90  {

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\trunk\includes\action_descriptions.php:
  322  		);
  323  		
  324: 		//Psyche locks actions
  325  		$action_parameters['Locks'] = array();
  326  		$action_parameters['Locks']['LocksEnd'] = array(
  327: 			'context' => array( //Parameters to fill automatically when in psyche locks conversation, hidden from the user.
  328  				'out_of_editor' => array(
  329  					'type' => 'boolean',
  ...
  338  		
  339  		$action_parameters['Locks']['LocksShow'] = $action_parameters['Locks']['LocksHide'] = array(
  340: 			'context' => array( //Parameters to fill automatically when in psyche locks conversation, hidden from the user.
  341  				'parent_dialogue' => array(
  342  					'type' => 'dialogue_descriptor',
  ...
  347  		
  348  		$action_parameters['Locks']['LocksBreak'] = array(
  349: 			'context' => array( //Parameters to fill automatically when in psyche locks conversation, hidden from the user.
  350  				'parent_dialogue' => array(
  351  					'type' => 'dialogue_descriptor',
  ...
  399  		$action_parameters['Input'] = array();
  400  		$action_parameters['Input']['MultipleChoices'] = array(
  401: 			'context' => array( //Parameters to fill automatically when in psyche locks conversation, hidden from the user.
  402  				'parent_dialogue' => array(
  403  					'type' => 'dialogue_descriptor',
  ...
  432  		
  433  		$action_parameters['Input']['AskForEvidence'] = array(
  434: 			'context' => array( //Parameters to fill automatically when in psyche locks conversation, hidden from the user.
  435  				'parent_dialogue' => array(
  436  					'type' => 'dialogue_descriptor',
  ...
  482  		
  483  		$action_parameters['Input']['PointArea'] = array(
  484: 			'context' => array( //Parameters to fill automatically when in psyche locks conversation, hidden from the user.
  485  				'parent_dialogue' => array(
  486  					'type' => 'dialogue_descriptor',

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\trunk\includes\legacy_blocks.php:
  189  					$frame_mode = LOCKS_CONVERSATIONS;
  190  					
  191: 					//remove action : none necessary at start of psyche locks conversation
  192  					$frame_data['action_name'] = '';
  193  					$frame_data['action_parameters'] = array();
  ...
  975  			}
  976  			
  977: 			//Handle messed up psyche locks structure
  978  			if($dialogue['locks'] != null)
  979  			{

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\trunk\Javascript\display_engine_locks.js:
    1  /*
    2: Ace Attorney Online - Psyche locks display engine
    3  
    4  */

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\trunk\Javascript\editor_frames_scene.js:
  394  }
  395  
  396: // Psyche locks editor
  397  function locksEditor(dialogue)
  398  {
  ...
  614  	if(dialogue.locks)
  615  	{
  616: 		// If psyche locks are enabled, include locks edition tools
  617  		
  618  		// Button to open locks editor
  ...
  648  	else
  649  	{
  650: 		// If psyche locks are disabled, add button to enable them.
  651  		dialogue_setting_fields.push({
  652  			type: 'button',

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\trunk\Javascript\editor_rowmaps_frames.js:
  285  				if(dialogue.locks)
  286  				{
  287: 					//Psyche locks conversation
  288  					conv_start_index = getRowIndexById('frames', dialogue.locks.start) + 1;
  289  					conv_end_index = getRowIndexById('frames', dialogue.locks.end) - 1;

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\trunk\Javascript\player_actions.js:
  327  			{
  328  				dialogue.locks.hidden = hidden;
  329: 				//TODO : add psyche locks to debugger
  330  			}
  331  			showSkipButton();
  ...
  338  			break;
  339  			
  340: 		// Psyche locks actions
  341  		
  342  		case 'LocksShow':
  ...
  695  			break;
  696  		
  697: 		// Psyche locks actions
  698  		
  699  		case 'LocksEnd':
  ...
  913  			setClass(bottom_screen, 'options back'); // Display the options panel and back button
  914  			
  915: 			// Set the psyche locks button if needed
  916  			if(dialogue.locks && !dialogue.locks.hidden)
  917  			{

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\trunk\Languages\de\music.js:
   48  "default_music_Ace Attorney 2/12 - Pursuit ~ Cornered (Variation)" : "12 - Pursuit ~ Cornered (Variation)",
   49  "default_music_Ace Attorney 2/13 - Jingle ~ Cant Sleep on a Night Like This" : "13 - Jingle ~ Cant Sleep on a Night Like This",
   50: "default_music_Ace Attorney 2/14 - Psyche Lock" : "14 - Psyche Lock",
   51  "default_music_Ace Attorney 2/15 - Search ~ Opening 2002" : "15 - Search ~ Opening 2002",
   52  "default_music_Ace Attorney 2/16 - Maya Fey ~ Turnabout Sisters Theme 2002" : "16 - Maya Fey ~ Turnabout Sisters Theme 2002",
   ..
  416  "default_music_Remixes/Trailers - GS1 - Gyakuten Sisters Theme 2001" : "Trailers - GS1 - Gyakuten Sisters Theme 2001",
  417  "default_music_Remixes/Trailers - GS1 - Investigation - Cornered" : "Trailers - GS1 - Investigation - Cornered",
  418: "default_music_Remixes/Trailers - GS2 - Psyche Lock" : "Trailers - GS2 - Psyche Lock",
  419  "default_music_Remixes/Trailers - GS3 - Court Begins" : "Trailers - GS3 - Court Begins",
  420  "default_music_Remixes/Trailers - GS3 - Godot - The Fragrance Of Dark Coffee" : "Trailers - GS3 - Godot - The Fragrance Of Dark Coffee",

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\trunk\Languages\en\editor.js:
  237  "actionCategory_EditEnvironment" : "Edit the game environment",
  238  "actionCategory_Health" : "Manage player's health",
  239: "actionCategory_Locks" : "Animate psyche-locks",
  240  "actionCategory_Input" : "Ask for player's input",
  241  "actionCategory_Vars" : "Manage variables",
  ...
  256  "action_HideTalkTopic" : "Hide a talk topic",
  257  "action_RevealTalkTopic" : "Reveal a talk topic",
  258: "action_HideDialogueLocks" : "Hide psyche locks button",
  259: "action_RevealDialogueLocks" : "Reveal psyche locks button",
  260: "action_LocksHide" : "Hide the psyche locks",
  261: "action_LocksShow" : "Show the psyche locks",
  262: "action_LocksBreak" : "Break psyche locks",
  263  "action_FlashHealth" : "Set flashing health points",
  264  "action_SetHealth" : "Set player's health points",
  ...
  372  "dialogue_main_screen" : "Main frame screen editor",
  373  "dialogue_main_music" : "Main frame music",
  374: "locks_add" : "Add psyche-locks conversation",
  375: "locks_remove" : "Remove psyche-locks conversation",
  376: "locks_remove_confirm" : "Are you sure you wish to delete this psyche-locks conversation ? This action is irreversible.",
  377: "locks_edit" : "Edit number and position of psyche-locks",
  378: "locks_editor" : "Psyche-locks editor",
  379: "add_dialogue_locks" : "Add a psyche-lock",
  380  "dialogue_intro" : "Introduction conversation",
  381  "dialogue_intro_description" : "The introduction conversation is read the first time the player reaches this dialogue, and hidden afterwards. You can, however, reveal or hide it manually with actions.",
  ...
  390  "dialogue_present_others" : "Presenting other evidence",
  391  "add_present_conversations" : "Add a new present conversation",
  392: "dialogue_locks" : "Psyche-Locks",
  393  "dialogue_locks_description" : "This conversation can be accessed using the magatama button ingame. While in this conversation, you can set \"player input\" actions to display a back button. You can also use lock actions (Show, Break and Hide) to control the animations.",
  394: "dialogue_locks_conv" : "Psyche-Locks conversation",
  395  
  396  

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\trunk\Languages\en\music.js:
   48  "default_music_Ace Attorney 2/12 - Pursuit ~ Cornered (Variation)" : "12 - Pursuit ~ Cornered (Variation)",
   49  "default_music_Ace Attorney 2/13 - Jingle ~ Cant Sleep on a Night Like This" : "13 - Jingle ~ Cant Sleep on a Night Like This",
   50: "default_music_Ace Attorney 2/14 - Psyche Lock" : "14 - Psyche Lock",
   51  "default_music_Ace Attorney 2/15 - Search ~ Opening 2002" : "15 - Search ~ Opening 2002",
   52  "default_music_Ace Attorney 2/16 - Maya Fey ~ Turnabout Sisters Theme 2002" : "16 - Maya Fey ~ Turnabout Sisters Theme 2002",
   ..
  416  "default_music_Remixes/Trailers - GS1 - Gyakuten Sisters Theme 2001" : "Trailers - GS1 - Gyakuten Sisters Theme 2001",
  417  "default_music_Remixes/Trailers - GS1 - Investigation - Cornered" : "Trailers - GS1 - Investigation - Cornered",
  418: "default_music_Remixes/Trailers - GS2 - Psyche Lock" : "Trailers - GS2 - Psyche Lock",
  419  "default_music_Remixes/Trailers - GS3 - Court Begins" : "Trailers - GS3 - Court Begins",
  420  "default_music_Remixes/Trailers - GS3 - Godot - The Fragrance Of Dark Coffee" : "Trailers - GS3 - Godot - The Fragrance Of Dark Coffee",

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\trunk\Languages\en\sounds.js:
   39  "default_sounds_Photo" : "Sound effects|Camera click",
   40  "default_sounds_Pistolet Extraterrestre" : "Character sounds|Oldbag - Ray gun",
   41: "default_sounds_Rolling" : "Psyche-locks|Psyche-Locks appear",
   42  "default_sounds_Rumeur" : "Court|Gallery speaking",
   43  "default_sounds_SelectJingle" : "Sound effects|New evidence",
   44: "default_sounds_Shatter" : "Psyche-locks|Lock breaks",
   45  "default_sounds_Shing" : "Speaking expressions|Shouting",
   46  "default_sounds_Shock" : "Speaking expressions|Waaah!",

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\trunk\Languages\es\music.js:
   48  "default_music_Ace Attorney 2/12 - Pursuit ~ Cornered (Variation)" : "12 - Pursuit ~ Cornered (Variation)",
   49  "default_music_Ace Attorney 2/13 - Jingle ~ Cant Sleep on a Night Like This" : "13 - Jingle ~ Cant Sleep on a Night Like This",
   50: "default_music_Ace Attorney 2/14 - Psyche Lock" : "14 - Psyche Lock",
   51  "default_music_Ace Attorney 2/15 - Search ~ Opening 2002" : "15 - Search ~ Opening 2002",
   52  "default_music_Ace Attorney 2/16 - Maya Fey ~ Turnabout Sisters Theme 2002" : "16 - Maya Fey ~ Turnabout Sisters Theme 2002",
   ..
  416  "default_music_Remixes/Trailers - GS1 - Gyakuten Sisters Theme 2001" : "Trailers - GS1 - Gyakuten Sisters Theme 2001",
  417  "default_music_Remixes/Trailers - GS1 - Investigation - Cornered" : "Trailers - GS1 - Investigation - Cornered",
  418: "default_music_Remixes/Trailers - GS2 - Psyche Lock" : "Trailers - GS2 - Psyche Lock",
  419  "default_music_Remixes/Trailers - GS3 - Court Begins" : "Trailers - GS3 - Court Begins",
  420  "default_music_Remixes/Trailers - GS3 - Godot - The Fragrance Of Dark Coffee" : "Trailers - GS3 - Godot - The Fragrance Of Dark Coffee",

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\trunk\Languages\es\sounds.js:
   42  "default_sounds_Rumeur" : "Tribunal|Tribunal hablando",
   43  "default_sounds_SelectJingle" : "Efectos|Nueva prueba",
   44: "default_sounds_Shatter" : "Psyche-locks|Candado rompiendose",
   45  "default_sounds_Shing" : "Expresiones|Grito",
   46  "default_sounds_Shock" : "Expresiones|Waaah!",

AceAttorneyOnline-aao-game-creation-engine-5b28587f06a3\trunk\player.php:
   75  					<a class="bs-button topleft" id="press" data-locale-content="press"></a>
   76  					<a class="bs-button topmiddle" id="present-center" data-locale-content="present"></a>
   77: 					<a id="locks"><img src="img/magatama.gif" alt="Psyche locks" /></a>
   78  					<a class="bs-button topright"  id="present-topright" data-locale-content="present"></a>
   79  				</div>

55 matches across 19 files
User avatar
Enthalpy
Community Manager
Posts: 5169
Joined: Wed Jan 04, 2012 4:40 am
Gender: Male
Spoken languages: English, limited Spanish

Re: Development news : AAO goes open-source NOW !

Post by Enthalpy »

I started reading over the display engine, while on the hunt for the recent bug in Chrome, when I came across this in display_engine_global's set_transition function:

Code: Select all

	if(!node)
	{
		//if node has been deleted while transitioning, do not crash
		return;
	}
How exactly would the node be deleted? I can't find any possibilities through either reading the code, or experimenting in the editor or player.

EDIT: Oh, and have you looked at the changes I made to the "code beautification" pull request since you first commented on them?
[D]isordered speech is not so much injury to the lips that give it forth, as to the disproportion and incoherence of things in themselves, so negligently expressed. ~ Ben Jonson
User avatar
Enthalpy
Community Manager
Posts: 5169
Joined: Wed Jan 04, 2012 4:40 am
Gender: Male
Spoken languages: English, limited Spanish

Re: Development news : AAO goes open-source NOW !

Post by Enthalpy »

...And another question.

In object_buffer_wrappers, what is the point of having the extension wrappers in, since there doesn't seem to be any code that uses them, and why have the buffer wrappers at all, instead of just editing the trial_data variable?

Sorry if this is too many questions. These aren't clearly answered in the comments, and this is coming up in my attempts to do the thorough root-out of the Chrome bug.

EDIT: Figured out the reason for the buffer wrappers. This mechanism allows the in-player changes to the trial file to carry over even when the author changes the core trial file. Otherwise, a player loading their save would have the old version of the game, instead of the new!
[D]isordered speech is not so much injury to the lips that give it forth, as to the disproportion and incoherence of things in themselves, so negligently expressed. ~ Ben Jonson
User avatar
Unas
Admin / Site programmer
Posts: 8850
Joined: Tue Jul 10, 2007 4:43 pm
Gender: Male
Spoken languages: Français, English, Español
Contact:

Re: Development news : AAO goes open-source NOW !

Post by Unas »

Sorry, I haven't been nearly as present as I hoped lately.
FYI, I'm preparing the push of the first batch of updates since I received your pull requests - I expected to do that a few weeks ago but was stalled by technical issues : apparently, a lot of data was corrupted on the AAO server, in the directory I use to deliver updates to the site. Thankfully it did not affect the site itself, but it takes a little bit of time to understand roughly what happened and restore everything properly without risking anything.

Now on to your questions :
Enthalpy wrote:How exactly would the node be deleted? I can't find any possibilities through either reading the code, or experimenting in the editor or player.
To be honest, neither can I, but still, the issue occured quite often, so I had to handle this case. I guess it's related to the order of events if I change the displayed sprite several times quickly for example.
Keep in mind that this is event-based programming : there is never any guarantee on the order of execution of different event handlers after all. There are bound to be unforeseen situations every once in a while. In this case it's often simpler to use some kind of "defensive programming" on the event handlers so that they check if it made any sense calling them in that situation and act accordingly.
Enthalpy wrote:what is the point of having the extension wrappers in, since there doesn't seem to be any code that uses them
Because all the code soon will :-P
Extension wrappers are what allows to extend an object with default properties as defined in an object model. This is how I will manage future extensions of the V6 trial data format : I can add a new structure to the object model, and it will automatically added at runtime with default values (thanks to this extension wrapper) on all existing trials.
It avoids the need for the editor and player code to have null checks everywhere to handle legacy trials.
Enthalpy wrote:EDIT: Figured out the reason for the buffer wrappers. This mechanism allows the in-player changes to the trial file to carry over even when the author changes the core trial file. Otherwise, a player loading their save would have the old version of the game, instead of the new!
True, but not only. It also greatly reduces the size of game saves. Remember that some people here tend to write very big, very long cases : dumping the whole trial data into each game saves would make the size of those explode.

More generally, buffer wrappers allow me to know what exactly was changed in the wrapped object : this is important information for a future evolution I have in mind.
ImageImageImage
If knowledge can create problems, it is not through ignorance that we can solve them.
Si le savoir peut créer des problèmes, ce n'est pas l'ignorance qui les résoudra. ( Isaac Asimov )
Locked