123 lines
2.7 KiB
C++
123 lines
2.7 KiB
C++
// ==============================================================
|
||
// This file is part of Glest (www.glest.org)
|
||
//
|
||
// Copyright (C) 2001-2008 Marti<74>o Figueroa
|
||
//
|
||
// You can redistribute this code and/or modify it under
|
||
// the terms of the GNU General Public License as published
|
||
// by the Free Software Foundation; either version 2 of the
|
||
// License, or (at your option) any later version
|
||
// ==============================================================
|
||
|
||
#include "logger.h"
|
||
|
||
#include "util.h"
|
||
#include "renderer.h"
|
||
#include "core_data.h"
|
||
#include "metrics.h"
|
||
#include "lang.h"
|
||
#include "leak_dumper.h"
|
||
#include "graphics_interface.h"
|
||
|
||
using namespace std;
|
||
using namespace Shared::Graphics;
|
||
|
||
namespace Glest{ namespace Game{
|
||
|
||
// =====================================================
|
||
// class Logger
|
||
// =====================================================
|
||
|
||
const int Logger::logLineCount= 15;
|
||
|
||
// ===================== PUBLIC ========================
|
||
|
||
Logger::Logger(){
|
||
fileName= "log.txt";
|
||
loadingTexture=NULL;
|
||
}
|
||
|
||
Logger & Logger::getInstance(){
|
||
static Logger logger;
|
||
return logger;
|
||
}
|
||
|
||
void Logger::add(const string &str, bool renderScreen){
|
||
FILE *f=fopen(fileName.c_str(), "at+");
|
||
if(f!=NULL){
|
||
fprintf(f, "%s\n", str.c_str());
|
||
fclose(f);
|
||
}
|
||
current= str;
|
||
if(renderScreen){
|
||
renderLoadingScreen();
|
||
}
|
||
}
|
||
|
||
void Logger::clear(){
|
||
string s="Log file\n";
|
||
|
||
FILE *f= fopen(fileName.c_str(), "wt+");
|
||
if(f==NULL){
|
||
throw runtime_error("Error opening log file"+ fileName);
|
||
}
|
||
|
||
fprintf(f, "%s", s.c_str());
|
||
fprintf(f, "\n");
|
||
|
||
fclose(f);
|
||
}
|
||
|
||
|
||
void Logger::loadLoadingScreen(string filepath){
|
||
|
||
Renderer &renderer= Renderer::getInstance();
|
||
|
||
if(loadingTexture!=NULL)
|
||
{
|
||
delete loadingTexture;
|
||
loadingTexture=NULL;
|
||
}
|
||
|
||
if(filepath=="")
|
||
{
|
||
loadingTexture=NULL;
|
||
}
|
||
else
|
||
{
|
||
loadingTexture=GraphicsInterface::getInstance().getFactory()->newTexture2D();
|
||
loadingTexture->setMipmap(false);
|
||
loadingTexture->getPixmap()->load(filepath);
|
||
}
|
||
}
|
||
|
||
// ==================== PRIVATE ====================
|
||
|
||
void Logger::renderLoadingScreen(){
|
||
|
||
Renderer &renderer= Renderer::getInstance();
|
||
CoreData &coreData= CoreData::getInstance();
|
||
const Metrics &metrics= Metrics::getInstance();
|
||
|
||
renderer.reset2d();
|
||
renderer.clearBuffers();
|
||
if(loadingTexture==NULL){
|
||
renderer.renderBackground(CoreData::getInstance().getBackgroundTexture());
|
||
}
|
||
else{
|
||
renderer.renderBackground(loadingTexture);
|
||
}
|
||
renderer.renderText(
|
||
state, coreData.getMenuFontBig(), Vec3f(1.f),
|
||
metrics.getVirtualW()/4, 65*metrics.getVirtualH()/100, false);
|
||
|
||
renderer.renderText(
|
||
current, coreData.getMenuFontNormal(), 1.0f,
|
||
metrics.getVirtualW()/4,
|
||
62*metrics.getVirtualH()/100, false);
|
||
|
||
renderer.swapBuffers();
|
||
}
|
||
|
||
}}//end namespace
|