Oh, I've just noticed that Function Object which lets you write your own parametric functions.
And that you can write your own plugins using C++, but not sure if I can use the SDK with MinGW / GCC. Writing plugins can save me a lot of time figuring out how to make required custom widget objects in Construct.
I am making GUI-based turn-based life sim which puts you in the control of simulated human (actor) of simulated world (virtual world). Virtual world consists of you (the main actor) and number of other computer-controlled actors with whom you can interact. Each actor is made of number of properties which define them, much like characters are made of stats in RPG games. (Properties examples: health, energy, stress levels, skill levels)
It divides gameplay in two phases: "planning phase" and "execution phase". Planning phase is a phase in which you plan your agenda for forthcoming day. You do this by placing activities in your agenda and configuring WHEN they should be performed, HOW LONG they should be performed and using WHAT they should be performed. (Activities are chosen from a given list of available activities at the turn. Activities examples: read book, hang out at the bar, play video games, build body, chat with friend) Once you're done planning your forthcoming day you hit the "execute" button and go to execution phase. This moves you to next layout in which your day is executed (simulated). Your activities are performed (or not, all depending on numerous factors) and your side-interaction with the virtual world. Execution is performed in real-time and the flow of execution cannot be modified by user input any more. You can control the execution speed though. The execution feedback is sent to you (the player) via console messages, much like it's done in simGangster game. Once your day is over, you hit the "Back" button and go to previous "planning phase" layout.
Sorry for this long description, but I just couldn't think of any simpler way to explain the mechanics and what I want to program.
This is how I planned doing this in Construct:
> Use sprites for actor object with "invisible on start" and "Global" options checked. Assign properties using private variables.
> Create actors at the run-time, probably in "Start of layout" event of main menu layout.
> Use array object for keeping agenda entries. Or maybe list object since I'll need more than one value per agenda entry. (remember - when, howlong, what) Make sure that object is global so that I can access it from "execution phase" layout.
> Use function object for activities. One function per activity. Group activity functions. (Grouping events is really nice feature by the way) Each activity accepts following parameters: <who> <what> <when> <howlong> and is executed only for one time-unit. One hour of the day is 4 time-units.
> Clicking the execute button all simulation logic is processed immediately and feedback messages are stored in appropriate array/list object.
> Execution phase layout loops through the object containing feedback messages and displays them on the screen at particular rate
So, I am left with some visual work to do: making widget objects for agenda (list widget where agenda entries are placed), then making the item-list widget where I will display available activities and making that console widget where feedback is displayed. And I am sured I have missed something.
Sorry for this massive off-topic post.