void CStructure::StartTurn() { BaseClass::StartTurn(); FindGround(); if (!GetSupplier() && !dynamic_cast<CCPU*>(this)) { if (GetPlayerOwner()) GetPlayerOwner()->RemoveUnit(this); SetSupplier(NULL); } if (GetSupplier() && !GetSupplier()->GetPlayerOwner()) { GetSupplier()->RemoveChild(this); if (GetPlayerOwner()) GetPlayerOwner()->RemoveUnit(this); SetSupplier(NULL); } if (GetPlayerOwner() == NULL) return; if (IsConstructing()) { m_iTurnsToConstruct--; if (m_iTurnsToConstruct == (size_t)0) { GetDigitanksPlayer()->AppendTurnInfo(tstring("Construction finished on ") + GetEntityName()); CompleteConstruction(); GetDigitanksPlayer()->AddActionItem(this, ACTIONTYPE_NEWSTRUCTURE); } else GetDigitanksPlayer()->AppendTurnInfo(tsprintf(tstring("Constructing ") + GetEntityName() + " (%d turns left)", m_iTurnsToConstruct.Get())); } if (IsUpgrading()) { m_iTurnsToUpgrade--; if (m_iTurnsToUpgrade == (size_t)0) { GetDigitanksPlayer()->AppendTurnInfo(GetEntityName() + " finished upgrading."); UpgradeComplete(); } else GetDigitanksPlayer()->AppendTurnInfo(tsprintf(tstring("Upgrading ") + GetEntityName() + " (%d turns left)", GetTurnsToUpgrade())); } }
CDNAStatement::CDNAStatement(GENEStatementType S, int treeDensity): Type(S), Fitness(NULL), TreeDensity(treeDensity){ try{ arity = CFunctionSet::Arity(S); CompleteConstruction(); } catch(CString Pblm){ throw Pblm; } MemTrace(1); }