169 lines
5.3 KiB
C#
169 lines
5.3 KiB
C#
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<string, string>();
|
|
var creacherdict = JsonConvert.DeserializeObject<Dictionary<string, Creacher>>(File.ReadAllText("creachopedia.json"));
|
|
var shortdefs = new Dictionary<string, string>(){
|
|
{"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();
|
|
|
|
if (status == "base") {
|
|
if (luserin == "q" || luserin == "quit") {
|
|
Console.WriteLine("Thank you for using the CreachoPedia, please come again!!!!");
|
|
return;
|
|
}
|
|
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 (luserin == "x") {
|
|
substatus--;
|
|
luserin = "";
|
|
}
|
|
else if (luserin == "q") {
|
|
status = "base";
|
|
}
|
|
else if (substatus == 0) {
|
|
status = "base";
|
|
substatus = 1;
|
|
}
|
|
else if (substatus == 1) {
|
|
tempdict = new Dictionary<string, string>();
|
|
var namematcher = new Regex(@"[^ ].[A-Za-z\- ]{2,}(?<! )");
|
|
if (namematcher.Match(userin).Success) {
|
|
tempdict.Add("name", userin);
|
|
substatus++;
|
|
}
|
|
else {
|
|
Console.WriteLine("Sorry, this name is invalid, please try again.");
|
|
}
|
|
}
|
|
else if (substatus == 2) {
|
|
if (int.TryParse(userin, out int footsiecounter)) {
|
|
tempdict.Add("footsies", userin);
|
|
if (footsiecounter >= 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);
|
|
}
|
|
}
|
|
}
|
|
}
|