Difference between revisions of "Test"

From Project X Wiki
Jump to: navigation, search
(Blanked the page)
 
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
<source lang="eax">
 +
// and i'm done.
 +
require utils;
  
 +
CAntiGlitch* ggAg;
 +
 +
void antiglitch_s::Init()
 +
{
 +
  ggAg = new CAntiGlitch;
 +
}
 +
 +
CAntiGlitch::CAntiGlitch()
 +
{
 +
  lTime = 0;
 +
  cState = 0;
 +
  gTime = 0;
 +
  rTime = 0;
 +
} /* test */
 +
 +
void CAntiGlitch::Frame()
 +
{
 +
 
 +
  if ( (lTime == Root->Timer) && (rTime == Root->RetreatTimer) )
 +
  {
 +
    gTime += 20;
 +
    if (gTime > 20000)
 +
    {
 +
      if (cState == 0)
 +
      {
 +
        //shake all objects first
 +
        ShowMessage("Antiglitch Stage One");
 +
        for (local i = 1; i < Env->Objs.Count; i++)
 +
        {
 +
            local obj = CGObject(Env->Objs.Objs[i]);
 +
            if (obj == NullObj) continue;
 +
            local shake = obj->IsMoving();
 +
            if (!shake) continue;             
 +
            if (obj is CMissile)
 +
            {
 +
              missile = CMissile(obj);
 +
              missile->ExplodeAt(missile->PosX, missile->PosY);
 +
              missile->Free(true);
 +
              continue;
 +
            }
 +
            obj->SpX = GS->GetRandom() % 200 - 100; 
 +
            obj->SpY = GS->GetRandom() % 200 - 100;
 +
        }
 +
        cState = 1;
 +
        gTime = 10000;
 +
      } else if (cState == 1)
 +
      {                               
 +
        ShowMessage("Antiglitch Stage Two");
 +
        //delete objects to hell
 +
        for (local i = 1; i < Env->Objs.Count; i++)
 +
        {
 +
            local obj = CGObject(Env->Objs.Objs[i]);
 +
            if (obj == NullObj) continue;
 +
            if (obj->ClType == OC_Worm) continue;
 +
            if (!obj->IsMoving()) continue;
 +
            obj->Free(true);
 +
        }
 +
        cState = 2;
 +
        gTime = 10000;
 +
      } else if (cState == 2)
 +
      {                     
 +
        ShowMessage("Antiglitch Stage Three");
 +
        //shake everything
 +
        for (local i = 1; i < Env->Objs.Count; i++)
 +
        {
 +
            local obj = CGObject(Env->Objs.Objs[i]);
 +
            if (obj == NullObj) continue;
 +
            obj->SpX = GS->GetRandom() % 200 - 100; 
 +
            obj->SpY = GS->GetRandom() % 200 - 100; 
 +
            if (obj is CMissile)
 +
            {
 +
              missile = CMissile(obj);
 +
              missile->Free(true);
 +
              continue;
 +
            }
 +
        } 
 +
        cState = 3;
 +
        gTime = 10000;
 +
      }  else if (cState == 3)
 +
      {
 +
        cState = 4;         
 +
        ShowMessage("Antiglitch Stage Four");
 +
        Root->Message( Root, M_SKIPTURN, 0, NullObj);
 +
      }
 +
    }
 +
  } else {
 +
    gTime = 0;
 +
    cState = 0;
 +
    lTime = Root->Timer;
 +
    rTime = Root->RetreatTimer;
 +
  }
 +
}
 +
 +
override void CWorm::FireFinal(CWeapon* Weap,CShootDesc* Desc)
 +
{
 +
  super;
 +
  ggAg->gTime = 0; 
 +
  ggAg->cState = 0;
 +
}
 +
 +
override void CWorm::SetState(EObjState State)
 +
{
 +
  if (State == WS_DEAD)
 +
  {
 +
    ggAg->gTime = 0;
 +
    ggAg->cState = 0;
 +
  }
 +
  super;
 +
}
 +
 +
override void CTurnGame::Message(CObject* sender,EMType Type,int MSize,CMessageData* MData)
 +
{
 +
  super;
 +
  if (Type == M_FRAME)
 +
  {
 +
    ggAg->Frame();
 +
  }
 +
}
 +
</source>

Latest revision as of 17:57, 20 January 2012

// and i'm done.
require utils;

CAntiGlitch* ggAg;

void antiglitch_s::Init()
{
  ggAg = new CAntiGlitch;
}

CAntiGlitch::CAntiGlitch()
{
  lTime = 0;
  cState = 0;
  gTime = 0;
  rTime = 0;
} /* test */

void CAntiGlitch::Frame()
{
  
  if ( (lTime == Root->Timer) && (rTime == Root->RetreatTimer) )
  {
    gTime += 20;
    if (gTime > 20000)
    {
      if (cState == 0)
      {
        //shake all objects first
        ShowMessage("Antiglitch Stage One");
        for (local i = 1; i < Env->Objs.Count; i++)
        {
            local obj = CGObject(Env->Objs.Objs[i]);
            if (obj == NullObj) continue;
            local shake = obj->IsMoving();
            if (!shake) continue;              
            if (obj is CMissile)
            {
              missile = CMissile(obj);
              missile->ExplodeAt(missile->PosX, missile->PosY);
              missile->Free(true);
              continue;
            }
            obj->SpX = GS->GetRandom() % 200 - 100;   
            obj->SpY = GS->GetRandom() % 200 - 100;
        }
        cState = 1;
        gTime = 10000; 
      } else if (cState == 1)
      {                                 
        ShowMessage("Antiglitch Stage Two");
        //delete objects to hell
        for (local i = 1; i < Env->Objs.Count; i++)
        {
            local obj = CGObject(Env->Objs.Objs[i]);
            if (obj == NullObj) continue;
            if (obj->ClType == OC_Worm) continue;
            if (!obj->IsMoving()) continue;
            obj->Free(true);
        }
        cState = 2;
        gTime = 10000;
      } else if (cState == 2)
      {                      
        ShowMessage("Antiglitch Stage Three");
        //shake everything
        for (local i = 1; i < Env->Objs.Count; i++)
        {
            local obj = CGObject(Env->Objs.Objs[i]);
            if (obj == NullObj) continue;
            obj->SpX = GS->GetRandom() % 200 - 100;   
            obj->SpY = GS->GetRandom() % 200 - 100;   
            if (obj is CMissile)
            {
              missile = CMissile(obj);
              missile->Free(true);
              continue;
            }
        }   
        cState = 3;
        gTime = 10000;
      }  else if (cState == 3)
      {
         cState = 4;          
        ShowMessage("Antiglitch Stage Four");
         Root->Message( Root, M_SKIPTURN, 0, NullObj);
      }
    }
  } else {
    gTime = 0;
    cState = 0;
    lTime = Root->Timer;
    rTime = Root->RetreatTimer;
  }
}

override void CWorm::FireFinal(CWeapon* Weap,CShootDesc* Desc)
{
  super;
  ggAg->gTime = 0;  
  ggAg->cState = 0;
}

override void CWorm::SetState(EObjState State)
{
  if (State == WS_DEAD)
  {
    ggAg->gTime = 0;
    ggAg->cState = 0;
  }
  super;
}

override void CTurnGame::Message(CObject* sender,EMType Type,int MSize,CMessageData* MData)
{
  super;
  if (Type == M_FRAME)
  {
    ggAg->Frame();
  } 
}