Moves genders to an array.

Adds some trans genders.
Adds some utility methods to simplify displaying a menu and choosing a string id from a list of strings.
This commit is contained in:
2023-03-01 02:12:31 -08:00
parent 59ede6b633
commit e412da06e8
2 changed files with 60 additions and 12 deletions

View File

@@ -186,6 +186,14 @@ Const BACKGROUND_STATUS = 10
Const BACKGROUNDS_COUNT = 10
Dim Shared Backgrounds(1 To BACKGROUNDS_COUNT) As String
Const GENDER_MALE = 1
Const GENDER_FEMALE = 2
Const GENDER_TRANS_MALE = 3
Const GENDER_TRANS_FEMALE = 4
Const GENDER_NON_BINARY = 5
Const GENDERS_COUNT = 5
Dim Shared Genders(1 To GENDERS_COUNT) As String
Type CharacterType
name As String
player As String
@@ -482,6 +490,13 @@ Sub InitializeMemory
Backgrounds(BACKGROUND_RESOURCES) = "Resources"
Backgrounds(BACKGROUND_RETAINERS) = "Retainers"
Backgrounds(BACKGROUND_STATUS) = "Status"
' Genders
Genders(GENDER_MALE) = "Male"
Genders(GENDER_FEMALE) = "Female"
Genders(GENDER_TRANS_MALE) = "Trans-Male"
Genders(GENDER_TRANS_FEMALE) = "Trans-Female"
Genders(GENDER_NON_BINARY) = "Non-Binary"
End Sub
Sub SplashScreen
@@ -584,8 +599,7 @@ Function GetChoice (min As Integer, max As Integer)
End Function
Function GetMenuChoice (items() As MenuItem, style As MenuStyle, count As Integer)
' pull showrandom from style
' only allow random id or an id from a visible menuitem
' Only allow random id or an id from a visible menuitem.
choice = -1
acceptChoice = FALSE
Do
@@ -1157,17 +1171,47 @@ Sub NewCharacter (ch As CharacterType)
Next
End Sub
Sub BuildMenu (items() As MenuItem, labels() As String, count As Integer)
ReDim items(1 To count) As MenuItem
For i = 1 To count
Dim mi As MenuItem
Call NewMenuItem(mi, labels(i), i)
items(i) = mi
Next
End Sub
Sub BuildMenuWithValues (items() As MenuItem, labels() As String, values() As Integer, count As Integer)
ReDim items(1 To count) As MenuItem
For i = 1 To count
Dim mi As MenuItem
Call NewMenuItemWithValue(mi, labels(i), i, values(i))
items(i) = mi
Next
End Sub
Function ChooseStringId (labels() As String, style As MenuStyle, count As Integer, prompt As String)
Cls
Dim mnuItems(1 To count) As MenuItem
Call BuildMenu(mnuItems(), labels(), count)
Call AdjustMenuStyle(style, mnuItems(), count, TRUE)
Print prompt
Call pm(mnuItems(), count, style)
choice = GetMenuChoice(mnuItems(), style, count)
If choice = style.randomItemId Then choice = GetRandomMenuItemId(mnuItems(), style, count)
ChooseStringId = choice
End Function
Sub CGGetHeader (ch As CharacterType)
Cls
Dim ms As MenuStyle
Call NewMenuStyle(ms)
Input "What is the character's name? ", ch.name
Input "Who is the player? ", ch.player
Input "What chronicle is the character going to be used for? ", ch.chronicle
Input "What is the character's Haven? ", ch.haven
Input "What is the character's concept? ", ch.concept
Input "How old is the character? ", ch.age
Print "What is the sex of the character? 1 = Male 2 = Female 0 = Random"
ch.gender = GetChoice(0, 2)
If ch.gender = 0 Then ch.gender = GetRandomInt(1, 2)
ch.gender = ChooseStringId(Genders(), ms, GENDERS_COUNT, "What is the character's gender?")
Cls
Print "What Clan is the character from?"
Call PrintMenu(Clans(), CLANS_COUNT)
@@ -1401,8 +1445,6 @@ Sub ShowCharacterSheet (ch As CharacterType)
'230 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>
' enquote forms s/^([ɺ<><C9BA><EFBFBD>].*[<5B><><EFBFBD><EFBFBD>])$/print "$1"/g
' TODO: make this a string or pull from an array like Genders so we can suppor enby and maybe make trans explicit
If ch.gender = 1 Then genderString$ = "Male" Else genderString$ = "Female"
clanName$ = Clans(ch.clan)
Dim disciplineStrings(3) As String
@@ -1433,7 +1475,7 @@ Sub ShowCharacterSheet (ch As CharacterType)
Cls
Print "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ"
Print "<22> Name: " + MakeFitL$(ch.name, 30, " ") + " <20> Sex: " + MakeFitL$(genderString$, 10, " ") + " Generation: " + MakeFitL$(itos$(ch.generation), 9, " ") + " <20>"
Print "<22> Name: " + MakeFitL$(ch.name, 30, " ") + " <20> Sex: " + MakeFitL$(Genders(ch.gender), 10, " ") + " Generation: " + MakeFitL$(itos$(ch.generation), 9, " ") + " <20>"
Print "<22> Clan: " + MakeFitL$(clanName$, 30, " ") + " <20> Age: " + MakeFitL$(ch.age$, 32, " ") + " <20>"
Print "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͹ Player: " + MakeFitL$(ch.player$, 29, " ") + " <20>"
Print "<22> Attributes <20> Chronicle: " + MakeFitL$(ch.chronicle$, 26, " ") + " <20>"