diff --git a/changelog.md b/changelog.md
index c32b3f8..aaa900b 100644
--- a/changelog.md
+++ b/changelog.md
@@ -14,6 +14,8 @@
> ---
> ###
Pre-alpha 3b
+> - QoL
+> - You can now go back to previous option in character creation menu
> - Technicals
> - System-accepted languages are now referenced from `system_ref` which makes them
> less hardcoded and even editable through scripts/mods
diff --git a/core/graphics/gui_types.py b/core/graphics/gui_types.py
index da3a429..8d83d8e 100644
--- a/core/graphics/gui_types.py
+++ b/core/graphics/gui_types.py
@@ -69,12 +69,13 @@ def gui_handler(screen, guitype, fg_events, pg_events, tev, dyn_screen):
elif mouseColliderPx(gt3[0], gt3[1], gt3[2], gt3[3]):
#put_text(screen, text=langstring("menu__button_arena"), font_cat="menu", size=30, align_x="center", pos_y=40, colour="#7C613B")
- for event in pg_events:
- if event.type == pygame.KEYDOWN or event.type == pygame.K_t:
- # placeholder data to test
- dyn_screen.journey.name = "Test"
- dyn_screen.journey.location = "ansur:tutorial"
- guitype[0] = switch_gscr(dyn_screen, screen, "location")
+ # for event in pg_events:
+ # if event.type == pygame.KEYDOWN or event.type == pygame.K_t:
+ # # placeholder data to test
+ # dyn_screen.journey.name = "Test"
+ # dyn_screen.journey.location = "ansur:tutorial"
+ # guitype[0] = switch_gscr(dyn_screen, screen, "location")
+ pass
elif mouseColliderPx(gt4[0], gt4[1], gt4[2], gt4[3]):
put_text(screen, text=langstring("menu__button_settings"), font_cat="menu", size=30, align_x="center", pos_y=46, colour="#7C613B")
@@ -336,7 +337,9 @@ def gui_handler(screen, guitype, fg_events, pg_events, tev, dyn_screen):
put_text(screen, text=langstring(f"ccrt__gen_category{nm+2}"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=18+(8*nm), colour=fCol.ENABLED.value)
# visualisation of which option is currently active
if dyn_screen.journey.stage == nm:
- put_text(screen, text=langstring(f"ccrt__gen_category{nm+1}"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=10+(8*nm), colour=ccrt_col["active"])
+ if nm >= 1:
+ put_text(screen, text=langstring(f"ccrt__gen_category{nm}"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=2+(8*nm), colour=fCol.ENABLED.value) # go back
+ put_text( screen, text=langstring(f"ccrt__gen_category{nm+1}"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=10+(8*nm), colour=ccrt_col["active"]) # current
# https://github.com/Toma400/The_Isle_of_Ansur/commit/5305aef7e9b3b0cce483a30ade7cbc3f1e006e57 <- old (more manual) code for above ^
@@ -521,54 +524,117 @@ def gui_handler(screen, guitype, fg_events, pg_events, tev, dyn_screen):
dyn_screen.reset_pgui(True)
dyn_screen.journey.stage = None
- # elif mouseColliderPx(mn1[0], mn1[1], mn1[2], mn1[3]):
- # put_text(screen, text=langstring("ccrt__gen_category1"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=10, colour=fCol.HOVERED.value)
- # if mouseRec(pg_events):
- # guitype[1] = switch_gscr(dyn_screen, screen, "gender")
- # dyn_screen.reset_pgui()
-
- elif mouseColliderPx(mn2[0], mn2[1], mn2[2], mn2[3]) and guitype[1] == "gender" and dyn_screen.journey.stages[0] is True:
- put_text(screen, text=langstring("ccrt__gen_category2"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=18, colour=fCol.HOVERED.value)
+ elif mouseColliderPx(mn1[0], mn1[1], mn1[2], mn1[3]) and guitype[1] == "race":
+ put_text(screen, text=langstring("ccrt__gen_category1"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=10, colour=fCol.HOVERED.value)
if mouseRec(pg_events):
- guitype[1] = switch_gscr(dyn_screen, screen, "race")
+ dyn_screen.journey.stages[1] = False
+ guitype[1] = switch_gscr(dyn_screen, screen, "gender")
dyn_screen.reset_pgui()
- elif mouseColliderPx(mn3[0], mn3[1], mn3[2], mn3[3]) and guitype[1] == "race" and dyn_screen.journey.stages[1] is True:
- put_text(screen, text=langstring("ccrt__gen_category3"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=26, colour=fCol.HOVERED.value)
- if mouseRec(pg_events):
- guitype[1] = switch_gscr(dyn_screen, screen, "class")
- dyn_screen.reset_pgui()
+ elif mouseColliderPx(mn2[0], mn2[1], mn2[2], mn2[3]):
+ # go next
+ if guitype[1] == "gender" and dyn_screen.journey.stages[0] is True:
+ put_text(screen, text=langstring("ccrt__gen_category2"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=18, colour=fCol.HOVERED.value)
+ if mouseRec(pg_events):
+ guitype[1] = switch_gscr(dyn_screen, screen, "race")
+ dyn_screen.reset_pgui()
+ # go back
+ if guitype[1] == "class":
+ put_text(screen, text=langstring("ccrt__gen_category2"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=18, colour=fCol.HOVERED.value)
+ if mouseRec(pg_events):
+ dyn_screen.journey.stages[2] = False
+ guitype[1] = switch_gscr(dyn_screen, screen, "race")
+ dyn_screen.reset_pgui()
- elif mouseColliderPx(mn4[0], mn4[1], mn4[2], mn4[3]) and guitype[1] == "class" and dyn_screen.journey.stages[2] is True:
- put_text(screen, text=langstring("ccrt__gen_category4"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=34, colour=fCol.HOVERED.value)
- if mouseRec(pg_events):
- guitype[1] = switch_gscr(dyn_screen, screen, "name_avatar")
- dyn_screen.reset_pgui()
+ elif mouseColliderPx(mn3[0], mn3[1], mn3[2], mn3[3]):
+ # go next
+ if guitype[1] == "race" and dyn_screen.journey.stages[1] is True:
+ put_text(screen, text=langstring("ccrt__gen_category3"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=26, colour=fCol.HOVERED.value)
+ if mouseRec(pg_events):
+ guitype[1] = switch_gscr(dyn_screen, screen, "class")
+ dyn_screen.reset_pgui()
+ # go back
+ if guitype[1] == "name_avatar":
+ put_text(screen, text=langstring("ccrt__gen_category3"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=26, colour=fCol.HOVERED.value)
+ if mouseRec(pg_events):
+ dyn_screen.journey.stages[3] = False
+ guitype[1] = switch_gscr(dyn_screen, screen, "class")
+ dyn_screen.reset_pgui()
- elif mouseColliderPx(mn5[0], mn5[1], mn5[2], mn5[3]) and guitype[1] == "name_avatar" and dyn_screen.journey.stages[3] is True:
- put_text(screen, text=langstring("ccrt__gen_category5"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=42, colour=fCol.HOVERED.value)
- if mouseRec(pg_events):
- guitype[1] = switch_gscr(dyn_screen, screen, "point_distribution")
- dyn_screen.reset_pgui()
+ elif mouseColliderPx(mn4[0], mn4[1], mn4[2], mn4[3]):
+ # go next
+ if guitype[1] == "class" and dyn_screen.journey.stages[2] is True:
+ put_text(screen, text=langstring("ccrt__gen_category4"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=34, colour=fCol.HOVERED.value)
+ if mouseRec(pg_events):
+ guitype[1] = switch_gscr(dyn_screen, screen, "name_avatar")
+ dyn_screen.reset_pgui()
+ # go back
+ if guitype[1] == "point_distribution":
+ put_text(screen, text=langstring("ccrt__gen_category4"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=34, colour=fCol.HOVERED.value)
+ if mouseRec(pg_events):
+ dyn_screen.journey.stages[4] = False
+ guitype[1] = switch_gscr(dyn_screen, screen, "name_avatar")
+ dyn_screen.reset_pgui()
- elif mouseColliderPx(mn6[0], mn6[1], mn6[2], mn6[3]) and guitype[1] == "point_distribution" and dyn_screen.journey.stages[4] is True:
- put_text(screen, text=langstring("ccrt__gen_category6"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=50, colour=fCol.HOVERED.value)
- if mouseRec(pg_events):
- guitype[1] = switch_gscr(dyn_screen, screen, "religion")
- dyn_screen.reset_pgui()
+ elif mouseColliderPx(mn5[0], mn5[1], mn5[2], mn5[3]):
+ # go next
+ if guitype[1] == "name_avatar" and dyn_screen.journey.stages[3] is True:
+ put_text(screen, text=langstring("ccrt__gen_category5"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=42, colour=fCol.HOVERED.value)
+ if mouseRec(pg_events):
+ guitype[1] = switch_gscr(dyn_screen, screen, "point_distribution")
+ dyn_screen.reset_pgui()
+ # go back
+ if guitype[1] == "religion":
+ put_text(screen, text=langstring("ccrt__gen_category5"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=42, colour=fCol.HOVERED.value)
+ if mouseRec(pg_events):
+ dyn_screen.journey.stages[5] = False
+ guitype[1] = switch_gscr(dyn_screen, screen, "point_distribution")
+ dyn_screen.reset_pgui()
- elif mouseColliderPx(mn7[0], mn7[1], mn7[2], mn7[3]) and guitype[1] == "religion" and dyn_screen.journey.stages[5] is True:
- put_text(screen, text=langstring("ccrt__gen_category7"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=58, colour=fCol.HOVERED.value)
- if mouseRec(pg_events):
- guitype[1] = switch_gscr(dyn_screen, screen, "origin")
- dyn_screen.reset_pgui()
+ elif mouseColliderPx(mn6[0], mn6[1], mn6[2], mn6[3]):
+ # go next
+ if guitype[1] == "point_distribution" and dyn_screen.journey.stages[4] is True:
+ put_text(screen, text=langstring("ccrt__gen_category6"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=50, colour=fCol.HOVERED.value)
+ if mouseRec(pg_events):
+ guitype[1] = switch_gscr(dyn_screen, screen, "religion")
+ dyn_screen.reset_pgui()
+ # go back
+ if guitype[1] == "origin":
+ put_text(screen, text=langstring("ccrt__gen_category6"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=50, colour=fCol.HOVERED.value)
+ if mouseRec(pg_events):
+ dyn_screen.journey.stages[6] = False
+ guitype[1] = switch_gscr(dyn_screen, screen, "religion")
+ dyn_screen.reset_pgui()
- elif mouseColliderPx(mn8[0], mn8[1], mn8[2], mn8[3]) and guitype[1] == "origin" and dyn_screen.journey.stages[6] is True:
- put_text(screen, text=langstring("ccrt__gen_category8"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=66, colour=fCol.HOVERED.value)
- if mouseRec(pg_events):
- guitype[1] = switch_gscr(dyn_screen, screen, "gameplay_settings")
- dyn_screen.reset_pgui()
+ elif mouseColliderPx(mn7[0], mn7[1], mn7[2], mn7[3]):
+ # go next
+ if guitype[1] == "religion" and dyn_screen.journey.stages[5] is True:
+ put_text(screen, text=langstring("ccrt__gen_category7"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=58, colour=fCol.HOVERED.value)
+ if mouseRec(pg_events):
+ guitype[1] = switch_gscr(dyn_screen, screen, "origin")
+ dyn_screen.reset_pgui()
+ # go back
+ if guitype[1] == "gameplay_settings":
+ put_text(screen, text=langstring("ccrt__gen_category7"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=58, colour=fCol.HOVERED.value)
+ if mouseRec(pg_events):
+ dyn_screen.journey.stages[7] = False
+ guitype[1] = switch_gscr(dyn_screen, screen, "origin")
+ dyn_screen.reset_pgui()
+ elif mouseColliderPx(mn8[0], mn8[1], mn8[2], mn8[3]):
+ # go next
+ if guitype[1] == "origin" and dyn_screen.journey.stages[6] is True:
+ put_text(screen, text=langstring("ccrt__gen_category8"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=66, colour=fCol.HOVERED.value)
+ if mouseRec(pg_events):
+ guitype[1] = switch_gscr(dyn_screen, screen, "gameplay_settings")
+ dyn_screen.reset_pgui()
+ # go back
+ if guitype[1] == "summary":
+ put_text(screen, text=langstring("ccrt__gen_category8"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=66, colour=fCol.HOVERED.value)
+ if mouseRec(pg_events):
+ dyn_screen.journey.stages[8] = False
+ guitype[1] = switch_gscr(dyn_screen, screen, "gameplay_settings")
+ dyn_screen.reset_pgui()
elif mouseColliderPx(mn9[0], mn9[1], mn9[2], mn9[3]) and guitype[1] == "gameplay_settings" and dyn_screen.journey.stages[7] is True:
put_text(screen, text=langstring("ccrt__gen_category9"), font_cat="menu", size=30, align_x="left", pos_x=5, pos_y=74, colour=fCol.HOVERED.value)