/* ** Command & Conquer Generals Zero Hour(tm) ** Copyright 2025 Electronic Arts Inc. ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . */ //////////////////////////////////////////////////////////////////////////////// // // // (c) 2001-2003 Electronic Arts Inc. // // // //////////////////////////////////////////////////////////////////////////////// // Smudge.cpp //////////////////////////////////////////////////////////////////////////////// // Smudge System implementation // Author: Mark Wilczynski, June 2003 /////////////////////////////////////////////////////////////////////////////////////////////////// #include "PreRTS.h" // This must go first in EVERY cpp file int the Game #include "GameClient/Smudge.h" #ifdef _INTERNAL // for occasional debugging... //#pragma optimize("", off) //#pragma MESSAGE("************************************** WARNING, optimization disabled for debugging purposes") #endif DLListClass SmudgeSet::m_freeSmudgeList; ///reset(); //free all smudges. m_freeSmudgeSetList.Add_Tail(head); } } SmudgeSet *SmudgeManager::addSmudgeSet(void) { SmudgeSet* set=m_freeSmudgeSetList.Head(); if (set) { set->Remove(); //remove from free list m_usedSmudgeSetList.Add_Tail(set); //add to used list. return set; } set=W3DNEW SmudgeSet(); m_usedSmudgeSetList.Add_Tail(set); //add to used list. return set; } void SmudgeManager::removeSmudgeSet(SmudgeSet &mySmudge) { mySmudge.Remove(); //remove from used list m_freeSmudgeSetList.Add_Head(&mySmudge); //add to free list. } SmudgeSet::SmudgeSet(void) { m_usedSmudgeCount=0; } SmudgeSet::~SmudgeSet() { reset(); } void SmudgeSet::reset(void) { Smudge* head; while ((head = m_usedSmudgeList.Head ()) != NULL) { m_usedSmudgeList.Remove_Head (); m_freeSmudgeList.Add_Head(head); //add to free list } } Smudge *SmudgeSet::addSmudgeToSet(void) { Smudge* smudge=m_freeSmudgeList.Head(); if (smudge) { smudge->Remove(); //remove from free list m_usedSmudgeList.Add_Tail(smudge); //add to used list. m_usedSmudgeCount++; return smudge; } smudge=W3DNEW Smudge(); m_usedSmudgeList.Add_Tail(smudge); //add to used list. m_usedSmudgeCount++; return smudge; } void SmudgeSet::removeSmudgeFromSet(Smudge &mySmudge) { mySmudge.Remove(); //remove from used list. m_freeSmudgeList.Add_Head(&mySmudge); //add to free list m_usedSmudgeCount--; }