~swag/armagetronad/0.2.9-sty+ct+ap-fork

« back to all changes in this revision

Viewing changes to src/tron/gGame.cpp

  • Committer: SwagTron
  • Date: 2019-07-20 03:45:16 UTC
  • Revision ID: swagtron-20190720034516-2u2fatbhbsos2g56
Added SET_DEFAULT and SET_DEFAULT_CONFIG_FILE
Usage:
SET_DEFAULT ZONE_SEG_LENGTH would change/reset the value of 'ZONE_SEG_LENGTH' to what is found in the 'SET_DEFAULT_CONFIG_FILE' config file. By default, this is set to setting_visual.cfg because it contains most of the cosmetic tConfItems.

SET_DEFAULT ZONE_SEG_LENGTH ZONE_BOTTOM would change/reset both commands split by spaces to the values found in 'SET_DEFAULT_CONFIG_FILE.'

The directory SET_DEFAULT looks for is dist/config, any file located in config can be used.

This command can also be used by admins to reset changed configs. 
The default access level is Administrator.

SET_DEFAULT_CONFIG_FILE settings.cfg would change the configuration file to settings.cfg in the config folder.

Also added cosmetic zone_* settings to settings_visual.cfg

Show diffs side-by-side

added added

removed removed

Lines of Context:
6080
6080
static tConfItemFunc sg_KillAllPlayers_conf("KILL_ALL", &sg_KillAllPlayers);
6081
6081
static tAccessLevelSetter sg_KillAllPlayers_confLevel( sg_KillAllPlayers_conf, tAccessLevel_Moderator );
6082
6082
 
 
6083
// File name for default configuration file. Default is settings_visual, seemed to contain more
 
6084
// tConfItem's than the others.
 
6085
// However, this can be changed to the servers settings file and used by admins.
 
6086
static tString sn_defaultSettingFile("settings_visual.cfg");
 
6087
static tConfItem<tString> sn_defaultSettingFileConf(
 
6088
    "SET_DEFAULT_CONFIG_FILE", sn_defaultSettingFile);
 
6089
 
 
6090
void sg_setDefaultValue(std::istream& s)
 
6091
{
 
6092
    // String user passes with commands.
 
6093
    tString passedString;
 
6094
    passedString.ReadLine(s);
 
6095
 
 
6096
    // Convert to lowercase.
 
6097
    tToLower(passedString);
 
6098
 
 
6099
    if (passedString.Filter() == "")
 
6100
    {
 
6101
        return;
 
6102
    }
 
6103
 
 
6104
#ifndef DEDICATED
 
6105
    tCurrentAccessLevel level(tAccessLevel_Owner, true);
 
6106
#endif
 
6107
 
 
6108
    tArray<tString> passedCommands = passedString.Split(" ");
 
6109
    if (passedCommands.Len() > 0)
 
6110
    {
 
6111
        for (int i = 0; i < passedCommands.Len(); i++)
 
6112
        {
 
6113
            bool foundCommand = false;
 
6114
            tTextFileRecorder defaultConfigs(tDirectories::Config(), sn_defaultSettingFile);
 
6115
            while (!defaultConfigs.EndOfFile())
 
6116
            {
 
6117
                std::stringstream line(defaultConfigs.GetLine());
 
6118
 
 
6119
                tString command;
 
6120
                tString params;
 
6121
                REAL value;
 
6122
                line >> command >> value;
 
6123
                tToLower(command);
 
6124
                std::ws(line);
 
6125
 
 
6126
                if ((command) == passedCommands[i])
 
6127
                {
 
6128
                    // Using LoadAll(line) was not working here, so I guess I will build a tString
 
6129
                    // and cast the value.
 
6130
                    params = command << " " << value;
 
6131
                    std::stringstream commandToLoad(static_cast<char const*>(params));
 
6132
                    tConfItemBase::LoadAll(commandToLoad);
 
6133
                    foundCommand = true;
 
6134
                    break;
 
6135
                }
 
6136
            }
 
6137
 
 
6138
            if (!foundCommand)
 
6139
            {
 
6140
                con << tOutput(
 
6141
                    "$config_command_not_found", passedCommands[i], sn_defaultSettingFile);
 
6142
            }
 
6143
        }
 
6144
    }
 
6145
}
 
6146
 
 
6147
static tConfItemFunc sg_setDefaultValueConf("SET_DEFAULT", &sg_setDefaultValue);
 
6148
 
6083
6149
static void sg_CustomMessage(std::istream &s)
6084
6150
{
6085
6151
    tString msg;