home *** CD-ROM | disk | FTP | other *** search
/ WarCraft 2000 - Nuclear Epidemic / W2000.nrg / SOURCE.War2000 / AntiBug.cpp < prev    next >
C/C++ Source or Header  |  1998-09-01  |  2KB  |  112 lines

  1. #include "ddini.h"
  2. #include "ResFile.h"
  3. #include "FastDraw.h"
  4. #include "mgraph.h"
  5. #include "mouse.h"
  6. #include "menu.h"
  7. #include "MapDiscr.h"
  8. #include "multipl.h"
  9. #include "fog.h"
  10. #include "walls.h"
  11. #include "Nature.h"
  12. #include <assert.h>
  13. #include <crtdbg.h>
  14. //#define CHECKMODE
  15. struct AskMove{
  16.     word ReqID;//ΦφΣσΩ± ∩σ≡σ∞σ∙ασ∞επε
  17.     word PreID;//ΦφΣσΩ± µαµΣ≤∙σπε Σε≡Γα≥ⁿ±  Γ ²≥≤ Ωδσ≥Ω≤
  18.     byte x;
  19.     byte y;
  20.     char dx;
  21.     char dy;
  22. };
  23. extern int NAsk;//╩εδΦ≈σ±≥Γε τα∩≡ε±εΓ
  24. extern AskMove Ask[8192];//╠α±±ΦΓ τα∩≡ε±εΓ
  25.  
  26. class CSum{
  27.     int* lpInt;
  28.     int NInt;
  29.     int    Summa;
  30. public:
  31.     void GetSum(void* lp,int n);
  32.     void GetSum();
  33.     bool ChkSum();
  34. };
  35.  
  36. void CSum::GetSum(void* lp,int n){
  37.     lpInt=(int*)lp;
  38.     NInt=n>>2;
  39.     GetSum();
  40. };
  41. void CSum::GetSum(){
  42. #ifdef CHECKMODE
  43.     int SM=0;
  44.     for(int j=0;j<NInt;j++)SM+=lpInt[j];
  45.     Summa=SM;
  46. #endif;
  47. };
  48. bool CSum::ChkSum(){
  49.     int SM=0;
  50.     for(int j=0;j<NInt;j++)SM+=lpInt[j];
  51.     return Summa==SM;
  52. };
  53. //-------------------USING THIS CLASS----------------//
  54. static int NSum=0;
  55. CSum SMS[64];
  56. BigSum();
  57. void ADDSUMM(void* lp,int n);
  58. void GETALL();
  59. void CHKALL();
  60. void ADDSUMM(void* lp,int n){
  61.     SMS[NSum].GetSum(lp,n);
  62.     NSum++;
  63. };
  64. void GETALL(){
  65. #ifdef CHECKMODE
  66.     for(int i=0;i<NSum;i++)    SMS[i].GetSum();
  67. #endif
  68. };
  69. //Asks array integrity checking
  70. void CheckAsks(){
  71.     for(int i=0;i<NAsk;i++){
  72.         word ID=Ask[i].ReqID;
  73.         OneObject* OB=Group[ID];
  74.         assert(OB&&OB->x==Ask[i].x&&Ask[i].y==OB->y);
  75.     };
  76. };
  77. static dd=0;
  78. void CHKALL(){
  79.     return;
  80. //#ifdef CHECKMODE
  81.     for(int i=0;i<MAXOBJECT;i++){
  82.         OneObject* OB=Group[i];
  83.         assert(!(OB&&OB->LocalOrder&&OB->LocalOrder->OrderType==3&&OB->EnemyID==0xFFFF));
  84.     };
  85.     for(i=0;i<MAXOBJECT;i++){
  86.         OneObject* OB=Group[i];
  87.         if(OB&&OB->NIndex<15){
  88.             assert(!OB->capBuilding);
  89.         };
  90.     };
  91. //    for(int i=0;i<NSum;i++) assert(SMS[i].ChkSum());
  92. //    if(!_CrtCheckMemory())
  93. //        assert(0);
  94. //    CheckAsks();
  95.     /*for(int i=1;i<msx;i++)
  96.         for(int j=1;j<msy;j++){
  97.             word MID=Mops[j][i];
  98.             if(MID!=0xFFFF){
  99.                 OneObject* OB=Group[MID];
  100.                 if(!OB->capBuilding)assert(OB->x==i&&OB->y==j);//
  101.             };
  102.         };*/
  103.     /*for(int i=0;i<8192;i++){
  104.         OneObject* OBJ=Group[i];
  105.         if(int(OBJ))
  106.             if(OBJ->Lx!=OBJ->Ly||((!OBJ->Sdoxlo)&&Mops[OBJ->y][OBJ->x]!=OBJ->Index))assert(0);
  107.     };*/
  108. //#endif
  109. };
  110. void SetSumms(){
  111.     NSum=0;
  112. };