bool TextCheck(std::string &error_message, const char *filename) { std::ifstream in(filename, std::ios::binary); if(!in.is_open()) { error_message = "ファイルオープンに失敗しました。"; return false; } in.seekg(0, std::ios::end); const unsigned int file_size = static_cast<unsigned int>(in.tellg()); in.seekg(0, std::ios::beg); #define READ(buffer, size) in.read(buffer, size); if(!in.good()) { error_message = "ファイルからの読み込みに失敗しました。"; return false; } if(file_size == 0) { return true; } std::vector<char> buffer(file_size); READ(&buffer.front(), file_size); std::vector<wchar_t> result; if(!SJISToWChar(result, buffer) && !UTF8ToWChar(result, buffer)) { error_message = "不明な文字エンコードです。"; return false; } const bool is_no_print_char = std::accumulate(result.begin(), result.end(), true, CheckNoPrintString()); if(!is_no_print_char) { error_message = "印字不可能文字が記述されています。"; return false; } return true; }
void StateMenu::RenderPlay() { switch( m_SubState_Play ) { case PlayState::INITPLAYER : { return; } break; case PlayState::WAITPLAYER: { RenderTiles(); } break; case PlayState::EXECUTE: { RenderTiles(); } break; case PlayState::GAMEOVER: { } break; } // draw player next number Player* playernow; if( m_PlayerTurn == PlayerType::B ) { playernow = &m_Player_B; // blue unsigned int nnumb = playernow->Numbers[ playernow->NumberIndex+1 ]; char temp[8]; itoa( nnumb , temp, 10); wchar_t* tempwch = UTF8ToWChar( temp ); if( nnumb < 10 ) m_SprFont->DrawString( m_XDSystem->Renderer->SpriteBatchs[ XDGameRenderer::EBATCH::L1 ] , tempwch, XMFLOAT2( 731, 384 ), Colors::OrangeRed, 0 ); else m_SprFont->DrawString( m_XDSystem->Renderer->SpriteBatchs[ XDGameRenderer::EBATCH::L1 ] , tempwch, XMFLOAT2( 724, 384 ), Colors::OrangeRed, 0 ); delete[] tempwch; } else { playernow = &m_Player_A; unsigned int nnumb = playernow->Numbers[ playernow->NumberIndex+1 ]; char temp[8]; itoa( nnumb , temp, 10); wchar_t* tempwch = UTF8ToWChar( temp ); if( nnumb < 10 ) m_SprFont->DrawString( m_XDSystem->Renderer->SpriteBatchs[ XDGameRenderer::EBATCH::L1 ] , tempwch, XMFLOAT2( 731, 54 ), Colors::OrangeRed, 0 ); else m_SprFont->DrawString( m_XDSystem->Renderer->SpriteBatchs[ XDGameRenderer::EBATCH::L1 ] , tempwch, XMFLOAT2( 724, 54 ), Colors::OrangeRed, 0 ); delete[] tempwch; } }
size_t ConvertFromUTF8toString(const wxCharBuffer& utf8_buff, size_t utf8_buff_len, wxString& text) { // static // The length can never be longer in widechars than the bytecount in the uft8 (plus trailing null byte) wxChar* buff = text.GetWriteBuf(utf8_buff_len+1); // Convert to widechar const size_t wchar_len = UTF8ToWChar(buff, utf8_buff_len, utf8_buff, utf8_buff_len); if (wchar_len == wxCONV_FAILED) { // invalid conversion text.UngetWriteBuf(0); return wxCONV_FAILED; } text.UngetWriteBuf(wchar_len); return wchar_len; }
void StateMenu::RenderTiles() { bool isYouOdd=false; unsigned int index =0; for(int j=0; j<m_HexaColCount; j++) { for(int i=0; i<m_HexaRowCount; i++) { if( isYouOdd ) { m_HexTiles[ index ]->SetPos( m_StartPointX+(i*(m_HexaWidth+32))+48,m_StartPointY+(j*(m_HexaHeight/2 -1 )) ); } else { m_HexTiles[ index ]->SetPos( m_StartPointX+(i*(m_HexaWidth+32)),m_StartPointY+(j*(m_HexaHeight/2-1) ) ); } m_HexTiles[ index ]->SetAnim( m_HexTiles[ index ]->Color ); m_HexTiles[ index ]->Render(); if( !(m_HexTiles[ index ]->Color == HEXACOLOR::NETRAL || m_HexTiles[ index ]->Color == HEXACOLOR::HOVER) ) { // little centering trick int FONT_OFFSET_X = 13; int FONT_OFFSET_Y = 15; if( m_HexTiles[ index ]->Number < 10 ) { FONT_OFFSET_X = 19; FONT_OFFSET_Y = 15; if( m_HexTiles[ index ]->Number ==1 ) { FONT_OFFSET_X = 19; FONT_OFFSET_Y = 15; } } // int _px,_py; m_HexTiles[ index ]->GetPos( _px, _py ); char temp[10]; itoa( m_HexTiles[ index ]->Number, temp, 10 ); if( m_TempNumberDraw ) delete m_TempNumberDraw; m_TempNumberDraw = UTF8ToWChar( temp ); m_SprFont->DrawString( m_XDSystem->Renderer->SpriteBatchs[ XDGameRenderer::EBATCH::L1 ] , m_TempNumberDraw , XMFLOAT2( _px+FONT_OFFSET_X, _py+FONT_OFFSET_Y ), Colors::OrangeRed, 0 ); } index++; } isYouOdd = !isYouOdd; } }
SQLRETURN CDiagRec::GetDiagRec(SQLSMALLINT RecNumber, DWORD ErrorMsgLang, SQLWCHAR *SqlState, SQLINTEGER *NativeErrPtr, SQLWCHAR *MessageText, SQLSMALLINT BufferLength, SQLSMALLINT *TextLengthPtr) { CDiagStatusPtr diagStatusPtr; short strLen; short tmpStrLen; ODBCMXMSG_Def MsgStruct; SQLRETURN rc = SQL_SUCCESS; SQLINTEGER translateLength; SQLINTEGER translateLengthMax; UCHAR errorMsg[MAX_TRANSLATE_ERROR_MSG_LEN]; char cTmpBuf[132]; if (RecNumber <= (SQLSMALLINT)m_DiagStatusCollect.size()) { GETDIAGRECPTR(diagStatusPtr, m_DiagStatusCollect, RecNumber-1); // Get the Formatted Message Text from mc file if (MAX_DIAG_PARAMS >= 4) // if MAX_DIAG_PARAMS is changed you may need to change here { gDrvrGlobal.gOdbcMsg.GetOdbcMessage(ErrorMsgLang, diagStatusPtr->m_DiagErrorCode, &MsgStruct, diagStatusPtr->m_DiagParams[0].c_str(), diagStatusPtr->m_DiagParams[1].c_str(), diagStatusPtr->m_DiagParams[2].c_str(), diagStatusPtr->m_DiagParams[3].c_str()); } // Append the Message Text MsgStruct.lpsMsgText.append(diagStatusPtr->m_DiagMessageText); // Insert the Message Header MsgStruct.lpsMsgText.insert(0, gErrorMsgHeader[diagStatusPtr->m_DiagComponentCode]); // Append row id if(diagStatusPtr->m_DiagRowNumber>SQL_NO_ROW_NUMBER) { MsgStruct.lpsMsgText.append(" Row: "); MsgStruct.lpsMsgText.append(itoa(diagStatusPtr->m_DiagRowNumber,cTmpBuf,10)); // Append column id if(diagStatusPtr->m_DiagColumnNumber>SQL_COLUMN_NUMBER_UNKNOWN) { MsgStruct.lpsMsgText.append(" Column: "); MsgStruct.lpsMsgText.append(itoa(diagStatusPtr->m_DiagColumnNumber,cTmpBuf,10)); } } int transLen = 0; if (SqlState != NULL) { char tmpSqlState[6]; char error[50]; if (diagStatusPtr->m_DiagSqlState[0] != '\0') strncpy((char *)tmpSqlState, (const char *)diagStatusPtr->m_DiagSqlState, 5); else strncpy((char *)tmpSqlState, MsgStruct.lpsSQLState, 5); tmpSqlState[5] = 0; SqlState[0] = 0; //convert to UTF-16 rc = UTF8ToWChar(tmpSqlState, 5, SqlState, 6, &transLen, error); if(pdwGlobalTraceVariable && *pdwGlobalTraceVariable && rc == SQL_ERROR) TraceOut(TR_ODBC_API, "CDiagRec::GetDiagRec: SqlState Error: tmpSqlState \"%s\"", tmpSqlState); } if (NativeErrPtr != NULL) *NativeErrPtr = diagStatusPtr->m_DiagNative; tmpStrLen = MsgStruct.lpsMsgText.size(); //Double strLen to circumvent the bug in driver manager, that requires us to give //the NO. OF BYTES instead of no. of characters strLen = tmpStrLen * 2; translateLengthMax = (BufferLength == SQL_NTS) ? strLen : BufferLength; if (MessageText != NULL) { // translate from UTF8 to WChar if ( (rc = UTF8ToWChar((char *)MsgStruct.lpsMsgText.c_str(), tmpStrLen, MessageText, translateLengthMax/2, (int *)&translateLength, (char *)errorMsg)) != SQL_SUCCESS ) rc = SQL_SUCCESS_WITH_INFO; //ERROR; strLen = translateLength; ((wchar_t *)MessageText)[strLen] = L'\0' ; } if (TextLengthPtr != NULL) *TextLengthPtr = strLen; } else { if (SqlState != NULL) wcsncpy(SqlState, L"00000", 5); if (MessageText != NULL) MessageText[0] =L'\0'; if (TextLengthPtr != NULL) *TextLengthPtr = 0; rc = SQL_NO_DATA; } return rc; }
SQLRETURN returnAttrValue(BOOL reportError, CHandle *pHandle, RETURN_VALUE_STRUCT *retValues, SQLPOINTER ValuePtr, SQLINTEGER BufferLength, SQLINTEGER *StringLengthPtr) { SQLINTEGER strLen = DRVR_PENDING; SQLRETURN rc = SQL_SUCCESS; SQLINTEGER translateLength = 0; SQLINTEGER translateLengthMax = 0; UCHAR errorMsg[MAX_TRANSLATE_ERROR_MSG_LEN]; errorMsg[0] = '\0'; if (ValuePtr != NULL) { switch (retValues->dataType) { case SQL_C_SBIGINT: *(IDL_long_long*)ValuePtr = retValues->u.s64Value; strLen = sizeof(IDL_long_long); break; case SQL_C_UBIGINT: *(IDL_unsigned_long_long*)ValuePtr = retValues->u.u64Value; strLen = sizeof(IDL_unsigned_long_long); break; case SQL_IS_POINTER: *(SQLPOINTER *)ValuePtr = retValues->u.pValue; strLen = sizeof(SQLPOINTER); break; case SQL_IS_INTEGER: *(SQLINTEGER *)ValuePtr = retValues->u.s32Value; strLen = sizeof(SQLINTEGER); break; case SQL_IS_UINTEGER: *(SQLUINTEGER *)ValuePtr = retValues->u.u32Value; strLen = sizeof(SQLUINTEGER); break; case SQL_IS_SMALLINT: *(SQLSMALLINT *)ValuePtr = retValues->u.s16Value; strLen = sizeof(SQLSMALLINT); break; case SQL_IS_USMALLINT: *(SQLUSMALLINT *)ValuePtr = retValues->u.u16Value; strLen = sizeof(SQLUSMALLINT); break; default: { if (retValues->u.strPtr != NULL) { strLen = strlen(retValues->u.strPtr); if ((BufferLength <= 0 && BufferLength != SQL_NTS) || (BufferLength % 2 != 0)) { if (reportError) pHandle->setDiagRec(DRIVER_ERROR, IDS_HY_090); rc = SQL_ERROR; } else { if(strLen > 0) // && BufferLength > 2) { translateLengthMax = (BufferLength == SQL_NTS) ? strLen : BufferLength; if((rc = UTF8ToWChar(retValues->u.strPtr, strLen, (wchar_t *)ValuePtr, translateLengthMax/2, (int *)(&translateLength), (char *)errorMsg)) != SQL_SUCCESS) { if (errorMsg && errorMsg[0] != '\0') { if (reportError) pHandle->setDiagRec(DRIVER_ERROR, IDS_186_DSTODRV_TRUNC, 0, (char *)errorMsg); } else { if (reportError) pHandle->setDiagRec(DRIVER_ERROR, IDS_186_DSTODRV_TRUNC); } strLen = translateLength * 2; } else strLen = translateLength * 2; } else *((wchar_t *)ValuePtr) = L'\0'; } } } //default break; } } else { switch (retValues->dataType) { case SQL_IS_POINTER: strLen = sizeof(SQLPOINTER); break; case SQL_IS_INTEGER: strLen = sizeof(SQLINTEGER); break; case SQL_IS_UINTEGER: strLen = sizeof(SQLUINTEGER); break; case SQL_IS_SMALLINT: strLen = sizeof(SQLSMALLINT); break; case SQL_IS_USMALLINT: strLen = sizeof(SQLUSMALLINT); break; default: if (retValues->u.strPtr != NULL) strLen = strlen(retValues->u.strPtr); break; } } if (strLen != DRVR_PENDING) if (StringLengthPtr != NULL) *StringLengthPtr = strLen; return rc; }
void StateMenu::Initialize() { m_SubState = SUBSTATE::MAIN; m_SubState_Play = PlayState::INITPLAYER; std::function<void(void* sender)> _buttonPlayCallback = std::bind(&StateMenu::ButtonPlayCB, this, std::placeholders::_1); std::function<void(void* sender)> _buttonOptCallback = std::bind(&StateMenu::ButtonOptionCB, this, std::placeholders::_1); std::function<void(void* sender)> _buttonExitCallback = std::bind(&StateMenu::ButtonExitCB, this, std::placeholders::_1); std::function<void(void* sender)> _buttonInfoCallback = std::bind(&StateMenu::ButtonInfoCB, this, std::placeholders::_1); std::function<void(void* sender)> _buttonSoundCallback = std::bind(&StateMenu::ButtonSoundCB, this, std::placeholders::_1); // std::string tmp_str; // this->m_XDSystem->FileSystem->ResolveToROFolder( tmp_str,"test_gui_01.ep"); // GUI.Load(tmp_str); // GUI.RegisterCallback( "Play", _buttonPlayCallback ); // GUI.RegisterCallback( "Option", _buttonOptCallback ); // GUI.RegisterCallback( "Exit", _buttonExitCallback ); std::string corrected_path=""; m_XDSystem->FileSystem->ResolveToROFolder(corrected_path, "fonts\\AB_18.spritefont" ); assert ( ( m_XDSystem->FileSystem->FileExist ( corrected_path.c_str() ) == true ) ); m_SprFont = std::unique_ptr < SpriteFont >(new SpriteFont( m_XDSystem->Renderer->GetDevice(), UTF8ToWChar (corrected_path.c_str() ) )); // m_SprBg = m_XDSystem->Resource->GetSprite( "backgmain.xml" ); m_SprBg->SetSpriteBatch ( m_XDSystem->Renderer->SpriteBatchs[ XDGameRenderer::EBATCH::L0 ] ); // m_SprGames = m_XDSystem->Resource->GetSprite( "proximity.xml" ); m_SprGames->SetSpriteBatch ( m_XDSystem->Renderer->SpriteBatchs[ XDGameRenderer::EBATCH::L0 ] ); // m_AnimBg = m_XDSystem->Resource->GetAnim( "background.anim" ); m_AnimBg->SetSprite( m_SprBg ); m_AnimClick = m_XDSystem->Resource->GetAnim( "m_AnimClick.anim" ); m_AnimClick->SetSprite( m_SprGames ); m_AnimGreenPop = m_XDSystem->Resource->GetAnim( "m_AnimGreenPop.anim" ); m_AnimGreenPop->SetSprite( m_SprGames ); m_AnimBluePop = m_XDSystem->Resource->GetAnim( "m_AnimBluePop.anim" ); m_AnimBluePop->SetSprite( m_SprGames ); m_AnimGreenGear = m_XDSystem->Resource->GetAnim( "m_AnimGreenGear.anim" ); m_AnimGreenGear->SetSprite( m_SprGames ); m_AnimBlueGear = m_XDSystem->Resource->GetAnim( "m_AnimBlueGear.anim" ); m_AnimBlueGear->SetSprite( m_SprGames ); m_AnimClick->SetPos( 100, 100 ); m_AnimClick->SetAnim( 9 ); m_AnimClick->SetAnimLoop(XDAnimObject::ANIMLOOP::ONCE); m_AnimClick->ShowAfterFinish( false ); m_AnimGreenPop->SetPos( 720, 50 ); m_AnimGreenPop->SetAnim( 7 ); m_AnimGreenPop->SetAnimLoop(XDAnimObject::ANIMLOOP::ONCE); m_AnimGreenPop->ShowAfterFinish( true ); m_AnimGreenPop->SetFinishFrame( 4 ); m_AnimBluePop->SetPos( 720, 380 ); m_AnimBluePop->SetAnim( 8 ); m_AnimBluePop->SetAnimLoop(XDAnimObject::ANIMLOOP::ONCE); m_AnimBluePop->ShowAfterFinish( true ); m_AnimBluePop->SetFinishFrame( 5 ); // m_Swidth = 480; m_Sheight = 800; m_HexaWidth = 64; m_HexaHeight = 64; m_HexaRowCount = 7; m_HexaColCount = 14; m_StartPointX = 5; m_StartPointY = 4;//( m_Swidth - ( m_HexaHeight*m_HexaRowCount ) ) / 2 ; m_PlayerTurn = PlayerType::A; }