/// <summary> /// For Condition, Note, Remove /// </summary> private static void Parse_Info_Text(ConsoleKeyInfo keyInfo) { switch (keyInfo.Key) { case Confirm: if (Program.data.idList.Count > 0) { var actor = Program.data.GetActor(Program.data.idList[Program.outputData.Info_GetSelected()]); switch (Program.outputData.info_opMode) { case Info_OpMode.Condition: if (actor != null) { // Add Condition var condition = Program.outputData.Info_GetArgument().GetCondition(); if (condition.HasValue) { if (actor.AddCondition(condition.Value)) { Program.outputData.Info_Argument_Clear(); } } } break; case Info_OpMode.Note: if (actor != null) { // Add Note actor.AddNote(Program.outputData.Info_GetArgument()); } break; case Info_OpMode.Remove: if (actor != null) { if (Program.outputData.Info_GetArgument().Length == 0) { // Remove Actor Program.data.RemoveActor(actor.id); Program.outputData.Info_UpdateArgumentInfo(); } else { var condition = Program.outputData.Info_GetArgument().GetCondition(); if (condition.HasValue) { // Remove Condition actor.RemoveCondition(condition.Value); Program.outputData.Info_UpdateArgumentInfo(); } else { // Remove Note var index = ObjectParser.GetInt10(Program.outputData.Info_GetArgument()); if (index.HasValue) { actor.RemoveNote(index.Value); Program.outputData.Info_UpdateArgumentInfo(); } } } } break; default: throw new ArgumentOutOfRangeException(nameof(Program.outputData.info_opMode)); } } break; default: // Parse Char as Input ObjectParser.FormatChar(keyInfo.KeyChar, Program.outputData.Info_Argument_Add); break; } }
public void Info_UpdateArgumentInfo() { Actor actor; if (Program.data.idList.Count == 0) { actor = null; } else { actor = Program.data.GetActor(Program.data.idList[info_selected]); } if (actor == null) { info_argument_valid = false; info_argument_condition = Option <Condition> .Null; } else { switch (info_opMode) { case Info_OpMode.LoseHealth: case Info_OpMode.GainHealth: case Info_OpMode.GainTemp: var tokens = ObjectParser.GetTokens(info_argumentString); info_argument_valid = tokens.HasValue && tokens.Value.Validate(); info_argument_condition = Option <Condition> .Null; return; case Info_OpMode.Remove: if (info_argumentString.Length == 0) { // Remove Creature info_argument_valid = true; info_argument_condition = Option <Condition> .Null; } else { var condition = info_argumentString.GetCondition(); if (condition.HasValue) { // Conditon info_argument_valid = actor.conditions.Contains(condition.Value); info_argument_condition = condition.Value; } else { // Note (indexed by Number) var index = ObjectParser.GetInt10(info_argumentString); info_argument_valid = index.HasValue && actor.HasNote(index.Value); info_argument_condition = Option <Condition> .Null; } } return; case Info_OpMode.Condition: { var condition = info_argumentString.GetCondition(); info_argument_valid = condition.HasValue && !actor.conditions.Contains(condition.Value); info_argument_condition = condition; } return; case Info_OpMode.Note: // Parse Integer info_argument_valid = true; return; } } }