Lazy Dora

dora and boots sleeping
//**********************************
// Includes
//**********************************
#include <iostream.h>
#include <thread.h>

/* 
pull in Recover, OnYourSix, Stretch, Mosey, 
Burpee, BearCrawl, Merkin, PlankJack, CircleUp, 
SideStraddleHops, ImperialWalkers, SirFazioArmCircles,
SealClaps, OverheadClaps, MorrocanNightClubs, 
Plank, PartnerUp, LBCs, SixInchHold, Squats, 
SquatHold, PickleCompleted, OneHundreds, WorldWarIIs,
PicklePounders, AmericanHammers, HaveANiceDay,
CountPAX
*/
#include "Exicon.h"

using namespace std;
using namespace F3;

//**********************************
// Defines
//**********************************
#define I_WORKOUT_TIME_SECS (60 * 45)
#define I_MAX_NUMBER_OF_PAX 50

//**********************************
// Globals
//**********************************
int giOverallWorkoutTimer_secs = 0;
string gsPaxF3Names[I_MAX_NUMBER_OF_PAX];
bool gbFlagFellAndSourMashHadToFixIt = true;
bool gbPartnerCaughtUp = false;

//**********************************
// Function Prototypes
//**********************************
extern void LoadPaxNames(string sPaxNames[I_MAX_NUMBER_OF_PAX]);

void Thread_TrackTotalWorkoutTime();
void CheckForFNGs();
void WarmUpStretches();
void CircleUpExercises();
void LazyDora();
void BearCrawlCatchMeIfYouCan();
void Mary();

//**********************************
// Function Definitions
//**********************************

/**********************************
Author:         Brian Newberry
Date:           December 5, 2019
Function Name:  main
Arguments:      None
Return:         None
Description:    This function will hold the structure of 
                the workout and will begin at 5:30 AM.
**********************************/
void main()
{
    // start workout timer
    thread WorkoutTimer(Thread_TrackTotalWorkoutTime);
    WorkoutTimer.detach();
    
    LoadPaxNames(gsPaxF3Names);
    
    if(CheckForFNGs() == true)
    {    cout << "Sorry for Frisco, we are open to " <<
            "all men but we are looking " << 
            "into alternatives" << endl;
    }
    
    cout << "Our mission is to plant, grow and serve" << 
        " small workout groups for men for the " << 
        "invigoration of male community leadership." << endl;
        
    WarmUpStretches();
    Mosey("AroundTheSchool");
    CircleUpExercises();
    Mosey("KellyRoadParkPicnicShelter");
    LazyDora();
    BearCrawlCatchMeIfYouCan();
    Mosey("BackToTheSchool");
    Mary();
}

/**********************************
Author:         Brian Newberry
Date:           December 5, 2019
Function Name:  Thread_TrackTotalWorkoutTime
Arguments:      None
Return:         None
Description:    This function will simply count seconds
                up until we pass total desired workout 
                time then exit.
**********************************/
void Thread_TrackTotalWorkoutTime()
{
    while(giOverallWorkoutTimer_secs < I_WORKOUT_TIME_SECS)
    {
        sleep(1);
        giOverallWorkoutTimer_secs++;
    }
    
    cout << "Have a Nice Day!!" << endl;
}

/**********************************
Author:         Brian Newberry
Date:           December 5, 2019
Function Name:  CheckForFNGs
Arguments:      None
Return:         bool - true if there is a man who 
                    has never attended an F3 workout 
                    before, otherwise return false
Description:    This function will check to see if 
                we have any FNGs
**********************************/
void CheckForFNGs()
{
    bool bFNGPresent = false;
    
    for(int iCount = 0; iCount < CountPAX(); iCount++)
    {
        // if one of the Pax doesn't have an F3 name yet
        if(gsPaxF3Names[iCount] == "")
        {    
            bFNGPresent = true;    
            break;
        }
    }
    
    return bFNGPresent;
}

/**********************************
Author:         Brian Newberry
Date:           December 5, 2019
Function Name:  WarmUpStretches
Arguments:      None
Return:         None
Description:    This function will warm up our legs
**********************************/
void WarmUpStretches()
{
    string asStretches[3] = {"Knee2Chest", "ITBand", "Heel2Butt"};
    
    OnYourSix();
    
    for(int iCount = 0; iCount < 3; iCount++)
    {
        Stretch(asStretches[iCount], "Left", 10);
        Stretch(asStretches[iCount], "Right", 10);
        Stretch(asStretches[iCount], "Left", 10);
        Stretch(asStretches[iCount], "Right", 10);
        
        if(asStretches[iCount] == "ITBandStretch")
        {    Recover();    }
    }
    
    GoodMornings(4);
}

/**********************************
Author:         Brian Newberry
Date:           December 5, 2019
Function Name:  CircleUpExercises
Arguments:      None
Return:         None
Description:    This function will contain the exercises 
                we do while circled up
**********************************/
void CircleUpExercises()
{
    Merkins(15);
    PlankJacks(10);
    Recover();
    
    if(gbFlagFellAndSourMashHadToFixIt == true)
    {    Burpees(10);    }

    Recover();
    SideStraddleHops(10);
    
    // true for double time speed up
    SideStraddleHops(10, true);
    
    ImperialWalkers(10);
    Recover();
    
    // now do some arm work
    SirFazioArmCircles(10, "Forward");
    SealClaps(10);
    SirFazioArmCircles(10, "Reverse");
    // OverheadClaps(10);    // don't forget to uncomment later
    MorrocanNightClubs(10);
}

/**********************************
Author:         Brian Newberry
Date:           December 5, 2019
Function Name:  LazyDora
Arguments:      None
Return:         None
Description:    This function will take us through 
                the Lazy Dora exercises
**********************************/
void LazyDora()
{
    PartnerUp();
    thread PartnerThread(StartPartner, , gPartnerCaughtUp);
    PartnerThread.detach();
    
    // you do 5, your partner does other 5 for all exercises
    for(int iCount = 0; iCount < 5; iCount++)
    {
        Merkins(10);
        while(gbPartnerCaughtUp == false)
        {    Plank();    }
        gbPartnerCaughtUp = false;
    }
    
    for(int iCount = 0; iCount < 5; iCount++)
    {
        LBCs(20);
        while(gbPartnerCaughtUp == false)
        {    SixInchHold();    }
        gbPartnerCaughtUp = false;
    }
    
    for(int iCount = 0; iCount < 5; iCount++)
    {
        Squats(30);
        while(gbPartnerCaughtUp == false)
        {    SquatHold();    }
        gbPartnerCaughtUp = false;
    }
}

/**********************************
Author:         Brian Newberry
Date:           December 5, 2019
Function Name:  BearCrawlCatchMeIfYouCan
Arguments:      None
Return:         None
Description:    Bear crawl around the track while your 
                partner does burpees
**********************************/
void BearCrawlCatchMeIfYouCan()
{
    PartnerUp();
    thread PartnerThread(StartPartner, gPartnerCaughtUp);
    PartnerThread.detach();
    
    while(!PickleCompleted())
    {
        while(gbPartnerCaughtUp == false)
        {    BearCrawl();    }
        Burpees(5);
        gbPartnerCaughtUp = false;
        Mosey("ToPartner");
    }    
}

/**********************************
Author:         Brian Newberry
Date:           December 5, 2019
Function Name:  Mary
Arguments:      None
Return:         None
Description:    Workout our core!
**********************************/
void Mary()
{
    OnYourSix();
    WorldWarIIs(10);
    
    // flag to NOT make them bigger, Wahoo might start measuring
    PicklePounders(10, false);
    
    AmericanHammers(10);
    DyingCockroaches(10);
    OneHundreds();
    
    while(giOverallWorkoutTimer_secs < I_WORKOUT_TIME_SECS)
    {    cout << "Wait for it. . ." << endl;    }

    HaveANiceDay();
}

//**********************************

COT

-Announcements: Christmas Party, Krispy Creme, South Wake Frosty, Wendy’s discount Frostys

-Prayers and Praises: Red Ryder’s job, Triple Lindy’s aunt, Yahoo (not to be confused the Wahoo and his much larger biceps) and his family’s adoption of Oleg, Red Ryder’s friend doing chemo

-YHC led us out in prayer. Thanks for a great start to the day gentlemen!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.