2018-04-22 15:55:55 +00:00
|
|
|
//======== (C) Copyright 2002 Charles G. Cleveland All rights reserved. =========
|
|
|
|
//
|
|
|
|
// The copyright to the contents herein is the property of Charles G. Cleveland.
|
|
|
|
// The contents may be used and/or copied only with the written permission of
|
|
|
|
// Charles G. Cleveland, or in accordance with the terms and conditions stipulated in
|
|
|
|
// the agreement/contract under which the contents have been supplied.
|
|
|
|
//
|
|
|
|
// Purpose:
|
|
|
|
//
|
|
|
|
// $Workfile: AvHTechNode.cpp $
|
|
|
|
// $Date: 2002/09/23 22:36:08 $
|
|
|
|
//
|
|
|
|
//===============================================================================
|
|
|
|
|
|
|
|
#include "AvHTechNode.h"
|
|
|
|
|
|
|
|
//for use in operator==
|
|
|
|
#define CHECK_EQUAL(x) (this->x == other.x)
|
|
|
|
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
// AvHTechNode
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
AvHTechNode::AvHTechNode(const AvHMessageID id) : mMessageID(id), mCost(-1), mBuildTime(-1), mResearchable(true),
|
|
|
|
mResearched(false), mAllowMultiples(false), mTechID(TECH_NULL), mPrereqID1(TECH_NULL), mPrereqID2(TECH_NULL)
|
|
|
|
{}
|
|
|
|
|
|
|
|
AvHTechNode::AvHTechNode(const AvHTechNode& other) : mMessageID(other.mMessageID), mTechID(other.mTechID),
|
|
|
|
mCost(other.mCost), mPrereqID1(other.mPrereqID1), mPrereqID2(other.mPrereqID2), mBuildTime(other.mBuildTime),
|
|
|
|
mResearchable(other.mResearchable), mResearched(other.mResearched), mAllowMultiples(other.mAllowMultiples)
|
|
|
|
{}
|
|
|
|
|
|
|
|
AvHTechNode::AvHTechNode(AvHMessageID inMessageID, AvHTechID inID, AvHTechID inPrereq1, AvHTechID inPrereq2, int inCost, int inBuildTime, bool inResearched) :
|
|
|
|
mMessageID(inMessageID), mTechID(inID), mPrereqID1(inPrereq1), mPrereqID2(inPrereq2), mCost(inCost),
|
|
|
|
mBuildTime(inBuildTime), mResearchable(true), mResearched(inResearched), mAllowMultiples(false)
|
|
|
|
{}
|
|
|
|
|
|
|
|
AvHTechNode::~AvHTechNode(void) {}
|
|
|
|
|
|
|
|
AvHTechNode* AvHTechNode::clone(void) const { return new AvHTechNode(*this); }
|
|
|
|
|
|
|
|
void AvHTechNode::swap(AvHTechNode& other)
|
|
|
|
{
|
|
|
|
AvHTechID tempTech = mTechID; mTechID = other.mTechID; other.mTechID = tempTech;
|
|
|
|
tempTech = mPrereqID1; mPrereqID1 = other.mPrereqID1; other.mPrereqID1 = tempTech;
|
|
|
|
tempTech = mPrereqID2; mPrereqID2 = other.mPrereqID2; other.mPrereqID2 = tempTech;
|
|
|
|
int temp = mCost; mCost = other.mCost; other.mCost = temp;
|
|
|
|
temp = mBuildTime; mBuildTime = other.mBuildTime; other.mBuildTime = temp;
|
|
|
|
bool btemp = mResearchable; mResearchable = other.mResearchable; other.mResearchable = btemp;
|
|
|
|
btemp = mResearched; mResearched = other.mResearched; other.mResearched = btemp;
|
|
|
|
btemp = mAllowMultiples; mAllowMultiples = other.mAllowMultiples; other.mAllowMultiples = btemp;
|
|
|
|
}
|
|
|
|
|
|
|
|
AvHMessageID AvHTechNode::getMessageID(void) const { return mMessageID; }
|
|
|
|
AvHTechID AvHTechNode::getTechID(void) const { return mTechID; }
|
|
|
|
AvHTechID AvHTechNode::getPrereqTechID1(void) const { return mPrereqID1; }
|
|
|
|
AvHTechID AvHTechNode::getPrereqTechID2(void) const { return mPrereqID2; }
|
|
|
|
int AvHTechNode::getBuildTime(void) const { return mBuildTime; }
|
|
|
|
int AvHTechNode::getCost(void) const { return mCost; }
|
|
|
|
bool AvHTechNode::getIsResearchable(void) const { return mResearchable; }
|
|
|
|
bool AvHTechNode::getIsResearched(void) const { return mResearched; }
|
|
|
|
bool AvHTechNode::getAllowMultiples(void) const { return mAllowMultiples; }
|
|
|
|
|
|
|
|
void AvHTechNode::setTechID(const AvHTechID inTechID) { mTechID = inTechID; }
|
|
|
|
void AvHTechNode::setPrereqTechID1(const AvHTechID inTechID) { mPrereqID1 = inTechID; }
|
|
|
|
void AvHTechNode::setPrereqTechID2(const AvHTechID inTechID) { mPrereqID2 = inTechID; }
|
|
|
|
void AvHTechNode::setBuildTime(const int inBuildTime) { mBuildTime = inBuildTime; }
|
|
|
|
void AvHTechNode::setCost(const int inCost) { mCost = inCost; }
|
|
|
|
void AvHTechNode::setResearchable(bool inState) { mResearchable = inState; }
|
|
|
|
void AvHTechNode::setResearchState(bool inState)
|
|
|
|
{
|
|
|
|
mResearched = inState;
|
|
|
|
if(!mAllowMultiples)
|
|
|
|
{ mResearchable = !mResearched; }
|
|
|
|
}
|
|
|
|
|
|
|
|
bool AvHTechNode::operator==(const AvHTechNode& other) const
|
|
|
|
{
|
|
|
|
bool theIsEqual = CHECK_EQUAL(mMessageID) && CHECK_EQUAL(mTechID) && CHECK_EQUAL(mPrereqID1)
|
|
|
|
&& CHECK_EQUAL(mPrereqID2) && CHECK_EQUAL(mCost) && CHECK_EQUAL(mBuildTime)
|
|
|
|
&& CHECK_EQUAL(mResearchable) && CHECK_EQUAL(mResearched) && CHECK_EQUAL(mAllowMultiples);
|
|
|
|
return theIsEqual;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool AvHTechNode::operator!=(const AvHTechNode& other) const
|
|
|
|
{
|
|
|
|
return !this->operator==(other);
|
|
|
|
}
|
|
|
|
|
|
|
|
AvHTechNode& AvHTechNode::operator=(const AvHTechNode& inTechNode)
|
|
|
|
{
|
|
|
|
AvHTechNode node(inTechNode);
|
|
|
|
swap(node);
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
void AvHTechNode::setAllowMultiples(const bool inAllow){ mAllowMultiples = inAllow; }
|