PartyMembership table associates partyId and characterId
Party table just partyId and partyName
Add Encounter table with encounterId and encounter Name
EncounterParticipation table associating encounterId, characterId, initiativeScore and turnOrder
Party Changes
Creating an EncounterParticipant object should create something that refers to:
Character object (populated from character database just as in Character section
Encounter object (to group participants together in a way that lets them easily be collected from the database)
an initiative score
(later) temporary modifier variables (e.g. +4 CHA, because someone cast Eagle's Splendour on the character. For each modifiable character stat, the effective stat value in an encounter is the [character's base stat + permanent effects + temporary effects], so the EncounterParticipant object should have a variable that corresponds to each of those stats, holding the current modifier imposed by that encounter)
(later) a list of 'condition' objects (i.e. 'sleep', 'paralyzed' - a list of those currently applied)
Party Manager Changes
Hold a 'current party id' which indicates which party is active
Use party id to determine from PartyMembership table which character names should be displayed (i.e. all members)
'Import character' should open character selector activity (issue #28) and all characterIds it returns should be inserted into PartyMembership table
\ When opening the character selector activity, it should be supplied with all stored character Ids and party Ids so user can choose from full set of characters/parties that are stored on device
Offer a 'Remove Character' option, also using character selector activity (but with different prompts - text must indicate to user that selected characters will be disassociated from party), which removes all returned characterIds from PartyMembership table for that party
\ When opening the character selector activity, it should be supplied with ids of all characters in party. Don't provide any party ids so tab doesn't appear
Clicking character name should offer dialogue options to edit the character in the Character UI, Remove Character from party or Cancel
Initiative Tracker
Provide same individual/bulk import/removal as Party Manager, using Character Selector Activity
Use new EncounterParticipant class of objects, which encapsulates a Character object, initiative score and any other per-character encounter-specific variables (see top of this post)
Store EncounterParticipants in a list. Order of list should determine displayed order and turn order when 'cycling'
After 'roll for initiative' button is pressed, button should be replaced by a 'cycle initiative' button
Cycle button should pop and push the list, therefore moving the most recent turn-taker to the bottom, maintaining order
Allow editable (through dialogue?) initiative scores without changing order of participant items in list
List should be sorted by initiative score after initiative roll occurs/encounter begins
A reset encounters should hold (and display) null values for initiatives (as a initiative of zero is valid)
If a fresh (or post-reset) encounter has all scores set manually, 'roll initiative' should read 'begin encounter', as no rolling is necessary
(later) display icons for various conditions befalling the character
(later) cycle should update conditions by subtracting another round from counter
Encounters as objects
Add Initiative Tracker button for creating new encounter (name it using a query for how many encounters exist)
Add Initiative Tracker button for switching to different encounter
A reset encounter button should offer to 'reset current encounter' or 'create new encounter' in a dialogue
Offer ability to delete an existing encounter
Character UI
Add new subsection/fragment for displaying all of a character's parties, and allowing the character to remove themselves from any of them
Party Skill Checker
Separate from Party system and 'active party'
* No need to remember selected party between separate uses of the app, but would be good to keep fragment running in background with selected party and last check results for the duration that the app is open
* Use character selector activity to import whole parties or individual characters
Changes to Encounter database table and access functions
Need an Encounter object to extract details into. Contains: encounterID, list of EncounterParticipant objects (order of which gives turn order)
Modify EncounterParticipant object to include initiative
Db Changes
Party Changes
Creating an EncounterParticipant object should create something that refers to:
Party Manager Changes
Initiative Tracker
Encounters as objects
Character UI
Party Skill Checker
Changes to Encounter database table and access functions