Tutorial Basic GSC Coding: Switch

CabCon

Head Administrator
Staff member
Head Staff Team
Messages
4,998
Reaction score
2,918
Points
1,053
Hello CCM,
In this tutorial I am going to explain how does the function "switch" works and how to use it. It is used when you have to use a lot of "if"s, to reduce the ammount of "if"s you use this switch. See the comparison below:

Code:
number = randomIntRange( 1, 5 );
if( number == 1 )
    a = 1;
if( number == 2 )
    a = 2;
if( number == 3 )
    a = 3;
if( number == 4 )
    a = 4;
if( number == 5 )
    a = 5;

You can do:
Code:
number = randomIntRange( 1, 5 );
switch( number )
{
    case 1:
        a = 1;
    break;

    case 2:
        a = 2;
    break;

    case 3:
        a = 3;
    break;

    case 4:
        a = 4;
    break;

    case 5:
        a = 5;
    break;
}

The switch structure is like this:
Code:
switch( something (variable for example) )
{
    case 0: //After the "case" name add a ":"
    HERE ADD CASE CODE
    break; //Add break to stop the switch "searching"
}

You can add as many cases as you want, is not necesary to call cases with numbers, you can call them with different names, the names go beetween " ".
Code:
switch( colour )
{
    case "Green":
    SOMETHING
    break;

    case "Blue":
    SOMETHING
    break;
}

"switch" command also allows you to make some kind of "else" function, in this case is called "default", you use it like this:
Code:
number = RandomInt( 5 )
switch( number )
{
    case 0:
        a = 0;
    break;

    case 1:
        a = 1;
    break;

    default:
        a = 6;
    break;
}

In the previous example, number will be a random number beetween 0 and 5, if the number is equal to 0: a = 0. If the number is 1: a = 1, If number is not 0 or 1, it will be the default, in this case: a = 7.

This kind of functions allow you to give the same effect to different "case"s like this, it helps to save space (in the example case 0, 1 and 2 will have the same effect):
Code:
number = RandomInt( 5 )
switch( number )
{
    case 0:
    case 1:
    case 2:
        SOMETHING
    break;

    case 3:
        SOMETHING
    break;
}

Lets put a decent example (is a code I released sometime ago):
Code:
WaitT( unit, ammount )
{
    switch( unit )
    {
        case "minutes":
            wait ( ammount * 60 );
        break;

        case "hours":
            wait ( ammount * 3600 );
        break;

        case "miliseconds":
            wait ( ammount / 1000 );
        break;

        case "deciseconds":
            wait ( ammount / 10 );
        break;

        case "centiseconds":
            wait ( ammount / 100 );
        break;

        case "microseconds":
            wait ( ammount * 0.000001 );
        break;

        case "frames":
            wait ( 0.05 * ammount );
        break;

        case "days":
            wait ( ammount * 86400 );
        break;

        case "weeks":
            wait ( ammount * 604800 );
        break;

        case "tenminutes":
            wait ( 600 * ammount );
        break;
    }
}

In the previous example you add on the function the variable unit, which has to match in name with any of "case"s names (minutes, centiseconds, weeks...), then, after you assigned the unit, the switch will make your mod wait the ammount of time units you specified on the function name.

Thanks for reading. @CabCon. Credits are going to Yamato.
 
Top