Exemplo n.º 1
0
    private void selectExercises()
    {
        workoutSetupState = setupState.SelectExercises;
        PanelNavigator.Instance.currentSubPanelNavigator.goToPanel("WorkoutExercises");

        totalTimeParent.gameObject.SetActive(true);
        totalTimeText.setTimeText(0);
        workoutSetupContent.gameObject.SetActive(false);
        listController.showList("exercises", onClickExerciseItem);
        //TODO: Doesnt appear to work, how to sync rect transform in other canvas?
        //TODO: For now the prefab is just scaled to fit the screen correctly...
        //listController.setListBoundaries("exercises", contentTransform);
    }
Exemplo n.º 2
0
    public void nextSetupOption()
    {
        //Switch to new state based on previous state
        switch (workoutSetupState)
        {
        case setupState.Configuration: workoutSetupState = setupState.SelectExerciseMode; break;

        case setupState.SelectExerciseMode: workoutSetupState = setupState.EvaluateExerciseMode; break;

        case setupState.SelectExercises: workoutSetupState = setupState.StartWorkout; break;
        }

        //Do new state function
        switch (workoutSetupState)
        {
        case setupState.Configuration:          createNewWorkout(); break;

        case setupState.SelectExerciseMode:     selectExerciseMode(); break;

        case setupState.EvaluateExerciseMode:

            switch (newWorkout.exerciseMode)
            {
            case ExerciseMode.Random:       showSelectRoundsDialog(); break;

            case ExerciseMode.Rounds:       showSelectRoundsDialog(); break;

            case ExerciseMode.Selection:    selectExercises(); break;
            }

            break;

        case setupState.StartWorkout:
            if (newWorkout.exercises.Count >= 1)
            {
                startWorkout();
            }
            else
            {
                MobilePopup.Instance.toast.show("Select at least 1 exercise");
            }
            break;
        }
    }
Exemplo n.º 3
0
    /// <summary>
    /// Create new workout and start configuration
    /// </summary>
    public void createWorkout()
    {
        totalTimeParent.gameObject.SetActive(false);
        listController.hideList("exercises");

        workoutSetupState = setupState.Configuration;

        newWorkout = createNewWorkout();
        //TODO: Enable in the future?
        //workouts.Add(newWorkout);
        //subPanelNavigator.goToPanel("WorkoutSetup");
        workoutSetupContent.gameObject.SetActive(true);

        workText.setTimeText(newWorkout.globalWorkTime);
        restText.setTimeText(newWorkout.globalRestTime);
        setsText.text = newWorkout.globalSets.ToString();
        repsText.text = newWorkout.globalReps.ToString();

        setWorkoutMode(workoutMode);
    }
        public static void createCommand(DiscordClient _client)
        {
            _client.GetService <CommandService>().CreateCommand("setup")
            .Do(async e =>
            {
                if (e.Channel.IsPrivate)
                {
                    await e.Channel.SendMessage("This command can not be started from a PM. Please try to access it through a server. :x:");
                    return;
                }

                MySqlConnection conn = new MySqlConnection(Sneaky.connectionString);

                Message m1       = await e.Channel.SendMessage("Setup Menu\nFor a list of all setups, type `1`\nTo create your own setup, type `2`\nTo edit one of your setups, type `3`");
                Message m2       = null;
                setupState state = setupState.none;
                Setup setup      = new Setup();

                EventHandler <MessageEventArgs> menuHandler = null, setupCreator = null;
                menuHandler = new EventHandler <MessageEventArgs>(async(f, s) =>
                {
                    MessageEventArgs sender = s;
                    try
                    {
                        if (sender.User.Id == e.User.Id && e.Channel.Id == sender.Channel.Id && !sender.User.IsBot)
                        {
                            if (sender.Message.RawText.StartsWith("1"))
                            {
                                await sender.Message.Delete();
                                await m1.Delete();
                                if (m2 != null)
                                {
                                    await m2.Delete();
                                }
                                showGameList(e, conn);
                                _client.MessageReceived -= menuHandler;
                            }
                            else if (sender.Message.RawText.StartsWith("2"))
                            {
                                if (SetupCommand.usersInSetup.Contains(sender.User.Id))
                                {
                                    await sender.Channel.SendMessage("You're already creating a setup. " + sender.User.Mention);
                                    return;
                                }
                                await sender.Message.Delete();
                                if (m2 != null)
                                {
                                    await m2.Delete();
                                }
                                //run create setup handler
                                await m1.Edit("Welcome to the setup creator. Setups are handled in PMs.\nInitializing setup creator in your pm... :clock2:");
                                await e.User.SendMessage("**Welcome to the setup creator.** You can exit at any point by typing `exit`\nPlease provide us with a name for the setup.");
                                setup.Creator = s.User;
                                state         = setupState.name;
                                SetupCommand.usersInSetup.Add(sender.User.Id);
                                //add setup creation handler
                                _client.MessageReceived += setupCreator;
                                _client.MessageReceived -= menuHandler;
                            }
                            else if (sender.Message.RawText.StartsWith("3"))
                            {
                                await sender.Message.Delete();
                                if (m2 != null)
                                {
                                    await m2.Delete();
                                }
                                m2 = await e.Channel.SendMessage("This feature has yet to be implemented, Returning to menu.");
                            }
                        }
                    }
                    catch { }
                });
                setupCreator = new EventHandler <MessageEventArgs>(async(f, sender) =>
                {
                    MessageEventArgs s = sender;

                    if (e.User.Id == s.User.Id && e.User.PrivateChannel.Id == s.Channel.Id && !sender.User.IsBot)
                    {
                        if (s.Message.RawText.ToLower().StartsWith("exit"))
                        {
                            _client.MessageReceived -= setupCreator; await s.User.SendMessage(":x: Setup Aborted :x:"); SetupCommand.usersInSetup.Remove(s.User.Id); return;
                        }
                        switch (state)
                        {
                        case setupState.name:
                            setup.SetupName = s.Message.RawText;
                            state           = setupState.nameReceived;
                            await s.Channel.SendMessage($"is: ```{setup.SetupName}``` the name the setup is supposed to have? Yes / No");

                            break;

                        case setupState.nameReceived:
                            if (s.Message.RawText.ToLower().Equals("y") || s.Message.RawText.ToLower().StartsWith("yes"))
                            {
                                await s.Channel.SendMessage($"How long will the day phase last (in minutes) for  your game \"{setup.SetupName}\"\n_min 2 min / max 20 min_");
                                state = setupState.dayLength;
                            }
                            else if (s.Message.RawText.ToLower().Equals("n") || s.Message.RawText.ToLower().StartsWith("no"))
                            {
                                await s.Channel.SendMessage("What is the name of your setup ?");
                                state = setupState.name;
                            }
                            else
                            {
                                await s.Channel.SendMessage($"Please answer with Yes / No\nIs ```{setup.SetupName}``` the name the setup is supposed to have?");
                            }
                            break;

                        case setupState.dayLength:
                            try
                            {
                                int condition = Int32.Parse(new string(s.Message.RawText.Where(c => char.IsDigit(c)).ToArray()));
                                if (condition >= 2 && condition <= 20)
                                {
                                    setup.DayLength = condition;
                                    await s.Channel.SendMessage($"How long will the night phase last (in minutes) for  your game \"{setup.SetupName}\"\n_min 2 min / max 20 min_");
                                    state = setupState.nightLength;
                                }
                                else
                                {
                                    await s.Channel.SendMessage("Please provide a number between 2 and 20.");
                                }
                            }
                            catch
                            {
                                await s.Channel.SendMessage("Please provide a number between 2 and 20.");
                            }

                            break;

                        case setupState.nightLength:
                            try
                            {
                                int condition = Int32.Parse(new string(s.Message.RawText.Where(c => char.IsDigit(c)).ToArray()));
                                if (condition >= 2 && condition <= 20)
                                {
                                    setup.NightLength = condition;
                                    await s.Channel.SendMessage($"The Day / Night phase lenghts for {setup.SetupName} are: {setup.DayLength} min / {setup.NightLength} min. Is this correct? Yes / No");
                                    state = setupState.lenghtReceived;
                                }
                                else
                                {
                                    await s.Channel.SendMessage("Please provide a number between 2 and 20.");
                                }
                            }
                            catch
                            {
                                await s.Channel.SendMessage("Please provide a number between 2 and 20.");
                            }

                            break;

                        case setupState.lenghtReceived:
                            if (s.Message.RawText.ToLower().Equals("y") || s.Message.RawText.ToLower().StartsWith("yes"))
                            {
                                await s.Channel.SendMessage($"The setup you created is:\n```Setup Name: {setup.SetupName} | Created by: {setup.CreatorName} | Day/Night time: {setup.DayLength} min / {setup.NightLength} min ```\n:white_check_mark: Step 1 has been completed. The next step is to assign roles.");
                                await s.Channel.SendMessage("Roles aren't supported in this version of the setup creator. :x:\n\n:x: Setup couldn't be completed. Aborting setup... :x:");
                                _client.MessageReceived -= setupCreator;
                                SetupCommand.usersInSetup.Remove(s.User.Id);
                            }
                            else if (s.Message.RawText.ToLower().Equals("n") || s.Message.RawText.ToLower().StartsWith("no"))
                            {
                                await s.Channel.SendMessage($"How long will the day phase last (in minutes) for  your game \"{setup.SetupName}\"\n_min 2 min / max 20 min_");
                                state = setupState.dayLength;
                            }
                            else
                            {
                                await s.Channel.SendMessage($"Please answer with Yes / No");
                            }

                            break;

                        default:
                            await Task.Delay(0);
                            break;
                        }
                    }
                });

                _client.MessageReceived += menuHandler;

                await Task.Delay(0);
            });
        }