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

« back to all changes in this revision

Viewing changes to src/tools/tConsole.cpp

  • Committer: Voodoo
  • Date: 2011-07-28 18:46:18 UTC
  • mfrom: (563.24.161 merge)
  • Revision ID: voodoo-20110728184618-0djbrm75ftd07c4v
merge -r 1285..1297 lp:armagetronad/0.2.8

Show diffs side-by-side

added added

removed removed

Lines of Context:
163
163
// stored line
164
164
static tString line_("");
165
165
 
166
 
tConsole & tConsole::Print(tString s)
 
166
void tConsole::PrintLine(tString const & line, int repetitions)
 
167
{
 
168
    if( repetitions > 1 )
 
169
    {
 
170
        // find the true line end. Sometimes, there are trailing color codes.
 
171
        char const * lineEnd = strstr( line, "\n" );
 
172
        int length = line.Len()-2;
 
173
        if( lineEnd )
 
174
        {
 
175
            length = lineEnd - (char const *)line;
 
176
        }
 
177
        PrintLine( line.SubStr(0, length) + " 0xffffff" + tOutput("$console_repetition", repetitions ), 1 );
 
178
    }
 
179
    else
 
180
    {
 
181
        // print
 
182
        if (s_betterConsole)
 
183
            s_betterConsole->DoPrint( line );
 
184
        else
 
185
            DoPrint( line );
 
186
    }
 
187
}
 
188
 
 
189
tConsole & tConsole::Print(tString const & s)
167
190
{
168
191
    // append to line
169
192
    line_ += s;
179
202
        // filter
180
203
        FilterLine( line_ );
181
204
 
182
 
        // print
183
 
        if (s_betterConsole)
184
 
            s_betterConsole->DoPrint( line_ );
 
205
        // check for repetitions
 
206
        static tString lastLine("not the last line");
 
207
        static int repetitions = 0;
 
208
        static int threshold = 1;
 
209
        if( lastLine != line_ )
 
210
        {
 
211
            if( repetitions > 0 )
 
212
            {
 
213
                PrintLine( lastLine, repetitions );
 
214
            }
 
215
 
 
216
            repetitions = 0;
 
217
            threshold = 1;
 
218
            lastLine = line_;
 
219
        }
185
220
        else
186
 
            DoPrint( line_ );
 
221
        {
 
222
            repetitions++;
 
223
            if( threshold < 10 || repetitions >= threshold )
 
224
            {
 
225
                PrintLine( line_, repetitions );
 
226
 
 
227
                if( threshold < 10 )
 
228
                {
 
229
                    threshold++;
 
230
                }
 
231
                else
 
232
                {
 
233
                    threshold*=10;
 
234
                }
 
235
                repetitions = 0;
 
236
            }
 
237
 
 
238
            line_ = "";
 
239
            return *this;
 
240
        }
 
241
 
 
242
        PrintLine( line_, 1 );
187
243
 
188
244
        line_ = "";
189
245
    }
202
258
}
203
259
 
204
260
tConsole & tConsole::DoPrint(const tString& s){
205
 
    std::cout << s;
 
261
    std::cout << tColoredString::RemoveColors(s);
206
262
    std::cout.flush();
207
263
    return *this;
208
264
}