using System; using System.Collections.Generic; using System.Threading; using Newtonsoft.Json; using System.IO; using System.Text.RegularExpressions; namespace creachopedia { class Program { static void Main(string[] args) { var status = "base"; var substatus = 1; var tempdict = new Dictionary(); var creacherdict = JsonConvert.DeserializeObject>(File.ReadAllText("creachopedia.json")); var shortdefs = new Dictionary(){ {"a", "At"}, {"b", "Below"}, {"v", "Above"}, {"n", "None"}, {"w", "Walker"}, {"s", "Swimmer"}, {"h", "Hopper"}, {"f", "Flier"}, {"l", "Slitherer"}, {"i", "Incher"} }; while (true) { switch (status) { case "base": Console.WriteLine("Please input a creacher name, (a) to add a creacher, or (q) to quit 0u0"); break; case "add": switch (substatus) { case 0: Console.WriteLine("please hit enter to continue"); break; case 1: Console.WriteLine("Please enter a name for the creacher! Or type (x) to cancel and step back to the previous category, or (q) to cancel addition entirely."); break; case 2: Console.WriteLine("How many footsies? 0u0 (numerals only plz)"); break; case 3: Console.WriteLine("Please enter a biome (lowercase open text field)"); break; case 4: Console.WriteLine("Please enter a method of locomotion:"); Console.WriteLine("[n]one, [w]alker, [s]wimmer, [h]opper, [f]lier, s[l]itherer, [i]ncher"); break; case 5: Console.WriteLine("Please enter your creacher's relation to the surface: [b]elow, [a]t, abo[v]e"); break; case 6: break; } break; } string userin = Console.ReadLine(); string luserin = userin.ToLower(); switch (status) { case "base" when luserin == "q" || luserin == "quit": Console.WriteLine("Thank you for using the CreachoPedia, please come again!!!!"); return; case "base" when creacherdict.ContainsKey(userin): creacherdict[userin].Introduce(); creacherdict[userin].Step(); break; case "base" when luserin == "heenlo!" || luserin == "henlo" || luserin == "heenlo" || luserin == "henlo!": Console.WriteLine("Well heenlo to you too! 0u0"); break; case "base" when userin == "*pats*": Console.WriteLine("Oh! Thank you!"); break; case "base" when luserin == "a" || luserin == "add": status = "add"; break; case "base": Console.WriteLine($"I don't know what {userin} is! What on boo Earth?!!?!?!?"); break; case "add" when luserin == "x": substatus--; luserin = ""; break; case "add" when luserin == "q": status = "base"; break; case "add" when substatus == 0: status = "base"; substatus = 1; break; case "add" when substatus == 1: { tempdict = new Dictionary(); var namematcher = new Regex(@"[^ ].[A-Za-z\- ]{2,}(?= 5) { Console.WriteLine("That's a lot of footsies!!!! 0u0"); } if (footsiecounter % 2 == 1) { Console.WriteLine("An odd number of footsies? What a strange creacher!"); } substatus ++; } else { Console.WriteLine("Sorry, this is not a number!"); } break; } case "add" when substatus == 3: tempdict.Add("biome", luserin); substatus ++; break; case "add" when substatus == 4: { var locomatcher = new Regex(@"^[nwshfli]$"); if (locomatcher.Match(userin).Success) { tempdict.Add("locomethod", userin); substatus++; } else { Console.WriteLine("Sorry, this type is invalid, please try again."); } break; } case "add" when substatus == 5: { var relsurfacematcher = new Regex(@"^[abv]$"); if (relsurfacematcher.Match(luserin).Success) { tempdict.Add("surfacerel", luserin); substatus++; } else { Console.WriteLine("Sorry, this surface relation did not match one of the three listed above. Please try again."); } break; } // foreach (var i in tempdict) { // Console.WriteLine("{0}:{1}", i.Key, i.Value); // } case "add": { if (substatus == 6) { var tempcreach = new Creacher(tempdict["name"], int.Parse(tempdict["footsies"]), tempdict["biome"], (Locomotion)Enum.Parse(typeof(Locomotion), shortdefs[tempdict["locomethod"]]), (SurfaceRel)Enum.Parse(typeof(SurfaceRel), shortdefs[tempdict["surfacerel"]])); creacherdict.Add(tempdict["name"], tempcreach); File.WriteAllText("creachopedia.json", JsonConvert.SerializeObject(creacherdict, Formatting.Indented)); Console.WriteLine("Creacher added! 0u0"); status = "base"; substatus = 1; } break; } } Console.WriteLine(""); Thread.Sleep(500); } } } }