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 1: Console.WriteLine("Please enter a name for the creacher! Or type (b) for 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(); if (luserin == "q" || luserin == "quit") { Console.WriteLine("Thank you for using the CreachoPedia, please come again!!!!"); return; } if (status == "base") { if (creacherdict.ContainsKey(userin)) { creacherdict[userin].Introduce(); creacherdict[userin].Step(); } else if (luserin == "heenlo!" || luserin == "henlo" || luserin == "heenlo" || luserin == "henlo!") { Console.WriteLine("Well heenlo to you too! 0u0"); } else if (userin == "*pats*") { Console.WriteLine("Oh! Thank you!"); } else if (luserin == "a" || luserin == "add") { status = "add"; } else { Console.WriteLine($"I don't know what {userin} is! What on boo Earth?!!?!?!?"); } } else if (status == "add") { if (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!"); } } else if (substatus == 3) { tempdict.Add("biome", luserin); substatus ++; } else if (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."); } } else if (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."); } } else if (substatus == 6) { Console.WriteLine("test0"); 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 adde! 0u0"); status = "base"; substatus = 1; } foreach (var i in tempdict) { Console.WriteLine("{0}:{1}", i.Key, i.Value); } } Console.WriteLine(""); Thread.Sleep(500); } } } }