• R/O
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。


Commit MetaInfo

Revision234 (tree)
Zeit2020-02-24 19:28:55
Autorxops-mikan

Log Message

メニューのオプション画面にライセンス情報を表示する機能追加、スクロールバー処理のバグ修正、"help"コマンドによるリスト表示改善

Ändern Zusammenfassung

Diff

--- trunk/d3dgraphics-directx.cpp (revision 233)
+++ trunk/d3dgraphics-directx.cpp (revision 234)
@@ -57,6 +57,7 @@
5757
5858 //ptextsprite = NULL;
5959 pxmsfont = NULL;
60+ pxmssmallfont = NULL;
6061 TextureFont = -1;
6162
6263 #ifdef ENABLE_DEBUGCONSOLE
@@ -336,9 +337,17 @@
336337 return 1;
337338 }
338339 //フォント名:MS ゴシック サイズ:18
339- HRESULT hr = D3DXCreateFont( pd3dDevice, -18, 0, FW_NORMAL, 1, FALSE, SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS,
340- DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "MS ゴシック", &pxmsfont);
341- if( FAILED(hr) ){ return 1; }
340+ if( FAILED( D3DXCreateFont( pd3dDevice, -18, 0, FW_NORMAL, 1, FALSE, SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS,
341+ DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "MS ゴシック", &pxmsfont) )
342+ ){
343+ return 1;
344+ }
345+ //フォント名:MS ゴシック サイズ:12
346+ if( FAILED( D3DXCreateFont( pd3dDevice, -12, 0, FW_NORMAL, 1, FALSE, SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS,
347+ DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "MS ゴシック", &pxmssmallfont) )
348+ ){
349+ return 1;
350+ }
342351
343352 //テクスチャフォント用画像を取得
344353 TextureFont = LoadTexture(TextureFontFname, true, false);
@@ -368,6 +377,10 @@
368377 pxmsfont->Release();
369378 pxmsfont = NULL;
370379 }
380+ if( pxmssmallfont != NULL ){
381+ pxmssmallfont->Release();
382+ pxmssmallfont = NULL;
383+ }
371384 if( ptextsprite != NULL ){
372385 ptextsprite->Release();
373386 ptextsprite = NULL;
@@ -1569,6 +1582,32 @@
15691582 End2DMSFontTextRender();
15701583 }
15711584
1585+//! @brief 文字を表示(システムフォント使用、小さい)
1586+//! @param x x座標
1587+//! @param y y座標
1588+//! @param str 文字列 (改行コード:可)
1589+//! @param color 色
1590+//! @note 基本仕様はDraw2DMSFontText()と同等ですが、文字が小さくなります。
1591+void D3DGraphics::Draw2DMSSmallFontText(int x, int y, char *str, int color)
1592+{
1593+ //if( ptextsprite == NULL ){ return; }
1594+
1595+ //テキストスプライト初期化
1596+ Start2DMSFontTextRender();
1597+
1598+ //基準座標を設定
1599+ D3DXMATRIX matWorld;
1600+ D3DXMatrixIdentity(&matWorld);
1601+ ptextsprite->SetTransform(&matWorld);
1602+
1603+ //文字を表示
1604+ RECT rc = {x, y, 0, 0};
1605+ pxmssmallfont->DrawText(ptextsprite, str, -1, &rc, DT_NOCLIP, color);
1606+
1607+ //テキストスプライト解放
1608+ End2DMSFontTextRender();
1609+}
1610+
15721611 //! @brief 2D システムフォントによるテキスト表示を終了
15731612 //! @attention DirectXの ID3DXSprite を解放しています。
15741613 void D3DGraphics::End2DMSFontTextRender()
--- trunk/d3dgraphics-opengl.cpp (revision 233)
+++ trunk/d3dgraphics-opengl.cpp (revision 234)
@@ -55,6 +55,7 @@
5555 height = 0;
5656 fullscreenflag = false;
5757 SystemFont = NULL;
58+ SystemSmallFont = NULL;
5859 now_SystemFontUStr = new WCHAR [1];
5960 now_SystemFontUStr[0] = NULL;
6061 SystemFontListIdx = 0;
@@ -187,6 +188,8 @@
187188 //システムフォント用意
188189 //フォント名:MS ゴシック サイズ:18
189190 SystemFont = CreateFont(18, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, "MS ゴシック");
191+ //フォント名:MS ゴシック サイズ:12
192+ SystemSmallFont = CreateFont(12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, "MS ゴシック");
190193
191194 #ifdef ENABLE_DEBUGLOG
192195 //ログに出力
@@ -314,6 +317,8 @@
314317 //システムフォント用意
315318 //フォント名:MS ゴシック サイズ:18
316319 SystemFont = CreateFont(18, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, "MS ゴシック");
320+ //フォント名:MS ゴシック サイズ:12
321+ SystemSmallFont = CreateFont(12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, "MS ゴシック");
317322
318323 #ifdef ENABLE_DEBUGLOG
319324 //ログに出力
@@ -380,6 +385,10 @@
380385 DeleteObject(SystemFont);
381386 SystemFont = NULL;
382387 }
388+ if( SystemSmallFont != NULL ){
389+ DeleteObject(SystemSmallFont);
390+ SystemSmallFont = NULL;
391+ }
383392 if( now_SystemFontUStr != NULL ){
384393 delete [] now_SystemFontUStr;
385394 now_SystemFontUStr = NULL;
@@ -2417,6 +2426,87 @@
24172426 Draw2DMSFontText(x + (w/2 - (StrMaxLineLen(str)*9/2)), y, str, color);
24182427 }
24192428
2429+//! @brief 文字を表示(システムフォント使用、小さい)
2430+//! @param x x座標
2431+//! @param y y座標
2432+//! @param str 文字列 (改行コード:可)
2433+//! @param color 色
2434+//! @note 基本仕様はDraw2DMSFontText()と同等ですが、文字が小さくなります。
2435+//! @todo 同一文字列を通常フォントサイズで出すとバグが出るかもしれない。(要検証)
2436+void D3DGraphics::Draw2DMSSmallFontText(int x, int y, char *str, int color)
2437+{
2438+ int len = strlen(str);
2439+ WCHAR *ustr;
2440+
2441+ y += 12;
2442+
2443+ Start2DRender();
2444+ glEnable(GL_DEPTH_TEST);
2445+
2446+ //テクスチャ無効
2447+ glDisable(GL_TEXTURE_2D);
2448+
2449+ //Unicode文字列へ変換
2450+ ustr = new WCHAR [len+1];
2451+ MultiByteToWideChar(CP_ACP, 0, str, -1, ustr, len + 1);
2452+
2453+ //新たな文字列なら、リソースを作り直す
2454+ if( lstrcmpW(ustr, now_SystemFontUStr) != 0 ){
2455+ GLuint listIdx;
2456+ HDC hDC;
2457+
2458+ //古いデータを削除
2459+ glDeleteLists(SystemFontListIdx, SystemFontListIdxSize);
2460+ delete [] now_SystemFontUStr;
2461+
2462+ //デバイスコンテキスト設定
2463+ hDC = GetDC(hWnd);
2464+ wglMakeCurrent(hDC, hGLRC);
2465+ SelectObject(hDC, SystemSmallFont);
2466+
2467+ //ディスプレイリストを作成
2468+ listIdx = glGenLists(len);
2469+ wglUseFontBitmapsW(hDC, ustr[0], 1, listIdx); //ダミー
2470+ for(int i=0; i<lstrlenW(ustr); i++){
2471+ wglUseFontBitmapsW(hDC, ustr[i], 1, listIdx+i);
2472+ }
2473+
2474+ //デバイスコンテキスト廃棄
2475+ ReleaseDC(hWnd, hDC);
2476+
2477+ //設定を記録
2478+ now_SystemFontUStr = new WCHAR [len+1];
2479+ lstrcpyW(now_SystemFontUStr, ustr);
2480+ SystemFontListIdx = listIdx;
2481+ SystemFontListIdxSize = len;
2482+ }
2483+
2484+ //座標と色を設定
2485+ glBitmap(0, 0, 0, 0, 10, 0, NULL);
2486+ glRasterPos3f((float)x, (float)y, SystemFont_posz);
2487+ glColor4ub((color>>24)&0xFF, (color>>16)&0xFF, (color>>8)&0xFF, color&0xFF);
2488+
2489+ for(int i=0; i<lstrlenW(ustr); i++){
2490+ if( ustr[i] == '\n' ){
2491+ //改行する
2492+ y += 12;
2493+ glRasterPos3f((float)x, (float)y, SystemFont_posz);
2494+ }
2495+ else{
2496+ //ディスプレイリスト描画
2497+ glCallList(SystemFontListIdx + i);
2498+ }
2499+ }
2500+
2501+ SystemFont_posz -= 0.01f;
2502+
2503+ //Unicode文字列の廃棄
2504+ delete [] ustr;
2505+
2506+ //glDisable(GL_DEPTH_TEST);
2507+ End2DRender();
2508+}
2509+
24202510 //! @brief 2D描画用設定
24212511 void D3DGraphics::Start2DRender()
24222512 {
--- trunk/d3dgraphics.h (revision 233)
+++ trunk/d3dgraphics.h (revision 234)
@@ -185,6 +185,7 @@
185185
186186 LPD3DXSPRITE ptextsprite; //!< 2Dテクスチャスプライト
187187 LPD3DXFONT pxmsfont; //!< システムフォント
188+ LPD3DXFONT pxmssmallfont; //!< システムフォント(小さい)
188189 char TextureFontFname[_MAX_PATH]; //!< テクスチャフォントのファイル名
189190 int TextureFont; //!< テクスチャフォントのテクスチャID
190191
@@ -214,6 +215,7 @@
214215 TEXTUREDATA ptextures[MAX_TEXTURE]; //!< テクスチャを格納
215216 GLuint textureobjname[MAX_TEXTURE]; //!< テクスチャオブジェクト
216217 HFONT SystemFont; //!< システムフォント用の論理フォント
218+ HFONT SystemSmallFont; //!< システムフォント用の論理フォント(小さい)
217219 WCHAR *now_SystemFontUStr; //!< 現在表示中のシステムフォントによる文字列(Unicode)
218220 GLuint SystemFontListIdx; //!< システムフォントのディスプレイリスト
219221 int SystemFontListIdxSize; //!< システムフォントのディスプレイリストのサイズ
@@ -301,6 +303,7 @@
301303 void Renderline(float x1, float y1, float z1, float x2, float y2, float z2, int color);
302304 void Draw2DMSFontText(int x, int y, char *str, int color);
303305 void Draw2DMSFontTextCenter(int x, int y, int w, int h, char *str, int color);
306+ void Draw2DMSSmallFontText(int x, int y, char *str, int color);
304307 void Draw2DTextureFontText(int x, int y, char *str, int color, int fontwidth, int fontheight);
305308 void Draw2DTextureFontTextCenter(int x, int y, char *str, int color, int fontwidth, int fontheight);
306309 #ifdef ENABLE_DEBUGCONSOLE
--- trunk/gamemain.cpp (revision 233)
+++ trunk/gamemain.cpp (revision 234)
@@ -28,6 +28,7 @@
2828 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
2929 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3030 //--------------------------------------------------------------------------------
31+// ※メニュー内のライセンス文章は mainmenu::CreateOptions() 内で定義されている。
3132
3233 #include "gamemain.h"
3334
@@ -453,11 +454,23 @@
453454 mainmenu::mainmenu()
454455 {
455456 demopath[0] = '\0';
457+
458+#ifdef ENABLE_MENUOPTIONS
459+ licenseinfobuf = new char[100*18];
460+ licenseinfobuf[0] = '\0';
461+#endif
456462 }
457463
458464 //! @brief ディストラクタ
459465 mainmenu::~mainmenu()
460-{}
466+{
467+#ifdef ENABLE_MENUOPTIONS
468+ if( licenseinfobuf != NULL ){
469+ delete [] licenseinfobuf;
470+ licenseinfobuf = NULL;
471+ }
472+#endif
473+}
461474
462475 int mainmenu::Create()
463476 {
@@ -910,13 +923,13 @@
910923 Options_p1LinkTextData[0].text_defaultcolor = d3dg->GetColorCode(0.6f,0.6f,1.0f,1.0f);
911924 Options_p1LinkTextData[0].text_cursorcolor = d3dg->GetColorCode(1.0f,0.6f,0.6f,1.0f);
912925 strcpy(Options_p1LinkTextData[0].text, "CONFIG");
913- Options_p1LinkTextData[1].enable = false;
926+ Options_p1LinkTextData[1].enable = true;
914927 Options_p1LinkTextData[1].pos_x = 0;
915928 Options_p1LinkTextData[1].pos_y = 90;
916929 Options_p1LinkTextData[1].text_w = 20;
917930 Options_p1LinkTextData[1].text_h = 26;
918- Options_p1LinkTextData[1].text_defaultcolor = 0x00000000;
919- Options_p1LinkTextData[1].text_cursorcolor = 0x00000000;
931+ Options_p1LinkTextData[1].text_defaultcolor = d3dg->GetColorCode(0.6f,0.6f,1.0f,1.0f);
932+ Options_p1LinkTextData[1].text_cursorcolor = d3dg->GetColorCode(1.0f,0.6f,0.6f,1.0f);
920933 strcpy(Options_p1LinkTextData[1].text, "SOFTWARE LICENSE");
921934 Options_p1LinkTextData[2].enable = true;
922935 Options_p1LinkTextData[2].pos_x = 0;
@@ -1001,6 +1014,58 @@
10011014 Options_p2LinkTextData[14 + i].text_cursorcolor = d3dg->GetColorCode(1.0f,0.6f,0.6f,1.0f);
10021015 strcpy(Options_p2LinkTextData[14 + i].text, "[ ]");
10031016 }
1017+
1018+ Options_p3LinkTextData[0].enable = true;
1019+ Options_p3LinkTextData[0].pos_x = (OPTIONS_P3_W - 160)/2;
1020+ Options_p3LinkTextData[0].pos_y = OPTIONS_P3_H - 35;
1021+ Options_p3LinkTextData[0].text_w = 20;
1022+ Options_p3LinkTextData[0].text_h = 26;
1023+ Options_p3LinkTextData[0].text_defaultcolor = d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f);
1024+ Options_p3LinkTextData[0].text_cursorcolor = d3dg->GetColorCode(0.0f,1.0f,1.0f,1.0f);
1025+ strcpy(Options_p3LinkTextData[0].text, "< EXIT >");
1026+
1027+ scrollbar_license.Create(OPTIONS_P3_X + OPTIONS_P3_W - 20, OPTIONS_P3_Y+55, 20, 18*12, OPTIONS_LICENSELINE, 18, 0);
1028+ scrollbar_license.SetColor(d3dg->GetColorCode(0.5f,0.5f,0.5f,0.5f), d3dg->GetColorCode(0.6f,0.6f,0.25f,1.0f), d3dg->GetColorCode(0.8f,0.8f,0.25f,1.0f),
1029+ d3dg->GetColorCode(0.4f,0.67f,0.57f,1.0f), d3dg->GetColorCode(0.38f,0.77f,0.64f,1.0f), d3dg->GetColorCode(0.6f,0.3f,0.25f,1.0f), d3dg->GetColorCode(0.8f,0.3f,0.25f,1.0f));
1030+
1031+#ifndef ENABLE_GRAPHICS_OPENGL
1032+ //ライセンス文章
1033+ licenseinfo[0] = "";
1034+ licenseinfo[1] = "OpenXOPS";
1035+ licenseinfo[2] = "Copyright (c) 2014-2020, OpenXOPS Project / [-_-;](mikan) All rights reserved.";
1036+ licenseinfo[3] = "";
1037+ licenseinfo[4] = "Redistribution and use in source and binary forms, with or without";
1038+ licenseinfo[5] = "modification, are permitted provided that the following conditions are met:";
1039+ licenseinfo[6] = "* Redistributions of source code must retain the above copyright notice, ";
1040+ licenseinfo[7] = " this list of conditions and the following disclaimer.";
1041+ licenseinfo[8] = "* Redistributions in binary form must reproduce the above copyright notice, ";
1042+ licenseinfo[9] = " this list of conditions and the following disclaimer in the documentation ";
1043+ licenseinfo[10] = " and/or other materials provided with the distribution.";
1044+ licenseinfo[11] = "* Neither the name of the OpenXOPS Project nor the names of its contributors ";
1045+ licenseinfo[12] = " may be used to endorse or promote products derived from this software ";
1046+ licenseinfo[13] = " without specific prior written permission.";
1047+ licenseinfo[14] = "";
1048+ licenseinfo[15] = "THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND";
1049+ licenseinfo[16] = "ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED";
1050+ licenseinfo[17] = "WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE";
1051+ licenseinfo[18] = "DISCLAIMED. IN NO EVENT SHALL OpenXOPS Project BE LIABLE FOR ANY";
1052+ licenseinfo[19] = "DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES";
1053+ licenseinfo[20] = "(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;";
1054+ licenseinfo[21] = "LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND";
1055+ licenseinfo[22] = "ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT";
1056+ licenseinfo[23] = "(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS";
1057+ licenseinfo[24] = "SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.";
1058+ licenseinfo[25] = "";
1059+ //行数追加時 "OPTIONS_LICENSELINE"定数 要変更
1060+#else //ENABLE_GRAPHICS_OPENGL
1061+ licenseinfo[0] = "";
1062+ licenseinfo[1] = "OpenXOPS";
1063+ licenseinfo[2] = "Copyright (c) 2014-2020, OpenXOPS Project / [-_-;](mikan) All rights reserved.";
1064+ licenseinfo[3] = "";
1065+ licenseinfo[4] = " -- See the document.";
1066+ licenseinfo[5] = "";
1067+ //※OpenGLの場合、スクロール必要な分量を出すとチラつくので注意。
1068+#endif //ENABLE_GRAPHICS_OPENGL
10041069 }
10051070
10061071 //! @brief オプション画面の入力処理
@@ -1025,9 +1090,13 @@
10251090 if( ButtonID == 0 ){
10261091 modescreen = 2;
10271092 }
1028- //if( ButtonID == 1 ){
1029- //
1030- //}
1093+ if( ButtonID == 1 ){
1094+ modescreen = 3;
1095+
1096+ //ライセンス文のスクロールバーを一番上にセット
1097+ scrollbar_license.SetScrollItem(0);
1098+ scrollbar_license.Input(0, 0, false, 0);
1099+ }
10311100 if( ButtonID == 2 ){
10321101 modescreen = 0;
10331102 }
@@ -1069,6 +1138,31 @@
10691138 Options_p2LinkTextID = 2;
10701139 }
10711140 }
1141+
1142+ else if( modescreen == 3 ){
1143+ scrollbar_license.Input(mainmenu_mouseX, mainmenu_mouseY, inputCtrl->CheckMouseButtonNowL(), mainmenu_mouseY - mainmenu_mouseY_old);
1144+
1145+ //リンクテキスト判定処理
1146+ int ButtonID = -1;
1147+ for(int i=0; i<OPTIONS_P3_DATAS; i++){
1148+ if( Options_p3LinkTextData[i].enable == true ){
1149+ if( inputCtrl->CheckMouseButtonUpL() ){
1150+ if( ((OPTIONS_P3_X + Options_p3LinkTextData[i].pos_x) < mainmenu_mouseX)&&(mainmenu_mouseX < (OPTIONS_P3_X + Options_p3LinkTextData[i].pos_x + (signed)strlen(Options_p3LinkTextData[i].text)*Options_p3LinkTextData[i].text_w))
1151+ &&((OPTIONS_P3_Y + Options_p3LinkTextData[i].pos_y) < mainmenu_mouseY)&&(mainmenu_mouseY < (OPTIONS_P3_Y + Options_p3LinkTextData[i].pos_y + Options_p3LinkTextData[i].text_h))
1152+ ){
1153+ ButtonID = i;
1154+ }
1155+ }
1156+ }
1157+ }
1158+ if( ButtonID == 0 ){
1159+ modescreen = 1;
1160+ }
1161+
1162+ if( inputCtrl->CheckKeyDown(GetEscKeycode()) ){ //ESCキーを処理
1163+ modescreen = 1;
1164+ }
1165+ }
10721166 }
10731167
10741168 //! @brief オプション画面のメイン処理
@@ -1349,6 +1443,58 @@
13491443 }
13501444 }
13511445 }
1446+
1447+ if( modescreen == 3 ){
1448+ int color;
1449+
1450+ //エリア描画
1451+ d3dg->Draw2DBox(OPTIONS_P3_X, OPTIONS_P3_Y, OPTIONS_P3_X + OPTIONS_P3_W, OPTIONS_P3_Y + OPTIONS_P3_H, d3dg->GetColorCode(0.0f,0.0f,0.0f,0.5f));
1452+
1453+ d3dg->Draw2DTextureFontText(OPTIONS_P3_X + 0 +1, OPTIONS_P3_Y + 15 +1, "SOFTWARE LICENSE", d3dg->GetColorCode(0.0f,0.0f,0.0f,1.0f), 18, 24);
1454+ d3dg->Draw2DTextureFontText(OPTIONS_P3_X + 0, OPTIONS_P3_Y + 15, "SOFTWARE LICENSE", d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), 18, 24);
1455+
1456+ d3dg->Draw2DBox(OPTIONS_P3_X + 0, OPTIONS_P3_Y + 55, OPTIONS_P3_X + OPTIONS_P3_W-20, OPTIONS_P3_Y + 55 + 18*12, d3dg->GetColorCode(0.0f,0.0f,0.0f,0.7f));
1457+
1458+ //ライセンス文描画
1459+ int scrollline = scrollbar_license.GetScrollItem();
1460+ strcpy(licenseinfobuf, "");
1461+#if OPTIONS_LICENSELINE > 18
1462+ for(int i=0; i<18; i++){
1463+#else
1464+ for(int i=0; i<OPTIONS_LICENSELINE; i++){
1465+#endif
1466+ strcat(licenseinfobuf, licenseinfo[scrollline + i]);
1467+ strcat(licenseinfobuf, "\n");
1468+ }
1469+ d3dg->Draw2DMSSmallFontText(OPTIONS_P3_X + 5, OPTIONS_P3_Y+55, licenseinfobuf, d3dg->GetColorCode(0.8f,0.8f,0.8f,1.0f));
1470+
1471+ //スクロールバー描画
1472+ scrollbar_license.Draw(d3dg);
1473+
1474+ for(int i=0; i<OPTIONS_P3_DATAS; i++){
1475+ if( Options_p3LinkTextData[i].enable == true ){
1476+ //文字の色を設定
1477+ if( ((OPTIONS_P3_X + Options_p3LinkTextData[i].pos_x) < mainmenu_mouseX)&&(mainmenu_mouseX < (OPTIONS_P3_X + Options_p3LinkTextData[i].pos_x + (signed)strlen(Options_p3LinkTextData[i].text)*Options_p3LinkTextData[i].text_w))
1478+ &&((OPTIONS_P3_Y + Options_p3LinkTextData[i].pos_y) < mainmenu_mouseY)&&(mainmenu_mouseY < (OPTIONS_P3_Y + Options_p3LinkTextData[i].pos_y + Options_p3LinkTextData[i].text_h))
1479+ ){
1480+ color = Options_p3LinkTextData[i].text_cursorcolor;
1481+ }
1482+ else{
1483+ color = Options_p3LinkTextData[i].text_defaultcolor;
1484+ }
1485+
1486+ //文字を表示
1487+ d3dg->Draw2DTextureFontText(OPTIONS_P3_X + Options_p3LinkTextData[i].pos_x +1, OPTIONS_P3_Y + Options_p3LinkTextData[i].pos_y +1, Options_p3LinkTextData[i].text,
1488+ d3dg->GetColorCode(0.0f,0.0f,0.0f,1.0f), Options_p3LinkTextData[i].text_w, Options_p3LinkTextData[i].text_h);
1489+ d3dg->Draw2DTextureFontText(OPTIONS_P3_X + Options_p3LinkTextData[i].pos_x, OPTIONS_P3_Y + Options_p3LinkTextData[i].pos_y, Options_p3LinkTextData[i].text,
1490+ color, Options_p3LinkTextData[i].text_w, Options_p3LinkTextData[i].text_h);
1491+ }
1492+ else{
1493+ d3dg->Draw2DTextureFontText(OPTIONS_P3_X + Options_p3LinkTextData[i].pos_x, OPTIONS_P3_Y + Options_p3LinkTextData[i].pos_y, Options_p3LinkTextData[i].text,
1494+ d3dg->GetColorCode(0.6f,0.6f,0.6f,1.0f), Options_p3LinkTextData[i].text_w, Options_p3LinkTextData[i].text_h);
1495+ }
1496+ }
1497+ }
13521498 }
13531499 #endif //ENABLE_MENUOPTIONS
13541500
@@ -3326,7 +3472,7 @@
33263472 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "tag radar inmap sky <NUM> dark fog");
33273473 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "player <NUM> revive kill <NUM> treat <NUM> nodamage <NUM>");
33283474 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "newobj <NUM> break <NUM> delhuman <NUM> delweapon <NUM> delobj <NUL>");
3329- AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "nofight caution ailevel <NUM> ff bot stop estop");
3475+ AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "nofight caution ailevel <NUM> ff bot stop estop");
33303476 AddInfoConsole(d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f), "speed window ss clear exit");
33313477 }
33323478
--- trunk/gamemain.h (revision 233)
+++ trunk/gamemain.h (revision 234)
@@ -69,7 +69,7 @@
6969 #include "main.h"
7070
7171 #ifdef ENABLE_MENUOPTIONS
72- #define OPTIONS_P1_W 360 //!< オプション画面 No.1 幅
72+ #define OPTIONS_P1_W 340 //!< オプション画面 No.1 幅
7373 #define OPTIONS_P1_H (30*6) //!< オプション画面 No.1 高さ
7474 #define OPTIONS_P1_X (SCREEN_WIDTH - 360) //!< オプション画面 No.1 X座標
7575 #define OPTIONS_P1_Y (MAINMENU_Y+MAINMENU_H - OPTIONS_P1_H - 24) //!< オプション画面 No.1 Y座標
@@ -79,6 +79,16 @@
7979 #define OPTIONS_P2_X ((SCREEN_WIDTH - OPTIONS_P2_W)/2) //!< オプション画面 No.2 X座標
8080 #define OPTIONS_P2_Y (105 + (SCREEN_HEIGHT-105 - OPTIONS_P2_H)/2) //!< オプション画面 No.2 Y座標
8181 #define OPTIONS_P2_DATAS 32 //!< オプション画面 No.2 リンクテキストの数
82+ #define OPTIONS_P3_W 600 //!< オプション画面 No.3 幅
83+ #define OPTIONS_P3_H 320 //!< オプション画面 No.3 高さ
84+ #define OPTIONS_P3_X ((SCREEN_WIDTH - OPTIONS_P3_W)/2) //!< オプション画面 No.3 X座標
85+ #define OPTIONS_P3_Y (105 + (SCREEN_HEIGHT-105 - OPTIONS_P3_H)/2) //!< オプション画面 No.3 Y座標
86+ #define OPTIONS_P3_DATAS 1 //!< オプション画面 No.3 リンクテキストの数
87+#ifndef ENABLE_GRAPHICS_OPENGL
88+ #define OPTIONS_LICENSELINE 26 //!< ライセンス文の行数
89+#else //ENABLE_GRAPHICS_OPENGL
90+ #define OPTIONS_LICENSELINE 6 //!< ライセンス文の行数
91+#endif //ENABLE_GRAPHICS_OPENGL
8292 #endif //ENABLE_MENUOPTIONS
8393
8494 #ifdef ENABLE_DEBUGCONSOLE
@@ -162,10 +172,14 @@
162172 #ifdef ENABLE_MENUOPTIONS
163173 MenuLinkTextData Options_p1LinkTextData[OPTIONS_P1_DATAS]; //!< オプション画面 No.1 リンクテキストデータ
164174 MenuLinkTextData Options_p2LinkTextData[OPTIONS_P2_DATAS]; //!< オプション画面 No.2 リンクテキストデータ
165- int Options_p2LinkTextID; //!< オプション画面 No.2 押されたリンクテキストのID
166- bool Options_FullscreenFlag_old; //!< オプション画面 No.2 フルスクリーンフラグ
167- int Options_KeyConfigID; //!< オプション画面 No.2 キー設定ID
168- int Options_KeyConfigCnt; //!< オプション画面 No.2 キー設定カウント(フレーム数)
175+ MenuLinkTextData Options_p3LinkTextData[OPTIONS_P3_DATAS]; //!< オプション画面 No.3 リンクテキストデータ
176+ class ScrollbarObject scrollbar_license; //!< ライセンス文のスクロールバー
177+ int Options_p2LinkTextID; //!< オプション画面 No.2 押されたリンクテキストのID
178+ bool Options_FullscreenFlag_old; //!< オプション画面 No.2 フルスクリーンフラグ
179+ int Options_KeyConfigID; //!< オプション画面 No.2 キー設定ID
180+ int Options_KeyConfigCnt; //!< オプション画面 No.2 キー設定カウント(フレーム数)
181+ char *licenseinfo[OPTIONS_LICENSELINE]; //!< ライセンス文
182+ char *licenseinfobuf;
169183 #endif //ENABLE_MENUOPTIONS
170184
171185 void Render3D();
--- trunk/gui-object.cpp (revision 233)
+++ trunk/gui-object.cpp (revision 234)
@@ -108,7 +108,7 @@
108108 //! @param id アイテム数
109109 void ScrollbarObject::SetScrollItem(int id)
110110 {
111- if( (id < 0)||(id <= totalitems) ){ return; }
111+ if( (id < 0)||(totalitems <= id) ){ return; }
112112
113113 scrollitem = id;
114114 }