00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "FSServer.h"
00027
00028 #ifdef _DEBUG
00029 #define new DEBUG_NEW
00030 #endif
00031
00032
00033 Salvage::Salvage()
00034 : mOwner(NULL),
00035 TurnCreated(TheGame->GetTurn()),
00036 MaxSize(0)
00037 {
00038 SetID(0);
00039 }
00040
00041 Salvage::Salvage(const CargoHolder &source)
00042 : CargoHolder(source),
00043 TurnCreated(TheGame->GetTurn()),
00044 MaxSize(0)
00045 {
00046 SetID(TheGalaxy->GetSalvageID());
00047 }
00048
00049 Salvage::~Salvage()
00050 {
00051 }
00052
00053 void Salvage::Decay()
00054 {
00055 if (TheGame->GetTurn() > TurnCreated + 1) {
00056 for (CargoType ct = 0; ct < Rules::MaxMinType; ++ct) {
00057 long amt = GetContain(ct);
00058 if (amt > 100)
00059 amt /= 10;
00060 else
00061 amt = min(amt, 10L);
00062
00063 AdjustAmounts(ct, -amt);
00064 MaxSize -= amt;
00065 }
00066 }
00067 }
00068
00069 bool Salvage::ParseNode(const TiXmlNode * node)
00070 {
00071 if (!CargoHolder::ParseNode(node))
00072 return false;
00073
00074 TurnCreated = GetLong(node->FirstChild("TurnCreated"));
00075 if (TurnCreated < 1 || TurnCreated >= TheGame->GetTurn()) {
00076 Message * mess = TheGame->AddMessage("Error: Wrong year number in turn file");
00077 mess->AddLong("Salvage created", TurnCreated);
00078 return false;
00079 }
00080
00081 return true;
00082 }
00083
00084 TiXmlNode * Salvage::WriteNode(TiXmlNode * node, const Player * viewer) const
00085 {
00086 if (viewer != NULL && !SeenBy(viewer))
00087 return NULL;
00088
00089 CargoHolder::WriteNode(node, viewer);
00090 if (viewer == NULL)
00091 AddLong(node, "TurnCreated", TurnCreated);
00092
00093 return node;
00094 }