//ゲームオーバーの描画 void draw_GameOver() { int FontHandle = CreateFontToHandle("HGS創英角ポップ体", 64, 8, DX_FONTTYPE_ANTIALIASING_EDGE); char *str = "Game Over...."; int Strlen = strlen(str); int Width = GetDrawStringWidthToHandle(str, Strlen, FontHandle); DrawStringToHandle(320 - Width / 2, 208, str, GetColor(255, 255, 255), FontHandle); /*フェードイン、フェードアウト*/ SetDrawBlendMode(DX_BLENDMODE_ALPHA, charClearOver); str = "スペースキーを押せば、もう一度プレイできます"; Strlen = strlen(str); Width = GetDrawStringWidth(str, Strlen); DrawString(320 - Width / 2, 280, str, GetColor(255, 255, 255)); //ブレンドを元に戻す SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0); if (charClearOver > 255 || charClearOver < 0) { i *= -1; } charClearOver += i; //フォントを削除 DeleteFontToHandle(FontHandle); }
//タイトルの描画 void draw_Title() { int FontHandle = CreateFontToHandle("HGS創英角ポップ体", 64, 8, DX_FONTTYPE_ANTIALIASING_EDGE); char *str = "Space Shooting"; int Strlen = strlen(str); int Width = GetDrawStringWidthToHandle(str, Strlen, FontHandle); DrawStringToHandle(320 - Width / 2, 208, str, GetColor(255, 255, 255), FontHandle); /*フェードイン、フェードアウト*/ SetDrawBlendMode(DX_BLENDMODE_ALPHA, char_br); str = "スペースキーを押してください"; Strlen = strlen(str); Width = GetDrawStringWidth(str, Strlen); DrawString(320 - Width / 2, 280, str, GetColor(255, 255, 255)); //ブレンドを元に戻す SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0); if (char_br > 255 || char_br < 0) { i *= -1; } char_br += i; //フォントを削除 DeleteFontToHandle(FontHandle); }
void Camera::drawStringOnWindowFixed(Vec2D pos_center, std::string text, Color_RGB color, double expansion) { Size s = Size(GetDrawStringWidth(text.c_str(), text.length()), Resources::getFont()->font_size)*expansion; if (!this->isVisibleForWindowPos(pos_center, s)) return; Color_RGB c = color*this->shield_ratio; DrawRotaString((int)pos_center.x, (int)pos_center.y, expansion, expansion, s.width / 2, s.height / 2, 0.0, c.toColor(), 0, 0, text.c_str()); }
void Camera::drawStringInWorld(Vec2D pos_center, std::string text, Color_RGB color, double expansion) { Vec2D p = this->toWindowPosPxFromWorldPos(pos_center) + this->sway_now; double d = expansion*this->zoom_magnification_now; Size s = Size(GetDrawStringWidth(text.c_str(), text.length()), Resources::getFont()->font_size)*d; double a = -this->rotate_angle_now; if (!this->isVisibleForWindowPos(p, s, a)) return; Color_RGB c = color*this->shield_ratio; DrawRotaString((int)p.x, (int)p.y, d, d, s.width / 2, s.height / 2, a, c.toColor(), 0, 0, text.c_str()); }
Scene* Menu::Update(){ SetDrawBlendMode(DX_BLENDMODE_ALPHA, 128); DrawBox(0, 0, MainLoop::WINDOW_WIDTH, MainLoop::WINDOW_HEIGHT, GetColor(0, 0, 0), TRUE); SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0); int menuLeft = MainLoop::WINDOW_WIDTH / 2 - GetDrawStringWidth("[X-KEY]:START", strlen("[X-KEY]:START")) / 2; DrawFormatStringToHandle(menuLeft, MainLoop::WINDOW_HEIGHT / 2 - 50, GetColor(255, 255, 255), mFontHandle, "[Z-KEY]:RESUME"); DrawFormatStringToHandle(menuLeft, MainLoop::WINDOW_HEIGHT / 2, GetColor(255, 255, 255), mFontHandle, "[X-KEY]:RESTART"); DrawFormatStringToHandle(menuLeft, MainLoop::WINDOW_HEIGHT / 2 + 50, GetColor(255, 255, 255), mFontHandle, "[C-KEY]:TITLE"); //シーケンス処理 Scene* next = this; if (CheckHitKey(KEY_INPUT_Z) != 0){ next = new Play(mParent); } else if (CheckHitKey(KEY_INPUT_X) != 0){ next = new OnePlayGame(); } else if (CheckHitKey(KEY_INPUT_C) != 0){ next = new Title(); } return next; }
//文字列全体の幅(ドット単位)で取得 int DrawableText::getTextWidth(){ if (m_textLen < 0){ return 0; } return GetDrawStringWidth(m_text.c_str(),m_textLen); }