MegaGlest/source/glest_game/menu/server_line.cpp

192 lines
5.0 KiB
C++

// ==============================================================
// This file is part of Glest (www.glest.org)
//
// Copyright (C) 2010- by Titus Tscharntke
//
// 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 "server_line.h"
#include "renderer.h"
#include "core_data.h"
#include "config.h"
#include "metrics.h"
#include "auto_test.h"
#include "masterserver_info.h"
#include "leak_dumper.h"
namespace Glest{ namespace Game{
// =====================================================
// class ServerLine
// =====================================================
ServerLine::ServerLine( MasterServerInfo *mServerInfo, int lineIndex, int baseY, int lineHeight, const char * containerName) {
this->containerName = containerName;
Lang &lang= Lang::getInstance();
this->lineHeight=lineHeight;
int lineOffset = lineHeight * lineIndex;
masterServerInfo = *mServerInfo;
int i=10;
this->baseY=baseY;
//general info:
i+=10;
glestVersionLabel.init(i,baseY-lineOffset);
glestVersionLabel.setText(masterServerInfo.getGlestVersion());
i+=80;
platformLabel.init(i,baseY-lineOffset);
platformLabel.setText(masterServerInfo.getPlatform());
// i+=50;
// registeredObjNameList.push_back("binaryCompileDateLabel" + intToStr(lineIndex));
// binaryCompileDateLabel.registerGraphicComponent(containerName,"binaryCompileDateLabel" + intToStr(lineIndex));
// binaryCompileDateLabel.init(i,baseY-lineOffset);
// binaryCompileDateLabel.setText(masterServerInfo.getBinaryCompileDate());
//game info:
i+=80;
serverTitleLabel.init(i,baseY-lineOffset);
serverTitleLabel.setText(masterServerInfo.getServerTitle());
i+=200;
ipAddressLabel.init(i,baseY-lineOffset);
ipAddressLabel.setText(masterServerInfo.getIpAddress());
wrongVersionLabel.init(i,baseY-lineOffset);
wrongVersionLabel.setText(lang.get("IncompatibleVersion"));
//game setup info:
i+=120;
techLabel.init(i,baseY-lineOffset);
techLabel.setText(masterServerInfo.getTech());
i+=100;
mapLabel.init(i,baseY-lineOffset);
mapLabel.setText(masterServerInfo.getMap());
i+=100;
tilesetLabel.init(i,baseY-lineOffset);
tilesetLabel.setText(masterServerInfo.getTileset());
i+=100;
activeSlotsLabel.init(i,baseY-lineOffset);
activeSlotsLabel.setText(intToStr(masterServerInfo.getActiveSlots())+"/"+intToStr(masterServerInfo.getNetworkSlots())+"/"+intToStr(masterServerInfo.getConnectedClients()));
i+=50;
externalConnectPort.init(i,baseY-lineOffset);
externalConnectPort.setText(intToStr(masterServerInfo.getExternalConnectPort()));
i+=50;
selectButton.init(i, baseY-lineOffset, 30);
selectButton.setText(">");
//printf("glestVersionString [%s] masterServerInfo->getGlestVersion() [%s]\n",glestVersionString.c_str(),masterServerInfo->getGlestVersion().c_str());
compatible = checkVersionComptability(glestVersionString, masterServerInfo.getGlestVersion());
selectButton.setEnabled(compatible);
selectButton.setEditable(compatible);
gameFull.init(i, baseY-lineOffset);
gameFull.setText(lang.get("MGGameSlotsFull"));
gameFull.setEnabled(!compatible);
gameFull.setEditable(!compatible);
}
ServerLine::~ServerLine() {
//delete masterServerInfo;
}
bool ServerLine::buttonMouseClick(int x, int y){
return selectButton.mouseClick(x,y);
}
bool ServerLine::buttonMouseMove(int x, int y){
return selectButton.mouseMove(x,y);
}
void ServerLine::render() {
Renderer &renderer= Renderer::getInstance();
bool joinEnabled = (masterServerInfo.getNetworkSlots() > masterServerInfo.getConnectedClients());
if(joinEnabled == true) {
selectButton.setEnabled(true);
selectButton.setVisible(true);
gameFull.setEnabled(false);
gameFull.setEditable(false);
renderer.renderButton(&selectButton);
}
else {
selectButton.setEnabled(false);
selectButton.setVisible(false);
gameFull.setEnabled(true);
gameFull.setEditable(true);
renderer.renderLabel(&gameFull);
}
//general info:
renderer.renderLabel(&glestVersionLabel);
renderer.renderLabel(&platformLabel);
//renderer.renderLabel(&binaryCompileDateLabel);
//game info:
renderer.renderLabel(&serverTitleLabel);
if(!gameFull.getEnabled()){
if (compatible) {
renderer.renderLabel(&ipAddressLabel);
//game setup info:
renderer.renderLabel(&techLabel);
renderer.renderLabel(&mapLabel);
renderer.renderLabel(&tilesetLabel);
renderer.renderLabel(&activeSlotsLabel);
renderer.renderLabel(&externalConnectPort);
}
else {
renderer.renderLabel(&wrongVersionLabel);
}
}
}
void ServerLine::setY(int y) {
selectButton.setY(y);
gameFull.setY(y);
//general info:
glestVersionLabel.setY(y);
platformLabel.setY(y);
//binaryCompileDateLabel.setY(y);
//game info:
serverTitleLabel.setY(y);
ipAddressLabel.setY(y);
//game setup info:
techLabel.setY(y);
mapLabel.setY(y);
tilesetLabel.setY(y);
activeSlotsLabel.setY(y);
externalConnectPort.setY(y);
}
}}//end namespace