105 lines
2.4 KiB
C++
105 lines
2.4 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 "resource.h"
|
||
|
||
#include "conversion.h"
|
||
#include "resource_type.h"
|
||
#include "checksum.h"
|
||
#include <stdexcept>
|
||
#include "util.h"
|
||
#include "leak_dumper.h"
|
||
|
||
using namespace Shared::Graphics;
|
||
using namespace Shared::Util;
|
||
|
||
namespace Glest{ namespace Game{
|
||
|
||
// =====================================================
|
||
// class Resource
|
||
// =====================================================
|
||
|
||
Resource::Resource() {
|
||
this->type= NULL;
|
||
this->amount= 0;
|
||
pos= Vec2i(0);
|
||
balance= 0;
|
||
|
||
addItemToVault(&this->amount,this->amount);
|
||
addItemToVault(&this->balance,this->balance);
|
||
}
|
||
|
||
void Resource::init(const ResourceType *rt, int amount) {
|
||
this->type= rt;
|
||
this->amount= amount;
|
||
pos= Vec2i(0);
|
||
balance= 0;
|
||
|
||
addItemToVault(&this->amount,this->amount);
|
||
addItemToVault(&this->balance,this->balance);
|
||
}
|
||
|
||
void Resource::init(const ResourceType *rt, const Vec2i &pos) {
|
||
this->type=rt;
|
||
amount=rt->getDefResPerPatch();
|
||
this->pos= pos;
|
||
|
||
addItemToVault(&this->amount,this->amount);
|
||
addItemToVault(&this->balance,this->balance);
|
||
}
|
||
|
||
string Resource::getDescription() const {
|
||
string str;
|
||
|
||
str+= type->getName();
|
||
str+="\n";
|
||
str+= intToStr(amount);
|
||
str+="/";
|
||
str+= intToStr(type->getDefResPerPatch());
|
||
|
||
return str;
|
||
}
|
||
|
||
int Resource::getAmount() const {
|
||
checkItemInVault(&this->amount,this->amount);
|
||
return amount;
|
||
}
|
||
|
||
int Resource::getBalance() const {
|
||
checkItemInVault(&this->balance,this->balance);
|
||
return balance;
|
||
}
|
||
|
||
void Resource::setAmount(int amount) {
|
||
checkItemInVault(&this->amount,this->amount);
|
||
this->amount= amount;
|
||
addItemToVault(&this->amount,this->amount);
|
||
}
|
||
|
||
void Resource::setBalance(int balance) {
|
||
checkItemInVault(&this->balance,this->balance);
|
||
this->balance= balance;
|
||
addItemToVault(&this->balance,this->balance);
|
||
}
|
||
|
||
bool Resource::decAmount(int i) {
|
||
checkItemInVault(&this->amount,this->amount);
|
||
amount -= i;
|
||
addItemToVault(&this->amount,this->amount);
|
||
|
||
if(amount > 0) {
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
|
||
}}//end namespace
|