Skip to content

Commit

Permalink
Merge pull request #83 from BattleItOut/73-database-decouple
Browse files Browse the repository at this point in the history
#73 - Database decouple
  • Loading branch information
Robak132 committed Mar 5, 2024
2 parents 494cd24 + e1d9101 commit 7e3b8a6
Show file tree
Hide file tree
Showing 16 changed files with 273 additions and 120 deletions.
3 changes: 0 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
token: ${{ secrets.PAT_TOKEN }}
submodules: recursive

- name: Install Flutter
uses: subosito/flutter-action@v2
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,7 @@ app.*.map.json
/android/app/debug
/android/app/profile
/android/app/release

# Do not push database inserts or localisation
assets/database_inserts.sql
assets/localisation/*
6 changes: 3 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[submodule "assets/database"]
path = assets/database
url = https://github.com/BattleItOut/WFRP4-database.git
[submodule "assets/database_module"]
path = assets/database_module
url = https://github.com/BattleItOut/WFRP4-database.git
1 change: 0 additions & 1 deletion assets/database
Submodule database deleted from bb947d
3 changes: 3 additions & 0 deletions assets/database.version
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
MAJOR: 1
MINOR: 0
VERSION: 1
1 change: 1 addition & 0 deletions assets/database_module
Submodule database_module added at b738ff
61 changes: 61 additions & 0 deletions assets/database_structure.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
CREATE TABLE IF NOT EXISTS "AMMUNITION" ( ID INTEGER not null constraint AMMUNITION_pk primary key autoincrement, NAME TEXT not null, RANGE_MOD REAL default 1 not null, RANGE_BONUS INTEGER default 0 not null, DAMAGE_BONUS INTEGER default 0 not null );
CREATE TABLE IF NOT EXISTS AMMUNITION_QUALITIES ( ITEM_ID INTEGER, QUALITY_ID INTEGER, VALUE INTEGER, constraint AMMUNITION_QUALITIES_pk primary key (ITEM_ID, QUALITY_ID) );
CREATE TABLE IF NOT EXISTS "ARMOUR" ( ID integer not null constraint ARMOUR_pk primary key autoincrement, NAME text, HEAD_AP integer default 0 not null, BODY_AP integer default 0 not null, LEFT_ARM_AP integer default 0 not null, RIGHT_ARM_AP integer default 0 not null, LEFT_LEG_AP integer default 0 not null, RIGHT_LEG_AP integer default 0 not null, ENCUMBRANCE INTEGER default 0 not null );
CREATE TABLE IF NOT EXISTS "ARMOUR_QUALITIES" ( ITEM_ID INTEGER not null references ARMOUR, QUALITY_ID INTEGER not null references ITEM_QUALITIES, VALUE INTEGER, primary key (ITEM_ID, QUALITY_ID) );
CREATE TABLE IF NOT EXISTS "ATTRIBUTES" ( ID INTEGER not null constraint ATTRIBUTES_PK primary key autoincrement, NAME TEXT not null, SHORT_NAME TEXT not null, DESCRIPTION TEXT not null, CAN_ROLL INTEGER default 1 not null, IMPORTANCE INTEGER default 0 not null );
CREATE TABLE IF NOT EXISTS "CHARACTERS" ( ID INTEGER not null constraint CHARACTERS_pk primary key, NAME TEXT not null, ANCESTRY INTEGER constraint CHARACTERS_SUBRACES_ID_fk references SUBRACES, PROFESSION INTEGER constraint CHARACTERS_PROFESSIONS_ID_fk references PROFESSIONS, SIZE INTEGER constraint CHARACTERS_SIZES_ID_fk references SIZES, constraint SIZE_CHECK check (NOT (SIZE IS NULL AND ANCESTRY IS NULL)) );
CREATE TABLE IF NOT EXISTS "CHARACTER_ARMOUR" ( ARMOUR_ID integer, CHARACTER_ID integer, AMOUNT integer, constraint CHARACTER_ARMOUR_pk primary key (ARMOUR_ID, CHARACTER_ID) );
CREATE TABLE IF NOT EXISTS "CHARACTER_ATTRIBUTES" ( ATTRIBUTE_ID INTEGER not null, CHARACTER_ID INTEGER not null, BASE_VALUE INTEGER default 0 not null, ADVANCES INTEGER default 0 not null, CAN_ADVANCE BOOLEAN default FALSE not null, constraint CHARACTER_ATTRIBUTES_pk primary key (ATTRIBUTE_ID, CHARACTER_ID) );
CREATE TABLE IF NOT EXISTS "CHARACTER_MELEE_WEAPONS" ( WEAPON_ID integer, CHARACTER_ID integer, AMOUNT integer, constraint CHARACTER_MELEE_WEAPONS_pk primary key (WEAPON_ID, CHARACTER_ID) );
CREATE TABLE IF NOT EXISTS "CHARACTER_RANGED_WEAPONS" ( WEAPON_ID integer, CHARACTER_ID integer, AMOUNT integer, primary key (WEAPON_ID, CHARACTER_ID) );
CREATE TABLE IF NOT EXISTS CHARACTER_SKILLS ( SKILL_ID integer not null, CHARACTER_ID integer not null, ADVANCES integer default 0 not null, CAN_ADVANCE boolean default false not null, EARNING boolean default false not null, constraint CHARACTER_SKILLS_pk primary key (SKILL_ID, CHARACTER_ID) );
CREATE TABLE IF NOT EXISTS "CHARACTER_TALENTS" ( TALENT_ID integer, CHARACTER_ID integer, LEVEL integer, CAN_ADVANCE boolean, constraint CHARACTER_TALENTS_pk primary key (TALENT_ID, CHARACTER_ID) );
CREATE TABLE IF NOT EXISTS "ITEMS" ( ID INTEGER not null constraint ITEMS_pk primary key autoincrement, NAME TEXT, COST INTEGER, ENCUMBRANCE INTEGER, AVAILABILITY TEXT , CATEGORY TEXT);
CREATE TABLE IF NOT EXISTS "ITEM_QUALITIES" ( ID INTEGER not null constraint QUALITIES_pk primary key autoincrement, NAME TEXT not null, POSITIVE INTEGER not null, EQUIPMENT TEXT, DESCRIPTION TEXT );
CREATE TABLE IF NOT EXISTS "NPC_TRAITS" ( ID INTEGER not null constraint TRAITS_pk primary key autoincrement, NAME TEXT not null, DESCRIPTION TEXT not null );
CREATE TABLE IF NOT EXISTS "PROFESSIONS" ( ID integer not null constraint PROFESSIONS_pk primary key autoincrement, NAME text not null, LEVEL integer default 1 not null, SOURCE text default 'Main Rulebook' not null, CAREER_ID INTEGER references PROFESSION_CAREERS );
CREATE TABLE IF NOT EXISTS "PROFESSION_ATTRIBUTES" ( PROFESSION_ID INTEGER not null references PROFESSIONS, ATTRIBUTE_ID INTEGER not null references ATTRIBUTES, constraint PROF_ATTRIBUTES_PK primary key (PROFESSION_ID, ATTRIBUTE_ID) );
CREATE TABLE IF NOT EXISTS "PROFESSION_CAREERS" ( ID INTEGER not null constraint CAREERS_pk primary key autoincrement, NAME TEXT not null, CLASS_ID INTEGER references PROFESSION_CLASSES, SOURCE TEXT default 'Main Rulebook' not null );
CREATE TABLE IF NOT EXISTS "PROFESSION_CLASSES" ( ID INTEGER not null constraint CLASSES_pk primary key autoincrement, NAME TEXT, SOURCE TEXT default 'Main Rulebook' not null );
CREATE TABLE IF NOT EXISTS "PROFESSION_RND_TABLE" ( ID INTEGER not null constraint PROFTABLE_pk primary key autoincrement, IDX_DOWN INTEGER not null, IDX_UP INTEGER not null, RACE_ID INTEGER not null references SUBRACES, PROF_ID INTEGER not null references PROFESSIONS );
CREATE TABLE IF NOT EXISTS "PROFESSION_SKILLS" ( PROFESSION_ID integer constraint PROFESSION_SKILLS2_PROFESSIONS_ID_fk references PROFESSIONS, EARNING integer, SKILL_ID integer constraint PROFESSION_SKILLS2_SKILLS_ID_fk references SKILLS, BASE_SKILL_ID integer constraint PROFESSION_SKILLS2_SKILLS_BASE_ID_fk references SKILLS_BASE, SKILL_GROUP_ID integer constraint PROFESSION_SKILLS2_SKILL_GROUPS_ID_fk references SKILL_GROUPS, constraint PROFESSION_SKILLS2_pk primary key (PROFESSION_ID, SKILL_ID, BASE_SKILL_ID, SKILL_GROUP_ID) );
CREATE TABLE IF NOT EXISTS PROFESSION_TALENTS ( PROFESSION_ID integer references PROFESSIONS, TALENT_ID integer references TALENTS, BASE_TALENT_ID integer references TALENTS_BASE, TALENT_GROUP_ID integer references TALENT_GROUPS, constraint PROFESSION_TALENTS_pk primary key (PROFESSION_ID, TALENT_ID, BASE_TALENT_ID, TALENT_GROUP_ID) );
CREATE TABLE IF NOT EXISTS "RACES" ( ID integer not null constraint RACES_pk primary key, NAME TEXT not null, SIZE INTEGER references SIZES, SRC TEXT default 'Main Rulebook' );
CREATE TABLE IF NOT EXISTS "RACE_ATTRIBUTES" ( RACE_ID INTEGER not null references RACES, ATTR_ID INTEGER not null references ATTRIBUTES, VALUE INTEGER not null, constraint RACE_ATTRIBUTES_pk primary key (RACE_ID, ATTR_ID) );
CREATE TABLE IF NOT EXISTS "RACE_CAREERS" ( RACE_ID INTEGER references RACES, CAREER_ID INTEGER references "PROFESSION_CAREERS", constraint RACE_CAREERS_pk primary key (RACE_ID, CAREER_ID) );
CREATE TABLE IF NOT EXISTS "RACE_RND_TABLE" ( ID INTEGER not null primary key autoincrement, IDX_DOWN INTEGER not null, IDX_UP INTEGER not null, RACE_ID INTEGER not null references RACES );
CREATE TABLE IF NOT EXISTS "SIZES" ( ID integer not null primary key autoincrement, NAME TEXT not null, SOURCE TEXT default 'Main Rulebook' not null );
CREATE TABLE IF NOT EXISTS "SKILLS" ( ID integer constraint SKILLS_pk primary key, NAME text not null, SPECIALISATION text, BASE_SKILL_ID integer not null constraint SKILLS_SKILLS_BASE_ID_fk references SKILLS_BASE );
CREATE TABLE IF NOT EXISTS "SKILLS_BASE" ( ID integer constraint _SKILLS_pk primary key, NAME text, DESCRIPTION text, ADVANCED boolean, GROUPED boolean, ATTRIBUTE_ID integer constraint _SKILLS_ATTRIBUTES_ID_fk references ATTRIBUTES );
CREATE TABLE IF NOT EXISTS "SKILL_GROUPS" ( ID integer constraint NEW_SKILL_GROUPS_pk primary key autoincrement, NAME text, CLOSED boolean );
CREATE TABLE IF NOT EXISTS "SKILL_GROUPS_HIERARCHY" ( PARENT_ID integer constraint NEW_SKILL_GROUPS_HIERARCHY_NEW_SKILL_GROUPS_ID_fk references SKILL_GROUPS, CHILD_ID integer constraint _NEW_SKILL_GROUPS_HIERARCHY_NEW_SKILL_SPECIALISATIONS_ID_fk references SKILLS, constraint SKILL_GROUPS_HIERARCHY_pk primary key (PARENT_ID, CHILD_ID) );
CREATE TABLE IF NOT EXISTS "SUBRACES" ( ID INTEGER not null constraint SUBRACES_pk primary key autoincrement, NAME TEXT not null, RACE_ID INTEGER not null, SRC TEXT default 'Main Rulebook' not null, RANDOM_TALENTS INTEGER default 0 not null, DEF INTEGER );
CREATE TABLE IF NOT EXISTS "SUBRACE_SKILLS" ( SUBRACE_ID integer constraint _SUBRACE_SKILLS_SUBRACES_ID_fk references SUBRACES, SKILL_ID integer constraint _SUBRACE_SKILLS__SKILLS_ID_fk references "SKILLS", BASE_SKILL_ID integer constraint _SUBRACE_SKILLS__SKILLS_BASE_ID_fk references "SKILLS_BASE", SKILL_GROUP_ID integer constraint _SUBRACE_SKILLS__SKILL_GROUPS_ID_fk references "SKILL_GROUPS", constraint _SUBRACE_SKILLS_pk primary key (SUBRACE_ID, SKILL_ID, BASE_SKILL_ID, SKILL_GROUP_ID) );
CREATE TABLE IF NOT EXISTS "SUBRACE_TALENTS" ( SUBRACE_ID INTEGER not null references SUBRACES, TALENT_ID INTEGER references TALENTS, BASE_TALENT_ID integer constraint SUBRACE_TALENTS_TALENTS_BASE_ID_fk references TALENTS_BASE, TALENT_GROUP_ID integer constraint SUBRACE_TALENTS_SKILL_GROUPS_ID_fk references SKILL_GROUPS, constraint SUBRACE_TALENTS_pk primary key (SUBRACE_ID, TALENT_ID, BASE_TALENT_ID, TALENT_GROUP_ID) );
CREATE TABLE IF NOT EXISTS "TALENTS" ( ID INTEGER not null constraint TALENTS_NEW_pk primary key autoincrement, NAME TEXT not null, SPECIALISATION TEXT, BASE_TALENT_ID INTEGER not null references TALENTS_BASE, check (SPECIALISATION IS NULL OR BASE_TALENT_ID IS NOT NULL) );
CREATE TABLE IF NOT EXISTS "TALENTS_BASE" ( ID INTEGER not null constraint TALENTS_BASE_pk primary key autoincrement, NAME TEXT not null, DESCRIPTION TEXT not null, SOURCE TEXT default 'Main Rulebook' not null, CONST_LVL INTEGER, MAX_LVL INTEGER constraint TALENTS_BASE_ATTRIBUTES_ID_fk references ATTRIBUTES, GROUPED boolean, check (MAX_LVL IS NULL OR CONST_LVL IS NULL) );
CREATE TABLE IF NOT EXISTS "TALENTS_HIERARCHY" ( PARENT_ID INTEGER not null references TALENTS, CHILD_ID INTEGER references TALENTS, constraint TALENTS_HIERARCHY_PK primary key (PARENT_ID, CHILD_ID) );
CREATE TABLE IF NOT EXISTS "TALENTS_RND_TABLE" ( ID INTEGER not null constraint TALENTS_RND_TABLE_pk primary key autoincrement, IDX_DOWN INTEGER not null, IDX_UP INTEGER not null, TALENT_ID INTEGER not null references TALENTS );
CREATE TABLE IF NOT EXISTS "TALENT_GROUPS" ( ID integer constraint TALENT_GROUPS_pk primary key, NAME text, CLOSED boolean, RANDOM_TALENT BOOLEAN default 0 not null );
CREATE TABLE IF NOT EXISTS "TALENT_GROUPS_HIERARCHY" ( PARENT_ID integer constraint TALENT_GROUPS_HIERARCHY_TALENT_GROUPS_ID_fk references TALENT_GROUPS, CHILD_ID integer constraint TALENT_GROUPS_HIERARCHY_TALENTS_ID_fk references TALENTS, constraint TALENT_GROUPS_HIERARCHY_pk primary key (PARENT_ID, CHILD_ID) );
CREATE TABLE IF NOT EXISTS "TALENT_TESTS" ( TALENT_ID INTEGER not null references TALENTS, ID INTEGER not null, COMMENT TEXT, BASE_SKILL_ID INTEGER references SKILLS_BASE, SKILL_ID INTEGER references SKILLS, ATTRIBUTE_ID INTEGER references ATTRIBUTES, constraint TALENT_TESTS_pk primary key (TALENT_ID, ID) );
CREATE TABLE IF NOT EXISTS "WEAPONS_MELEE" ( ID INTEGER not null constraint WEAPONS_pk primary key autoincrement, NAME TEXT not null, SKILL INTEGER references SKILLS, LENGTH INTEGER references WEAPON_LENGTHS, DAMAGE INTEGER not null, DAMAGE_ATTRIBUTE INTEGER constraint WEAPONS_MELEE_ATTRIBUTES_ID_fk references ATTRIBUTES, TWO_HANDED integer default 0 not null , ITEM_CATEGORY TEXT default 'MELEE_WEAPONS');
CREATE TABLE IF NOT EXISTS "WEAPONS_MELEE_QUALITIES" ( ITEM_ID INTEGER not null references WEAPONS_MELEE, QUALITY_ID INTEGER not null references ITEM_QUALITIES, VALUE integer, constraint WEAPONS_MELEE_QUALITIES_pk primary key (ITEM_ID, QUALITY_ID) );
CREATE TABLE IF NOT EXISTS "WEAPONS_RANGED" ( ID integer not null constraint WEAPONS_RANGED_pk primary key autoincrement, NAME text not null, SKILL integer references SKILLS, WEAPON_RANGE INTEGER default 0 not null, RANGE_ATTRIBUTE INTEGER constraint WEAPONS_RANGED_ATTRIBUTES_ID_fk references ATTRIBUTES, DAMAGE INTEGER default 0 not null, DAMAGE_ATTRIBUTE INTEGER references ATTRIBUTES, USE_AMMO INTEGER default 1 not null, TWO_HANDED INTEGER default 0 not null , ITEM_CATEGORY TEXT default 'RANGED_WEAPONS');
CREATE TABLE IF NOT EXISTS "WEAPONS_RANGED_QUALITIES" ( ITEM_ID integer references WEAPONS_RANGED, QUALITY_ID integer references ITEM_QUALITIES, VALUE integer, constraint WEAPONS_RANGED_QUALITIES_pk primary key (ITEM_ID, QUALITY_ID) );
CREATE TABLE IF NOT EXISTS "WEAPON_LENGTHS" ( ID integer not null constraint LENGTHS_pk primary key autoincrement, NAME TEXT not null, DESCRIPTION TEXT not null, SOURCE TEXT default 'Main Rulebook' not null );
CREATE UNIQUE INDEX RACETABLE_2_ID_uindex on RACE_RND_TABLE (ID);
CREATE UNIQUE INDEX PROFTABLE_ID_uindex on "PROFESSION_RND_TABLE" (ID);
CREATE UNIQUE INDEX TRAITS_ID_uindex on NPC_TRAITS (ID);
CREATE UNIQUE INDEX CLASSES_ID_uindex on PROFESSION_CLASSES (ID);
CREATE UNIQUE INDEX ATTRIBUTES_IDX on ATTRIBUTES (ID);
CREATE UNIQUE INDEX SIZES_ID_uindex on SIZES (ID);
CREATE UNIQUE INDEX LENGTHS_ID_uindex on WEAPON_LENGTHS (ID);
CREATE UNIQUE INDEX QUALITIES_ID_uindex on ITEM_QUALITIES (ID);
CREATE UNIQUE INDEX WEAPONS_RANGED_ID_uindex on WEAPONS_RANGED (ID);
CREATE UNIQUE INDEX WEAPONS_ID_uindex on WEAPONS_MELEE (ID);
CREATE UNIQUE INDEX AMMUNITION_ID_uindex on "AMMUNITION" (ID);
CREATE UNIQUE INDEX ITEMS_ID_uindex on ITEMS (ID);
CREATE UNIQUE INDEX ITEMS_NAME_uindex on ITEMS (NAME);
CREATE UNIQUE INDEX RACES_ID_uindex on RACES (ID);
CREATE UNIQUE INDEX ARMOUR_ID_uindex on ARMOUR (ID);
33 changes: 33 additions & 0 deletions assets/localisation/interface_en.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
en:
CHARACTER_SELECTION_SCREEN_TITLE: "Select a character"
TURN_ORDER_SCREEN_TITLE: "Turn order"
PROCEED: "Proceed"
CANCEL: "Cancel"
PREVIOUS: "Previous"
NEXT: "Next"
ADD: "Add"
ROUND: "Round"
CURRENT: "Current"
REMOVE_CHARACTER_PROMPT: "Remove a character"
REMOVE_CHARACTER_PROMPT_DESC: "Are you sure you want to remove this character from the fight?"
ADD_CHARACTER: "Add a character"
ADD_WEAPON: "Add a weapon"
DO_NOTHING: "Do nothing"

SET_POLISH: "Set language to polish"
SET_ENGLISH: "Set language to english"

NAME: "Name"
RACE: "Race"
NEW_RACE: "New Race"
SIZE: "Size"
PROFESSION: "Profession"
ATTRIBUTES: "Attributes"
SKILLS: "Skills"
BASIC_SKILLS: "Basic skills"
ADVANCED_SKILLS: "Advanced skills"
TALENTS: "Talents"
RANDOM_TALENTS: "Random Talents"
ARMOUR: "Armour"
MELEE_WEAPONS: "Melee Weapons"
RANGED_WEAPONS: "Ranged Weapons"
33 changes: 33 additions & 0 deletions assets/localisation/interface_pl.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
pl:
CHARACTER_SELECTION_SCREEN_TITLE: "Wybierz postać"
TURN_ORDER_SCREEN_TITLE: "Kolejność ruchów"
PROCEED: "Kontynuuj"
CANCEL: "Anuluj"
PREVIOUS: "Poprzednia"
NEXT: "Następna"
ADD: "Dodaj"
ROUND: "Runda"
CURRENT: "Teraz"
REMOVE_CHARACTER_PROMPT: "Usuń postać"
REMOVE_CHARACTER_PROMPT_DESC: "Czy na pewno chcesz usunąć tę postać z tej walki?"
ADD_CHARACTER: "Dodaj postać"
ADD_WEAPON: "Dodaj broń"
DO_NOTHING: "Pomidor"

SET_POLISH: "Zmień język na polski"
SET_ENGLISH: "Zmień język na angielski"

NAME: "Nazwa"
RACE: "Rasa"
NEW_RACE: "Nowa Rasa"
SIZE: "Rozmiar"
PROFESSION: "Profesja"
ATTRIBUTES: "Atrybuty"
SKILLS: "Umiejętności"
BASIC_SKILLS: "Umiejętności Podstawowe"
ADVANCED_SKILLS: "Umiejętności Zaawansowane"
TALENTS: "Talenty"
RANDOM_TALENTS: "Losowe Talenty"
ARMOUR: "Pancerze"
MELEE_WEAPONS: "Broń Biała"
RANGED_WEAPONS: "Broń Zasięgowa"
Loading

0 comments on commit 7e3b8a6

Please sign in to comment.