system "Dozen_Cycle"

{Dozen Cycle
All Bets are expressed in Units.
Normal betting progression is 5,10,20,40,60 units
When in a Cycle the progression is: 100,200,300 units

A typical example: Normal betting units are $5.00/unit
A typical cycle units are $100.00/unit

The combinations are setup as Group A-C as follows:

Group A: 1st Dozen
Group B: 2nd Dozen
Group C: 3rd Dozen
}
method "main"
begin
    While Starting a New Session
    begin
        Call "Initialize";
        Call "Input data";
        Call "Setup Dozen Layout";
        call "Make Bet";
        Exit;
    end
    
    if record "Layout in use"  layout has not hit each time
    begin
        if Flag "In Cycle" is False
        begin
            Call "Determine Normal Progression";
        end
        Else
        begin
            Call "Determine Cycle Progression";
        end
    end
    Else
    begin
        Put 1 on record "Progression" data index; //reset progression data index
        
        if Flag "In Cycle" is True
        begin
            Call "Cycle Win";
        end
        Else
        begin
            Call "Figure Cycle Count";
        end
    end
    
    Call "Make Bet";
end

method "Cycle Win"
begin
    Subtract 1 unit on record "Number of Cycles" data;
    Set Flag "In Cycle" to False;
end

method "Figure Cycle Count"
begin
    While record "Number of Cycles" data not = 0
    begin
        Set Flag "In Cycle" to True;

        //move progession data index to start of Cycle bet
        Put 6 on record "Progression" data index;
    end
end

method "Setup Dozen Layout"
begin
    if record "Dozen Indicator" data = 1
    begin
        Copy 1st Dozen to the record "Layout in use" layout;
    end
    Else
    begin
        if record "Dozen Indicator" data = 2
        begin
            Copy 2nd Dozen to the record "Layout in use" layout;
        end
        Else
        begin
            if record "Dozen Indicator" data = 3
            begin
                Copy 3rd Dozen to the record "Layout in use" layout;
            end
        end
    end
end

method "Determine Normal Progression"
begin
    Add 1 unit on record "Progression" data index; //bump progression data index
    
    //if progression data index > 5 then we are in a Cycle
    //Add on Cycle and reset progression to start of first bet.
    if record "Progression" data index > 5
    begin
        Add 1 on record "Number of Cycles" data;
        Put 1 on record "Progression" data index; //reset Progression data index
    end
end

method "Determine Cycle Progression"
begin
    Add 1 unit on record "Progression" data index; //bump progression
    
    //if progression data index > 8, then we are in another Cycle
    //Add on Cycle and reset progression to start of first bet.
    if record "Progression" data index > 8
    begin
        Add 1 unit on record "Number of Cycles" data;
        Set Flag "In Cycle" to False;
        Put 1 unit on record "Progression" data index; //reset Progression
    end
end

method "Make Bet"
begin
    Put 100 % of Record "Progression" data on Record "Layout in use" layout;
end

method "Initialize"
begin
    //Progression list for Normal and Cycle bets
    Set List of [5,10,20,40,60,100,200,300] to record "Progression" data;
    Set Flag "In Cycle" to False;
end

method "Input data"
begin
    Input Dropdown "Enter starting Dozen
              
                    1:= 1st Dozen
                    2:= 2nd Dozen
                    3:= 3rd Dozen" to record "Dozen Indicator" data;
end
