| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- /*
- ** Command & Conquer Renegade(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 <http://www.gnu.org/licenses/>.
- */
- /* $Header: /Commando/Code/Tools/max2w3d/PROGRESS.H 5 10/28/97 6:08p Greg_h $ */
- /***********************************************************************************************
- *** Confidential - Westwood Studios ***
- ***********************************************************************************************
- * *
- * Project Name : Commando / G 3D engine *
- * *
- * File Name : PROGRESS.H *
- * *
- * Programmer : James McNeil *
- * *
- * Start Date : 06/19/97 *
- * *
- * Last Update : June 19, 1997 [GH] *
- * *
- *---------------------------------------------------------------------------------------------*
- * Functions: *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- #ifndef PROGRESS_H
- #define PROGRESS_H
- #include "always.h"
- class Progress_Meter_Class
- {
- public:
- Progress_Meter_Class
- (
- Interface * gi,
- float base,
- float range
- ):
- Max ( gi ),
- Base ( base ),
- Range ( range ),
- Amount_Done ( 0.0f ),
- Increment ( 0.0f ),
- Accum( 0.0f ),
- Cancel_Requested ( FALSE )
- {
- }
- Progress_Meter_Class ( Progress_Meter_Class & other, float sub_amount ):
- Max ( other.Max ),
- Base ( other.Base + other.Amount_Done * other.Range ),
- Range ( other.Range * sub_amount ),
- Amount_Done ( 0.0f ),
- Increment ( 0.0f ),
- Accum ( other.Accum ),
- Cancel_Requested ( other.Cancel_Requested )
- {
- }
- void Finish_In_Steps ( int number_of_steps )
- {
- Increment = (1.0f - Amount_Done) / number_of_steps;
- }
- void Add_Increment ()
- {
- Set_Amount_Done ( Amount_Done + Increment );
- }
- void Set_Amount_Done ( float percentage )
- {
- Accum += percentage;
- Amount_Done = percentage;
- if (Accum > 0.01f) {
- Max->ProgressUpdate ( (int) (Amount_Done * Range + Base) );
- Accum = 0.0f;
- }
- if (Max->GetCancel())
- {
- int choice = MessageBox
- (
- Max->GetMAXHWnd(),
- _T("Do you really want to cancel the export?"),
- _T("Cancel Export?"), MB_ICONQUESTION | MB_YESNO
- );
- if ( choice == IDYES )
- Cancel_Requested = TRUE;
- else
- Max->SetCancel ( FALSE );
- }
- }
- BOOL Cancelled () { return Cancel_Requested; }
- float Increment;
- private:
- Interface * Max;
- float Base;
- float Range;
- float Amount_Done;
- float Accum;
- BOOL Cancel_Requested;
- };
- #endif /* PROGRESS_H */
|