Just a quick reply on idea number (3) -- that's really funny, because I just more or less implemented just that! It's not yet pushed to the Git repo, but here are some commits related to global animations that I've added recently:
Code: Select all
added event actions (by triggering gadgets) for global animations
This change adds a new option for the "graphicsinfo.conf" file for
defining clickable global animations that trigger other actions
(currently limited to triggering active gadget buttons on the same
screen as the global animations). The new option works like this:
global.anim_1.part_1.MAIN.anim_event: click
global.anim_1.part_1.MAIN.anim_event_action: tape.button.record
The second option is the new one (the first one already existed).
When clicking this global animation (on the main menu screen), the
game will be started (by triggering the "record" button on the tape
recorder, which effectively starts playing the current level).
Code: Select all
added "passthrough" option for clickable global animations
This change adds a new option for the "graphicsinfo.conf" file for
defining a "passthrough" option for global animations that causes
clicks on clickable global animations not to be consumed, but to
be passed-through to the underlying screen controls (or other global
animations under the clicked global animation). The new option works
like this:
global.anim_1.part_1.MAIN.anim_event: click
global.anim_1.part_1.MAIN.style: passthrough_clicks
The second option is the new one (the first one already existed).
When clicking this global animation (on the main menu screen), the
click will passed-through to the main menu screen to be further
processed by screen controls like gadgets or menu buttons.
Code: Select all
added event actions (active screen elements) for global animations
This change adds more event actions to the "anim_event_action" option
for clickable global animations, this time adding active screen elements
(currently limited to a selection of screen elements in the main menu).
For example, you can now use:
global.anim_1.part_1.MAIN.anim_event: click
global.anim_1.part_1.MAIN.anim_event_action: menu.button_game
When clicking this global animation (on the main menu screen), the
game will be started (by triggering the "start game" menu button).
To dump a list of all available event actions for global animations,
blindly type the "cheat mode" style shortcut ":dump-event-actions" or
":dea" in the main menu.
Code: Select all
added "multiple_actions" option for clickable global animations
This change adds a new option for the "graphicsinfo.conf" file to be
able to explicitly allow multiple event actions for clickable global
animations, which is deactivated by default to prevent unwanted side
effects. This would make it possible to trigger two actions that make
sense when executed at the same time, like triggering the "play" and
"pause" buttons of the tape recorder together, for example.)
The new option works like this (with "global.anim_1.part_1.MAIN" also
being defined):
global.anim_2.part_1.MAIN.anim_event: click:anim_1.part_1
global.anim_2.part_1.MAIN.anim_event_action: some.action
global.anim_2.part_1.MAIN.style: multiple_actions
global.anim_3.part_1.MAIN.anim_event: click:anim_1.part_1
global.anim_3.part_1.MAIN.anim_event_action: another.action
When clicking the first global animation (on the main menu screen),
there might be two or more other global animation which are triggered
by clicking the first animation and which each execute their own event
action when triggered. (The style "multiple_actions" must be defined
for all animations that should *not* stop the chain of event actions
to be executed, so it's easiest to just define it for all animations
that should execute their event actions together when triggered.)
This option can be combined with "passthrough_clicks".
Code: Select all
added being able to generally set global animations to passthrough clicks
Before, the "passthrough_clicks" option was limited to allow mouse
clicks on global animations to be passed through to the mouse sensitive
screen controls, but not to other global animations.
Now, stacked global animations can all receive mouse clicks if those
global animations overlapping them are set to "passthrough_clicks".
Code: Select all
added event actions (by simulating keyboard input) for global animations
This change adds more event actions to the "anim_event_action" option
for clickable global animations, this time adding simulated keyboard
input by specifying a key symbol for the key to be simulated.
For example, you can now use:
global.anim_1.part_1.MAIN.anim_event: click
global.anim_1.part_1.MAIN.anim_event_action: XK_Return
When clicking this global animation (on the main menu screen), the
currently selected/highlighted menu item will be chosen/executed.
To get the key symbol/name for the key to be simulated, just choose
the desired key as a keyboard shortcut in the setup menu (temporarily
only) and look at the resulting entry in the file "setup.conf" in the
game's configuration and personal data directory.
Code: Select all
added (optional) main menu buttons to insert or play solution tape
There is a difference to the already existing tape buttons to insert
or play a solution tape in that the main menu buttons are only drawn
if the current level really has a solution tape, while the tape buttons
are always drawn, regardless if the level has a solution tape or not.
HInt: These buttons are named as follows:
Code: Select all
# menu.button_insert_solution: [NONE]
# menu.button_insert_solution.active: [NONE]
# menu.button_play_solution: [NONE]
# menu.button_play_solution.active: [NONE]
and
Code: Select all
# main.button.insert_solution.x: -1
# main.button.insert_solution.y: -1
# main.button.play_solution.x: -1
# main.button.play_solution.y: -1
I will provide some example level sets later, hopefully.
If you're too curious to wait for the next release version, and if you're using Windows, you can use a sneak preview version here:
https://www.artsoft.org/RELEASES/rocksn ... -versions/
Just use the latest EXE (currently this is "rocksndiamonds-20180614-1.exe"). Have fun!