Пример #1
0
        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));
                }
            }
        }
Пример #2
0
 public override InteractionResult DragStart(Mob interactionSource, InteractionDescriptor descriptor)
 {
     return(InteractionResult.ContinueChain);
 }
Пример #3
0
 public override InteractionResult DragDrop(TileObject draggedObject, Mob interactionSource, InteractionDescriptor descriptor)
 {
     return(InteractionResult.ContinueChain);
 }
Пример #4
0
 public override InteractionResult ApplyItem(Item appliedItem, Mob interactionSource, InteractionDescriptor descriptor)
 {
     return(InteractionResult.ContinueChain);
 }
Пример #5
0
 public override InteractionResult DragStart(Mob interactionSource, InteractionDescriptor descriptor)
 {
     throw new NotImplementedException();
 }
Пример #6
0
 public override InteractionResult DragDrop(TileObject draggedObject, Mob interactionSource, InteractionDescriptor descriptor)
 {
     throw new NotImplementedException();
 }
Пример #7
0
 public override InteractionResult ApplyItem(Item appliedItem, Mob interactionSource, InteractionDescriptor descriptor)
 {
     throw new NotImplementedException();
 }
Пример #8
0
        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);
        }