From ffe1c7594724a8e4d130deeba193a10acfae3639 Mon Sep 17 00:00:00 2001 From: deadvey Date: Sun, 3 May 2026 02:58:16 +0100 Subject: [PATCH] started implementing server side choice mechanics --- .~lock.report.odt# | 2 +- report.odt | Bin 13812 -> 13964 bytes src/.api.rs.swp | Bin 12288 -> 0 bytes src/{.character.rs.swp => .parsing.rs.swp} | Bin 12288 -> 12288 bytes src/parsing.rs | 46 ++++++++++++++++++--- src/parsing/strings.rs | 16 ++++++- stories/story.ha | 6 +++ 7 files changed, 62 insertions(+), 8 deletions(-) delete mode 100644 src/.api.rs.swp rename src/{.character.rs.swp => .parsing.rs.swp} (65%) diff --git a/.~lock.report.odt# b/.~lock.report.odt# index 5578e24..76dbfef 100644 --- a/.~lock.report.odt# +++ b/.~lock.report.odt# @@ -1 +1 @@ -,deadvey,linux-pc,30.04.2026 12:49,file:///home/deadvey/.config/libreoffice/4; \ No newline at end of file +,deadvey,linux-pc,03.05.2026 02:13,file:///home/deadvey/.config/libreoffice/4; \ No newline at end of file diff --git a/report.odt b/report.odt index ea7d3612426d6ec5863c549d1bafba70709787ed..dc19a1303a97d75dc1e43beef9da2c2b8fe315f3 100644 GIT binary patch delta 7674 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 delta 7518 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%0D1M=)bUXZxjt(fis?%~%twCG_Nq)ONjS&HMZQ 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 diff --git a/src/.api.rs.swp b/src/.api.rs.swp deleted file mode 100644 index 3d6394f0ac40d2af55c594e14b3af4899c47b9f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 N=M`I7LBr0P0RV}q$lU+{ literal 12288 zcmYc?2=nw+u+%eRU|?VnU|?7k`#DpxD}=#FjDaB~H8G_uwGt$Q7w2T=l~(8$B;!@Y zz`#%kHBdh}KP6SasI<65KO?cAAT=*DFI~U5C|N%_Be5tkxg@nnuc(-iVWaY+Aut*O z#D_p>Nt&(&FN3j>p#eyfvXY{Luuv$7If_R^U^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zNC=b^Ff!CLFfcGd{p$&(8PRAcca$0pfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Ez0XkeI^2P|v}@u$vPy{}1c`f97Xkc*)Pe@Pwa%;SN6o!#REihC}=e47>Ol z7`E^;Fl^*!VCdjyU?}EiU?}8gU`XO;U zGBBLwWnehP%fPUYmw{myF9XAJUIvC9UIvCdUIqp)UIqqrUIqphUIvDTJPZu`co-NK z@Gvm6^Dr>v@h~ui@Gvmg@Gvl_@Gvm2@-Q$w;bvesz|Fw0jGKXB5jO+Fd~ODYx!ep4 zbGR88YPlI0T(}t+oVXbn6u21}u5vLjEZ|~bn9s$)P|wA{5Xi;ApvA?&@Sl@`;V~xz z!(L8kcn!h$9(D3)2#kinXb6mkz-S1JhQN>xfm#Mm|7;D%qGT(pywq|H-_nxQ3J4Rv zj)I6u$IDy=9#H@>)}NJA|xGbc4ZIX|x?HLs*t zlYuiQwL}47hn0dyVsVCVVu4L?Nl|8Ax{iV~Y>}s(f-M85zP>_mYEfolPG)hcLP=LPoDOe>E z^D=W2OEUBGu*wz`<>%#>=EWDKrsbqo;8l{Dmr{_AJq%%{q@)%QQj(vPm6}|F*P`N5 z+-g!QLAeE2IH#xPrKDnyg1p4sR4awN)be-`3l#I!44jADeU>yd|3~-Ww%OWKNxEL(rV9}2u0gH4D30PEPNWdZ(LjoSHa2ce?gp0wV z5H0|UE`+D5!MVP;q^LBx1S$BHqf=6gGRsmmTtJ1jj)F^SF{D_mO4WgtkX5Ogu?)4= z44jTd$vO<2;DSbnffHJOR;B7Na3X7i7W_I4oN2{644lvsNr$1dI8`CJD6u5f%Bq?H E04>y2oB#j- diff --git a/src/parsing.rs b/src/parsing.rs index 5647891..21a84b1 100644 --- a/src/parsing.rs +++ b/src/parsing.rs @@ -12,6 +12,7 @@ use crate:: Mutex, info, debug, + warn, }; @@ -19,7 +20,7 @@ use crate:: // Returns success or an error string pub async fn token_parse( tokens: &Vec<&str>, - mut characters: Arc>>, + characters: Arc>>, data_to_send: Arc>, rx: &Receiver, ) -> Result<(),String> @@ -44,7 +45,7 @@ pub async fn token_parse( let character_name: String = token.chars().skip(1).collect(); info!("Doing something with a character: {}", character_name); // The index is incremented to after the character's instructions - index += match character_parse(index+1, &tokens, character_name, &characters, &data_to_send, &rx).await + index += match character_parse(index+1, &tokens, character_name, &characters, &data_to_send).await { Ok(increment) => increment, Err(error) => return Err(error), @@ -52,14 +53,48 @@ pub async fn token_parse( continue } // Miscelleneous instructions - if token.to_lowercase() == "end" + match token.to_lowercase().as_str() { - info!("END command, exiting"); - return Ok(()) // quit + "end" => + { + info!("END command, exiting"); + return Ok(()) // quit + }, + "choice" => + { + index += match choice_parse(index+1, &tokens).await + { + Ok(increment) => increment, + Err(error) => return Err(error), + } + } + _ => + { + warn!("Invalid command: {}", token); + } } index += 1; } } + +// TODO underdev +async fn choice_parse +( + index: usize, + tokens: &Vec<&str>, +) -> Result +{ + let mut sum_index: usize = index; + let mut choices: Vec = Vec::new(); + // Ensure the index is valid (the index is not beyond the vector) + let (choice_string, counter) = strings::extract_quoted(&tokens[sum_index..]) + .ok_or_else(|| "No choice string".to_string())?; + sum_index += counter; + choices.append(choice_string); + sum_index += strings::closing_char(&tokens[sum_index..], '{','}').unwrap(); //TODO eh + Ok(sum_index + 1) +} + // Parsing character related instructions async fn character_parse ( @@ -68,7 +103,6 @@ async fn character_parse character_name: String, characters: &Arc>>, data_to_send: &Arc>, - rx: &Receiver, ) -> Result { let mut sum_index: usize = index; diff --git a/src/parsing/strings.rs b/src/parsing/strings.rs index c6b1053..a3d0085 100644 --- a/src/parsing/strings.rs +++ b/src/parsing/strings.rs @@ -1,4 +1,18 @@ -pub fn extract_quoted(parts: &[&str]) -> Option<(String, usize)> { +pub fn closing_char(parts: &[&str], open: char, close: char) +-> Result +{ + let mut indentation: usize = 0; + for (index, part) in parts.into_iter().enumerate() + { + if part.contains(open) { indentation += 1; } + if part.contains(close) { indentation -= 1; } + if indentation == 0 { return Ok(index); } + } + Err(()) +} +pub fn extract_quoted(parts: &[&str]) +-> Option<(String, usize)> +{ let mut vec_string = Vec::new(); let mut counter: usize = 0; for part in parts diff --git a/stories/story.ha b/stories/story.ha index 5ce98b6..a8799fb 100644 --- a/stories/story.ha +++ b/stories/story.ha @@ -1,2 +1,8 @@ @tim says "hello world, it's a good day" +choice "choice numero uno" { + @tim says "super sad" +} +or "choice numero duo" { + @tim says "super unsad" +} END