public override Scene Handle(RequestClient client) { Console.Clear(); Console.WriteLine($"You're in room {room.RoomId}"); Dictionary <ConsoleKey, InteractionDescriptor> options = new Dictionary <ConsoleKey, InteractionDescriptor>(); ConsoleKey[] keys = new ConsoleKey[] { ConsoleKey.Q, ConsoleKey.W, ConsoleKey.E, ConsoleKey.A, ConsoleKey.S, ConsoleKey.D, ConsoleKey.Z, ConsoleKey.X, ConsoleKey.C }; for (int i = 0; i < room.Interactions.Length; i++) { InteractionDescriptor descriptor = room.Interactions[i]; ConsoleKey key = keys[i]; Console.WriteLine($"{key}) {descriptor.ActionName}"); options.Add(key, descriptor); } Console.WriteLine("People in room: "); foreach (string name in room.PeopleInRoom) { Console.Write($"{name}, "); } while (true) { var input = Console.ReadKey(); if (options.ContainsKey(input.Key)) { var descriptor = options[input.Key]; var result = client.SendRequest(new MoveInteraction(descriptor.Id)); return(new RoomScene((RoomResponse)result.data)); } } }
public override InteractionResult DragStart(Mob interactionSource, InteractionDescriptor descriptor) { return(InteractionResult.ContinueChain); }
public override InteractionResult DragDrop(TileObject draggedObject, Mob interactionSource, InteractionDescriptor descriptor) { return(InteractionResult.ContinueChain); }
public override InteractionResult ApplyItem(Item appliedItem, Mob interactionSource, InteractionDescriptor descriptor) { return(InteractionResult.ContinueChain); }
public override InteractionResult DragStart(Mob interactionSource, InteractionDescriptor descriptor) { throw new NotImplementedException(); }
public override InteractionResult DragDrop(TileObject draggedObject, Mob interactionSource, InteractionDescriptor descriptor) { throw new NotImplementedException(); }
public override InteractionResult ApplyItem(Item appliedItem, Mob interactionSource, InteractionDescriptor descriptor) { throw new NotImplementedException(); }
private void SetInteraction(InteractionDescriptor interaction, TextMeshProUGUI text) { if (string.IsNullOrEmpty(interaction.text)) { text.gameObject.SetActive(false); return; } foreach (var variable in interaction.requires_variables.set) { if (!_variables.ContainsKey(variable) || _variables[variable] == false) { text.gameObject.SetActive(false); return; } } foreach (var variable in interaction.requires_variables.unset) { if (_variables.ContainsKey(variable) && _variables[variable] == true) { text.gameObject.SetActive(false); return; } } text.text = interaction.text; var button = text.GetComponent <Button>(); button.onClick.RemoveAllListeners(); button.onClick.AddListener(() => { var totalWeight = 0f; foreach (var exitSceneDescriptor in interaction.exit_scenes) { totalWeight += exitSceneDescriptor.probability_weight; } var selectedWeight = Random.Range(0f, totalWeight); foreach (var exitSceneDescriptor in interaction.exit_scenes) { selectedWeight -= exitSceneDescriptor.probability_weight; if (selectedWeight <= 0) { if (exitSceneDescriptor.exit_game) { Application.Quit(); } else { if (exitSceneDescriptor.variables_set != null) { foreach (var variable in exitSceneDescriptor.variables_set) { _variables[variable] = true; } } if (exitSceneDescriptor.variables_unset != null) { foreach (var variable in exitSceneDescriptor.variables_unset) { _variables[variable] = false; } } ApplyScene(exitSceneDescriptor.scene); } return; } } }); text.gameObject.SetActive(true); }