Commit 1dde3c63

Expose the game state to the python interface. Various fixes. First step towards implementing the eating mechanics on the python side.

While I wanted to avoid to pass in the entire GameState to Python this proved to be impractical. On a more positive note, only very specific parts of the class are exposed to Python. In the video you can see the object already moving to the context object:

Commit 8b7c1c33

Show available jobs when selecting a context object after selecting a primary object. Introduce the JobContextList to the Interface Manager

This is a big one. This extends the interface manager to show a list of possible jobs that fulfil the following criteria:

  • the object being clicked on (“context object”) exposes a list of actions
  • the currently selected (“primary”) object supports the action required by a job
  • if the job requires funds, make sure the user’s funds are sufficient

This also meant extending the whole click handling logic for objects had to be re-done and the concept of the “context object” selection had to be introduced.
On top of that the JobContextList widget was added, it still looks a little wonky and does not do much except being shown, but here it is:

Commit 4477c5d8

– add new “parameter” property on job types
– add new “supported actions” property to object types
pass both on to the appropriate python functions and change their signature accordingly

This is properly implementing the aforementioned concept of “supported actions” instead of just hard-coding it. It also adds parameters to the job definitions in order to minimise code duplication. To give a practical example here, look at the definition of the “eat” job in order to see the difference:

Commit 19cd1b6b

Make the job definition more generic and move actual job handlers to separate files

So far all (not like all that much exists yet) the job logic and general object logic were stored in the same file, the implementations for specific tasks no move to separate files. This is realised by iterating over the specified supported actions when instantiating an object (in Python) and dynamically adding the respective functions to the class:

Commit 71203ec2

Add configuration information for action points and job type icons

This adds the concept of “action points”, meaning coordinates relative to object’s position (and rotation) with which other objects may interact. Or at least the configuration to store information about them. 🙂
It further adds support for storing a path to a job type icon – neither of these settings is used – yet.