示例#1
0
void CMagneticView::ClearAll(void)
{
  CMagneticApp* pApp = (CMagneticApp*)AfxGetApp();

  m_strOutput.Empty();
  m_strStatLocation.Empty();
  m_strStatScore.Empty();
  m_strStatCurrent.Empty();
  m_Scrollback.GetScrollback().Empty();
  m_PageTable.RemoveAll();
  m_Input.RemoveAll();
  m_History.RemoveAll();
  m_iLines = 0;
  m_iMaxLines = 0;
  m_bStatusBar = false;
  m_bAnimate = false;

  pApp->SetGameLoaded(0);

  m_Recording = Recording::RecordingOff;
  if (m_pFileRecord)
    fclose(m_pFileRecord);
  m_pFileRecord = NULL;
  m_Scripting = Scripting::ScriptingOff;
  if (m_pFileScript)
    fclose(m_pFileScript);
  m_pFileScript = NULL;
  m_strScript.Empty();

  if (m_PicWnd.GetSafeHwnd())
    m_PicWnd.SendMessage(WM_CLOSE,0,0);
  m_Picture.ClearAll();
  SetAnimate(FALSE);
  ClearAnims();
}
示例#2
0
void CMagneticView::Animate(void)
{
  CMagneticApp* pApp = (CMagneticApp*)AfxGetApp();

  if (m_bAnimate && (pApp->GetShowGraphics() != CMagneticApp::ShowGraphics::NoGraphics))
  {
    struct ms_position * Positions;
    type16 Count, Width, Height;
    type8 * pMask;
    
    if (ms_animate(&Positions,&Count) == 0)
    {
      m_bAnimate = false;
      return;
    }

    ClearAnims();
    for (int i = 0; i < Count; i++)
    {
      type8* pPictureData = ms_get_anim_frame(Positions[i].number,&Width,&Height,&pMask);
      if (pPictureData)
      {
        CMagneticPic* pFrame = new CMagneticPic();
        pFrame->NewPicture(Width,Height,pPictureData,m_Palette);
        pFrame->SetOrigin(CPoint(Positions[i].x,Positions[i].y));
        pFrame->SetMask(pMask);
        m_AnimFrames.Add(pFrame);
      }
    }

    switch (pApp->GetShowGraphics())
    {
    case CMagneticApp::ShowGraphics::SeparateWindow:
      if (m_PicWnd.GetSafeHwnd())
        m_PicWnd.Invalidate();
      break;
    case CMagneticApp::ShowGraphics::MainWindow:
      Invalidate();
      break;
    }
  }
}