void CHW::selectResolution (u32 &dwWidth, u32 &dwHeight, BOOL bWindowed) { fill_vid_mode_list (this); #ifdef DEDICATED_SERVER dwWidth = 640; dwHeight = 480; #else if(bWindowed) { dwWidth = psCurrentVidMode[0]; dwHeight = psCurrentVidMode[1]; }else //check { #ifndef _EDITOR string64 buff; sprintf_s (buff,sizeof(buff),"%dx%d",psCurrentVidMode[0],psCurrentVidMode[1]); if(_ParseItem(buff,vid_mode_token)==u32(-1)) //not found { //select safe sprintf_s (buff,sizeof(buff),"vid_mode %s",vid_mode_token[0].name); Console->Execute (buff); } dwWidth = psCurrentVidMode[0]; dwHeight = psCurrentVidMode[1]; #endif } #endif }
void CHW::selectResolution (u32 &dwWidth, u32 &dwHeight, BOOL bWindowed) { fill_vid_mode_list (this); #ifndef _EDITOR if (g_dedicated_server) { dwWidth = 640; dwHeight = 480; } else #endif { if(bWindowed) { dwWidth = psCurrentVidMode[0]; dwHeight = psCurrentVidMode[1]; }else //check { #ifndef _EDITOR string64 buff; xr_sprintf (buff,sizeof(buff),"%dx%d",psCurrentVidMode[0],psCurrentVidMode[1]); if(_ParseItem(buff,vid_mode_token)==u32(-1)) //not found { //select safe xr_sprintf (buff,sizeof(buff),"vid_mode %s",vid_mode_token[0].name); Console->Execute (buff); } dwWidth = psCurrentVidMode[0]; dwHeight = psCurrentVidMode[1]; #endif } } //#endif }
u32 _ParseItem(LPSTR src, int ind, xr_token* token_list) { char dst[128]; _GetItem(src, ind, dst); return _ParseItem(dst, token_list); }
bool CStageXMLParse::_Parse(TiXmlDocument& TinyXML) { TiXmlElement* tiRoot = TinyXML.RootElement(); if (!tiRoot) { return false; } std::string sRootName = tiRoot->Value(); if (sRootName != STAGE_ROOT_GAME) { return false; } TiXmlNode* tiFirst = tiRoot->FirstChild(STAGE_GAME); if (tiFirst == NULL) { return false; } for (TiXmlElement* tiStage = tiFirst->ToElement(); tiStage != NULL; tiStage = tiStage->NextSiblingElement()) { CStageXMLStage* pStage = new CStageXMLStage; if (!BaseParse(pStage, tiStage)) { continue; } std::string strMap; std::string strChat; int nDifficulty = 0; Unit::GetXmlStrAttributeA(tiStage ,STAGE_MAP_OBJECT, strMap); Unit::GetXmlStrAttributeA(tiStage ,STAGE_CHAT, strChat); Unit::GetXmlIntAttribute(tiStage ,STAGE_DIFFICULTY_OBJECT, nDifficulty); pStage->SetMap(strMap); pStage->SetChat(strChat); pStage->SetDifficulty(nDifficulty); TiXmlNode* tiEnemyItem = tiFirst->FirstChild(ITEM_GAME); if (tiEnemyItem != NULL) { for (TiXmlElement* tiItem = tiEnemyItem->FirstChildElement(); tiItem != NULL; tiItem = tiItem->NextSiblingElement()) { CStageXMLItem* pItem = new CStageXMLItem(tiItem->Attribute(ITEM_WAY_OBJECT)); if (!BaseParse(pItem, tiItem)) { continue; } if(!_ParseItem(tiItem, pItem)) { continue; } PosObject posobjitem; BasePos(&posobjitem, tiItem); pItem->SetPoint(posobjitem.PosX, posobjitem.PosY); pStage->PushItem(pItem); } } TiXmlNode* tiEnemy = tiStage->FirstChild(ENEMY_GAME); if (tiEnemy == NULL) { return false; } for (TiXmlElement* tiElementEnemy = tiEnemy->ToElement(); tiElementEnemy != NULL; tiElementEnemy = tiElementEnemy->NextSiblingElement()) { CStageXMLEnemy* pEnemy = new CStageXMLEnemy; if (!BaseParse(pEnemy, tiElementEnemy)) { continue; } PosObject posobjenemy; BasePos(&posobjenemy, tiElementEnemy); pEnemy->SetPoint(posobjenemy.PosX, posobjenemy.PosY); _ParseEnemy(tiElementEnemy, pEnemy); TiXmlNode* tiEnemyItem = tiEnemy->FirstChild(ITEM_GAME); if (tiEnemyItem == NULL) { return false; } for (TiXmlElement* tiItem = tiEnemyItem->ToElement(); tiItem != NULL; tiItem = tiEnemyItem->NextSiblingElement()) { CStageXMLItem* pItem = new CStageXMLItem(tiItem->Attribute(ITEM_WAY_OBJECT)); if (!BaseParse(pItem, tiItem)) { continue; } if(!_ParseItem(tiItem, pItem)) { continue; } PosObject posobjitem; BasePos(&posobjitem, tiItem); pItem->SetPoint(posobjitem.PosX, posobjitem.PosY); pEnemy->PushItem(pItem); } pStage->PushEnemy(pEnemy); } m_mapStage[::atol(pStage->GetId().c_str())] = pStage; } return true; }