X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。
修订版 | 7 (tree) |
---|---|
时间 | 2015-01-12 18:22:26 |
作者 | xops-mikan |
ウィンドウスタイルと各画面表示を改善
@@ -170,6 +170,7 @@ | ||
170 | 170 | return 0; |
171 | 171 | } |
172 | 172 | |
173 | +//! @todo カメラの移動を滑らかにする | |
173 | 174 | void opening::Process() |
174 | 175 | { |
175 | 176 | //オブジェクトマネージャーを実行 |
@@ -182,11 +183,11 @@ | ||
182 | 183 | |
183 | 184 | //カメラワークを求める |
184 | 185 | if( framecnt < 3*((int)GAMEFPS) ){ |
185 | - camera_x = -4.0f; | |
186 | + camera_x = -5.0f; | |
186 | 187 | camera_y = 58.0f; |
187 | - camera_z = 28.0f; | |
188 | - camera_rx = (float)M_PI/180*205; | |
189 | - camera_ry = (float)M_PI/180*13; | |
188 | + camera_z = 29.0f; | |
189 | + camera_rx = (float)M_PI/180*206; | |
190 | + camera_ry = (float)M_PI/180*12; | |
190 | 191 | } |
191 | 192 | else if( framecnt < 5*((int)GAMEFPS) ){ |
192 | 193 | camera_rx += (float)M_PI/180*1.1f; |
@@ -193,7 +194,7 @@ | ||
193 | 194 | camera_ry -= (float)M_PI/180*0.7f; |
194 | 195 | } |
195 | 196 | else if( framecnt < 17*((int)GAMEFPS) ){ |
196 | - camera_z += 0.1f; | |
197 | + camera_z += 0.08f; | |
197 | 198 | camera_y -= 0.05f; |
198 | 199 | } |
199 | 200 | else { |
@@ -608,7 +609,12 @@ | ||
608 | 609 | d3dg->Draw2DTextureFontText(522, 75, GAMEVERSION, D3DCOLOR_COLORVALUE(1.0f,1.0f,1.0f,1.0f), 18, 22); |
609 | 610 | |
610 | 611 | //メニューエリア描画 |
611 | - d3dg->Draw2DBox(MAINMENU_X-1, MAINMENU_Y, MAINMENU_X+360, MAINMENU_Y+MAINMENU_H, D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,0.5f)); | |
612 | + if( GameAddon.GetTotaldatas() > 0 ){ //addonがあれば | |
613 | + d3dg->Draw2DBox(MAINMENU_X-1, MAINMENU_Y, MAINMENU_X+360, MAINMENU_Y+MAINMENU_H+1, D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,0.5f)); | |
614 | + } | |
615 | + else{ | |
616 | + d3dg->Draw2DBox(MAINMENU_X-1, MAINMENU_Y, MAINMENU_X+360, MAINMENU_Y+MAINMENU_H-24, D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,0.5f)); | |
617 | + } | |
612 | 618 | d3dg->Draw2DBox(MAINMENU_X+341, MAINMENU_Y+1, MAINMENU_X+360, MAINMENU_Y+MAINMENU_H-24, D3DCOLOR_COLORVALUE(0.5f,0.5f,0.5f,0.5f)); |
613 | 619 | |
614 | 620 | //スクロールバー描画 |
@@ -633,8 +639,9 @@ | ||
633 | 639 | } |
634 | 640 | |
635 | 641 | //'< UP >'描画 |
636 | - d3dg->Draw2DTextureFontText(MAINMENU_X+1, MAINMENU_Y+1, "< UP >", D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,1.0f), 20, 26); | |
637 | 642 | if( scrollitems > 0 ){ |
643 | + d3dg->Draw2DTextureFontText(MAINMENU_X+1, MAINMENU_Y+1, "< UP >", D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,1.0f), 25, 26); | |
644 | + | |
638 | 645 | //文字の色を設定 |
639 | 646 | if( (MAINMENU_X < mainmenu_mouseX)&&(mainmenu_mouseX < (MAINMENU_X+340))&&(MAINMENU_Y < mainmenu_mouseY)&&(mainmenu_mouseY < MAINMENU_Y+30) ){ |
640 | 647 | color = D3DCOLOR_COLORVALUE(0.0f,1.0f,1.0f,1.0f); |
@@ -644,12 +651,16 @@ | ||
644 | 651 | } |
645 | 652 | |
646 | 653 | //文字を描画 |
647 | - d3dg->Draw2DTextureFontText(MAINMENU_X, MAINMENU_Y, "< UP >", color, 20, 26); | |
654 | + d3dg->Draw2DTextureFontText(MAINMENU_X, MAINMENU_Y, "< UP >", color, 25, 26); | |
648 | 655 | } |
656 | + else{ | |
657 | + d3dg->Draw2DTextureFontText(MAINMENU_X+1, MAINMENU_Y+1, "< UP >", D3DCOLOR_COLORVALUE(0.6f,0.6f,0.6f,1.0f), 25, 26); | |
658 | + } | |
649 | 659 | |
650 | 660 | //'< DOWN >'描画 |
651 | - d3dg->Draw2DTextureFontText(MAINMENU_X+1, MAINMENU_Y+MAINMENU_H-55+1, "< DOWN >", D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,1.0f), 20, 26); | |
652 | 661 | if( scrollitems < (totalmission - TOTAL_MENUITEMS) ){ |
662 | + d3dg->Draw2DTextureFontText(MAINMENU_X+1, MAINMENU_Y+MAINMENU_H-55+1, "< DOWN >", D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,1.0f), 25, 26); | |
663 | + | |
653 | 664 | //文字の色を設定 |
654 | 665 | if( (MAINMENU_X < mainmenu_mouseX)&&(mainmenu_mouseX < (MAINMENU_X+340))&&((MAINMENU_Y+MAINMENU_H-55) < mainmenu_mouseY)&&(mainmenu_mouseY < (MAINMENU_Y+MAINMENU_H-55+30)) ){ |
655 | 666 | color = D3DCOLOR_COLORVALUE(0.0f,1.0f,1.0f,1.0f); |
@@ -659,14 +670,14 @@ | ||
659 | 670 | } |
660 | 671 | |
661 | 672 | //文字を描画 |
662 | - d3dg->Draw2DTextureFontText(MAINMENU_X, MAINMENU_Y+MAINMENU_H-55, "< DOWN >", color, 20, 26); | |
673 | + d3dg->Draw2DTextureFontText(MAINMENU_X, MAINMENU_Y+MAINMENU_H-55, "< DOWN >", color, 25, 26); | |
663 | 674 | } |
675 | + else{ | |
676 | + d3dg->Draw2DTextureFontText(MAINMENU_X+1, MAINMENU_Y+MAINMENU_H-55+1, "< DOWN >", D3DCOLOR_COLORVALUE(0.6f,0.6f,0.6f,1.0f), 25, 26); | |
677 | + } | |
664 | 678 | |
665 | 679 | //標準ミッションとaddon切り替え |
666 | 680 | if( GameInfoData.selectaddon == false ){ |
667 | - //下地の文字を描画 | |
668 | - d3dg->Draw2DTextureFontText(MAINMENU_X+1, MAINMENU_Y+MAINMENU_H-25+1, "ADD-ON MISSIONS >>", D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,1.0f), 16, 23); | |
669 | - | |
670 | 681 | //addonがあれば |
671 | 682 | if( GameAddon.GetTotaldatas() > 0 ){ |
672 | 683 | //文字の色を設定 |
@@ -678,21 +689,25 @@ | ||
678 | 689 | } |
679 | 690 | |
680 | 691 | //文字を描画 |
681 | - d3dg->Draw2DTextureFontText(MAINMENU_X, MAINMENU_Y+MAINMENU_H-25, "ADD-ON MISSIONS >>", color, 16, 23); | |
692 | + d3dg->Draw2DTextureFontText(MAINMENU_X+1, MAINMENU_Y+MAINMENU_H-25+1, "ADD-ON MISSIONS >>", D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,1.0f), 17, 22); | |
693 | + d3dg->Draw2DTextureFontText(MAINMENU_X, MAINMENU_Y+MAINMENU_H-25, "ADD-ON MISSIONS >>", color, 17, 22); | |
682 | 694 | } |
683 | 695 | } |
684 | 696 | else{ |
685 | - //文字の色を設定 | |
686 | - if( (MAINMENU_X < mainmenu_mouseX)&&(mainmenu_mouseX < (MAINMENU_X+340))&&((MAINMENU_Y+MAINMENU_H-25) < mainmenu_mouseY)&&(mainmenu_mouseY < (MAINMENU_Y+MAINMENU_H-2)) ){ | |
687 | - color = D3DCOLOR_COLORVALUE(0.0f,1.0f,1.0f,1.0f); | |
688 | - } | |
689 | - else{ | |
690 | - color = D3DCOLOR_COLORVALUE(1.0f,1.0f,1.0f,1.0f); | |
691 | - } | |
697 | + //addonがあれば | |
698 | + //if( GameAddon.GetTotaldatas() > 0 ){ | |
699 | + //文字の色を設定 | |
700 | + if( (MAINMENU_X < mainmenu_mouseX)&&(mainmenu_mouseX < (MAINMENU_X+340))&&((MAINMENU_Y+MAINMENU_H-25) < mainmenu_mouseY)&&(mainmenu_mouseY < (MAINMENU_Y+MAINMENU_H-2)) ){ | |
701 | + color = D3DCOLOR_COLORVALUE(0.0f,1.0f,1.0f,1.0f); | |
702 | + } | |
703 | + else{ | |
704 | + color = D3DCOLOR_COLORVALUE(1.0f,1.0f,1.0f,1.0f); | |
705 | + } | |
692 | 706 | |
693 | - //文字を描画 | |
694 | - d3dg->Draw2DTextureFontText(MAINMENU_X+1, MAINMENU_Y+MAINMENU_H-25+1, "<< STANDARD MISSIONS", D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,1.0f), 16, 23); | |
695 | - d3dg->Draw2DTextureFontText(MAINMENU_X, MAINMENU_Y+MAINMENU_H-25, "<< STANDARD MISSIONS", color, 16, 23); | |
707 | + //文字を描画 | |
708 | + d3dg->Draw2DTextureFontText(MAINMENU_X+1, MAINMENU_Y+MAINMENU_H-25+1, "<< STANDARD MISSIONS", D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,1.0f), 17, 22); | |
709 | + d3dg->Draw2DTextureFontText(MAINMENU_X, MAINMENU_Y+MAINMENU_H-25, "<< STANDARD MISSIONS", color, 17, 22); | |
710 | + //} | |
696 | 711 | } |
697 | 712 | |
698 | 713 | //ミッション名を描画 |
@@ -819,15 +834,15 @@ | ||
819 | 834 | float effectA = 1.0f - 0.8f/((int)(GAMEFPS*0.7f))*(framecnt%((int)(GAMEFPS*0.7f))); |
820 | 835 | float effectB = 1.0f - 0.8f/((int)(GAMEFPS*0.8f))*(framecnt%((int)(GAMEFPS*1.0f))); |
821 | 836 | int effectB_sizeW = (int)( (float)(framecnt%((int)(GAMEFPS*1.0f))) * 0.2f + 18 ); |
822 | - int effectB_sizeH = (int)( (float)(framecnt%((int)(GAMEFPS*1.0f))) * 1.0f + 25 ); | |
837 | + int effectB_sizeH = (int)( (float)(framecnt%((int)(GAMEFPS*1.0f))) * 1.0f + 26 ); | |
823 | 838 | |
824 | 839 | //メモ:背景画像の描画は、自動的に行われる。 |
825 | 840 | |
826 | 841 | //固定文字描画 |
827 | 842 | d3dg->Draw2DTextureFontText(SCREEN_WIDTH/2 - 60*4, 30, "BRIEFING", D3DCOLOR_COLORVALUE(1.0f,1.0f,0.0f,effectA), 60, 42); |
828 | - d3dg->Draw2DTextureFontText(SCREEN_WIDTH - 220 - effectB_sizeW*9 - effectB_sizeW/2, SCREEN_HEIGTH - 37 - effectB_sizeH/2, | |
843 | + d3dg->Draw2DTextureFontText(SCREEN_WIDTH - 210 - effectB_sizeW*20/2, SCREEN_HEIGTH - 37 - effectB_sizeH/2, | |
829 | 844 | "LEFT CLICK TO BEGIN", D3DCOLOR_COLORVALUE(1.0f,1.0f,1.0f,effectB), effectB_sizeW, effectB_sizeH); |
830 | - d3dg->Draw2DTextureFontText(SCREEN_WIDTH - 390, SCREEN_HEIGTH - 50, "LEFT CLICK TO BEGIN", D3DCOLOR_COLORVALUE(1.0f,1.0f,1.0f,1.0f), 18, 25); | |
845 | + d3dg->Draw2DTextureFontText(SCREEN_WIDTH - 210 - 18*20/2, SCREEN_HEIGTH - 37 - 26/2, "LEFT CLICK TO BEGIN", D3DCOLOR_COLORVALUE(1.0f,1.0f,1.0f,1.0f), 18, 26); | |
831 | 846 | |
832 | 847 | //ブリーフィング画像描画 |
833 | 848 | if( TwoTexture == false ){ |
@@ -1933,7 +1948,7 @@ | ||
1933 | 1948 | str[5] = (signed char)0xB4; str[6] = (signed char)0xB4; str[7] = (signed char)0xB5; str[8] = (signed char)0x00; |
1934 | 1949 | d3dg->Draw2DTextureFontText(15, SCREEN_HEIGTH - 105, str, D3DCOLOR_COLORVALUE(1.0f,1.0f,1.0f,0.5f), 32, 32); |
1935 | 1950 | //"テトトトトトトナ" |
1936 | - for(int i=0; i<9; i++){ str[i] += (signed char)0x10; } | |
1951 | + for(int i=0; str[i] != 0x00; i++){ str[i] += (signed char)0x10; } | |
1937 | 1952 | d3dg->Draw2DTextureFontText(15, SCREEN_HEIGTH - 105 +32, str, D3DCOLOR_COLORVALUE(1.0f,1.0f,1.0f,0.5f), 32, 32); |
1938 | 1953 | //"ウエエカキキキクケ" |
1939 | 1954 | str[0] = (signed char)0xB3; str[1] = (signed char)0xB4; str[2] = (signed char)0xB4; str[3] = (signed char)0xB6; str[4] = (signed char)0xB7; |
@@ -1940,7 +1955,7 @@ | ||
1940 | 1955 | str[5] = (signed char)0xB7; str[6] = (signed char)0xB7; str[7] = (signed char)0xB8; str[8] = (signed char)0xB9; str[9] = (signed char)0x00; |
1941 | 1956 | d3dg->Draw2DTextureFontText(15, SCREEN_HEIGTH - 55, str, D3DCOLOR_COLORVALUE(1.0f,1.0f,1.0f,0.5f), 32, 32); |
1942 | 1957 | //"テトトニヌヌヌネノ" |
1943 | - for(int i=0; i<10; i++){ str[i] += (signed char)0x10; } | |
1958 | + for(int i=0; str[i] != 0x00; i++){ str[i] += (signed char)0x10; } | |
1944 | 1959 | d3dg->Draw2DTextureFontText(15, SCREEN_HEIGTH - 55 +32, str, D3DCOLOR_COLORVALUE(1.0f,1.0f,1.0f,0.5f), 32, 32); |
1945 | 1960 | |
1946 | 1961 | //右下エリア用文字コード設定 |
@@ -2044,13 +2059,17 @@ | ||
2044 | 2059 | //照準表示 |
2045 | 2060 | if( (Camera_F1mode == false)&&(weapon[selectweapon] != NULL)&&(end_framecnt == 0)&&(myHuman->GetScopeMode() == 0)&&(param_scopemode != 2) ){ |
2046 | 2061 | if( GameConfig.GetAnotherGunsightFlag() ){ //オプション型 |
2062 | + //照準の透明度 | |
2063 | + float alpha = 1.0f - (float)ErrorRange/40.0f; | |
2064 | + if( alpha < 0.0f ){ alpha = 0.0f; } | |
2065 | + | |
2047 | 2066 | d3dg->Draw2DLine(SCREEN_WIDTH/2, SCREEN_HEIGTH/2, SCREEN_WIDTH/2, SCREEN_HEIGTH/2+4, D3DCOLOR_COLORVALUE(1.0f,0.0f,0.0f,0.5f)); |
2048 | 2067 | d3dg->Draw2DLine(SCREEN_WIDTH/2-15, SCREEN_HEIGTH/2+15, SCREEN_WIDTH/2-19, SCREEN_HEIGTH/2+19, D3DCOLOR_COLORVALUE(1.0f,0.0f,0.0f,0.5f)); |
2049 | 2068 | d3dg->Draw2DLine(SCREEN_WIDTH/2+15, SCREEN_HEIGTH/2+15, SCREEN_WIDTH/2+19, SCREEN_HEIGTH/2+19, D3DCOLOR_COLORVALUE(1.0f,0.0f,0.0f,0.5f)); |
2050 | 2069 | d3dg->Draw2DLine(SCREEN_WIDTH/2-4, SCREEN_HEIGTH/2+4, SCREEN_WIDTH/2+4, SCREEN_HEIGTH/2+4, D3DCOLOR_COLORVALUE(1.0f,0.0f,0.0f,1.0f)); |
2051 | 2070 | |
2052 | - d3dg->Draw2DLine(SCREEN_WIDTH/2-4 - ErrorRange, SCREEN_HEIGTH/2-4 - ErrorRange, SCREEN_WIDTH/2-4 - ErrorRange, SCREEN_HEIGTH/2+4 + ErrorRange, D3DCOLOR_COLORVALUE(1.0f,0.0f,0.0f,1.0f)); | |
2053 | - d3dg->Draw2DLine(SCREEN_WIDTH/2+4 + ErrorRange, SCREEN_HEIGTH/2-4 - ErrorRange, SCREEN_WIDTH/2+4 + ErrorRange, SCREEN_HEIGTH/2+4 + ErrorRange, D3DCOLOR_COLORVALUE(1.0f,0.0f,0.0f,1.0f)); | |
2071 | + d3dg->Draw2DLine(SCREEN_WIDTH/2-4 - ErrorRange, SCREEN_HEIGTH/2-4 - ErrorRange/2, SCREEN_WIDTH/2-4 - ErrorRange, SCREEN_HEIGTH/2+4 + ErrorRange/2, D3DCOLOR_COLORVALUE(1.0f,0.0f,0.0f,alpha)); | |
2072 | + d3dg->Draw2DLine(SCREEN_WIDTH/2+4 + ErrorRange, SCREEN_HEIGTH/2-4 - ErrorRange/2, SCREEN_WIDTH/2+4 + ErrorRange, SCREEN_HEIGTH/2+4 + ErrorRange/2, D3DCOLOR_COLORVALUE(1.0f,0.0f,0.0f,alpha)); | |
2054 | 2073 | } |
2055 | 2074 | else{ //標準型 |
2056 | 2075 | d3dg->Draw2DLine(SCREEN_WIDTH/2-13, SCREEN_HEIGTH/2, SCREEN_WIDTH/2-3, SCREEN_HEIGTH/2, D3DCOLOR_COLORVALUE(1.0f,0.0f,0.0f,1.0f)); |
@@ -128,8 +128,8 @@ | ||
128 | 128 | { |
129 | 129 | if( d3dg->StartRender() ){ return; } |
130 | 130 | |
131 | - d3dg->Draw2DTexture(0, 0, gametitle, SCREEN_WIDTH, SCREEN_HEIGTH, 1.0f); | |
132 | - d3dg->Draw2DBox(11, 11, SCREEN_WIDTH - 10, SCREEN_HEIGTH - 10, D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,0.9f)); | |
131 | + d3dg->Draw2DTexture(0, 0, gametitle, SCREEN_WIDTH, SCREEN_HEIGTH, 0.4f); | |
132 | + d3dg->Draw2DBox(11, 11, SCREEN_WIDTH - 10, SCREEN_HEIGTH - 10, D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,0.75f)); | |
133 | 133 | |
134 | 134 | Render2D(); |
135 | 135 |
@@ -44,8 +44,7 @@ | ||
44 | 44 | HWND InitWindow(HINSTANCE hInstance, char* title, int width, int height, int nCmdShow, bool fullscreen) |
45 | 45 | { |
46 | 46 | WNDCLASS wc; |
47 | - //int x, y; | |
48 | - //int w, h; | |
47 | + int x, y; | |
49 | 48 | RECT Rect; |
50 | 49 | DWORD dwStyle; |
51 | 50 | HWND hWnd; |
@@ -66,7 +65,7 @@ | ||
66 | 65 | } |
67 | 66 | |
68 | 67 | if( fullscreen == false ){ |
69 | - dwStyle = WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION; | |
68 | + dwStyle = WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX; | |
70 | 69 | } |
71 | 70 | else{ |
72 | 71 | dwStyle = WS_POPUP; |
@@ -81,8 +80,21 @@ | ||
81 | 80 | width = Rect.right - Rect.left; |
82 | 81 | height = Rect.bottom - Rect.top; |
83 | 82 | |
83 | + //表示位置 | |
84 | + x = 0; | |
85 | + y = 0; | |
86 | + | |
87 | + /* | |
88 | + //ウインドウモードなら、ウインドウを画面の中心に配置する | |
89 | + if( fullscreen == false ){ | |
90 | + SystemParametersInfo(SPI_GETWORKAREA, 0, &Rect, 0); | |
91 | + x = (Rect.right - width)/2; | |
92 | + y = (Rect.bottom - height)/2; | |
93 | + } | |
94 | + */ | |
95 | + | |
84 | 96 | //ウィンドウ作成 |
85 | - hWnd = CreateWindow( "MainWindow", title, dwStyle, 0, 0, width, height, NULL, NULL, hInstance, NULL ); | |
97 | + hWnd = CreateWindow( "MainWindow", title, dwStyle, x, y, width, height, NULL, NULL, hInstance, NULL ); | |
86 | 98 | if( hWnd == NULL ){ |
87 | 99 | return NULL; |
88 | 100 | } |