亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? core_system.cpp

?? 是一個RPG游戲的源碼
?? CPP
字號:
/**************************************************
WinMain.cpp
GameCore Component

Programming Role-Playing Games with DirectX
by Jim Adams (01 Jan 2002)
**************************************************/

#include "Core_Global.h"

cApplication::cApplication()
{
  // Save instance handle
  g_pApplication = this;

  // Get the instance handle
  m_hInst = GetModuleHandle(NULL);

  // Set a default window class and caption
  strcpy(m_Class, "AppClass");
  strcpy(m_Caption, "Application Caption");

  // Set default window style, position, width, height
  m_Style  = WS_OVERLAPPEDWINDOW;
  m_XPos   = 0;
  m_YPos   = 0;
  m_Width  = 256;
  m_Height = 256;

  // Set default WNDCLASSEX structure
  m_wcex.cbSize        = sizeof(WNDCLASSEX);
  m_wcex.style         = CS_CLASSDC;
  m_wcex.lpfnWndProc   = AppWindowProc;
  m_wcex.cbClsExtra    = 0;
  m_wcex.cbWndExtra    = 0;
  m_wcex.hInstance     = m_hInst;
  m_wcex.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
  m_wcex.hCursor       = LoadCursor(NULL, IDC_ARROW);
  m_wcex.hbrBackground = NULL;
  m_wcex.lpszMenuName  = NULL;
  m_wcex.lpszClassName = m_Class;
  m_wcex.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
}

HWND cApplication::GethWnd()
{
  return m_hWnd;
}

HINSTANCE cApplication::GethInst()
{
  return m_hInst;
}

BOOL cApplication::Run()
{
  MSG Msg;

  // Register window class
  if(!RegisterClassEx(&m_wcex))
    return FALSE;

  // Create the Main Window
  m_hWnd = CreateWindow(m_Class, m_Caption,
        m_Style, 
        m_XPos, m_YPos,
        m_Width, m_Height,
        NULL, NULL, m_hInst, NULL);
  if(!m_hWnd)
    return FALSE;

  // Show and update the window
  ShowWindow(m_hWnd, SW_NORMAL);
  UpdateWindow(m_hWnd);

  // Make sure client area is correct size
  Resize(m_Width, m_Height);

  // Initialize COM
  CoInitialize(NULL);

  if(Init() == TRUE) {
     // Enter the message pump
    ZeroMemory(&Msg, sizeof(MSG));
    while(Msg.message != WM_QUIT) {

      // Handle Windows messages (if any)
      if(PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE)) {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
      } else {
        // Do per-frame processing, break on FALSE return value
        if(Frame() == FALSE)
          break;
      }
    }
  }

  Shutdown();

  // Shutdown COM
  CoUninitialize();

  // Unregister the window class
  UnregisterClass(m_Class, m_hInst);

  return TRUE;
}

BOOL cApplication::Error(BOOL Fatal, char *Text, ...)
{
  char CaptionText[12];
  char ErrorText[2048];
  va_list valist;

  // Build the message box caption based on fatal flag
  if(Fatal == FALSE)
    strcpy(CaptionText, "Error");
  else 
    strcpy(CaptionText, "Fatal Error");

  // Build variable text buffer
  va_start(valist, Text);
  vsprintf(ErrorText, Text, valist);
  va_end(valist);

  // Display the message box
  MessageBox(NULL, ErrorText, CaptionText, MB_OK | MB_ICONEXCLAMATION);

  // Post a quit message if error was fatal
  if(Fatal == TRUE)
    PostQuitMessage(0);

  return TRUE;
}

BOOL cApplication::Move(long XPos, long YPos)
{
  RECT ClientRect;

  GetClientRect(m_hWnd, &ClientRect);
  MoveWindow(m_hWnd, XPos, YPos, ClientRect.right, ClientRect.bottom, TRUE);

  return TRUE;
}

BOOL cApplication::Resize(long Width, long Height)
{
  RECT WndRect, ClientRect;
  long WndWidth, WndHeight;

  GetWindowRect(m_hWnd, &WndRect);
  GetClientRect(m_hWnd, &ClientRect);

  WndWidth  = (WndRect.right  - (ClientRect.right  - Width))  - WndRect.left;
  WndHeight = (WndRect.bottom - (ClientRect.bottom - Height)) - WndRect.top;

  MoveWindow(m_hWnd, WndRect.left, WndRect.top, WndWidth, WndHeight, TRUE);

  return TRUE;
}

BOOL cApplication::ShowMouse(BOOL Show)
{
  ShowCursor(Show);
  return TRUE;
}

// The message procedure - empty except for destroy message
long FAR PASCAL AppWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
  switch(uMsg) {
    case WM_DESTROY:
      PostQuitMessage(0);
      return 0;

    default: return g_pApplication->MsgProc(hWnd, uMsg, wParam, lParam);
  }
}

cStateManager::cStateManager() 
{ 
  m_StateParent = NULL; 
}

cStateManager::~cStateManager() 
{
  PopAll();
}

// Push a function on to the stack
void cStateManager::Push(void (*Function)(void *Ptr, long Purpose), void *DataPtr)
{
  sState *StatePtr;

  // Don't push a NULL value
  if(Function != NULL) {
    // Allocate a new state and push it on stack
    StatePtr = new sState();

    StatePtr->Function = Function;
    StatePtr->Next = m_StateParent;

    m_StateParent = StatePtr;

    // Call state with init purpose
    StatePtr->Function(DataPtr, INITPURPOSE);
  }
}

BOOL cStateManager::Pop(void *DataPtr)
{
  sState *StatePtr;

  // Remove the head of stack (if any)
  if((StatePtr = m_StateParent) != NULL) {
    // First call with shutdown purpose
    m_StateParent->Function(DataPtr, SHUTDOWNPURPOSE);

    m_StateParent = StatePtr->Next;
    StatePtr->Next = NULL;
    delete StatePtr;
  }

  // return TRUE if more states exist, FALSE otherwise
  if(m_StateParent == NULL)
    return FALSE;
  return TRUE;
}

void cStateManager::PopAll(void *DataPtr)
{
  while(Pop(DataPtr) == TRUE);
}

BOOL cStateManager::Process(void *DataPtr)
{ 
  // return an error if no more states
  if(m_StateParent == NULL)
    return FALSE;

  // Process the top-most state
  m_StateParent->Function(DataPtr, FRAMEPURPOSE); 

  return TRUE;
}

cProcessManager::cProcessManager() 
{ 
  m_ProcessParent = NULL; 
}

cProcessManager::~cProcessManager() 
{
  // Pop each process
  while(Pop()==TRUE);
}

// Push a function on to the stack
void cProcessManager::Push(void (*Process)(void *Ptr, long Purpose), void *DataPtr)
{
  // Don't push a NULL value
  if(Process != NULL) {
    // Allocate a new process and push it on stack
    sProcess *ProcessPtr = new sProcess();
    ProcessPtr->Function = Process;
    ProcessPtr->Next = m_ProcessParent;
    m_ProcessParent = ProcessPtr;

    // Call process with init purpose
    ProcessPtr->Function(DataPtr, INITPURPOSE);
  }
}

// Pop top process from stack
BOOL cProcessManager::Pop(void *DataPtr)
{
  sProcess *ProcessPtr;

  // Remove the head of stack (if any)
  if((ProcessPtr = m_ProcessParent) != NULL) {
    // First call with shutdown purpose
    m_ProcessParent->Function(DataPtr, SHUTDOWNPURPOSE);

    m_ProcessParent = ProcessPtr->Next;
    ProcessPtr->Next = NULL;
    delete ProcessPtr;
  }

  // return TRUE if more processes exist, FALSE otherwise
  if(m_ProcessParent == NULL)
    return FALSE;
  return TRUE;
}

void cProcessManager::PopAll(void *DataPtr)
{
  while(Pop(DataPtr) == TRUE);
}

// Process all functions
void cProcessManager::Process(void *DataPtr)
{ 
  sProcess *ProcessPtr = m_ProcessParent;

  while(ProcessPtr != NULL) {
    ProcessPtr->Function(DataPtr, FRAMEPURPOSE);
    ProcessPtr = ProcessPtr->Next;
  }
}

cDataPackage::cDataPackage()  
{  
  m_Buf = NULL; 
  m_Size = 0; 
}

cDataPackage::~cDataPackage() 
{ 
  Free(); 
}

void *cDataPackage::Create(unsigned long Size)
{
  // Free a previously created buffer
  Free();

  // Allocate some memory and return a pointer
  return (m_Buf = (void*)new char[(m_Size = Size)]);
}

// Free the allocated memory
void cDataPackage::Free() 
{ 
  delete m_Buf; 
  m_Buf = NULL; 
  m_Size = 0; 
}

BOOL cDataPackage::Save(char *Filename)
{
  FILE *fp;

  // Make sure there's something to write
  if(m_Buf != NULL && m_Size) {
    // Open file, write size and data
    if((fp=fopen(Filename, "wb")) != NULL) {
      fwrite(&m_Size, 1, 4, fp);
      fwrite(m_Buf, 1, m_Size, fp);
      fclose(fp);
      return TRUE;
    }
  }

  return FALSE;
}

void *cDataPackage::Load(char *Filename, unsigned long *Size)
{
  FILE *fp;

  // Free a prior buffer
  Free();

  if((fp=fopen(Filename, "rb"))!=NULL) {
    // Read in size and data
    fread(&m_Size, 1, 4, fp);
    if((m_Buf = (void*)new char[m_Size]) != NULL)
      fread(m_Buf, 1, m_Size, fp);
    fclose(fp);

    // Store size to return
    if(Size != NULL)
      *Size = m_Size;

    // return pointer
    return m_Buf;
  }

  return NULL;
}

void *cDataPackage::GetPtr()
{
  return m_Buf;
}

unsigned long cDataPackage::GetSize()
{
  return m_Size;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色视频欧美一区二区三区| 国产欧美久久久精品影院| 日韩理论片在线| av午夜精品一区二区三区| 亚洲色图都市小说| 欧美日韩你懂的| 欧美aaa在线| 精品久久久久久久久久久久久久久久久 | 最新国产精品久久精品| 91伊人久久大香线蕉| 亚洲一区电影777| 91精品啪在线观看国产60岁| 久色婷婷小香蕉久久| 国产农村妇女毛片精品久久麻豆 | 色综合夜色一区| 亚洲1区2区3区视频| 久久亚洲一级片| 99国产精品国产精品毛片| 首页欧美精品中文字幕| 久久网站热最新地址| 91在线视频免费观看| 日本最新不卡在线| 国产精品午夜久久| 精品视频一区 二区 三区| 极品少妇一区二区三区精品视频| 亚洲国产精品成人久久综合一区| 欧美日韩在线亚洲一区蜜芽| 国产一区二区0| 一区二区三区四区不卡在线 | 欧美日本高清视频在线观看| 精品一区精品二区高清| 亚洲女厕所小便bbb| 欧美变态tickling挠脚心| 91香蕉视频污在线| 美国av一区二区| 亚洲精品老司机| 久久先锋影音av鲁色资源网| 欧美午夜精品一区二区蜜桃| 国产精品原创巨作av| 亚洲国产成人av网| 中文字幕欧美国产| 日韩精品中文字幕一区| 精品污污网站免费看| 成人深夜在线观看| 久久99精品国产91久久来源| 亚洲激情五月婷婷| 国产精品网站导航| 精品国产乱码久久| 69av一区二区三区| 色哟哟国产精品| 成人毛片在线观看| 国产一区久久久| 日本v片在线高清不卡在线观看| 国产精品成人免费| 久久精品一级爱片| 欧美不卡在线视频| 欧美一级二级在线观看| 在线观看视频欧美| 97超碰欧美中文字幕| 国产高清在线精品| 国产真实乱对白精彩久久| 日韩av中文在线观看| 亚洲成人午夜电影| 亚洲一区在线观看网站| 亚洲色图.com| 1024国产精品| 国产精品网友自拍| 中文字幕的久久| 国产欧美日本一区二区三区| 久久久91精品国产一区二区精品 | 欧美一区二区三区白人| 欧美亚州韩日在线看免费版国语版| 不卡区在线中文字幕| 成人福利电影精品一区二区在线观看| 久久爱www久久做| 久久9热精品视频| 激情综合色综合久久综合| 久久99精品国产| 国产精品影视在线观看| 成人性生交大片| 成人免费高清视频在线观看| k8久久久一区二区三区 | 国产精品美女www爽爽爽| 久久九九久久九九| 中文一区一区三区高中清不卡| 国产日韩v精品一区二区| 国产无一区二区| 成人欧美一区二区三区白人 | 久草精品在线观看| 国产在线视频精品一区| 成人听书哪个软件好| 99国产精品久久久久久久久久 | 一区二区三区不卡视频 | 老司机精品视频导航| 国产激情一区二区三区| 成人天堂资源www在线| 欧洲精品在线观看| 欧美一区二区三区四区视频| 2021国产精品久久精品| 国产精品三级电影| 一区二区三国产精华液| 日韩二区三区在线观看| 国内精品不卡在线| jlzzjlzz亚洲女人18| 在线观看免费视频综合| 91麻豆精品国产自产在线| www精品美女久久久tv| 国产精品久久三区| 亚洲mv在线观看| 国产精品99久久久久| 色婷婷一区二区三区四区| 日韩亚洲欧美综合| 国产精品久久久久久久久久免费看 | 国产日韩精品一区二区浪潮av | 久久女同性恋中文字幕| 中文字幕欧美一| 秋霞午夜av一区二区三区| 成人一级片网址| 91精品久久久久久蜜臀| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 一区二区三区免费观看| 极品美女销魂一区二区三区| 91麻豆.com| 精品成人一区二区| 亚洲一区二区三区精品在线| 国产麻豆成人传媒免费观看| 欧美性大战久久| 国产欧美日本一区视频| 免费成人在线网站| 色婷婷亚洲婷婷| 国产欧美精品在线观看| 三级在线观看一区二区| 成人网在线免费视频| 日韩欧美国产精品| 亚洲国产aⅴ天堂久久| 豆国产96在线|亚洲| 日韩欧美一级精品久久| 一区二区高清视频在线观看| 国产成人av资源| 日韩精品专区在线影院重磅| 亚洲成人你懂的| 欧美专区亚洲专区| 中文字幕一区二区三区在线不卡| 久久精品国产秦先生| 欧美久久一二区| 亚洲午夜久久久久久久久电影院| 国产激情一区二区三区桃花岛亚洲| 欧美一区二区黄| 图片区小说区国产精品视频 | 欧洲精品一区二区三区在线观看| 久久色在线观看| 麻豆国产精品一区二区三区 | 国产美女娇喘av呻吟久久| 欧美一区二区三区成人| 亚洲电影中文字幕在线观看| 91免费看片在线观看| 欧美国产精品一区二区三区| 国产电影精品久久禁18| 亚洲精品一线二线三线无人区| 奇米四色…亚洲| 精品日产卡一卡二卡麻豆| 日韩高清不卡一区二区| 91精品在线观看入口| 五月天激情小说综合| 欧美肥胖老妇做爰| 天天影视色香欲综合网老头| 欧美日韩免费电影| 午夜精品福利在线| 日韩一区二区三区在线视频| 日本网站在线观看一区二区三区| 欧美日韩国产精品自在自线| 亚洲bt欧美bt精品| 在线不卡免费欧美| 裸体健美xxxx欧美裸体表演| 欧美岛国在线观看| 国产伦精品一区二区三区视频青涩| 久久久综合精品| 成人国产精品免费网站| 亚洲同性同志一二三专区| 91久久精品网| 婷婷国产v国产偷v亚洲高清| 欧美一区二区三区日韩| 九色|91porny| 国产精品网站在线播放| 91福利区一区二区三区| 天堂资源在线中文精品| 91精品国产乱码久久蜜臀| 免费成人你懂的| 国产日韩视频一区二区三区| 99视频国产精品| 五月婷婷欧美视频| 欧美va亚洲va香蕉在线| 国产v日产∨综合v精品视频| 国产精品入口麻豆原神| 欧洲亚洲国产日韩| 精品在线视频一区| 亚洲视频电影在线| 日韩一区二区在线观看| av高清不卡在线| 日日夜夜精品免费视频|