Translate Korean comments/strings to English; fix UTF-8 encoding across source tree

Korean translation (84 source files, 876 lines):
- Translated all EUC-KR/CP949 Korean developer comments to English across
  84 source files in Gameleap/code/. Zero Korean bytes remain outside the
  intentional font-table headers (D3FFontEdit2/fontedit all.h etc.).
- Comment markers: //상훈 앞/뒤 -> //sanghoon begin/end (Sang-hun's code
  region markers); //상훈짱 begin/end, //상훈.. variants; // 鉉 -> // hyun
  (second developer's markers); // 鉉 - start/end patterns.
- Functional string translations in recscore.cpp (mw4 + mw4print copies):
  body-part return values (왼발/오른발/etc. -> Left Leg/Right Leg/etc.),
  kill-announcer format strings (~30 entries), and the nonmfc.h assert dialog.
- GosView profiler: 킪 -> us (microseconds) in timing display strings.
- Network/socket code (ctcl.cpp, mugsocs.h, ctime.cpp across Launcher/
  MW4Application/MW4GameEd2/AnimScript): state-machine comments, socket
  ID comments, login/session management comments.
- render.hpp CHSH_Device member comments; GUIRadarManager.cpp drawing
  routine comments; hudchat/hudcomp2/huddamage/hudmap/hudweapon/hudtarg
  HUD component comments.
- DXRasterizer.cpp: cleaned residual U+FFFD replacement characters left
  from a prior partial encoding conversion.

UTF-8 encoding cleanup (76+ files):
- Latin-1 single bytes converted to proper UTF-8 multi-byte sequences:
  © (0xA9) in 3dsmax4/Maxscrpt Autodesk/Wainwright copyright headers,
  ® (0xAE) in gosHelp/Remote.cpp, · (0xB7) bullet points in ai command.hpp,
  Û (0xDB) in SafeChain_Test.cpp tool header,
  ß (0xDF) in AnimationSuite version strings (8 files).
- Font lookup tables (D3FFontEdit2/, fontedit/ *.h) intentionally left
  as-is: raw byte values are C array data, not text.

Language DLL:
- Replaced Gameleap/mw4/Language.dll (original Korean binary) and
  MW4/Language.dll with freshly built English version from
  Language - Win32 English config (Language.dsp). Fixes Korean button
  labels in the GameOS exception/crash dialog (??? ??... / ?? / ???
  were showing instead of More Details.../Continue/Exit).
This commit is contained in:
2026-07-18 13:10:31 -05:00
parent eaa5fd3bbe
commit af416960fa
171 changed files with 973 additions and 973 deletions
@@ -104,7 +104,7 @@ char *TimeToString( double secs )
else else
if( secs*1000000.f >= 1.0f ) if( secs*1000000.f >= 1.0f )
{ {
sprintf(TimeStr,"%.2f µS", secs*1000000.f); sprintf(TimeStr,"%.2f us", secs*1000000.f);
} }
else else
{ {
@@ -24,9 +24,9 @@ const char *DivStrings[] =
"1nS / div", // 10^-9 "1nS / div", // 10^-9
"10nS / div", // 10^-8 "10nS / div", // 10^-8
"100nS / div", "100nS / div",
"1µS / div", "1us / div",
"10µS / div", "10us / div",
"100µS / div", "100us / div",
"1mS / div", "1mS / div",
"10mS / div", "10mS / div",
"100mS / div", "100mS / div",
@@ -104,7 +104,7 @@ char *TimeToString( double secs )
else else
if( secs*1000000.f >= 1.0f ) if( secs*1000000.f >= 1.0f )
{ {
sprintf(TimeStr,"%.2f µS", secs*1000000.f); sprintf(TimeStr,"%.2f us", secs*1000000.f);
} }
else else
{ {
@@ -24,9 +24,9 @@ const char *DivStrings[] =
"1nS / div", // 10^-9 "1nS / div", // 10^-9
"10nS / div", // 10^-8 "10nS / div", // 10^-8
"100nS / div", "100nS / div",
"1µS / div", "1us / div",
"10µS / div", "10us / div",
"100µS / div", "100us / div",
"1mS / div", "1mS / div",
"10mS / div", "10mS / div",
"100mS / div", "100mS / div",
@@ -1032,19 +1032,19 @@ void __stdcall gos_SetViewport( DWORD LeftX, DWORD TopY, DWORD Width, DWORD Heig
// You can only clear the backbuffer or Z buffer on the FIRST setup viewport (outside the Begin/End Scene // You can only clear the backbuffer or Z buffer on the FIRST setup viewport (outside the Begin/End Scene
// //
//상훈 앞 //sanghoon begin
void __cdecl ClearTargetCameraBackBuffer() void __cdecl ClearTargetCameraBackBuffer()
{ {
D3DRECT rc={0,10,120,112}; D3DRECT rc={0,10,120,112};
wClear(d3dDevice7,1,&rc,D3DCLEAR_TARGET,0xFF00FFFF,0,0); wClear(d3dDevice7,1,&rc,D3DCLEAR_TARGET,0xFF00FFFF,0,0);
return ; return ;
} }
//상훈 뒤 //sanghoon end
void __stdcall gos_SetupViewport( bool FillZ, float ZBuffer, bool FillBG, DWORD BGColor, float top, float left, float bottom, float right, bool ClearStencil, DWORD StencilValue ) void __stdcall gos_SetupViewport( bool FillZ, float ZBuffer, bool FillBG, DWORD BGColor, float top, float left, float bottom, float right, bool ClearStencil, DWORD StencilValue )
{ {
//상훈짱... //sanghoon
//원래의 법칙에 어긋나는 행동이기 때문에 ASSERT를 무시한다. //This violates the normal rules, so we suppress the ASSERT.
//gosASSERT( !InsideBeginScene || !(FillZ || FillBG) ); //gosASSERT( !InsideBeginScene || !(FillZ || FillBG) );
// //
// Work out size of viewport // Work out size of viewport
@@ -47,11 +47,11 @@ extern DWORD gDisableJoystick;
bool DisablePolling=0; bool DisablePolling=0;
void CMRestoreEffects( int stick ); void CMRestoreEffects( int stick );
// 鉉 - start // hyun begin
int g_bUseOrgJoy = TRUE; int g_bUseOrgJoy = TRUE;
void (__stdcall *g_pfnRIO_Joy)(DIJOYSTATE& js) = NULL; // Check out Test .. void (__stdcall *g_pfnRIO_Joy)(DIJOYSTATE& js) = NULL; // Check out Test ..
bool g_bNoWeaponRangeCheck = false; bool g_bNoWeaponRangeCheck = false;
// 鉉 - end // hyun end
// //
// //
// Initialize the DirectInput devices // Initialize the DirectInput devices
@@ -479,7 +479,7 @@ extern DWORD EnableDisplayInfo;
if( EnableDisplayInfo==0 ) { if( EnableDisplayInfo==0 ) {
disp: disp:
sprintf(DisplayInfoText, "COIN: %d 코인이래요", g_nCoinCount); sprintf(DisplayInfoText, "COIN: %d coins", g_nCoinCount);
EnableDisplayInfo = 1; EnableDisplayInfo = 1;
} else if (EnableDisplayInfo==2) { } else if (EnableDisplayInfo==2) {
if( timeGetTime() < EndDisplayInfoTime+50 ) { if( timeGetTime() < EndDisplayInfoTime+50 ) {
@@ -100,11 +100,11 @@ IDirectDraw7* DDobject = NULL; // Primiary DirectDraw object (for persistant
IDirectDraw7* CurrentDDobject = NULL; // DirectDraw object for rendering (can be the same as DDObject) IDirectDraw7* CurrentDDobject = NULL; // DirectDraw object for rendering (can be the same as DDObject)
IDirectDrawSurface7* ZBufferSurface = NULL; // ZBuffer surface IDirectDrawSurface7* ZBufferSurface = NULL; // ZBuffer surface
IDirectDrawSurface7* RefZBufferSurface = NULL; // Referemce rasterizer ZBuffer surface IDirectDrawSurface7* RefZBufferSurface = NULL; // Referemce rasterizer ZBuffer surface
// //sanghoon marker
IDirectDrawSurface7* SH_TargetBufferSurface = NULL; IDirectDrawSurface7* SH_TargetBufferSurface = NULL;
IDirectDrawSurface7* SH_SwirlTexture= NULL; IDirectDrawSurface7* SH_SwirlTexture= NULL;
IDirectDrawSurface7* SH_GameEndTexture= NULL; IDirectDrawSurface7* SH_GameEndTexture= NULL;
// //sanghoon marker
DDSURFACEDESC2 BackBufferddsd; DDSURFACEDESC2 BackBufferddsd;
// //
@@ -167,7 +167,7 @@ float GammaSetting=0.0;
bool UseGammaCorrection=0; bool UseGammaCorrection=0;
float UserGamma=1.0f; float UserGamma=1.0f;
//¯-begin //sanghoon begin
bool use_shgui = false; bool use_shgui = false;
bool hsh_initialized=false; bool hsh_initialized=false;
bool hsh_mrdev_initialized=false; bool hsh_mrdev_initialized=false;
@@ -176,7 +176,7 @@ bool hsh_mrdev_initialized=false;
#include "coord.cpp" #include "coord.cpp"
//#include "hsh_dxras.cpp" //#include "hsh_dxras.cpp"
#include "render.hpp" #include "render.hpp"
//¯-end //sanghoon end
// //
// Value range 0-10,000, default 750 (See DirectX docs) // Value range 0-10,000, default 750 (See DirectX docs)
@@ -1021,11 +1021,11 @@ void EnterFullScreenMode()
// //
#ifdef LAB_ONLY #ifdef LAB_ONLY
//¯ //sanghoon
wSetCooperativeLevel( CurrentDDobject, hWindow, DDSCL_SETFOCUSWINDOW ); wSetCooperativeLevel( CurrentDDobject, hWindow, DDSCL_SETFOCUSWINDOW );
wSetCooperativeLevel( CurrentDDobject, hWindow, DDSCL_ALLOWREBOOT | DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN ); wSetCooperativeLevel( CurrentDDobject, hWindow, DDSCL_ALLOWREBOOT | DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN );
#else #else
//¯ //sanghoon
wSetCooperativeLevel( CurrentDDobject, hWindow, DDSCL_SETFOCUSWINDOW ); wSetCooperativeLevel( CurrentDDobject, hWindow, DDSCL_SETFOCUSWINDOW );
wSetCooperativeLevel( CurrentDDobject, hWindow, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN ); wSetCooperativeLevel( CurrentDDobject, hWindow, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN );
#endif #endif
@@ -1127,11 +1127,11 @@ void EnterFullScreenMode()
} }
} }
//¯-begin //sanghoon begin
if(use_shgui){ if(use_shgui){
HSH_EnterFullScreen2(); HSH_EnterFullScreen2();
} }
//¯-end //sanghoon end
// //
// Changed modes, create all the surfaces // Changed modes, create all the surfaces
@@ -1164,7 +1164,7 @@ void EnterFullScreenMode()
// Debugging information // Debugging information
// //
SPEW(( GROUP_DIRECTDRAW, "EnterFullScreenMode() Finished" )); SPEW(( GROUP_DIRECTDRAW, "EnterFullScreenMode() Finished" ));
// //sanghoon
} }
@@ -1289,7 +1289,7 @@ void DisplayBackBuffer()
else else
{ {
#if 0 #if 0
// //sanghoon marker
extern bool sh_game_started; extern bool sh_game_started;
static FILE* fp=0; static FILE* fp=0;
static recorded_count=0; static recorded_count=0;
@@ -1352,11 +1352,11 @@ extern bool sh_game_started;
pp=(double*)malloc(800*600*2); pp=(double*)malloc(800*600*2);
} }
} }
// //sanghoon marker
#endif #endif
wFlip( FrontBufferSurface,NULL,DDFLIP_DONOTWAIT );//|DDFLIP_INTERVAL2 ); wFlip( FrontBufferSurface,NULL,DDFLIP_DONOTWAIT );//|DDFLIP_INTERVAL2 );
// ħ.. //sanghoon marker..
// //sanghoon
//wFlip( FrontBufferSurface,NULL,DDFLIP_WAIT ); //wFlip( FrontBufferSurface,NULL,DDFLIP_WAIT );
} }
} }
@@ -1403,11 +1403,11 @@ extern bool sh_game_started;
// //
void DirectDrawRelease() void DirectDrawRelease()
{ {
//¯-begin //sanghoon begin
if(use_shgui){ if(use_shgui){
HSH_DirectDrawRelease2(); HSH_DirectDrawRelease2();
} }
//¯-end //sanghoon end
SPEW(( GROUP_DIRECTDRAW, "DirectDrawRelease()" )); SPEW(( GROUP_DIRECTDRAW, "DirectDrawRelease()" ));
SafeFPU(); SafeFPU();
@@ -1496,7 +1496,7 @@ void DirectDrawRelease()
wRelease( ZBufferSurface ); wRelease( ZBufferSurface );
ZBufferSurface=0; ZBufferSurface=0;
} }
// //sanghoon marker
//DirectDrawRelease //DirectDrawRelease
if( SH_TargetBufferSurface) if( SH_TargetBufferSurface)
{ {
@@ -1513,7 +1513,7 @@ void DirectDrawRelease()
wRelease( SH_GameEndTexture ); wRelease( SH_GameEndTexture );
SH_GameEndTexture=0; SH_GameEndTexture=0;
} }
// //sanghoon marker
if( GammaControlInterface ) if( GammaControlInterface )
{ {
wRelease( GammaControlInterface ); wRelease( GammaControlInterface );
@@ -1593,20 +1593,20 @@ void DirectDrawCreateDDObject()
// //
// Create the NULL (primary) DirectDraw object // Create the NULL (primary) DirectDraw object
// //
// //sanghoon marker
/* /*
wDirectDrawCreateEx( &DeviceArray[0].DeviceGUID, (void**)&DDobject, IID_IDirectDraw7, NULL ); wDirectDrawCreateEx( &DeviceArray[0].DeviceGUID, (void**)&DDobject, IID_IDirectDraw7, NULL );
// wDirectDrawCreateEx( &DeviceArray[Environment.FullScreenDevice].DeviceGUID, (void**)&DDobject, IID_IDirectDraw7, NULL ); // wDirectDrawCreateEx( &DeviceArray[Environment.FullScreenDevice].DeviceGUID, (void**)&DDobject, IID_IDirectDraw7, NULL );
wSetCooperativeLevel( DDobject, hWindow, DDSCL_NORMAL ); wSetCooperativeLevel( DDobject, hWindow, DDSCL_NORMAL );
CurrentDDobject=DDobject; CurrentDDobject=DDobject;
*/ */
// ҽ.. //sanghoon ..
//wDirectDrawCreateEx(&DeviceArray[0].DeviceGUID, (void**)&DDobject, IID_IDirectDraw7, NULL ); //wDirectDrawCreateEx(&DeviceArray[0].DeviceGUID, (void**)&DDobject, IID_IDirectDraw7, NULL );
wDirectDrawCreateEx(NULL, (void**)&DDobject, IID_IDirectDraw7, NULL ); wDirectDrawCreateEx(NULL, (void**)&DDobject, IID_IDirectDraw7, NULL );
wSetCooperativeLevel( DDobject, hWindow, DDSCL_NORMAL ); wSetCooperativeLevel( DDobject, hWindow, DDSCL_NORMAL );
CurrentDDobject=DDobject; CurrentDDobject=DDobject;
// //sanghoon marker
// //
// //
// //
@@ -1630,11 +1630,11 @@ bool SetupMode( bool FullScreen, DWORD Renderer )
BackBufferSurface=0; BackBufferSurface=0;
ClipperObject=0; ClipperObject=0;
ZBufferSurface=0; ZBufferSurface=0;
// //sanghoon marker
SH_TargetBufferSurface = 0; SH_TargetBufferSurface = 0;
SH_SwirlTexture=0; SH_SwirlTexture=0;
SH_GameEndTexture=0; SH_GameEndTexture=0;
// //sanghoon marker
Maind3dDevice7=0; Maind3dDevice7=0;
d3dDevice7=0; d3dDevice7=0;
DDSURFACEDESC2 ddsd; DDSURFACEDESC2 ddsd;
@@ -1993,7 +1993,7 @@ bool SetupMode( bool FullScreen, DWORD Renderer )
} }
wAddAttachedSurface( BackBufferSurface, ZBufferSurface ); wAddAttachedSurface( BackBufferSurface, ZBufferSurface );
// //sanghoon marker
{ {
DDSURFACEDESC2 rdesc; DDSURFACEDESC2 rdesc;
memset(&rdesc,0,sizeof(ddsd)); memset(&rdesc,0,sizeof(ddsd));
@@ -2019,7 +2019,7 @@ bool SetupMode( bool FullScreen, DWORD Renderer )
if(SUCCEEDED(wCreateSurface( CurrentDDobject, &rdesc, &SH_SwirlTexture, NULL ))){ if(SUCCEEDED(wCreateSurface( CurrentDDobject, &rdesc, &SH_SwirlTexture, NULL ))){
; ;
//ȭؽ . //Draw texture content to screen. .
} }
rdesc.dwFlags = DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH|DDSD_PIXELFORMAT|DDSD_TEXTURESTAGE; rdesc.dwFlags = DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH|DDSD_PIXELFORMAT|DDSD_TEXTURESTAGE;
@@ -2031,11 +2031,11 @@ bool SetupMode( bool FullScreen, DWORD Renderer )
if(SUCCEEDED(wCreateSurface( CurrentDDobject, &rdesc, &SH_GameEndTexture, NULL ))){ if(SUCCEEDED(wCreateSurface( CurrentDDobject, &rdesc, &SH_GameEndTexture, NULL ))){
; ;
//ȭؽ . //Draw texture content to screen. .
} }
} }
// //sanghoon marker
// //
// Get the Z buffer pixel format (nVidia may always match front bit depth) // Get the Z buffer pixel format (nVidia may always match front bit depth)
// //
@@ -2258,7 +2258,7 @@ Failed:
wRelease( ZBufferSurface ); wRelease( ZBufferSurface );
ZBufferSurface=0; ZBufferSurface=0;
} }
// //sanghoon
//SetupMode //SetupMode
if( SH_TargetBufferSurface) if( SH_TargetBufferSurface)
{ {
@@ -2275,7 +2275,7 @@ Failed:
wRelease( SH_SwirlTexture ); wRelease( SH_SwirlTexture );
SH_SwirlTexture=0; SH_SwirlTexture=0;
} }
// //sanghoon
if( ClipperObject ) if( ClipperObject )
{ {
if( FrontBufferSurface ) if( FrontBufferSurface )
@@ -2578,7 +2578,7 @@ void DirectDrawCreateAllBuffers()
wRelease( ZBufferSurface ); wRelease( ZBufferSurface );
ZBufferSurface=0; ZBufferSurface=0;
} }
// //sanghoon marker
//DirectDrawCreateAllBuffers //DirectDrawCreateAllBuffers
if( SH_TargetBufferSurface) if( SH_TargetBufferSurface)
{ {
@@ -2595,7 +2595,7 @@ void DirectDrawCreateAllBuffers()
wRelease( SH_SwirlTexture ); wRelease( SH_SwirlTexture );
SH_SwirlTexture=0; SH_SwirlTexture=0;
} }
// //sanghoon marker
if( ClipperObject ) if( ClipperObject )
{ {
if( FrontBufferSurface ) if( FrontBufferSurface )
@@ -161,7 +161,7 @@ HRESULT wEndScene( IDirect3DDevice7* d3dDevice7 )
//Original //Original
//if( FAILED(result) ) //if( FAILED(result) )
//상훈 //sanghoon
if( FAILED(result) && result!=DDERR_SURFACELOST) if( FAILED(result) && result!=DDERR_SURFACELOST)
PAUSE(( "FAILED (0x%x - %s) - EndScene()",result,ErrorNumberToMessage(result))); PAUSE(( "FAILED (0x%x - %s) - EndScene()",result,ErrorNumberToMessage(result)));
@@ -834,11 +834,11 @@ __int64 ProfileRenderEnd( __int64 RenderTime )
} }
//상훈짱 begin //sanghoon begin
#include "render.hpp" #include "render.hpp"
HRESULT App_Render( LPDIRECT3DDEVICE7 pd3dDevice,LPDIRECTDRAWSURFACE7 pddsTexture); HRESULT App_Render( LPDIRECT3DDEVICE7 pd3dDevice,LPDIRECTDRAWSURFACE7 pddsTexture);
//상훈짱 end //sanghoon end
// //
@@ -915,8 +915,8 @@ void gos_UpdateDisplay( bool Everything )
ProfileTime( TimeClearViewPort, gos_SetupViewport( 0, 0, 1, 0x303050 , 0.0, 0.0, 1.0, 1.0 ) ); ProfileTime( TimeClearViewPort, gos_SetupViewport( 0, 0, 1, 0x303050 , 0.0, 0.0, 1.0, 1.0 ) );
TimeInClearViewPort+=TimeClearViewPort; TimeInClearViewPort+=TimeClearViewPort;
} }
//상훈짱 begin //sanghoon begin
//backbuffer에 Background Image를 그린다... //Draw background image to backbuffer...
if(hsh_initialized){ if(hsh_initialized){
// 0 - no MFDs, 1 - orginal(5+1=dual & single), 2 - B&W(3 + 1=1 dual), 3 - color(3 + 1=2 dual) // 0 - no MFDs, 1 - orginal(5+1=dual & single), 2 - B&W(3 + 1=1 dual), 3 - color(3 + 1=2 dual)
@@ -958,7 +958,7 @@ void gos_UpdateDisplay( bool Everything )
} }
//HSH_RenderAux1SmallMech(); //HSH_RenderAux1SmallMech();
//상훈짱 end //sanghoon end
if (g_pfnCTCL_AfterBeginScene) { if (g_pfnCTCL_AfterBeginScene) {
(*g_pfnCTCL_AfterBeginScene)(); (*g_pfnCTCL_AfterBeginScene)();
} }
@@ -1055,7 +1055,7 @@ void gos_UpdateDisplay( bool Everything )
LOG_BLOCK("Gos::UpdateDebugger()"); LOG_BLOCK("Gos::UpdateDebugger()");
ProfileTime( TimeDebugger, UpdateDebugger() ); ProfileTime( TimeDebugger, UpdateDebugger() );
} }
//상훈.. //sanghoon
#if 1 #if 1
extern LPDIRECT3DDEVICE7 d3dDevice7; extern LPDIRECT3DDEVICE7 d3dDevice7;
static bool preload_GameEndScreem=true;; static bool preload_GameEndScreem=true;;
@@ -1089,8 +1089,8 @@ void gos_UpdateDisplay( bool Everything )
// //
// Flip or Blit the current image onto the display // Flip or Blit the current image onto the display
// //
//상훈 앞 //sanghoon begin
//Flip을 한다. //Perform the Flip.
if(hsh_initialized){ if(hsh_initialized){
// 0 - no MFDs, 1 - orginal(5+1=dual & single), 2 - B&W(3 + 1=1 dual), 3 - color(3 + 1=2 dual) // 0 - no MFDs, 1 - orginal(5+1=dual & single), 2 - B&W(3 + 1=1 dual), 3 - color(3 + 1=2 dual)
switch(g_nTypeOfMFDs) { switch(g_nTypeOfMFDs) {
@@ -1143,7 +1143,7 @@ void gos_UpdateDisplay( bool Everything )
mr_device.pDDSFront->Flip(0,DDFLIP_DONOTWAIT|DDFLIP_NOVSYNC); mr_device.pDDSFront->Flip(0,DDFLIP_DONOTWAIT|DDFLIP_NOVSYNC);
} }
//상훈 뒤 //sanghoon end
{ {
LOG_BLOCK("Gos::DisplayBackBuffer()"); LOG_BLOCK("Gos::DisplayBackBuffer()");
ProfileTime( TimeDisplay, DisplayBackBuffer() ); ProfileTime( TimeDisplay, DisplayBackBuffer() );
@@ -44,9 +44,9 @@ extern DWORD gNumLockMode;
extern DWORD gCapLockMode; extern DWORD gCapLockMode;
extern DWORD gScrollLockMode; extern DWORD gScrollLockMode;
// úè - start // hyun begin
void (__stdcall *g_pfnRIO_ButtonEvent)(BYTE* by) = NULL; void (__stdcall *g_pfnRIO_ButtonEvent)(BYTE* by) = NULL;
// úè - end // hyun end
// //
// //
@@ -106,14 +106,14 @@ LRESULT CALLBACK GameOSWinProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
switch( uMsg ) switch( uMsg )
{ {
// úè // hyun
case WM_USER + 100: case WM_USER + 100:
{ {
// úè - start // hyun begin
if (g_pfnRIO_ButtonEvent) { if (g_pfnRIO_ButtonEvent) {
(*g_pfnRIO_ButtonEvent)((BYTE*)&lParam); (*g_pfnRIO_ButtonEvent)((BYTE*)&lParam);
} }
// úè - end // hyun end
} }
break; break;
// //
@@ -163,13 +163,13 @@ static bool IsValidAlphaPair( DIBSECTION& dib,DIBSECTION& diba)
if(dib.dsBmih.biHeight<0 || diba.dsBmih.biHeight<0)return false; if(dib.dsBmih.biHeight<0 || diba.dsBmih.biHeight<0)return false;
//픽셀 포맷을 일단 만족하는가? //Does it satisfy the pixel format requirement?
if(!(bm.bmBitsPixel==24 && bma.bmBitsPixel==8))return false; if(!(bm.bmBitsPixel==24 && bma.bmBitsPixel==8))return false;
//비트맵의 크기가 X,Y모두 2의 지수승인가? //Are the bitmap dimensions (X,Y) both powers of 2?
if(!(IsTextureDimension(w) && IsTextureDimension(h)))return false; if(!(IsTextureDimension(w) && IsTextureDimension(h)))return false;
//RGB와 A비트맵의 크기가 같은가? //Are RGB and Alpha bitmaps the same size?
if(bma.bmWidth!=w || bma.bmHeight!=h)return NULL; if(bma.bmWidth!=w || bma.bmHeight!=h)return NULL;
return true; return true;
@@ -408,7 +408,7 @@ bool __cdecl DrawBitmapToSurface(LPDIRECTDRAWSURFACE7 pddsTexture,int x,int y,co
//8Bit Bitmap으로부터.. Alpha를 가진 텍스쳐를 만든다. //Create texture with Alpha from 8-bit Bitmap..
static LPDIRECTDRAWSURFACE7 CreateATextureFromBitmap(LPDIRECTDRAW7 pDD,HBITMAP hbm ) static LPDIRECTDRAWSURFACE7 CreateATextureFromBitmap(LPDIRECTDRAW7 pDD,HBITMAP hbm )
{ {
BITMAP bm={0,}; BITMAP bm={0,};
@@ -442,7 +442,7 @@ static LPDIRECTDRAWSURFACE7 CreateATextureFromBitmap(LPDIRECTDRAW7 pDD,HBITMAP h
LPDIRECTDRAWSURFACE7 CreateATextureFromFile(LPDIRECTDRAW7 pDD, CHAR* strName ) LPDIRECTDRAWSURFACE7 CreateATextureFromFile(LPDIRECTDRAW7 pDD, CHAR* strName )
{ {
//ClipBoard.에 텍스트 내용을 복사한다... //Copy text content to Clipboard...
/* /*
OpenClipboard(hWindow); OpenClipboard(hWindow);
HGLOBAL h=GlobalAlloc(GMEM_MOVEABLE,512); HGLOBAL h=GlobalAlloc(GMEM_MOVEABLE,512);
@@ -531,7 +531,7 @@ bool CHSH_Device::InitFirst(int devicenum,DWORD resx,DWORD resy, CHSH_Device* pO
pDD = pOtherHSHD->pDD; pDD = pOtherHSHD->pDD;
} else { } else {
HRESULT hr; HRESULT hr;
//1. 해상도 변경. //1. Resolution change.
wDirectDrawCreateEx( &DeviceArray[devicenum].DeviceGUID , (VOID**) &(pDD), IID_IDirectDraw7, NULL ); wDirectDrawCreateEx( &DeviceArray[devicenum].DeviceGUID , (VOID**) &(pDD), IID_IDirectDraw7, NULL );
pDD->SetCooperativeLevel(hWindow, dwFlags ); pDD->SetCooperativeLevel(hWindow, dwFlags );
hr=pDD->SetDisplayMode( resx, resy, 16, 60, 0 ); hr=pDD->SetDisplayMode( resx, resy, 16, 60, 0 );
@@ -846,10 +846,10 @@ void CHSH_Device::DrawThickFrameList(int framecount,RECT* prc,int t,DWORD dwColo
} }
//texture 좌표.. u1,v1,u2,v2 //Texture coordinates.. u1,v1,u2,v2
//texture 회전축 tx,ty //Texture rotation axis tx,ty
//screen 회전축 x,y //Screen rotation axis x,y
//회전각 e //Rotation angle e
void CHSH_Device::DrawTextureRotate(float u1,float v1,float u2,float v2,float tx,float ty,float x,float y,float e,DWORD color) void CHSH_Device::DrawTextureRotate(float u1,float v1,float u2,float v2,float tx,float ty,float x,float y,float e,DWORD color)
{ {
@@ -858,9 +858,9 @@ void CHSH_Device::DrawTextureRotate(float u1,float v1,float u2,float v2,float tx
float U2=u2-tx; float U2=u2-tx;
float V2=v2-ty; float V2=v2-ty;
//(U1,V1),(U2,V1),(U1,V2),(U2,V2)네쌍을 회전변환 시킨다. //(U1,V1),(U2,V1),(U1,V2),(U2,V2) four pairs are rotation-transformed.
//pt[0][0].... //pt[0][0]....
//거기에.. 각 축에..x,y를 더해준다. //Add x,y to each axis.
float cose=cosf(e); float cose=cosf(e);
float cos_u1=cose*U1; float cos_u1=cose*U1;
float cos_u2=cose*U2; float cos_u2=cose*U2;
@@ -883,11 +883,11 @@ void CHSH_Device::DrawTextureRotate(float u1,float v1,float u2,float v2,float tx
pt[3][1] = sin_u2+cos_v2+y; pt[3][1] = sin_u2+cos_v2+y;
//HSH_Draw3DTexture2(0,pt,0xFF00FF00,u1, v1/256.0f, u2/256.0f, v2/256.0f); //HSH_Draw3DTexture2(0,pt,0xFF00FF00,u1, v1/256.0f, u2/256.0f, v2/256.0f);
//거기에다가 모두 x,y를 다시 이동 시킨다. //Then translate all by x,y again.
DrawTexture(pt,color,u1,v1,u2,v2); DrawTexture(pt,color,u1,v1,u2,v2);
} }
//임의로 스케일된다. x1,y1,x2,y2 //Scaled arbitrarily. x1,y1,x2,y2
void CHSH_Device::DrawTexture(float x1,float y1,float x2,float y2,DWORD dwColor, float u1,float v1,float u2,float v2) void CHSH_Device::DrawTexture(float x1,float y1,float x2,float y2,DWORD dwColor, float u1,float v1,float u2,float v2)
{ {
@@ -900,7 +900,7 @@ void CHSH_Device::DrawTexture(float x1,float y1,float x2,float y2,DWORD dwColor,
pD3DDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, D3DFVF_TLVERTEX ,v,4,0 ); pD3DDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, D3DFVF_TLVERTEX ,v,4,0 );
} }
//임의로 스케일된다. x,y,width,height //Scaled arbitrarily. x,y,width,height
void CHSH_Device::DrawTexture2(float x,float y,float w,float h,DWORD dwColor, float u1,float v1,float u2,float v2) void CHSH_Device::DrawTexture2(float x,float y,float w,float h,DWORD dwColor, float u1,float v1,float u2,float v2)
{ {
@@ -914,7 +914,7 @@ void CHSH_Device::DrawTexture2(float x,float y,float w,float h,DWORD dwColor, fl
} }
//스케일 되지 않는.... //Not scaled....
void CHSH_Device::DrawTexture(float x,float y,DWORD dwColor, float u1,float v1,float u2,float v2) void CHSH_Device::DrawTexture(float x,float y,DWORD dwColor, float u1,float v1,float u2,float v2)
{ {
D3DTLVERTEX v[4]; D3DTLVERTEX v[4];
@@ -978,11 +978,11 @@ bool CMR_Device::InitFirst()
bool CMR_Device::InitSecond() bool CMR_Device::InitSecond()
{ {
map_loaded=false; map_loaded=false;
CHSH_Device::InitSecond(0,0); // no off screen - Target Texture를 그리지 않는다. CHSH_Device::InitSecond(0,0); // no off screen - do not create Target Texture.
char temppath[MAX_PATH],temppatha[MAX_PATH]; char temppath[MAX_PATH],temppatha[MAX_PATH];
//1. 백그라운드이미지용 Surface //1. Surface for background image
sprintf(temppath,"%s\\hsh\\%s",AssetsDirectory1,"mr_background.bmp"); sprintf(temppath,"%s\\hsh\\%s",AssetsDirectory1,"mr_background.bmp");
pDDSBackground=CreateSurfaceFromFile(pDD,temppath); pDDSBackground=CreateSurfaceFromFile(pDD,temppath);
@@ -990,12 +990,12 @@ bool CMR_Device::InitSecond()
MessageBeep(0); MessageBeep(0);
} }
//2. 범용 텍스쳐 //2. General-purpose texture
sprintf(temppath,"%s\\hsh\\%s",AssetsDirectory1,"mr_texture.bmp"); sprintf(temppath,"%s\\hsh\\%s",AssetsDirectory1,"mr_texture.bmp");
sprintf(temppatha,"%s\\hsh\\%s",AssetsDirectory1,"mr_texturea.bmp"); sprintf(temppatha,"%s\\hsh\\%s",AssetsDirectory1,"mr_texturea.bmp");
pDDSTexture=CreateRGBATextureFromFile(pDD, temppath,temppatha,16); pDDSTexture=CreateRGBATextureFromFile(pDD, temppath,temppatha,16);
//3. 맵용 텍스쳐.. //3. Texture for map..
pDDSMapTexture=CreatePixelFormatTexture(pDD,256,256,&DDPF_R5G6B5); pDDSMapTexture=CreatePixelFormatTexture(pDD,256,256,&DDPF_R5G6B5);
tw=256; tw=256;
@@ -1008,17 +1008,17 @@ bool CMR_Device::InitSecond()
bool CMR_Device::BeginScene() bool CMR_Device::BeginScene()
{ {
//Render Target을 설정한다. //Set the Render Target.
//SetRenderTargetTexture(); //SetRenderTargetTexture();
//Texture에.. background image를 그린다. 일종의 Clear대신이다.. //Draw background image to Texture. Used as a substitute for Clear..
if(sh_game_started){ if(sh_game_started){
//게임이 시작되었을때만 백그라운드를 그린다. //Draw background only when game has started.
RECT rc={0,0,640,480}; RECT rc={0,0,640,480};
pDDSBack->BltFast(0,0,pDDSBackground,&rc,0); pDDSBack->BltFast(0,0,pDDSBackground,&rc,0);
}else{ }else{
//게임이 시작되지 않았으면.. blank를 보여준다. //If game has not started.. show blank.
pD3DDevice->Clear(0,NULL,D3DCLEAR_TARGET ,0,1.0f,0); pD3DDevice->Clear(0,NULL,D3DCLEAR_TARGET ,0,1.0f,0);
} }
@@ -1171,18 +1171,18 @@ bool CRadar_Device::InitSecond()
bool CRadar_Device::BeginScene() bool CRadar_Device::BeginScene()
{ {
//Render Target을 설정한다. //Set the Render Target.
SetRenderTargetTexture(); SetRenderTargetTexture();
//Texture에.. background image를 그린다. 일종의 Clear대신이다.. //Draw background image to Texture. Used as a substitute for Clear..
if(sh_game_started){ if(sh_game_started){
//게임이 시작되었을때만 백그라운드를 그린다. //Draw background only when game has started.
RECT rc={0,0,480,640}; RECT rc={0,0,480,640};
pDDSTarget->BltFast(0,0,pDDSBackground,&rc,0); pDDSTarget->BltFast(0,0,pDDSBackground,&rc,0);
if(IsMechShutdown()) if(IsMechShutdown())
{ {
//지도 영역을 지운다. //Clear map area.
RECT rc={140,407,340,607}; RECT rc={140,407,340,607};
DDBLTFX fx={0,}; DDBLTFX fx={0,};
@@ -1192,15 +1192,15 @@ bool CRadar_Device::BeginScene()
pDDSTarget->Blt(&rc,NULL,NULL,DDBLT_COLORFILL ,&fx); pDDSTarget->Blt(&rc,NULL,NULL,DDBLT_COLORFILL ,&fx);
} }
}else{ }else{
//게임이 시작되지 않았으면.. blank를 보여준다. //If game has not started.. show blank.
pD3DDevice->Clear(0,NULL,D3DCLEAR_TARGET ,0,1.0f,0); pD3DDevice->Clear(0,NULL,D3DCLEAR_TARGET ,0,1.0f,0);
} }
pD3DDevice->BeginScene(); pD3DDevice->BeginScene();
if(sh_game_started && IsMechShutdown()){ if(sh_game_started && IsMechShutdown()){
//shut down button을 그린다. //Draw shutdown button.
int state[12]={0,2,0,}; int state[12]={0,2,0,};
state[3]=recent_state[3];//flush state는.. 최근 값을 가져다 쓴다. state[3]=recent_state[3];//flush state: use the most recent value.
state[11]=recent_state[11];//flush state는.. 최근 값을 가져다 쓴다. state[11]=recent_state[11];//flush state: use the most recent value.
if (!g_aaRadarText[0][0]) if (!g_aaRadarText[0][0])
strcpy(&g_aaRadarText[0][0], g_szRadarJumpjet); strcpy(&g_aaRadarText[0][0], g_szRadarJumpjet);
strcpy(&g_aaRadarText[1][0], g_szRadarStartup); strcpy(&g_aaRadarText[1][0], g_szRadarStartup);
@@ -1294,7 +1294,7 @@ POINTF radar_text_pos[12]={
//state 1:ready //state 1:ready
//state 2:activated //state 2:activated
//pilot mode에서는 다른 의미를 갖는다. //Has a different meaning in pilot mode.
bool CRadar_Device::DrawBackText(int state[12]) bool CRadar_Device::DrawBackText(int state[12])
{ {
@@ -1394,12 +1394,12 @@ bool CMFD_Device::InitSecond()
{ {
CHSH_Device::InitSecond(1024,512); // 640 x 480 CHSH_Device::InitSecond(1024,512); // 640 x 480
if(g_f3dtarget){ if(g_f3dtarget){
pDDSMechTexture=CreatePixelFormatTexture(pDD,128,128,&DDPF_R5G6B5);//3D메크 이미지 저장하기 위한 텍스쳐... pDDSMechTexture=CreatePixelFormatTexture(pDD,128,128,&DDPF_R5G6B5);//Texture for storing 3D mech image...
}else{ }else{
// MSL 5.02 Target MFD Image // MSL 5.02 Target MFD Image
// pDDSMechTexture=CreatePixelFormatTexture(pDD,512,512,&DDPF_R5G6B5);//2D메크 이미지 저장하기 위한 텍스쳐... // pDDSMechTexture=CreatePixelFormatTexture(pDD,512,512,&DDPF_R5G6B5);//texture for storing 2D mech image...
pDDSMechTexture=CreatePixelFormatTexture(pDD,1024,1024,&DDPF_R5G6B5);//2D메크 이미지 저장하기 위한 텍스쳐... pDDSMechTexture=CreatePixelFormatTexture(pDD,1024,1024,&DDPF_R5G6B5);//Texture for storing 2D mech image...
//모든 메크의 이미지를 저장한다. //Store images for all mechs.
for(int mech=0;mech<ARRAYSIZE(mechnames);mech++){ for(int mech=0;mech<ARRAYSIZE(mechnames);mech++){
// MSL 5.02 Target MFD Image // MSL 5.02 Target MFD Image
// int x=(mech%4)*128; // int x=(mech%4)*128;
@@ -1415,8 +1415,8 @@ bool CMFD_Device::InitSecond()
} }
//if(pDDSMechTexture==NULL)MessageBeep(0); //if(pDDSMechTexture==NULL)MessageBeep(0);
//pDDSMechTexture=0; //pDDSMechTexture=0;
//pDDSDamageTexture=CreatePixelFormatTexture(pDD,512,512,&DDPF_R4G4B4A4);//데미지.. 이미지를.. //pDDSDamageTexture=CreatePixelFormatTexture(pDD,512,512,&DDPF_R4G4B4A4);//damage image..
pDDSDamageTexture=0;//Reset할때.. 새로이 만든다... 지금은 굳이 만들 필요 없다. pDDSDamageTexture=0;//On Reset: recreated... no need to create now.
// MSL 5.03 Target Damage Display // MSL 5.03 Target Damage Display
pDDSTargetTexture=0; pDDSTargetTexture=0;
@@ -1491,7 +1491,7 @@ bool CMFD_Device::BeginChannel(DWORD channel)
} }
ch=channel; ch=channel;
//Render Target을 설정한다. //Set the Render Target.
SetRenderTargetTexture(); SetRenderTargetTexture();
pD3DDevice->Clear(0,NULL,D3DCLEAR_TARGET ,0,0,0); pD3DDevice->Clear(0,NULL,D3DCLEAR_TARGET ,0,0,0);
pD3DDevice->BeginScene(); pD3DDevice->BeginScene();
@@ -1562,7 +1562,7 @@ bool CMFD_Device::EndChannel()
//color = 0xFFFFFFFF; //color = 0xFFFFFFFF;
D3DTLVERTEX Vertices[4]; // Vertices for the cube D3DTLVERTEX Vertices[4]; // Vertices for the cube
float w=(float)size_back.cx/2;//<==주의: 이점이 radar와 다른점이다. float w=(float)size_back.cx/2;//<==NOTE: this differs from radar.
float x1=(ch/3)*w; float x1=(ch/3)*w;
float x2=x1+w; float x2=x1+w;
float h=(float)size_back.cy; float h=(float)size_back.cy;
@@ -1633,7 +1633,7 @@ bool CMFD_Device::BeginScene()
} }
pD3DDevice->BeginScene(); pD3DDevice->BeginScene();
if(sh_game_started) { if(sh_game_started) {
//게임이 시작되었을때만.. 배경을 그린다. //Draw background only when game has started..
DrawMFDBackGrid(); DrawMFDBackGrid();
} }
pD3DDevice->EndScene(); pD3DDevice->EndScene();
@@ -1775,7 +1775,7 @@ bool CMFD_Device::DrawMFDBackTextAux3(int state)
POINTF &tc = mfd_text_coord[i]; POINTF &tc = mfd_text_coord[i];
if(i!=4){ if(i!=4){
pFont[2].DrawTextMultiLine(tc.x,tc.y,0XFFFFFFFF,mfd_text_weapon[i],TEXTALIGN_ORG); pFont[2].DrawTextMultiLine(tc.x,tc.y,0XFFFFFFFF,mfd_text_weapon[i],TEXTALIGN_ORG);
}else{//chain fire 표시 }else{//display chain fire
DrawQuad((int)tc.x-80,(int)tc.y-20,(int)tc.x+80,(int)tc.y+20,0xFFFFFFFF); DrawQuad((int)tc.x-80,(int)tc.y-20,(int)tc.x+80,(int)tc.y+20,0xFFFFFFFF);
pFont[2].DrawTextMultiLine(tc.x,tc.y,0XFF000000,mfd_text_weapon[i],TEXTALIGN_ORG); pFont[2].DrawTextMultiLine(tc.x,tc.y,0XFF000000,mfd_text_weapon[i],TEXTALIGN_ORG);
} }
@@ -1889,20 +1889,20 @@ enum {TEAMORDER_NONE, TEAM_MODE, FREEFORALL_MODE, TEAM_MESSAGE1, TEAM_MESSAGE2};
bool CMFD_Device::DrawMFDDefaultBackAux1(int state) bool CMFD_Device::DrawMFDDefaultBackAux1(int state)
{ {
if(state==TEAM_MODE){ if(state==TEAM_MODE){
//메크들의 상태를 보여준다. //Show mech status.
DrawQuad(0,240-1,640,240+1,0xFFFFFFFF); DrawQuad(0,240-1,640,240+1,0xFFFFFFFF);
DrawQuad(160-1,0,160+1,240,0xFFFFFFFF); DrawQuad(160-1,0,160+1,240,0xFFFFFFFF);
DrawQuad(320-1,0,320+1,240,0xFFFFFFFF); DrawQuad(320-1,0,320+1,240,0xFFFFFFFF);
DrawQuad(480-1,0,480+1,240,0xFFFFFFFF); DrawQuad(480-1,0,480+1,240,0xFFFFFFFF);
}else if(state==FREEFORALL_MODE){ }else if(state==FREEFORALL_MODE){
DrawQuadList(8,aux1freequads,0xFFFFFFFF); DrawQuadList(8,aux1freequads,0xFFFFFFFF);
}else if(state==TEAM_MESSAGE1){//이걸로서 더이상 그릴것이 없다. }else if(state==TEAM_MESSAGE1){//nothing more to draw.
DrawMFDBackText(mfd_text_comm2); DrawMFDBackText(mfd_text_comm2);
for(int i=0;i<7;i++){ for(int i=0;i<7;i++){
int y=80+i*40; int y=80+i*40;
pFont[0].DrawText(80,(float)y,0xFFFFFFFF,&aux1_messages[i][0],0); pFont[0].DrawText(80,(float)y,0xFFFFFFFF,&aux1_messages[i][0],0);
} }
}else if(state==TEAM_MESSAGE2){//이걸로서 더이상 그릴것이 없다. }else if(state==TEAM_MESSAGE2){//nothing more to draw.
DrawMFDBackText(mfd_text_comm2); DrawMFDBackText(mfd_text_comm2);
for(int i=0;i<7;i++){ for(int i=0;i<7;i++){
int y=80+i*40; int y=80+i*40;
@@ -2025,9 +2025,9 @@ void CHSHFont::Init(LPDIRECTDRAW7 pDD, LPDIRECT3DDEVICE7 pd3dDevice ,const char*
DWORD x = 0; DWORD x = 0;
DWORD y = 0; DWORD y = 0;
char str[4] = {0,};//DWORD align시키기 위해서..(원래는 2를 쓰면된다.) char str[4] = {0,};//For DWORD alignment.. (originally 2 would suffice.)
SIZE size; SIZE size;
m_dwMaxWidth=0;//최소값으로 초기화한다. m_dwMaxWidth=0;//Initialize to minimum value.
for( char c=32; c<127; c++ ){ for( char c=32; c<127; c++ ){
str[0] = c; str[0] = c;
@@ -2037,11 +2037,11 @@ void CHSHFont::Init(LPDIRECTDRAW7 pDD, LPDIRECT3DDEVICE7 pd3dDevice ,const char*
x = 0; x = 0;
y += size.cy+1; y += size.cy+1;
} }
if(size.cx>(int)m_dwMaxWidth){//문자 하나중 가장 큰것.. if(size.cx>(int)m_dwMaxWidth){//widest single character..
m_dwMaxWidth=size.cx; m_dwMaxWidth=size.cx;
} }
//j i의 영역을 침범한다. 적절한 조치를 취할것... //j invades the region of i. Take appropriate action...
ExtTextOut( hDC, x+0, y+0, ETO_OPAQUE, NULL, str, 1, NULL ); ExtTextOut( hDC, x+0, y+0, ETO_OPAQUE, NULL, str, 1, NULL );
m_fTexCoords[c-32][0] = ((float)(x+0))/m_dwTexWidth; m_fTexCoords[c-32][0] = ((float)(x+0))/m_dwTexWidth;
@@ -2073,7 +2073,7 @@ void CHSHFont::Init(LPDIRECTDRAW7 pDD, LPDIRECT3DDEVICE7 pd3dDevice ,const char*
DeleteDC( hDC ); DeleteDC( hDC );
DeleteObject( hFont ); DeleteObject( hFont );
//////StateBlock관련.. //////StateBlock related..
for( UINT which=0; which<2; which++ ){ for( UINT which=0; which<2; which++ ){
m_pd3dDevice->BeginStateBlock(); m_pd3dDevice->BeginStateBlock();
m_pd3dDevice->SetTexture( 0, m_pTexture ); m_pd3dDevice->SetTexture( 0, m_pTexture );
@@ -2114,9 +2114,9 @@ void CHSHFont::Init(LPDIRECTDRAW7 pDD, LPDIRECT3DDEVICE7 pd3dDevice ,const char*
DWORD x = 0; DWORD x = 0;
DWORD y = 0; DWORD y = 0;
char str[4] = {0,};//DWORD align시키기 위해서..(원래는 2를 쓰면된다.) char str[4] = {0,};//For DWORD alignment.. (originally 2 would suffice.)
SIZE size; SIZE size;
m_dwMaxWidth=0;//최소값으로 초기화한다. m_dwMaxWidth=0;//Initialize to minimum value.
for( char c=32; c<127; c++ ){ for( char c=32; c<127; c++ ){
str[0] = c; str[0] = c;
@@ -2126,11 +2126,11 @@ void CHSHFont::Init(LPDIRECTDRAW7 pDD, LPDIRECT3DDEVICE7 pd3dDevice ,const char*
x = 0; x = 0;
y += size.cy+1; y += size.cy+1;
} }
if(size.cx>(int)m_dwMaxWidth){//문자 하나중 가장 큰것.. if(size.cx>(int)m_dwMaxWidth){//widest single character..
m_dwMaxWidth=size.cx; m_dwMaxWidth=size.cx;
} }
//j i의 영역을 침범한다. 적절한 조치를 취할것... //j invades the region of i. Take appropriate action...
ExtTextOut( hDC, x+0, y+0, ETO_OPAQUE, NULL, str, 1, NULL ); ExtTextOut( hDC, x+0, y+0, ETO_OPAQUE, NULL, str, 1, NULL );
m_fTexCoords[c-32][0] = ((float)(x+0))/m_dwTexWidth; m_fTexCoords[c-32][0] = ((float)(x+0))/m_dwTexWidth;
@@ -2161,7 +2161,7 @@ void CHSHFont::Init(LPDIRECTDRAW7 pDD, LPDIRECT3DDEVICE7 pd3dDevice ,const char*
DeleteDC( hDC ); DeleteDC( hDC );
DeleteObject( hFont ); DeleteObject( hFont );
//////StateBlock관련.. //////StateBlock related..
for( UINT which=0; which<2; which++ ){ for( UINT which=0; which<2; which++ ){
m_pd3dDevice->BeginStateBlock(); m_pd3dDevice->BeginStateBlock();
m_pd3dDevice->SetTexture( 0, m_pTexture ); m_pd3dDevice->SetTexture( 0, m_pTexture );
@@ -2191,7 +2191,7 @@ void CHSHFont::Cleanup()
} }
SAFE_RELEASE( m_pTexture ); SAFE_RELEASE( m_pTexture );
SAFE_RELEASE( m_pd3dDevice ); SAFE_RELEASE( m_pd3dDevice );
}//m_pd3dDevice==NULL이면 아무것도 하지 않는다. }//If m_pd3dDevice==NULL, do nothing.
} }
HRESULT CHSHFont::GetTextExtent(const char* strText, SIZE* pSize ) HRESULT CHSHFont::GetTextExtent(const char* strText, SIZE* pSize )
@@ -2240,12 +2240,12 @@ HRESULT CHSHFont::DrawText( float sx, float sy, DWORD dwColor,const char* strTex
DWORD dwNumVtx = 0; DWORD dwNumVtx = 0;
D3DTLVERTEX * pVertices =m_pVB; D3DTLVERTEX * pVertices =m_pVB;
char c; char c;
float osx=sx;//원래의 sx; float osx=sx;//original sx;
float h = (m_fTexCoords[0][3]-m_fTexCoords[0][1]) * m_dwTexHeight ;//한글자의 높이는 모두 동일할 것이다. float h = (m_fTexCoords[0][3]-m_fTexCoords[0][1]) * m_dwTexHeight ;//Height of each character should all be the same.
while( (c = *strText++)!=0 ){ while( (c = *strText++)!=0 ){
if( c == '\n')sy+=h,sx=osx;//여러줄을 표시할때... if( c == '\n')sy+=h,sx=osx;//when displaying multiple lines...
if( c < ' ' )continue; if( c < ' ' )continue;
@@ -2274,7 +2274,7 @@ HRESULT CHSHFont::DrawText( float sx, float sy, DWORD dwColor,const char* strTex
sx += w; sx += w;
} }
//나머지 것들을 그린다. //Draw the remaining items.
if(dwNumVtx> 0 ){ if(dwNumVtx> 0 ){
m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, D3DFVF_TLVERTEX ,m_pVB,dwNumVtx,0 ); m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, D3DFVF_TLVERTEX ,m_pVB,dwNumVtx,0 );
} }
@@ -2342,7 +2342,7 @@ HRESULT CHSHFont::DrawTextMultiLine( float sx, float sy, DWORD dwColor,const cha
break; break;
} }
char string[128];//최대값을 임의로 정한다. char string[128];//Max length set arbitrarily.
strcpy(string,strText); strcpy(string,strText);
char * seps="\n"; char * seps="\n";
char * token; char * token;
@@ -2377,7 +2377,7 @@ HRESULT CHSHFont::DrawTextVerticalOrg( float sx, float sy, DWORD dwColor,const c
float h = (float)((m_fTexCoords[0][3]-m_fTexCoords[0][1])*m_dwTexHeight); float h = (float)((m_fTexCoords[0][3]-m_fTexCoords[0][1])*m_dwTexHeight);
float w = (float)m_dwMaxWidth; float w = (float)m_dwMaxWidth;
//가로 쓰기라고 가정했을때의 명칭이다. //Name assuming horizontal (left-to-right) text layout.
int col_count=0;//maximum column count int col_count=0;//maximum column count
int row_count=1; int row_count=1;
@@ -2395,7 +2395,7 @@ HRESULT CHSHFont::DrawTextVerticalOrg( float sx, float sy, DWORD dwColor,const c
ccount++; ccount++;
if(ccount>col_count)col_count=ccount;//update the max value if(ccount>col_count)col_count=ccount;//update the max value
} }
//여기서는 새로 쓰기일때의 크기이다. //This is the size when writing from scratch.
SIZE size; SIZE size;
size.cx=(int)(row_count*w); size.cx=(int)(row_count*w);
size.cy=(int)(col_count*h); size.cy=(int)(col_count*h);
@@ -2408,7 +2408,7 @@ HRESULT CHSHFont::DrawTextVerticalOrg( float sx, float sy, DWORD dwColor,const c
m_pd3dDevice->ApplyStateBlock( m_dwDrawTextStateBlock ); m_pd3dDevice->ApplyStateBlock( m_dwDrawTextStateBlock );
m_pd3dDevice->SetTexture(0,m_pTexture); m_pd3dDevice->SetTexture(0,m_pTexture);
char string[128];//최대값을 임의로 정한다. char string[128];//Max length set arbitrarily.
strcpy(string,strText); strcpy(string,strText);
char * seps="\n"; char * seps="\n";
char * token; char * token;
@@ -2416,7 +2416,7 @@ HRESULT CHSHFont::DrawTextVerticalOrg( float sx, float sy, DWORD dwColor,const c
DWORD dwNumVtx = 0; DWORD dwNumVtx = 0;
D3DTLVERTEX * pVertices =m_pVB; D3DTLVERTEX * pVertices =m_pVB;
float osy=sy-size.cy/2;//원래의 sy 가장 높은 좌표..; float osy=sy-size.cy/2;//original sy: topmost coordinate..;
sx=sx-size.cx/2; sx=sx-size.cx/2;
@@ -2456,7 +2456,7 @@ HRESULT CHSHFont::DrawTextVerticalOrg( float sx, float sy, DWORD dwColor,const c
token = strtok( NULL, seps ); token = strtok( NULL, seps );
} }
//나머지 것들을 그린다. //Draw the remaining items.
if(dwNumVtx> 0 ){ if(dwNumVtx> 0 ){
m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, D3DFVF_TLVERTEX ,m_pVB,dwNumVtx,0 ); m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, D3DFVF_TLVERTEX ,m_pVB,dwNumVtx,0 );
} }
@@ -2506,20 +2506,20 @@ int __cdecl CopyTargetImage(int stage,LPDIRECTDRAWSURFACE7 tex,int step)
if(stage==1){ if(stage==1){
if(inited){ if(inited){
//normal function //normal function
//성능상의 이유로.. 맨처음에 두었음.. //Placed at the top for performance reasons..
RECT rc={0,0,128,128}; RECT rc={0,0,128,128};
LONG lPitch; LONG lPitch;
LPDWORD agp_org,agp,pci_org,pci,mem; LPDWORD agp_org,agp,pci_org,pci,mem;
int x,y; int x,y;
int sx=0,sy=10,ex=120,ey=112; int sx=0,sy=10,ex=120,ey=112;
//int hy=ey-sy;//높이. //int hy=ey-sy;//height.
// if(1<=sh_step&&sh_step<=3){ // if(1<=sh_step&&sh_step<=3){
//1. AGP->MEM //1. AGP->MEM
//int h=(sh_step-1)*hy/3;//세그먼트 오프셋.. //int h=(sh_step-1)*hy/3;//segment offset..
mem=mem_org; mem=mem_org;
agp_org=(DWORD*)GetSurfacePointer(SH_TargetBufferSurface,rc,lPitch,DDLOCK_READONLY ); agp_org=(DWORD*)GetSurfacePointer(SH_TargetBufferSurface,rc,lPitch,DDLOCK_READONLY );
if(agp_org!=NULL){ if(agp_org!=NULL){
if(lPitch%4==0){// DWORD align됐을때만 실행한다. if(lPitch%4==0){// execute only when DWORD aligned.
for(y=sy;y<ey;y++){ for(y=sy;y<ey;y++){
agp=agp_org+lPitch/4*y; agp=agp_org+lPitch/4*y;
mem=mem_org+128*2/4*y; mem=mem_org+128*2/4*y;
@@ -2552,7 +2552,7 @@ int __cdecl CopyTargetImage(int stage,LPDIRECTDRAWSURFACE7 tex,int step)
mem=mem_org; mem=mem_org;
pci_org=(DWORD*)GetSurfacePointer(texture,rc,lPitch,DDLOCK_WRITEONLY ); pci_org=(DWORD*)GetSurfacePointer(texture,rc,lPitch,DDLOCK_WRITEONLY );
if(pci_org){ if(pci_org){
if(lPitch%4==0){// DWORD align됐을때만 실행한다. if(lPitch%4==0){// execute only when DWORD aligned.
for(y=sy;y<ey;y++){ for(y=sy;y<ey;y++){
pci=pci_org+lPitch/4*y; pci=pci_org+lPitch/4*y;
mem=mem_org+128*2/4*y; mem=mem_org+128*2/4*y;
@@ -2593,16 +2593,16 @@ int __cdecl CopyTargetImage(int stage,LPDIRECTDRAWSURFACE7 tex,int step)
// Full Screen // Full Screen
//_____________________________________________________________________________________________________ //_____________________________________________________________________________________________________
//전에 SCREENS와 유사한 역할을 한다 //Previously served a role similar to SCREENS
//command line paramemer에 의해 정해지고 이후에는 변하지 않는다. //Set by command line parameter and does not change thereafter.
bool use_multimonitor; bool use_multimonitor;
//보통 true이다.. 그러나 window모드로 들어가면.. false가된다. //Normally true.. but becomes false when entering windowed mode..
//true이면.. 각종 드로딩 루틴을 그리고 false를 일때는 일체 하지 않는다. //If true.. runs all drawing routines; if false, does nothing.
bool draw_mfd_huds; bool draw_mfd_huds;
//window모드가 되었을때 무조건 true가 되도록한다.(현재에는..) //Force to true when windowed mode is entered. (currently..)
//멀티모디터 드로잉과는 관계없다. //Unrelated to multi-monitor drawing.
bool draw_main_huds; bool draw_main_huds;
CRadar_Device radar_device; CRadar_Device radar_device;
CMFD_Device mfd_device; CMFD_Device mfd_device;
@@ -2719,7 +2719,7 @@ void __cdecl DrawSwrling(LPDIRECT3DDEVICE7 pd3dDevice,LPDIRECTDRAWSURFACE7 pText
const int segvert=(seg+1)*2; const int segvert=(seg+1)*2;
static D3DTLVERTEX Vertices[seg2][segvert]; // Vertices for the cube static D3DTLVERTEX Vertices[seg2][segvert]; // Vertices for the cube
static bool vertices_initialized=false; static bool vertices_initialized=false;
//int rcount,scount;//회전 방향 setment수.., 직선 방향 segment.. //int rcount,scount;//num rotation-direction segments, num straight-direction segments..
static float off_z=0; static float off_z=0;
if(freload){ if(freload){
char temppath[MAX_PATH]; char temppath[MAX_PATH];
@@ -2745,7 +2745,7 @@ void __cdecl DrawSwrling(LPDIRECT3DDEVICE7 pd3dDevice,LPDIRECTDRAWSURFACE7 pText
MakeTorus(Vertices[2],w/2,h/2, 0*f,100*f,seg,0xFF000000,0xFF666666,0.3f,0.5f,0,-500,0,-200); MakeTorus(Vertices[2],w/2,h/2, 0*f,100*f,seg,0xFF000000,0xFF666666,0.3f,0.5f,0,-500,0,-200);
vertices_initialized=true; vertices_initialized=true;
}else{ }else{
//초기화 됐을경우는 텍스쳐 좌표를 계속해서 바꾼다. //If initialized, keep changing texture coordinates.
static float offset=0; static float offset=0;
static float off=0; static float off=0;
float bb=sinf(off)*2; float bb=sinf(off)*2;
@@ -2774,7 +2774,7 @@ void __cdecl DrawGameEndScreen(LPDIRECT3DDEVICE7 pd3dDevice,LPDIRECTDRAWSURFACE7
{ {
static D3DTLVERTEX Vertices[4]; // Vertices for the cube static D3DTLVERTEX Vertices[4]; // Vertices for the cube
static bool vertices_initialized=false; static bool vertices_initialized=false;
//int rcount,scount;//회전 방향 setment수.., 직선 방향 segment.. //int rcount,scount;//num rotation-direction segments, num straight-direction segments..
static float off_z=0; static float off_z=0;
if(freload){ if(freload){
extern bool g_bCOOP; // COin OPeration extern bool g_bCOOP; // COin OPeration
@@ -2805,7 +2805,7 @@ void __cdecl DrawGameEndScreen(LPDIRECT3DDEVICE7 pd3dDevice,LPDIRECTDRAWSURFACE7
Vertices[3] = D3DTLVERTEX(D3DVECTOR( (float)w, (float)h, z_pos),1.0f,0xFFFFFFFF,0, 800.0f/1024.0f, 600.0f/1024.0f ); Vertices[3] = D3DTLVERTEX(D3DVECTOR( (float)w, (float)h, z_pos),1.0f,0xFFFFFFFF,0, 800.0f/1024.0f, 600.0f/1024.0f );
vertices_initialized=true; vertices_initialized=true;
}else{ }else{
//초기화 됐을경우는 텍스쳐 좌표를 계속해서 바꾼다. //If initialized, keep changing texture coordinates.
} }
pd3dDevice->SetTextureStageState(0,D3DTSS_COLOROP ,D3DTOP_MODULATE); pd3dDevice->SetTextureStageState(0,D3DTSS_COLOROP ,D3DTOP_MODULATE);
pd3dDevice->SetTextureStageState(0,D3DTSS_COLORARG1 ,D3DTA_TEXTURE); pd3dDevice->SetTextureStageState(0,D3DTSS_COLORARG1 ,D3DTA_TEXTURE);
@@ -1,4 +1,4 @@
//D3DCOLOR_XXXX정위한다.(d3d8types.h에 정의되어 있으므로. 정의되어있지 않을것이다. //D3DCOLOR_XXXX macros are defined in d3d8types.h and will not be redefined here.
#ifndef D3DCOLOR_ARGB #ifndef D3DCOLOR_ARGB
#define D3DCOLOR_ARGB(a,r,g,b) (D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff))) #define D3DCOLOR_ARGB(a,r,g,b) (D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
@@ -44,10 +44,10 @@ enum AUX1STATE
#define AUX1_TEAM_MESSAGE 2 #define AUX1_TEAM_MESSAGE 2
#define AUX1_FREE_MESSAGE 3 #define AUX1_FREE_MESSAGE 3
//각 디바이스마다.., 각 폰트 종류(typeface,크기,굴기,기울기)가 달라질때 마다 하나씩 생성시켜 사용하면 된다. //Create one instance per device per font type (typeface, size, bold, italic).
class CHSHFont class CHSHFont
{ {
//일시적으로 사용되고.. 각 instance마다 사용되어질 필요가 없으므로 static으로 하였다. //Used temporarily; no need per instance, so declared static.
static D3DTLVERTEX m_pVB[300]; static D3DTLVERTEX m_pVB[300];
LPDIRECT3DDEVICE7 m_pd3dDevice; LPDIRECT3DDEVICE7 m_pd3dDevice;
@@ -59,7 +59,7 @@ class CHSHFont
DWORD m_dwSavedStateBlock; DWORD m_dwSavedStateBlock;
DWORD m_dwDrawTextStateBlock; DWORD m_dwDrawTextStateBlock;
DWORD m_dwMaxWidth;//문자 하나중 가장 큰것.. DWORD m_dwMaxWidth;//Width of the widest single character..
public: public:
CHSHFont(); CHSHFont();
~CHSHFont(); ~CHSHFont();
@@ -80,10 +80,10 @@ public:
CHSH_Device* m_pOtherHSHD; CHSH_Device* m_pOtherHSHD;
public: public:
LPDIRECTDRAW7 pDD; LPDIRECTDRAW7 pDD;
LPDIRECTDRAWSURFACE7 pDDSFront; //Flip을 하기위해서 필요.. LPDIRECTDRAWSURFACE7 pDDSFront; //Required for Flip..
LPDIRECTDRAWSURFACE7 pDDSBack; //Drawing하기 위해서 필요. LPDIRECTDRAWSURFACE7 pDDSBack; //Required for Drawing.
LPDIRECTDRAWSURFACE7 pDDSTarget; //실제 그리는 텍스쳐 이다. LPDIRECTDRAWSURFACE7 pDDSTarget; //The actual rendering texture.
LPDIRECTDRAWSURFACE7 pDDSTexture; //실제 그리는 텍스쳐 이다. LPDIRECTDRAWSURFACE7 pDDSTexture; //The actual rendering texture.
LPDIRECT3DDEVICE7 pD3DDevice; LPDIRECT3DDEVICE7 pD3DDevice;
CHSHFont pFont[4]; CHSHFont pFont[4];
SIZE size_back; SIZE size_back;
@@ -141,7 +141,7 @@ public:
bool InitFirst(); bool InitFirst();
bool InitSecond(); bool InitSecond();
LPDIRECTDRAWSURFACE7 pDDSBackground; //one attatched image sruface LPDIRECTDRAWSURFACE7 pDDSBackground; //one attatched image sruface
LPDIRECTDRAWSURFACE7 pDDSRadarDamageTexture;//메크 데미지 텍스쳐.. LPDIRECTDRAWSURFACE7 pDDSRadarDamageTexture;//Mech damage texture..
// MSL 5.03 Mechview // MSL 5.03 Mechview
LPDIRECTDRAWSURFACE7 pDDSMechViewBkgnd; LPDIRECTDRAWSURFACE7 pDDSMechViewBkgnd;
LPDIRECTDRAWSURFACE7 pDDSMechViewBeagle; LPDIRECTDRAWSURFACE7 pDDSMechViewBeagle;
@@ -151,7 +151,7 @@ public:
LPDIRECTDRAWSURFACE7 pDDSMechViewLightamp; LPDIRECTDRAWSURFACE7 pDDSMechViewLightamp;
LPDIRECTDRAWSURFACE7 m_pDDSMechView; //m x n - tiled 3D MechView images LPDIRECTDRAWSURFACE7 m_pDDSMechView; //m x n - tiled 3D MechView images
virtual bool BeginScene(); //texture를 ratate시켜서 출력하기 위한 루틴이 포함된다.. background이미지를.. 미리 출력한다... virtual bool BeginScene(); //Rotates and outputs texture; pre-renders background image...
virtual bool EndScene(); virtual bool EndScene();
virtual bool Release(); virtual bool Release();
bool LoadRadarDamageTexture(const char *mechtexturename); bool LoadRadarDamageTexture(const char *mechtexturename);
@@ -163,10 +163,10 @@ class CMFD_Device:public CHSH_Device
{ {
public: public:
//CHSHFont SmallFont; //CHSHFont SmallFont;
LPDIRECTDRAWSURFACE7 pDDSMechTexture;//3D메크 이미지 저장하기 위한 텍스쳐... LPDIRECTDRAWSURFACE7 pDDSMechTexture;//Texture for storing 3D mech image...
LPDIRECTDRAWSURFACE7 pDDSDamageTexture;//메크 데미지 텍스쳐.. LPDIRECTDRAWSURFACE7 pDDSDamageTexture;//Mech damage texture..
// MSL 5.03 Target Damage Display // MSL 5.03 Target Damage Display
LPDIRECTDRAWSURFACE7 pDDSTargetTexture;//메크 데미지 텍스쳐.. LPDIRECTDRAWSURFACE7 pDDSTargetTexture;//Target damage texture..
DWORD ch; //current channel.... DWORD ch; //current channel....
CHSH_Device* m_pRightDevice; // mode 4: pointer to right 640x480 device (NULL in modes 1-3) CHSH_Device* m_pRightDevice; // mode 4: pointer to right 640x480 device (NULL in modes 1-3)
@@ -175,11 +175,11 @@ public:
~CMFD_Device(); ~CMFD_Device();
bool InitFirst(); bool InitFirst();
bool InitSecond(); bool InitSecond();
bool BeginChannel(DWORD channel);// 0~4번의 채널을 정할 수 있게된다. bool BeginChannel(DWORD channel);// Select channel 0-4.
bool EndChannel(); bool EndChannel();
virtual bool BeginScene(); //normal한 beginscene/endscene를 한다. virtual bool BeginScene(); //Performs normal BeginScene/EndScene.
bool BeginSceneRight(); // mode 4: clear+grid on right device at sh_step==1 bool BeginSceneRight(); // mode 4: clear+grid on right device at sh_step==1
virtual bool EndScene(); //flip을 한다. virtual bool EndScene(); //Performs the Flip.
virtual bool Release(); virtual bool Release();
bool LoadDamageTexture(const char *mechtexturename); bool LoadDamageTexture(const char *mechtexturename);
// MSL 5.03 Target Damage Display // MSL 5.03 Target Damage Display
@@ -214,10 +214,10 @@ public:
bool InitFirst(); bool InitFirst();
bool InitSecond(); bool InitSecond();
LPDIRECTDRAWSURFACE7 pDDSBackground; //one attatched image sruface LPDIRECTDRAWSURFACE7 pDDSBackground; //one attatched image sruface
LPDIRECTDRAWSURFACE7 pDDSMapTexture; //스크롤되는 맵 이미지를 위한 텍스쳐.. LPDIRECTDRAWSURFACE7 pDDSMapTexture; //Texture for scrollable map image..
LPDIRECTDRAWSURFACE7 pDDSMRTargetTexture;//메크 데미지 텍스쳐.. LPDIRECTDRAWSURFACE7 pDDSMRTargetTexture;//Mission Review target texture..
bool LoadMRTargetTexture(const char *mechtexturename); bool LoadMRTargetTexture(const char *mechtexturename);
virtual bool BeginScene(); //texture를 ratate시켜서 출력하기 위한 루틴이 포함된다.. background이미지를.. 미리 출력한다... virtual bool BeginScene(); //Rotates and outputs texture; pre-renders background image...
virtual bool EndScene(); virtual bool EndScene();
virtual bool Release(); virtual bool Release();
}; };
@@ -71,7 +71,7 @@ INTERNET_STATUS_STATE_CHANGE
INTERNET_STATE_DISCONNECTED_BY_USER INTERNET_STATE_DISCONNECTED_BY_USER
Disconnected by user request. Disconnected by user request.
INTERNET_STATE_IDLE INTERNET_STATE_IDLE
No network requests are being made by the Win32® Internet functions. No network requests are being made by the Win32® Internet functions.
INTERNET_STATE_BUSY INTERNET_STATE_BUSY
Network requests are being made by the Win32 Internet functions. Network requests are being made by the Win32 Internet functions.
INTERNET_STATUS_USER_INPUT_REQUIRED INTERNET_STATUS_USER_INPUT_REQUIRED
+1 -1
View File
@@ -1077,7 +1077,7 @@ int CStrArray::GetTotalLength() const
int nTotalLength; int nTotalLength;
int i, nSize = GetSize(); int i, nSize = GetSize();
nTotalLength = nSize; // nSize개의 '\0' nTotalLength = nSize; // nSize null terminators '\0'
for(i = 0; i < nSize; i++) { for(i = 0; i < nSize; i++) {
nTotalLength += strlen(GetAt(i)); nTotalLength += strlen(GetAt(i));
} }
+22 -22
View File
@@ -514,7 +514,7 @@ void CSOC_Server::OnSendFile()
BYTE bCode; BYTE bCode;
if (Disassemble("B", &bCode)) { if (Disassemble("B", &bCode)) {
ASSERT((bCode == 0) || (bCode == 3)); ASSERT((bCode == 0) || (bCode == 3));
// 받아가시오 from Game to console... // Receiving from Game to console...
SYSTEMTIME* pSysTime; SYSTEMTIME* pSysTime;
WORD wSysTimeSize; WORD wSysTimeSize;
GUID* pGUID; GUID* pGUID;
@@ -530,7 +530,7 @@ void CSOC_Server::OnSendFile()
pSF = g_pCTCLManager->m_SFM_Recv.Find(*pGUID, nType); pSF = g_pCTCLManager->m_SFM_Recv.Find(*pGUID, nType);
if (pSF) { if (pSF) {
if (bCode == 3) { if (bCode == 3) {
// 미션리뷰 서버가 mission review 받았다는 것을 받았느냐? // Did we receive confirmation the mission review server got the mission review?
pSF->m_bProcessed = true; pSF->m_bProcessed = true;
g_pCTCLManager->m_SFM_Recv.Cut(pSF); g_pCTCLManager->m_SFM_Recv.Cut(pSF);
g_pCTCLManager->m_SFM_Done.AddTail(pSF); g_pCTCLManager->m_SFM_Done.AddTail(pSF);
@@ -907,7 +907,7 @@ void CSOC_Client::OnSendFile()
BYTE bCode; BYTE bCode;
if (Disassemble("B", &bCode)) { if (Disassemble("B", &bCode)) {
ASSERT((bCode == 1) || (bCode == 2)); ASSERT((bCode == 1) || (bCode == 2));
// 받았오 from console to Game... // Received from console to Game...
SYSTEMTIME* pSysTime; SYSTEMTIME* pSysTime;
WORD wSysTimeSize; WORD wSysTimeSize;
GUID* pGUID; GUID* pGUID;
@@ -1425,21 +1425,21 @@ void CCTCLManager::Run()
#endif // !defined(CTCL_LAUNCHER) #endif // !defined(CTCL_LAUNCHER)
} else { } else {
/* /*
. Code executed for both client and server.
* *Possible states:
/ .. Before server/client role is determined: waiting for commands
(// .) (Commands such as exit/start-server/start-client may arrive.)
Running as server, waiting for server mech configuration data
(CreateSession가 .) (State after CreateSession has been called.)
Bot들에 Running as server, waiting for Bot information
( .) (Client joining happens automatically between client and server.)
Launch를 Running as server, waiting for Launch
==> . ==>Client has no waiting state as data is transferred immediately on startup.
==> . ==>Define each state and implement the appropriate handling for each.
switch(state){ switch(state){
} }
*/ */
@@ -1521,8 +1521,8 @@ void CCTCLManager::DoMech4Comm()
} }
break; break;
case 1: case 1:
//서버/클라이언트로서 실행준비하도록 명령을 전달한다. //Send command to prepare for execution as server/client.
//또한 서버를 실행하는데 필요한 모든 파라미터도 함께 전달한다. //Also transmit all parameters required to run the server.
for(i = 0; i < g_nPlayerInfos; i++) { for(i = 0; i < g_nPlayerInfos; i++) {
SPlayerInfo& pi = g_aPlayerInfos[i]; SPlayerInfo& pi = g_aPlayerInfos[i];
if (!pi.m_bBot) { if (!pi.m_bBot) {
@@ -1549,12 +1549,12 @@ void CCTCLManager::DoMech4Comm()
} }
} }
if (i == g_nPlayerInfos) { if (i == g_nPlayerInfos) {
// Bot들에 대한 정보를 모두 한데 묶어서 보낸다. // Bundle and send all Bot information together.
CPacket pak(&SVR.GetGameSOC()); CPacket pak(&SVR.GetGameSOC());
pak.Assemble("B", C_BOTS); pak.Assemble("B", C_BOTS);
for(i = 0; i < g_nPlayerInfos; i++) { for(i = 0; i < g_nPlayerInfos; i++) {
if (i != g_nServer) { // 원래 Bot만 지금은 서버를 제외한 전부... if (i != g_nServer) { // Originally bots only; now everyone except the server...
SPlayerInfo& pi = g_aPlayerInfos[i]; SPlayerInfo& pi = g_aPlayerInfos[i];
pak.Assemble("BnsDWwsnn", pi.m_bBot, pi.m_nLevelOrTesla, pi.m_szName, pi.m_nMechIndex, pi.m_fileID, pi.m_recordID, pi.m_szMech, pi.m_nTeamOrSkin, pi.m_nDecal); pak.Assemble("BnsDWwsnn", pi.m_bBot, pi.m_nLevelOrTesla, pi.m_szName, pi.m_nMechIndex, pi.m_fileID, pi.m_recordID, pi.m_szMech, pi.m_nTeamOrSkin, pi.m_nDecal);
} }
@@ -1565,10 +1565,10 @@ void CCTCLManager::DoMech4Comm()
} }
break; break;
case 4: case 4:
// 게임이 성공적으로 만들어지면 서버와 클라이언트들의 Mech에 대한 정보들을 Set한다... // Once the game is successfully created, set Mech info for server and all clients...
if (SOCGame.m_nGameReturn == _EGR_OkCreateSession) { if (SOCGame.m_nGameReturn == _EGR_OkCreateSession) {
for(i = 0; i < g_nPlayerInfos; i++) { for(i = 0; i < g_nPlayerInfos; i++) {
if (i != g_nServer) { // 서버는 이미 SetMech에 진입한 상태... if (i != g_nServer) { // Server has already entered SetMech...
SPlayerInfo& pi = g_aPlayerInfos[i]; SPlayerInfo& pi = g_aPlayerInfos[i];
if (!pi.m_bBot) { if (!pi.m_bBot) {
CTeslaInfo& ti = m_aTIs.GetAt(pi.m_nLevelOrTesla); CTeslaInfo& ti = m_aTIs.GetAt(pi.m_nLevelOrTesla);
@@ -1581,8 +1581,8 @@ void CCTCLManager::DoMech4Comm()
} }
break; break;
case 6: case 6:
//모든 클라이언드들이 서버에 참여하기를 기다린다.<==이 응답은 서버로 부터 얻을 수 있다. //Wait for all clients to join the server. <==This response comes from the server.
//참여가 모두 끝났으면, 서버로 하여금 게임을 Launch시키도록 한다. //Once all clients have joined, instruct the server to Launch the game.
if (SOCGame.m_nGameReturn == _EGR_OkLaunchReady) { if (SOCGame.m_nGameReturn == _EGR_OkLaunchReady) {
g_nMech4Comm = 9; g_nMech4Comm = 9;
} }
+1 -1
View File
@@ -42,7 +42,7 @@ public:
const char* m_pcsz; const char* m_pcsz;
int m_nLauncherConnection; // 0: no connection, +1: connection, -1: connecting int m_nLauncherConnection; // 0: no connection, +1: connection, -1: connecting
int m_nConnection2; // m_bCameraShip값에 따라 게임 혹은 카메라 쉽과의 접속을 의미, 0: no connection, +1: connection, -1: connecting int m_nConnection2; // Connection to game or camera ship per m_bCameraShip, 0: no connection, +1: connected, -1: connecting
int m_nApplType; int m_nApplType;
int m_nApplState; int m_nApplState;
int m_nGameState; int m_nGameState;
+4 -4
View File
@@ -44,7 +44,7 @@ int GetDayEnd(int nYear, int nMonth)
long GetTotalSeconds(int nYear, int nMonth, int nDay) long GetTotalSeconds(int nYear, int nMonth, int nDay)
{ {
// nYear, nMonth, nDay날의 0시 0분 0초를 0으로 한 초단위 수... // Seconds elapsed since 00:00:00 on the date nYear/nMonth/nDay...
ASSERT(nYear >= 1970); ASSERT(nYear >= 1970);
ASSERT((1 <= nMonth) && (nMonth <= 12)); ASSERT((1 <= nMonth) && (nMonth <= 12));
ASSERT(1 <= nDay); ASSERT(1 <= nDay);
@@ -57,13 +57,13 @@ long GetTotalSeconds(int nYear, int nMonth, int nDay)
if (IsLeapYear(nStart)) { if (IsLeapYear(nStart)) {
nDays++; nDays++;
} }
lTotal += nDays * 24 * 60 * 60; // 24시간 60분 60초 lTotal += nDays * 24 * 60 * 60; // 24 hours * 60 min * 60 sec
} }
for(nStart = 1; nStart < nMonth; nStart++) { for(nStart = 1; nStart < nMonth; nStart++) {
int nDayEnd = GetDayEnd(nYear, nStart); int nDayEnd = GetDayEnd(nYear, nStart);
lTotal += nDayEnd * 24 * 60 * 60; // 24시간 60분 60초 lTotal += nDayEnd * 24 * 60 * 60; // 24 hours * 60 min * 60 sec
} }
lTotal += (nDay - 1) * 24 * 60 * 60; // 24시간 60분 60초 lTotal += (nDay - 1) * 24 * 60 * 60; // 24 hours * 60 min * 60 sec
return lTotal; return lTotal;
} }
+1 -1
View File
@@ -16,7 +16,7 @@ class CTimeDate
public: public:
union { union {
struct { struct {
// Bit Field는 앞쪽에 지정된 것이 LowBit이다. // Bit Fields declared first are at the low-bit end.
DWORD m_xDay: 5; // 2^0, 2^5-1 DWORD m_xDay: 5; // 2^0, 2^5-1
DWORD m_xMonth: 4; // 2^5, 2^4-1 DWORD m_xMonth: 4; // 2^5, 2^4-1
DWORD m_xYear: TIMEDATE_YEAR_BITS; // from 1900-2155 // 2^9, 2^8-1 DWORD m_xYear: TIMEDATE_YEAR_BITS; // from 1900-2155 // 2^9, 2^8-1
+2 -2
View File
@@ -1375,7 +1375,7 @@ void CSockAddr::SetTarget(const char* pcszAddr)
{ {
if (pcszAddr) { if (pcszAddr) {
sin_addr.s_addr = inet_addr(pcszAddr); sin_addr.s_addr = inet_addr(pcszAddr);
if (sin_addr.s_addr == INADDR_ANY) { // 0.0.0.0이기 때문에 HOST/Network Addr무관 if (sin_addr.s_addr == INADDR_ANY) { // 0.0.0.0, HOST/Network Addr irrelevant
hostent* pHN = gethostbyname(pcszAddr); hostent* pHN = gethostbyname(pcszAddr);
if (pHN) { if (pHN) {
sin_addr.s_addr = *(u_long*)pHN->h_addr; sin_addr.s_addr = *(u_long*)pHN->h_addr;
@@ -3667,7 +3667,7 @@ CSOCListen* CSOCManager::DoListen(int nPort, PFN_CreateSOCClient pfnCSC, DWORD d
pSOCListen = new CSOCListen(nPort); pSOCListen = new CSOCListen(nPort);
pSOCListen->SetCSCParam(pfnCSC, dwCSCParam1, dwCSCParam2); pSOCListen->SetCSCParam(pfnCSC, dwCSCParam1, dwCSCParam2);
if (!DoListen(pSOCListen, nPort)) { if (!DoListen(pSOCListen, nPort)) {
// 같은 포트를 2번 Listen 하는 경우?... // Case of Listen on the same port twice?...
pSOCListen = NULL; pSOCListen = NULL;
} }
+25 -25
View File
@@ -41,7 +41,7 @@ extern char SERVERID[];
#endif // !MAX_PACKET #endif // !MAX_PACKET
#ifndef MAX_FTPBUF #ifndef MAX_FTPBUF
#define MAX_FTPBUF 1024 #define MAX_FTPBUF 1024
// MAX_FTPBUF는 MAX_PACKET보다 반드시 작아야 한다? // MAX_FTPBUF must be smaller than MAX_PACKET?
// 9+size==sizeof(bCmd) + sizeof(FTID) + sizeof(size) + size // 9+size==sizeof(bCmd) + sizeof(FTID) + sizeof(size) + size
#endif // !MAX_FTPBUF #endif // !MAX_FTPBUF
@@ -251,7 +251,7 @@ private:
#define ESTRF_USER_START 100 #define ESTRF_USER_START 100
#define ESTRF_PASSWORDCHANGED 110 // 로그인하고 있는 동안에 패스워드가 바뀜 #define ESTRF_PASSWORDCHANGED 110 // Password changed while logged in
void Randomize(); void Randomize();
@@ -268,7 +268,7 @@ union UPacketValue
class CDAPacket : public SOCBase_Class class CDAPacket : public SOCBase_Class
{ {
// Packet의 앞 부분을 처리하고 난 뒷 부분의 가변 파라미터... // Variable parameters in the tail portion after processing the packet header...
public: public:
BYTE m_bCmd; BYTE m_bCmd;
BYTE m_bReserved; BYTE m_bReserved;
@@ -361,8 +361,8 @@ public:
#define C_ROOM_MAKE 232 #define C_ROOM_MAKE 232
// s - name, s - password // s - name, s - password
#define C_ROOM_JOIN 233 #define C_ROOM_JOIN 233
// d - number(Room을 떠나는 것은 -1), s - password // d - number (leaving a Room = -1), s - password
#define S_ROOM_JOIN 233 // C_ROOM_MAKE/C_ROOM_JOIN의 결과... #define S_ROOM_JOIN 233 // Result of C_ROOM_MAKE/C_ROOM_JOIN...
// b - code(CSCODE_OK or error code), d - number // b - code(CSCODE_OK or error code), d - number
#define C_ROOM_UPDS 234 // CSCODE_... + @ #define C_ROOM_UPDS 234 // CSCODE_... + @
@@ -384,13 +384,13 @@ public:
#define S_FTP 254 //... see ftp.txt #define S_FTP 254 //... see ftp.txt
#define X_KEEPALIVE 255 // no parameters, should be ignored... #define X_KEEPALIVE 255 // no parameters, should be ignored...
#define TX_SYSTEM 0 // 시스템 메시지... #define TX_SYSTEM 0 // System message...
#define TX_NORMAL 1 // 일반 채팅 텍스트 #define TX_NORMAL 1 // Regular chat text
#define TX_WARNING 2 // 경고 #define TX_WARNING 2 // Warning
#define TX_ERROR 3 // 오류 #define TX_ERROR 3 // Error
#define TX_FATAL 4 // 치명적인 오류 #define TX_FATAL 4 // Fatal error
#define TX_INFO 5 // 사용자 정보 등의 Information Result... #define TX_INFO 5 // Information result (e.g. user info)...
#define TX_SAY 6 // 귓속말 #define TX_SAY 6 // Whisper
#define TX_LOCAL 7 // local echo.... #define TX_LOCAL 7 // local echo....
#define TX_UNKNOWN 0xffff // unknown... #define TX_UNKNOWN 0xffff // unknown...
@@ -493,7 +493,7 @@ CPacket
protected: protected:
CSOC* m_pSOC; CSOC* m_pSOC;
private: private:
// 이 안의 블럭은 반드시 연속해야 한다... // The block within must be contiguous...
WORD m_wLen; WORD m_wLen;
BYTE m_ba[MAX_PACKET]; BYTE m_ba[MAX_PACKET];
// //
@@ -587,7 +587,7 @@ end of variable PACKET_MAP definitions...
class CFileTransfer : public TDBLNK(CFileTransfer*) class CFileTransfer : public TDBLNK(CFileTransfer*)
{ {
public: public:
// 서버로 부터 받은 정보... - 혹은 클라이언트에게 전해줄 정보... // Information received from server... - or information to relay to client...
BOOL m_bClientSite; BOOL m_bClientSite;
DWORD m_dwFTID; DWORD m_dwFTID;
DWORD m_dwGUARD; DWORD m_dwGUARD;
@@ -680,18 +680,18 @@ protected:
// time out to Drop... // time out to Drop...
DWORD m_dwKARcvTimeOut; DWORD m_dwKARcvTimeOut;
#ifdef WIN32 #ifdef WIN32
// 보통 Login과정에 쓰이는 윈도우 핸들 // Window handle typically used during Login process
HWND m_hWndOwner; HWND m_hWndOwner;
#endif // WIN32 #endif // WIN32
// 보통 글로벌 변수로 쓰이는 소켓포인터에 대한 자동 NULL Assign을 위하여 // For auto NULL assignment of socket pointer typically used as a global variable
PSOC* m_ppSOC; PSOC* m_ppSOC;
// 소켓을 구분하기 위하여 사용자 프로그램에서 쓰이는 아이디 // ID used in user program to identify a socket
// 주로 서버의 경우에는 클라이언트가 접속할 때마다 고유 아이디를 부여하여 사용 // Mainly for servers: assigns a unique ID each time a client connects
// 하나의 Client가 다수의 서버에 접속할 때(주로 Star형) 각각의 접속을 구분할 때 사용 // Used to distinguish each connection when a client connects to multiple servers (Star topology)
// 클라이언트가 하나의 서버에만 접속하는 경우 클라이언트가 서버에 접속 중인지 혹은 접속했는지를 판단할 때 // When a client connects to only one server: used to check if client is connecting or already connected
// CSOCManager::FindSOC(CSOC_SERVER_ID==default)->GetConnectionState()를 사용. // Use CSOCManager::FindSOC(CSOC_SERVER_ID==default)->GetConnectionState().
// limits.h를 include해야함. // Must include limits.h.
// CSOC생성시의 기본값: CSOCServer == CSOC_SERVER_ID(=INT_MIN), CSOCClient == CSOC_CLIENT_ID(=0), CSOCListen == CSOC_LISTEN_ID(=-1) // Default values at CSOC creation: CSOCServer==CSOC_SERVER_ID(INT_MIN), CSOCClient==CSOC_CLIENT_ID(0), CSOCListen==CSOC_LISTEN_ID(-1)
union { union {
int m_nID; int m_nID;
UINT m_uID; UINT m_uID;
@@ -725,8 +725,8 @@ protected:
DWORD m_xGracefulRemote: 1; DWORD m_xGracefulRemote: 1;
DWORD m_xAbortyLocal: 1; DWORD m_xAbortyLocal: 1;
DWORD m_xAbortyRemote: 1; DWORD m_xAbortyRemote: 1;
DWORD m_xLoginStarted: 1; // 사용자가 직접 값을 Setting해야 한다. DWORD m_xLoginStarted: 1; // Must be set directly by the caller.
DWORD m_xLoginOK: 1; // 사용자가 직접 값을 Setting해야 한다. DWORD m_xLoginOK: 1; // Must be set directly by the caller.
} m_DW; } m_DW;
DWORD m_dwVarFlags; DWORD m_dwVarFlags;
}; };
+1 -1
View File
@@ -6,7 +6,7 @@ inline BOOL AssertDialog(const char* pcszExpr, const char* pcszfile, int nLine)
{ {
char szBuf[MAX_PATH * 2]; char szBuf[MAX_PATH * 2];
sprintf(szBuf, "\"%s\" 파일의 %d줄에서 ASSERT!!!\n\n디버깅을 하시겠습니까?", pcszfile, nLine); sprintf(szBuf, "ASSERT!!! in \"%s\" at line %d\n\nDo you want to debug?", pcszfile, nLine);
#ifdef WIN32 #ifdef WIN32
return ::MessageBox(NULL, szBuf, pcszExpr, MB_YESNO) == IDYES; return ::MessageBox(NULL, szBuf, pcszExpr, MB_YESNO) == IDYES;
+1 -1
View File
@@ -6,7 +6,7 @@ inline BOOL AssertDialog(const char* pcszExpr, const char* pcszfile, int nLine)
{ {
char szBuf[MAX_PATH * 2]; char szBuf[MAX_PATH * 2];
sprintf(szBuf, "\"%s\" 파일의 %d줄에서 ASSERT!!!\n\n디버깅을 하시겠습니까?", pcszfile, nLine); sprintf(szBuf, "ASSERT!!! in \"%s\" at line %d\n\nDo you want to debug?", pcszfile, nLine);
#ifdef WIN32 #ifdef WIN32
return ::MessageBox(NULL, szBuf, pcszExpr, MB_YESNO) == IDYES; return ::MessageBox(NULL, szBuf, pcszExpr, MB_YESNO) == IDYES;
@@ -76,18 +76,18 @@ typedef struct
typedef struct typedef struct
{ {
//· code for changing sort order or priority levels //· code for changing sort order or priority levels
//· new sort order //· new sort order
//· new priority level //· new priority level
//· priority set to remove //· priority set to remove
//· priority set to add //· priority set to add
} AdjustCommandData; } AdjustCommandData;
typedef struct typedef struct
{ {
//· command area from which to remove command //· command area from which to remove command
//· command id of command to remove //· command id of command to remove
//· other info to pick what command to remove //· other info to pick what command to remove
} RemoveCommandData; } RemoveCommandData;
union CommandUnion union CommandUnion
@@ -104,8 +104,8 @@ void CRIOMAIN::UpdateJoystickY (DIJOYSTATE &js)
lJ = JoystickY_Center - g_JoystickY; lJ = JoystickY_Center - g_JoystickY;
// 고감도 // High sensitivity
// Dead Zone 에서 벗어난 시점을 0으로 계산한다 // Calculate from the moment of exiting the Dead Zone as 0
if (lJ > 0) { if (lJ > 0) {
lJ -= DEADZONE_JOYSTICK; lJ -= DEADZONE_JOYSTICK;
} else if (lJ < 0) { } else if (lJ < 0) {
+87 -87
View File
@@ -19,16 +19,16 @@
#include <MLR\MLRTexture.hpp> #include <MLR\MLRTexture.hpp>
#include "MWObject.hpp" #include "MWObject.hpp"
//상훈짱 begin //sanghoon begin
#include <windows.h> #include <windows.h>
#include <ddraw.h> #include <ddraw.h>
#include <d3d.h> #include <d3d.h>
#include <GameOS\render.hpp> #include <GameOS\render.hpp>
#define RADAR_SCALE 2.8f #define RADAR_SCALE 2.8f
//상훈짱 end //sanghoon end
int m_gCool; // int m_gCool; // hyun: coolant
namespace MW4AI namespace MW4AI
{ {
@@ -121,22 +121,22 @@ GUIRadarManager::GUIRadarManager() :
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// //
//상훈 //sanghoon
extern bool sh_game_started; extern bool sh_game_started;
GUIRadarManager::~GUIRadarManager() GUIRadarManager::~GUIRadarManager()
{ {
//상훈 앞 //sanghoon begin
sh_game_started=false; sh_game_started=false;
//상훈 뒤 //sanghoon end
delete m_RangeText; delete m_RangeText;
} }
void DrawMapBoundary() void DrawMapBoundary()
{ {
//DrawImplementation에서 추출해왔음.. //Extracted from DrawImplementation..
//미션이 시작한 후 한번만 그리게된다.(맵상의 작전 영역은 변하지 않으므로..) //Drawn only once after mission start (operation area on map does not change..)
Scalar multx,multz; Scalar multx,multz;
multx = 200.0f/(MW4AI::MaxX - MW4AI::MinX); multx = 200.0f/(MW4AI::MaxX - MW4AI::MinX);
@@ -148,7 +148,7 @@ void DrawMapBoundary()
int numpts = ptlist.GetLength (); int numpts = ptlist.GetLength ();
HDC hdcBackImage; HDC hdcBackImage;
radar_device.pDDSBackground->GetDC( &hdcBackImage);//백버퍼 준비용.. 이미지.. radar_device.pDDSBackground->GetDC( &hdcBackImage);//Image for back buffer preparation..
HPEN hpenold=(HPEN)SelectObject(hdcBackImage,CreatePen(PS_SOLID,1,RGB(255,0,0))); HPEN hpenold=(HPEN)SelectObject(hdcBackImage,CreatePen(PS_SOLID,1,RGB(255,0,0)));
for (int i=0;i<numpts;i++){ for (int i=0;i<numpts;i++){
@@ -184,7 +184,7 @@ void DrawMapBoundary()
void GUIRadarManager::Reset (void) void GUIRadarManager::Reset (void)
{ {
//상훈 //sanghoon
MWApplication *m_App; MWApplication *m_App;
m_App = MWApplication::GetInstance (); m_App = MWApplication::GetInstance ();
@@ -192,19 +192,19 @@ void GUIRadarManager::Reset (void)
bool networking = MWApplication::GetInstance()->networkingFlag; bool networking = MWApplication::GetInstance()->networkingFlag;
if (!networking) if (!networking)
m_RadarMode = 0; m_RadarMode = 0;
//상훈 //sanghoon
if(hsh_initialized) if(hsh_initialized)
DrawMapBoundary(); DrawMapBoundary();
} }
//상훈 앞 //sanghoon begin
/* /*
char * radar_text[]={ char * radar_text[]={
"JUMP\nJET","SHUT\nDOWN","OVER\nRIDE","FLUSH","CROUCH","", "JUMP\nJET","SHUT\nDOWN","OVER\nRIDE","FLUSH","CROUCH","",
"RANGE","RADAR\nMODE","LIGHT\nAMP","SEARCH\nLIGHT","AUTO\nCENTER" "RANGE","RADAR\nMODE","LIGHT\nAMP","SEARCH\nLIGHT","AUTO\nCENTER"
}; };
*/ */
//상훈 뒤 //sanghoon end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// //
@@ -246,7 +246,7 @@ if(!hsh_initialized){
Check_Pointer(vehicle); Check_Pointer(vehicle);
Check_Pointer(vehicle->GetSensor()); Check_Pointer(vehicle->GetSensor());
/* /*
//상훈 앞 맵 //sanghoon begin: map
Scalar multx,multz; Scalar multx,multz;
multx = 200.0f/(MW4AI::MaxX - MW4AI::MinX); multx = 200.0f/(MW4AI::MaxX - MW4AI::MinX);
@@ -655,7 +655,7 @@ if(!hsh_initialized){
int i; int i;
// Secondary Maps // Secondary Maps
//맵과 맵 경계선을 그린다. (게임중에 변하지 않으므로 한번만 그린다.) //Draw map and boundary. (Drawn once since it does not change during game.)
if(!radar_device.MapDrawn){ if(!radar_device.MapDrawn){
extern char AssetsDirectory1[MAX_PATH]; extern char AssetsDirectory1[MAX_PATH];
@@ -724,8 +724,8 @@ if(!hsh_initialized){
Check_Pointer(vehicle->GetSensor()); Check_Pointer(vehicle->GetSensor());
///////////////////// MAP 시작 ////////////////////// ///////////////////// MAP BEGIN //////////////////////
/////Torso Sweep그리기.. 시작 /////Torso Sweep draw.. begin
Scalar multx,multz; Scalar multx,multz;
multx = 200.0f/(MW4AI::MaxX - MW4AI::MinX); multx = 200.0f/(MW4AI::MaxX - MW4AI::MinX);
@@ -759,16 +759,16 @@ if(!hsh_initialized){
radar_device.DrawQuad(-pos.x+240-1,-pos.y+508-1,-pos.x+240+2,-pos.y+508+2,0xFF0000C0); radar_device.DrawQuad(-pos.x+240-1,-pos.y+508-1,-pos.x+240+2,-pos.y+508+2,0xFF0000C0);
} }
/////Torso Sweep그리기.. 끝 /////Torso Sweep draw.. end
//맵상에 오브젝트들 그리기. //Draw objects on map.
{ {
radar_device.pD3DDevice->SetTexture(0,radar_device.pDDSTexture); radar_device.pD3DDevice->SetTexture(0,radar_device.pDDSTexture);
MWObject *hsh_current_object; MWObject *hsh_current_object;
for(i=0;i<vehicle->GetSensor()->numberOfContacts;i++){ for(i=0;i<vehicle->GetSensor()->numberOfContacts;i++){
hsh_current_object=vehicle->GetSensor()->GetSensorData()[i]->object.GetCurrent(); hsh_current_object=vehicle->GetSensor()->GetSensorData()[i]->object.GetCurrent();
if (hsh_current_object != NULL){ if (hsh_current_object != NULL){
bool draw_contact = true;//해당 오브젝트를 그릴것인지..에대한 플래그.. bool draw_contact = true;//Flag: whether to draw this object..
// MSL 5.02 Bot on Map // MSL 5.02 Bot on Map
if (hsh_current_object->GetAI()==NULL && (MWApplication::GetInstance()->networkingFlag == false))draw_contact = false; if (hsh_current_object->GetAI()==NULL && (MWApplication::GetInstance()->networkingFlag == false))draw_contact = false;
@@ -833,10 +833,10 @@ if(!hsh_initialized){
} }
} }
///////////////////// MAP ////////////////////// ///////////////////// MAP END //////////////////////
///////////////////// RADAR 시작 ////////////////////// ///////////////////// RADAR BEGIN //////////////////////
radar_device.pD3DDevice->SetTexture(0,0); radar_device.pD3DDevice->SetTexture(0,0);
@@ -855,7 +855,7 @@ if(!hsh_initialized){
world_to_vehicle.Invert(vehicle_to_world); world_to_vehicle.Invert(vehicle_to_world);
// 경계선 그리기.. // Draw boundary line..
Mission *miss; Mission *miss;
miss = Mission::GetInstance (); miss = Mission::GetInstance ();
@@ -900,7 +900,7 @@ if(!hsh_initialized){
} }
//Torso View그리기.. //Draw Torso View..
//HSH_RenderRadarTorsoView(-m_TorsoTwist); //HSH_RenderRadarTorsoView(-m_TorsoTwist);
radar_device.pD3DDevice->SetTexture(0,radar_device.pDDSTexture); radar_device.pD3DDevice->SetTexture(0,radar_device.pDDSTexture);
radar_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, TRUE ); radar_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, TRUE );
@@ -914,7 +914,7 @@ if(!hsh_initialized){
radar_device.pD3DDevice->SetTextureStageState(0,D3DTSS_MAGFILTER, D3DTFG_POINT ); radar_device.pD3DDevice->SetTextureStageState(0,D3DTSS_MAGFILTER, D3DTFG_POINT );
radar_device.pD3DDevice->SetTextureStageState(0,D3DTSS_MINFILTER, D3DTFG_POINT ); radar_device.pD3DDevice->SetTextureStageState(0,D3DTSS_MINFILTER, D3DTFG_POINT );
//Radar범위 그리기. //Draw Radar range.
char text[10]; char text[10];
if (radarRange != radarRangeOrg) if (radarRange != radarRangeOrg)
sprintf (text,"NoLmt"); sprintf (text,"NoLmt");
@@ -923,11 +923,11 @@ if(!hsh_initialized){
//HSH_DrawRadarNumber(345,386,text,1); //HSH_DrawRadarNumber(345,386,text,1);
radar_device.pFont[1].DrawText(80,350,0xFFFFFFFF,text,TEXTALIGN_ORG); radar_device.pFont[1].DrawText(80,350,0xFFFFFFFF,text,TEXTALIGN_ORG);
//ActiveMode그리기.. //Draw ActiveMode..
char* modechar=(vehicle->GetSensor ()->GetSensorMode () == Sensor::ActiveMode)?"Active":"Passive"; char* modechar=(vehicle->GetSensor ()->GetSensorMode () == Sensor::ActiveMode)?"Active":"Passive";
radar_device.pFont[1].DrawText(395,350,0xFFFFFF,modechar,TEXTALIGN_ORG); radar_device.pFont[1].DrawText(395,350,0xFFFFFF,modechar,TEXTALIGN_ORG);
//빌딩 그리기 //Draw buildings.
MWObject *current_object; MWObject *current_object;
for(i=0;i<vehicle->GetSensor()->numberOfBuildingContacts;i++) for(i=0;i<vehicle->GetSensor()->numberOfBuildingContacts;i++)
{ {
@@ -993,7 +993,7 @@ if(!hsh_initialized){
} }
} }
//Object그리기. //Draw Objects.
for(i=0;i<vehicle->GetSensor()->numberOfContacts;i++){ for(i=0;i<vehicle->GetSensor()->numberOfContacts;i++){
current_object=vehicle->GetSensor()->GetSensorData()[i]->object.GetCurrent(); current_object=vehicle->GetSensor()->GetSensorData()[i]->object.GetCurrent();
if (current_object != NULL){ if (current_object != NULL){
@@ -1081,7 +1081,7 @@ if(!hsh_initialized){
} }
} }
//Navigation Point그리기. //Draw Navigation Points.
j=0; j=0;
ChainIteratorOf<NavPoint *> iter (NavPoint::s_RevealedNavPoints); ChainIteratorOf<NavPoint *> iter (NavPoint::s_RevealedNavPoints);
NavPoint *nav; NavPoint *nav;
@@ -1136,7 +1136,7 @@ if(!hsh_initialized){
radar_device.DrawTexture(posx2,posy2,0xFFFFFFFF,(60+id*12),0,(60+id*12)+12,12); radar_device.DrawTexture(posx2,posy2,0xFFFFFFFF,(60+id*12),0,(60+id*12)+12,12);
} }
///////////////////// RADAR ////////////////////// ///////////////////// RADAR END //////////////////////
} }
} }
@@ -1586,23 +1586,23 @@ if(!hsh_initialized){
DWORD color = MakeColor (64,64,64,255); DWORD color = MakeColor (64,64,64,255);
//막대 게이지의 백그라운드.. 기준.. //Bar gauge background baseline..
m_Textures[1]->Draw (loc,size,color,HUDTexture::NO_FLIP,true); m_Textures[1]->Draw (loc,size,color,HUDTexture::NO_FLIP,true);
color = MakeColor (255,255,255,255); color = MakeColor (255,255,255,255);
loc.y += size.y - targetyval; loc.y += size.y - targetyval;
size.y = (Scalar) targetyval; size.y = (Scalar) targetyval;
m_Textures[0]->TopLeft (m_Textures[0]->Left (),(Scalar) (m_BaseBottom - targetyval)); m_Textures[0]->TopLeft (m_Textures[0]->Left (),(Scalar) (m_BaseBottom - targetyval));
m_Textures[0]->BlendMode (gos_BlendDecal); m_Textures[0]->BlendMode (gos_BlendDecal);
//삼색 막대 게이지 그리기..(clipping size를 조절함으로써.. 값을 조절하는 효과를 나타낸다.) //Draw tri-color bar gauge.. (value adjusted by modifying clip size..)
m_Textures[0]->Draw (loc,size,color,HUDTexture::NO_FLIP); m_Textures[0]->Draw (loc,size,color,HUDTexture::NO_FLIP);
color = MakeColor (0,125,0,250); color = MakeColor (0,125,0,250);
size = Size (); size = Size ();
loc = Location (); loc = Location ();
//막대 게이지의 프레임. //Bar gauge frame.
DrawFrame ((int) (loc.x-2),(int) (loc.y-2),(int) (loc.x+size.x),(int) (loc.y+size.y),color); DrawFrame ((int) (loc.x-2),(int) (loc.y-2),(int) (loc.x+size.x),(int) (loc.y+size.y),color);
//온도 텍스트의 프레임.. //Temperature text frame..
DrawFrame (261,542,303,560,color); DrawFrame (261,542,303,560,color);
m_HeatText->TopLeft (261,542); m_HeatText->TopLeft (261,542);
m_HeatText->BottomRight (303,560); m_HeatText->BottomRight (303,560);
@@ -1611,23 +1611,23 @@ if(!hsh_initialized){
DWORD textw,texth; DWORD textw,texth;
m_HeatText->DrawSize (textw,texth); m_HeatText->DrawSize (textw,texth);
//온도를 정해진 색으로 출력한다.(게이지는 텍스쳐이므로 색을 지정할 필요가 없다.) //Display temperature in its designated color. (Gauge is a texture, no color spec needed.)
m_HeatText->Draw (Point3D (282.0f - (textw/2.0f),551.0f - (texth/2.0f),0.9f)); m_HeatText->Draw (Point3D (282.0f - (textw/2.0f),551.0f - (texth/2.0f),0.9f));
DrawLine (304,549,310,549,color); DrawLine (304,549,310,549,color);
DrawLine (309,(int) heaty,309,549,color); DrawLine (309,(int) heaty,309,549,color);
DrawLine ((int) (loc.x-2),(int) (heaty),309,(int) (heaty),color); DrawLine ((int) (loc.x-2),(int) (heaty),309,(int) (heaty),color);
}else if(sh_step==1){ }else if(sh_step==1){
//radar manager는 shutdown 시에 호출되지 않으므로.. 여기서 추가적으로 state를 업데이트 시켜준다. //radar manager is not called on shutdown.. state updated additionally here.
MechWarrior4::VehicleInterface* p = MechWarrior4::VehicleInterface::GetInstance(); MechWarrior4::VehicleInterface* p = MechWarrior4::VehicleInterface::GetInstance();
p->GetGUIRadarStates(radar_device.recent_state); p->GetGUIRadarStates(radar_device.recent_state);
int targetyval = (int) ((m_Heat * 23)/100.0f); int targetyval = (int) ((m_Heat * 23)/100.0f);
Clamp (targetyval,0,22); Clamp (targetyval,0,22);
//heat의 범위는??? 0~100??? //What is the range of heat??? 0~100???
//target은 그리지 않고 현재 온도만 그린다. //Draw current temperature only, without the target.
float sizey=256; float sizey=256;
//삼색 막대 게이지 그리기..(clipping size를 조절함으로써.. 값을 조절하는 효과를 나타낸다.) //Draw tri-color bar gauge.. (value adjusted by modifying clip size..)
{ {
radar_device.pD3DDevice->SetTexture(0,radar_device.pDDSTexture); radar_device.pD3DDevice->SetTexture(0,radar_device.pDDSTexture);
//backbground image //backbground image
@@ -1642,7 +1642,7 @@ if(!hsh_initialized){
radar_device.pD3DDevice->SetTexture(0,0); radar_device.pD3DDevice->SetTexture(0,0);
radar_device.DrawFrame(54-1,630-188-3,80+1,630+3,0xFFFFFFFF); radar_device.DrawFrame(54-1,630-188-3,80+1,630+3,0xFFFFFFFF);
} }
//텍스트 //Text
{ {
char buf[16]; char buf[16];
// MSL 5.02 Heat Scale Header // MSL 5.02 Heat Scale Header
@@ -1664,7 +1664,7 @@ HUDJump::HUDJump ()
m_TargetJump = -1.0f; m_TargetJump = -1.0f;
Location (Point3D (467,539,0.9f)); Location (Point3D (467,539,0.9f));
Size (Point3D (7,49,0.9f)); Size (Point3D (7,49,0.9f));
//j라고 하는 작은 글자... <==실제로는 잘 보이지 않는다. //Small 'j' character... <==actually barely visible.
AddTexture ("hud\\hud4",0,98,200,106,207); AddTexture ("hud\\hud4",0,98,200,106,207);
} }
@@ -1703,14 +1703,14 @@ if(!hsh_initialized){
size = Size (); size = Size ();
loc = Location (); loc = Location ();
DWORD color = MakeColor (255,255,255,250); // 원래 255,255,255,250이었음 DWORD color = MakeColor (255,255,255,250); // was originally 255,255,255,250
//j라고 하는 작은 글자... //Small 'j' character...
m_Textures[0]->Draw (Point3D (loc.x+2,loc.y - m_Textures[0]->Size().y-2.0f,0.9f),m_Textures[0]->Size (),color); m_Textures[0]->Draw (Point3D (loc.x+2,loc.y - m_Textures[0]->Size().y-2.0f,0.9f),m_Textures[0]->Size (),color);
int targetyval = (int) (m_Jump * size.y); int targetyval = (int) (m_Jump * size.y);
color = MakeColor (0,125,0,250); color = MakeColor (0,125,0,250);
//녹색 게이지.. //Green gauge..
my_DrawRect ((int) (loc.x),(int) (loc.y+size.y-targetyval),(int) (loc.x+size.x),(int) (loc.y+size.y),color); my_DrawRect ((int) (loc.x),(int) (loc.y+size.y-targetyval),(int) (loc.x+size.x),(int) (loc.y+size.y),color);
if ((m_Jump != 0) && (m_Alpha != 0)) if ((m_Jump != 0) && (m_Alpha != 0))
{ {
@@ -1718,11 +1718,11 @@ if(!hsh_initialized){
my_DrawRect ((int) (loc.x),(int) (loc.y+size.y-targetyval),(int) (loc.x+size.x),(int) (loc.y+size.y),color); my_DrawRect ((int) (loc.x),(int) (loc.y+size.y-targetyval),(int) (loc.x+size.x),(int) (loc.y+size.y),color);
} }
//게이지 맨위의 흰선.. //White line at the top of gauge..
color = MakeColor (255,255,255,200); color = MakeColor (255,255,255,200);
DrawLine ((int) (loc.x),(int) (loc.y+size.y-targetyval),(int) (loc.x+size.x),(int) (loc.y+size.y-targetyval),color); DrawLine ((int) (loc.x),(int) (loc.y+size.y-targetyval),(int) (loc.x+size.x),(int) (loc.y+size.y-targetyval),color);
//테두리 그리기.. //Draw border..
color = MakeColor (0,125,0,250); color = MakeColor (0,125,0,250);
DrawFrame ((int) loc.x,(int) (loc.y),(int) (loc.x+size.x),(int) (loc.y+size.y),color); DrawFrame ((int) loc.x,(int) (loc.y),(int) (loc.x+size.x),(int) (loc.y+size.y),color);
}else if(sh_step==1){ }else if(sh_step==1){
@@ -1736,7 +1736,7 @@ if(!hsh_initialized){
} }
} }
//전반적으로 jumpjet과 거의 같다. //Overall almost identical to jumpjet.
HUDCoolant::HUDCoolant () HUDCoolant::HUDCoolant ()
{ {
m_Alpha = 255; m_Alpha = 255;
@@ -1745,7 +1745,7 @@ HUDCoolant::HUDCoolant ()
m_Cool = 100; m_Cool = 100;
Location (Point3D (332,539,0.9f)); Location (Point3D (332,539,0.9f));
Size (Point3D (7,49,0.9f)); Size (Point3D (7,49,0.9f));
//C라고 하는 작은 글자.. //Small 'C' character..
AddTexture ("hud\\hud4",0,88,200,96,207); AddTexture ("hud\\hud4",0,88,200,96,207);
} }
@@ -1782,7 +1782,7 @@ if(!hsh_initialized){
loc = Location (); loc = Location ();
DWORD color = MakeColor (0,125,0,250); DWORD color = MakeColor (0,125,0,250);
//C라고 하는 작은 글자.. //Small 'C' character..
m_Textures[0]->Draw (Point3D (loc.x+2,loc.y - m_Textures[0]->Size().y-2.0f,0.9f),m_Textures[0]->Size (),color); m_Textures[0]->Draw (Point3D (loc.x+2,loc.y - m_Textures[0]->Size().y-2.0f,0.9f),m_Textures[0]->Size (),color);
m_gCool = m_Cool; m_gCool = m_Cool;
@@ -1790,19 +1790,19 @@ if(!hsh_initialized){
Clamp (targetyval,0,(int) size.y); Clamp (targetyval,0,(int) size.y);
color = MakeColor (0,100,255,250); color = MakeColor (0,100,255,250);
//게이지 그리기.. //Draw gauge..
my_DrawRect ((int) (loc.x),(int) (loc.y+size.y-targetyval),(int) (loc.x+size.x),(int) (loc.y+size.y),color); my_DrawRect ((int) (loc.x),(int) (loc.y+size.y-targetyval),(int) (loc.x+size.x),(int) (loc.y+size.y),color);
if ((m_Cool != 0) && (m_Alpha != 0)) if ((m_Cool != 0) && (m_Alpha != 0))
{ {
//flush했을때.. 흰색으로 깜박이는 효과 그리기... //When flushed.. draw white blinking effect...
color = MakeColor (255,255,255,m_Alpha); color = MakeColor (255,255,255,m_Alpha);
my_DrawRect ((int) (loc.x),(int) (loc.y+size.y-targetyval),(int) (loc.x+size.x),(int) (loc.y+size.y),color); my_DrawRect ((int) (loc.x),(int) (loc.y+size.y-targetyval),(int) (loc.x+size.x),(int) (loc.y+size.y),color);
} }
color = MakeColor (255,255,255,200); color = MakeColor (255,255,255,200);
//게이지 위쪽의 흰선.. //White line above gauge..
DrawLine ((int) (loc.x),(int) (loc.y+size.y-targetyval),(int) (loc.x+size.x),(int) (loc.y+size.y-targetyval),color); DrawLine ((int) (loc.x),(int) (loc.y+size.y-targetyval),(int) (loc.x+size.x),(int) (loc.y+size.y-targetyval),color);
//게이지를 둘러싸는 프레임.. //Frame surrounding gauge..
color = MakeColor (0,125,0,250); color = MakeColor (0,125,0,250);
DrawFrame ((int) loc.x,(int) (loc.y),(int) (loc.x+size.x),(int) (loc.y+size.y),color); DrawFrame ((int) loc.x,(int) (loc.y),(int) (loc.x+size.x),(int) (loc.y+size.y),color);
}else if(sh_step==1){ }else if(sh_step==1){
@@ -1817,7 +1817,7 @@ if(!hsh_initialized){
} }
//속도를 나타내는... HUD Component //HUD Component displaying speed...
namespace NHUDSPEED namespace NHUDSPEED
{ {
// const int for_speed_box[12] = {0,4,8,12,16,20,24,28,32,36,40,44}; // const int for_speed_box[12] = {0,4,8,12,16,20,24,28,32,36,40,44};
@@ -1928,25 +1928,25 @@ if(!hsh_initialized){
speedy = loc.y + 56 - fred; speedy = loc.y + 56 - fred;
DWORD color = MakeColor (255,255,255,255); DWORD color = MakeColor (255,255,255,255);
//게이지 백그라운드 눈금.. //Gauge background tick marks..
m_Textures[1]->Draw (loc,size,color,HUDTexture::NO_FLIP,true); m_Textures[1]->Draw (loc,size,color,HUDTexture::NO_FLIP,true);
loc.y += top; loc.y += top;
size.y = (Scalar) bottom - top; size.y = (Scalar) bottom - top;
//삼색 막대 게이지 그리기..(clipping size를 조절함으로써.. 값을 조절하는 효과를 나타낸다.) //Draw tri-color bar gauge.. (value adjusted by modifying clip size..)
m_Textures[0]->TopLeft (m_Textures[0]->Left (),(Scalar) (top)); m_Textures[0]->TopLeft (m_Textures[0]->Left (),(Scalar) (top));
m_Textures[0]->BottomRight (m_Textures[0]->Right (),(Scalar) (bottom)); m_Textures[0]->BottomRight (m_Textures[0]->Right (),(Scalar) (bottom));
m_Textures[0]->BlendMode (gos_BlendDecal); m_Textures[0]->BlendMode (gos_BlendDecal);
//colored 게이지..녹색으로 되어 있다. //Colored gauge.. currently green.
m_Textures[0]->Draw (loc,size,color,HUDTexture::NO_FLIP,true); m_Textures[0]->Draw (loc,size,color,HUDTexture::NO_FLIP,true);
color = MakeColor (0,125,0,250); color = MakeColor (0,125,0,250);
size = Size (); size = Size ();
loc = Location (); loc = Location ();
//게이지를 둘러싸는.. 프레임 그리기.. //Draw frame surrounding gauge..
DrawFrame ((int) (loc.x-2),(int) (loc.y-2),(int) (loc.x+size.x),(int) (loc.y+size.y),color); DrawFrame ((int) (loc.x-2),(int) (loc.y-2),(int) (loc.x+size.x),(int) (loc.y+size.y),color);
//속도 표시하는 프레임... //Speed display frame...
DrawFrame (506,537,548,555,color); DrawFrame (506,537,548,555,color);
m_SpeedText->TopLeft (506,537); m_SpeedText->TopLeft (506,537);
m_SpeedText->BottomRight (548,555); m_SpeedText->BottomRight (548,555);
@@ -1958,15 +1958,15 @@ if(!hsh_initialized){
DWORD textw,texth; DWORD textw,texth;
m_SpeedText->DrawSize (textw,texth); m_SpeedText->DrawSize (textw,texth);
//속도 표시하는 텍스트.. 앞/뒤 방향에 따라서 색이 녹식/파란색.....으로 된다. //Speed text.. color is green/blue depending on forward/backward direction.....
m_SpeedText->Draw (Point3D (527.0f - (textw/2.0f),546.0f - (texth/2.0f),0.9f)); m_SpeedText->Draw (Point3D (527.0f - (textw/2.0f),546.0f - (texth/2.0f),0.9f));
//속도프레임-게이지 프레임 연결하는 3 segment라인.. //3-segment line connecting speed frame to gauge frame..
DrawLine (498,549,506,549,color); DrawLine (498,549,506,549,color);
DrawLine (498,(int) speedy,498,549,color); DrawLine (498,(int) speedy,498,549,color);
DrawLine ((int) (loc.x+size.x+2),(int) (speedy),498,(int) (speedy),color); DrawLine ((int) (loc.x+size.x+2),(int) (speedy),498,(int) (speedy),color);
}else if(sh_step==1){ }else if(sh_step==1){
//적절하지는 않지만.. 미션 시간을 speed에서 같이 그린다. //Not ideal, but draw mission time alongside speed display.
//미션 시간 그리기...hudtimer.cpp에 DrawImplementation에서 따온것임.. //Draw mission timer... taken from DrawImplementation in hudtimer.cpp..
{ {
MWMission *mwmiss = Cast_Object (MWMission *,Mission::GetInstance ()); MWMission *mwmiss = Cast_Object (MWMission *,Mission::GetInstance ());
Verify (mwmiss); Verify (mwmiss);
@@ -1983,7 +1983,7 @@ if(!hsh_initialized){
} }
float offset; float offset;
//126,62.. 188의 속도.. 2:1로 나누면.. //126,62.. speed 188.. divided 2:1..
//backbground image //backbground image
radar_device.pD3DDevice->SetTexture(0,radar_device.pDDSTexture); radar_device.pD3DDevice->SetTexture(0,radar_device.pDDSTexture);
@@ -2094,8 +2094,8 @@ HUDNav::HUDNav()
navPointName = new HUDText (); navPointName = new HUDText ();
navPointRange = new HUDNumberText (); navPointRange = new HUDNumberText ();
playerAngle = new HUDNumberText (); playerAngle = new HUDNumberText ();
navPointRange->SetSize (HUDText::MEDIUM_SIZE); // 원래 SMALL_SIZE였음 navPointRange->SetSize (HUDText::MEDIUM_SIZE); // was originally SMALL_SIZE
playerAngle->SetSize (HUDText::MEDIUM_SIZE); // 원래 SMALL_SIZE였음 playerAngle->SetSize (HUDText::MEDIUM_SIZE); // was originally SMALL_SIZE
m_NavAlphaTime = 0; m_NavAlphaTime = 0;
@@ -2203,14 +2203,14 @@ if(!hsh_initialized){
m_Textures[10]->TopLeft ((Scalar) (m_BaseLeft + offset),m_Textures[10]->Top ()); m_Textures[10]->TopLeft ((Scalar) (m_BaseLeft + offset),m_Textures[10]->Top ());
size = m_Textures[10]->Size (); size = m_Textures[10]->Size ();
m_Textures[10]->Draw (loc,size,color,HUDTexture::NO_FLIP,true); m_Textures[10]->Draw (loc,size,color,HUDTexture::NO_FLIP,true);
//2번 aux의 줄자..의 대부분...(이걸로 표시되지 않을때.. 다음걸로 표시한다.) //Main portion of aux2 ruler... (if not displayable here, use next one.)
#if 1 #if 1
loc.x += size.x; loc.x += size.x;
loc.x-=1; loc.x-=1;
m_Textures[13]->BottomRight ((Scalar) m_BaseLeft+offset,m_Textures[13]->Bottom ()); m_Textures[13]->BottomRight ((Scalar) m_BaseLeft+offset,m_Textures[13]->Bottom ());
size = m_Textures[13]->Size (); size = m_Textures[13]->Size ();
m_Textures[13]->Draw (loc,size,color,HUDTexture::NO_FLIP,true); m_Textures[13]->Draw (loc,size,color,HUDTexture::NO_FLIP,true);
//2번 aux의 줄자의 짦은 부분.... //Short tick marks of aux2 ruler....
#endif #endif
int heading = m_PlayerFacing; int heading = m_PlayerFacing;
@@ -2223,7 +2223,7 @@ if(!hsh_initialized){
bool draw = false; bool draw = false;
if (dir < 0) if (dir < 0)
dir += 360; dir += 360;
else if (dir > 360)//상훈 고침.. 원래는 --> "else if (dir > 360)" 였음.. else if (dir > 360)//sanghoon fix: original was --> "else if (dir > 360)"..
dir -= 360; dir -= 360;
switch (dir) switch (dir)
{ {
@@ -2265,11 +2265,11 @@ if(!hsh_initialized){
navText[textid]->DrawSize (dx,dy); navText[textid]->DrawSize (dx,dy);
textloc.x -= dx/2; textloc.x -= dx/2;
navText[textid]->Draw (textloc); navText[textid]->Draw (textloc);
//2번 aux방위각 표시.. 340 350 N 10 20... //Aux2 bearing display.. 340 350 N 10 20...
} }
} }
//2번 aux mech의 방향각도 표시... //Aux2 mech heading angle display...
color = Color (); color = Color ();
DrawFrame (400-13,10,400+13,22,color); DrawFrame (400-13,10,400+13,22,color);
DWORD dx,dy; DWORD dx,dy;
@@ -2288,7 +2288,7 @@ if(!hsh_initialized){
size = m_Textures[11]->Size (); size = m_Textures[11]->Size ();
color = Color (); color = Color ();
m_Textures[11]->Draw (Point3D (400.0f,44.0f,0.9f),size,color); m_Textures[11]->Draw (Point3D (400.0f,44.0f,0.9f),size,color);
//2번 aux 중심표시.. 역삼각형..(매우작음) //Aux2 center indicator.. inverted triangle.. (very small)
if (m_NavPointRange != -1) if (m_NavPointRange != -1)
{ {
@@ -2299,9 +2299,9 @@ if(!hsh_initialized){
textloc.y = 0; textloc.y = 0;
textloc.z = 0; textloc.z = 0;
// Draw navpoint bug or arrows // Draw navpoint bug or arrows
//2번 aux navigation //Aux2 navigation
//navpoint bug:... 목표를 나타내는 동그라미를 발한다.(ruler안에 표시가능할때) //navpoint: draw circle indicating objective (when displayable in ruler)
//arrow ruler안에 표시가 불가능할때.. 방향만 좌/우 화살표로서 표시한다. //When unable to display in arrow ruler.. show direction with left/right arrow only.
DWORD color = (m_NavAlpha << 24) + 0x00AF00; DWORD color = (m_NavAlpha << 24) + 0x00AF00;
size = Size (); size = Size ();
@@ -2346,7 +2346,7 @@ if(!hsh_initialized){
textloc.y += 5; textloc.y += 5;
textloc.z = 0.9f; textloc.z = 0.9f;
} }
//지점 타켓의 이름을 그린다. //Draw the name of the point target.
DWORD dx,dy; DWORD dx,dy;
navPointName->TopLeft (textloc.x-50.0f,textloc.y-2.0f); navPointName->TopLeft (textloc.x-50.0f,textloc.y-2.0f);
navPointName->BottomRight (textloc.x+50.0f,textloc.y+20.0f); navPointName->BottomRight (textloc.x+50.0f,textloc.y+20.0f);
@@ -2357,7 +2357,7 @@ if(!hsh_initialized){
navPointName->Draw (textloc); navPointName->Draw (textloc);
textloc.x += dx/2; textloc.x += dx/2;
//지점 타켓의 거리를 그린다. //Draw distance to point target.
textloc.y += 12.0f; textloc.y += 12.0f;
navPointName->TopLeft (textloc.x-50.0f,textloc.y-2.0f); navPointName->TopLeft (textloc.x-50.0f,textloc.y-2.0f);
navPointName->BottomRight (textloc.x+50.0f,textloc.y+20.0f); navPointName->BottomRight (textloc.x+50.0f,textloc.y+20.0f);
@@ -2503,7 +2503,7 @@ if(!hsh_initialized){
if(VehGetShutdownState()!=1) if(VehGetShutdownState()!=1)
{ {
mfd_device.DrawTexture(120,140,0xFFFFFFFF,testoffset+1,256,testoffset+402+1,256+18); mfd_device.DrawTexture(120,140,0xFFFFFFFF,testoffset+1,256,testoffset+402+1,256+18);
//눈금위의 방위각 그리기 //Draw bearing above tick marks
int heading = m_PlayerFacing; int heading = m_PlayerFacing;
int ii=0; int ii=0;
for (int i=heading-20;i<=heading+20;i++,ii++){ for (int i=heading-20;i<=heading+20;i++,ii++){
@@ -2521,7 +2521,7 @@ if(!hsh_initialized){
} }
mfd_device.pD3DDevice->SetTexture(0,0); mfd_device.pD3DDevice->SetTexture(0,0);
//현재 방위각 그리기 //Draw current bearing
{ {
char text[8]; char text[8];
wsprintf(text,"%d",(int)m_PlayerFacing); wsprintf(text,"%d",(int)m_PlayerFacing);
@@ -2530,19 +2530,19 @@ if(!hsh_initialized){
} }
mfd_device.pD3DDevice->SetTexture(0,mfd_device.pDDSTexture); mfd_device.pD3DDevice->SetTexture(0,mfd_device.pDDSTexture);
//중심표시 역삼각형(매우작음) 그리기 //Draw center-indicator inverted triangle (very small)
mfd_device.DrawTexture(320-5,140,0xFFFFFFFF,59,30+256,70,39+256); mfd_device.DrawTexture(320-5,140,0xFFFFFFFF,59,30+256,70,39+256);
//목표 그리기. //Draw objective.
if (m_NavPointRange != -1){//목표 지점이 있을때. if (m_NavPointRange != -1){//when a target waypoint exists.
int hsh_textpos=0; int hsh_textpos=0;
//목표 표시 그리기. //Draw objective indicator.
if ((m_NavPointFacing > -20) && (m_NavPointFacing < 20)){ if ((m_NavPointFacing > -20) && (m_NavPointFacing < 20)){
//방위각 내에 있을때.. 버그를 그린다. //When inside bearing range.. draw indicator.
mfd_device.DrawTexture((int)(320-9-m_NavPointFacing*10),140+4,0xFFFFFFFF,87,28+256,106,47+256); mfd_device.DrawTexture((int)(320-9-m_NavPointFacing*10),140+4,0xFFFFFFFF,87,28+256,106,47+256);
hsh_textpos=(int)(320-m_NavPointFacing*10); hsh_textpos=(int)(320-m_NavPointFacing*10);
}else{ }else{
//방위각 밖에 있을때.. 화살표를 그린다. //When outside bearing range.. draw arrow.
if (m_NavPointFacing <= -10){ if (m_NavPointFacing <= -10){
mfd_device.DrawTexture(520+4,140,0xFFFFFFFF,3,54+256,39,81+256); mfd_device.DrawTexture(520+4,140,0xFFFFFFFF,3,54+256,39,81+256);
hsh_textpos=520; hsh_textpos=520;
@@ -2552,12 +2552,12 @@ if(!hsh_initialized){
} }
} }
//목표 이름과 거리(텍스트) 그리기. //Draw objective name and distance (text).
mfd_device.pFont[0].DrawText(hsh_textpos,140+26,0xFFFFFFFF,m_NavPointName,TEXTALIGN_CENTER); mfd_device.pFont[0].DrawText(hsh_textpos,140+26,0xFFFFFFFF,m_NavPointName,TEXTALIGN_CENTER);
mfd_device.pFont[0].DrawText(hsh_textpos,140+46,0xFFFFFFFF,m_NavPointRangeText,TEXTALIGN_CENTER); mfd_device.pFont[0].DrawText(hsh_textpos,140+46,0xFFFFFFFF,m_NavPointRangeText,TEXTALIGN_CENTER);
} }
} }
//반드시.. scroe정보 그리는 루틴을 추가할것.. //Must add routine to draw score info here..
{ {
char score[32]={0}; char score[32]={0};
char kills[32]={0}; char kills[32]={0};
@@ -51,9 +51,9 @@ namespace MechWarrior4
Stuff::Scalar m_TorsoTwist; Stuff::Scalar m_TorsoTwist;
int m_RadarMode; int m_RadarMode;
stlport::vector<ShotEntry> m_ShotList; stlport::vector<ShotEntry> m_ShotList;
//상훈 앞 //sanghoon begin
int hsh_fdraw; int hsh_fdraw;
//상훈 뒤 //sanghoon end
bool OnShotList (ObjectID who); bool OnShotList (ObjectID who);
void ClipLine (Scalar& xpt1,Scalar& ypt1,Scalar& xpt2,Scalar& ypt2,Scalar cx,Scalar cy,Scalar rad); void ClipLine (Scalar& xpt1,Scalar& ypt1,Scalar& xpt2,Scalar& ypt2,Scalar cx,Scalar cy,Scalar rad);
+6 -6
View File
@@ -121,7 +121,7 @@
void InitComFuncs (void); void InitComFuncs (void);
void KillComFuncs (void); void KillComFuncs (void);
// úè - start // hyun begin
typedef long LONG; typedef long LONG;
typedef struct DIJOYSTATE { typedef struct DIJOYSTATE {
LONG lX; LONG lX;
@@ -141,7 +141,7 @@ extern void (__stdcall *g_pfnRIO_ButtonEvent)(BYTE* by);
extern void __stdcall RIO_Joy(DIJOYSTATE& js); extern void __stdcall RIO_Joy(DIJOYSTATE& js);
extern void __stdcall RIO_ButEvent(BYTE* by); extern void __stdcall RIO_ButEvent(BYTE* by);
// úè - end // hyun end
namespace MW4AI namespace MW4AI
{ {
@@ -200,13 +200,13 @@ Stuff::Scalar MechWarrior4::DECRYPT (Stuff::Scalar value)
void void
MechWarrior4::InitializeClasses(Stuff::NotationFile *startup_ini) MechWarrior4::InitializeClasses(Stuff::NotationFile *startup_ini)
{ {
// úè - start // hyun begin
if (g_bUseOrgJoy) if (g_bUseOrgJoy)
g_pfnRIO_Joy = NULL; g_pfnRIO_Joy = NULL;
else else
g_pfnRIO_Joy = RIO_Joy; g_pfnRIO_Joy = RIO_Joy;
g_pfnRIO_ButtonEvent = RIO_ButEvent; g_pfnRIO_ButtonEvent = RIO_ButEvent;
// úè - end // hyun end
Verify(!g_LibraryHeap); Verify(!g_LibraryHeap);
g_LibraryHeap = gos_CreateMemoryHeap("MechWarrior4(All)"); g_LibraryHeap = gos_CreateMemoryHeap("MechWarrior4(All)");
@@ -753,8 +753,8 @@ void
gos_DestroyMemoryHeap(g_LibraryHeap); gos_DestroyMemoryHeap(g_LibraryHeap);
g_LibraryHeap = NULL; g_LibraryHeap = NULL;
// úè - start // hyun begin
g_pfnRIO_ButtonEvent = NULL; g_pfnRIO_ButtonEvent = NULL;
g_pfnRIO_Joy = NULL; g_pfnRIO_Joy = NULL;
// úè - end // hyun end
} }
+4 -4
View File
@@ -12980,10 +12980,10 @@ void CTCL_API CTCL_SetMissionParams()
//} //}
NetMissionParameters::MWNetMissionParameters* lparams = app->GetLocalNetParams(); NetMissionParameters::MWNetMissionParameters* lparams = app->GetLocalNetParams();
lparams->m_killLimit = 0; // no kill limit - 목표치 lparams->m_killLimit = 0; // no kill limit - target value
lparams->m_killLimitNumber = 0; lparams->m_killLimitNumber = 0;
lparams->m_respawnLimit = 0; // 생명제한을 둘 것인가? lparams->m_respawnLimit = 0; // apply a respawn limit?
lparams->m_respawnLimitNumber = 0; // 생명수 lparams->m_respawnLimitNumber = 0; // number of lives
//params->m_isNight = params.m_isNight; //params->m_isNight = params.m_isNight;
lparams->m_onlyStockMech = FALSE; lparams->m_onlyStockMech = FALSE;
lparams->m_playMissionReview = 0; // params.m_playMissionReview; lparams->m_playMissionReview = 0; // params.m_playMissionReview;
@@ -13250,7 +13250,7 @@ void CTCL_API CTCL_CheckServerReady()
int i, nOK, nCount = Network::GetInstance()->GetPlayerCount(); int i, nOK, nCount = Network::GetInstance()->GetPlayerCount();
BOOL bOK = FALSE; BOOL bOK = FALSE;
if (nCount == (g_nTeslas + 1)) { // 모든 클라이언트가 접속이 되어 있을 때... if (nCount == (g_nTeslas + 1)) { // when all clients are connected...
for(nOK = 0, i = 0; i < Maximum_Players; ++i) { for(nOK = 0, i = 0; i < Maximum_Players; ++i) {
if (i != Connection::Server->GetID()) { if (i != Connection::Server->GetID()) {
const MechWarrior4::ServedConnectionData& scd = app->servedConnectionData[i]; const MechWarrior4::ServedConnectionData& scd = app->servedConnectionData[i];
+14 -14
View File
@@ -230,13 +230,13 @@ extern int g_nTeamOrderMode;
extern bool g_bCOOP; // COin OPeration extern bool g_bCOOP; // COin OPeration
// jcem - end // jcem - end
// 鉉 - start // hyun begin
extern void __stdcall RIO_StartStop (BOOL bStart); extern void __stdcall RIO_StartStop (BOOL bStart);
void COOP_InputMode(bool bRestore); void COOP_InputMode(bool bRestore);
extern int g_bNoPlasma; extern int g_bNoPlasma;
extern void __stdcall PLASMA_Do(int nMode); extern void __stdcall PLASMA_Do(int nMode);
extern void GeneralReset(); extern void GeneralReset();
// 鉉 - end // hyun end
extern bool __stdcall gos_NetDoneStartGame(); extern bool __stdcall gos_NetDoneStartGame();
extern bool __stdcall PrepareDefaultServerAdvertisers(void); extern bool __stdcall PrepareDefaultServerAdvertisers(void);
@@ -1938,9 +1938,9 @@ public:
void EndPos (DWORD& x,DWORD& y); void EndPos (DWORD& x,DWORD& y);
bool Empty (void) bool Empty (void)
{ return (m_Text[0] == 0); } { return (m_Text[0] == 0); }
//상훈 앞 //sanghoon begin
const char *hsh_get_m_Text(){return &m_Text[0];} const char *hsh_get_m_Text(){return &m_Text[0];}
//상훈 뒤 //sanghoon end
}; };
TextBox::TextBox (const char* pcszFontName, int nFontSize/* = -11*/, bool oldmode/* = false*/) TextBox::TextBox (const char* pcszFontName, int nFontSize/* = -11*/, bool oldmode/* = false*/)
@@ -3571,9 +3571,9 @@ void
} }
Environment.DoGameLogic = &MWApplication::DoGameLogic; Environment.DoGameLogic = &MWApplication::DoGameLogic;
} }
// 鉉 - start // hyun begin
RIO_StartStop (TRUE); RIO_StartStop (TRUE);
// 鉉 - end // hyun end
g_MRF.Started(); // jcem g_MRF.Started(); // jcem
g_RSF.Started(); // jcem g_RSF.Started(); // jcem
@@ -3696,9 +3696,9 @@ void
g_RSF.Stopping(); // jcem g_RSF.Stopping(); // jcem
ClearTOC(); ClearTOC();
// 鉉 - start // hyun begin
RIO_StartStop (FALSE); RIO_StartStop (FALSE);
// 鉉 - end // hyun end
if (CTCL_IsConsoleX()) { if (CTCL_IsConsoleX()) {
CTCL_SetGameState(_EGS_Closing); CTCL_SetGameState(_EGS_Closing);
} }
@@ -3870,9 +3870,9 @@ sh_game_started = false;
g_RSF.Stopping(); // jcem g_RSF.Stopping(); // jcem
ClearTOC(); ClearTOC();
// 鉉 - start // hyun begin
RIO_StartStop (FALSE); RIO_StartStop (FALSE);
// 鉉 - end // hyun end
if (CTCL_IsConsoleX()) { if (CTCL_IsConsoleX()) {
CTCL_SetGameState(_EGS_Closing); CTCL_SetGameState(_EGS_Closing);
} }
@@ -18435,7 +18435,7 @@ int __stdcall CTCL_StartCOOP(void* instance, int args, void* data[])
// $$COOP: see void CSOC_Client::OnReadyStartGame() // $$COOP: see void CSOC_Client::OnReadyStartGame()
// C_ReadyStartGame // C_ReadyStartGame
g_nTeslas = 0; // 싱글 게임 g_nTeslas = 0; // single player game
g_nBOTs = 7; g_nBOTs = 7;
g_nPlayerInfos = 1 + g_nBOTs + g_nTeslas; g_nPlayerInfos = 1 + g_nBOTs + g_nTeslas;
g_bIsServer = TRUE; g_bIsServer = TRUE;
@@ -18523,13 +18523,13 @@ int __stdcall CTCL_StartCOOP(void* instance, int args, void* data[])
// MSL ADD MECH // MSL ADD MECH
PI.m_nMechIndex = -1; PI.m_nMechIndex = -1;
//* //*
// 각 메크에 대한 정보는 MechIndex를 참조함 // See MechIndex for each mech's info
PI.m_fileID = 0; PI.m_fileID = 0;
PI.m_recordID = 0; PI.m_recordID = 0;
strcpy(PI.m_szMech, s_paMechNames[11]); // Madcat strcpy(PI.m_szMech, s_paMechNames[11]); // Madcat
strcpy(PI.m_szMech, "$Yellow"); strcpy(PI.m_szMech, "$Yellow");
//*/ //*/
PI.m_nTeamOrSkin = 1; // 빨강 PI.m_nTeamOrSkin = 1; // red
PI.m_nDecal = 1; // nDecal; PI.m_nDecal = 1; // nDecal;
PI.m_dwAddr = 0; // dwAddr; PI.m_dwAddr = 0; // dwAddr;
g_nPrintOut = FALSE; g_nPrintOut = FALSE;
@@ -18576,7 +18576,7 @@ int __stdcall CTCL_StartCOOP(void* instance, int args, void* data[])
strcpy(PI.m_szName, s_pNames[aLBN[2][i - 1]]); strcpy(PI.m_szName, s_pNames[aLBN[2][i - 1]]);
PI.m_nMechIndex = -1; PI.m_nMechIndex = -1;
//* //*
//각 메크에 대한 정보는 MechIndex를 참조함 //See MechIndex for each mech's info
PI.m_fileID = 0; PI.m_fileID = 0;
PI.m_recordID = 0; PI.m_recordID = 0;
/*if (i == 1) /*if (i == 1)
+7 -7
View File
@@ -1,8 +1,8 @@
#include "MW4Headers.hpp" #include "MW4Headers.hpp"
//상훈 앞 //sanghoon begin
#include "MWVideoRenderer.hpp" #include "MWVideoRenderer.hpp"
//상훈 뒤 //sanghoon end
#include "MWGUIManager.hpp" #include "MWGUIManager.hpp"
#include "GUIWeaponManager.hpp" #include "GUIWeaponManager.hpp"
#include "GUIRadarManager.hpp" #include "GUIRadarManager.hpp"
@@ -1554,7 +1554,7 @@ void MWGUIManager::RenderComponents (void)
(*iter)->Draw (); (*iter)->Draw ();
} }
}else{ }else{
//상훈... 셧다운 중일때.. //sanghoon: while shutting down..
for (iter = m_Components.begin ();iter != m_Components.end ();iter++) for (iter = m_Components.begin ();iter != m_Components.end ();iter++)
{ {
//Main hudZoom,//hudReticle,hudObjective,hudTorsoBar,hudHelp,hudScore //Main hudZoom,//hudReticle,hudObjective,hudTorsoBar,hudHelp,hudScore
@@ -1597,11 +1597,11 @@ void MWGUIManager::RenderComponents (void)
} }
else else
{ {
//상훈-앞 //sanghoon begin
extern CamerashipParams g_CamerashipParams; extern CamerashipParams g_CamerashipParams;
if (CTCL_IsConsoleX() || g_CamerashipParams.m_bAllowChatDisplay) if (CTCL_IsConsoleX() || g_CamerashipParams.m_bAllowChatDisplay)
hudChat->Draw (true); hudChat->Draw (true);
//상훈-뒤 //sanghoon end
hudScore->Draw (true); hudScore->Draw (true);
hudCamera->Draw(true); hudCamera->Draw(true);
} }
@@ -1612,7 +1612,7 @@ void MWGUIManager::RenderComponents (void)
gos_PopRenderStates (); gos_PopRenderStates ();
//상훈 앞 //sanghoon begin
MWApplication* app = MWApplication::GetInstance(); MWApplication* app = MWApplication::GetInstance();
if (app->networkingFlag) if (app->networkingFlag)
{ {
@@ -1648,7 +1648,7 @@ void MWGUIManager::RenderComponents (void)
} }
} }
} }
//상훈 뒤 //sanghoon end
} }
void MWGUIManager::ShowHelpArrow (bool value) void MWGUIManager::ShowHelpArrow (bool value)
+1 -1
View File
@@ -590,7 +590,7 @@ namespace MechWarrior4
return (m_EndMissionTimer.Running()); return (m_EndMissionTimer.Running());
} }
//상훈 //sanghoon
Stuff::Scalar GetMissionDuration () Stuff::Scalar GetMissionDuration ()
{ {
if (!m_EndMissionTimer.Running ()) if (!m_EndMissionTimer.Running ())
+1 -1
View File
@@ -3954,7 +3954,7 @@ void
g_HUDPPCLevel = 10; g_HUDPPCLevel = 10;
} }
//상훈 //sanghoon
//extern bool sh_isdeathmode; //extern bool sh_isdeathmode;
//Are we ejecting? //Are we ejecting?
if (m_NeedEject) if (m_NeedEject)
+94 -94
View File
@@ -13,7 +13,7 @@
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // // This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================// //===========================================================================//
// 鉉 - start // hyun begin
#include "MW4.hpp" #include "MW4.hpp"
#include "Vehicle.hpp" #include "Vehicle.hpp"
#include "MechAnimationState.hpp" #include "MechAnimationState.hpp"
@@ -22,7 +22,7 @@
#include "SpringOf.hpp" #include "SpringOf.hpp"
#include "MechLabHeaders.h" #include "MechLabHeaders.h"
#include <Stuff\Spline.hpp> #include <Stuff\Spline.hpp>
// 鉉 - end // hyun end
#include "MW4Headers.hpp" #include "MW4Headers.hpp"
@@ -65,9 +65,9 @@
#include "EyePointManager.hpp" #include "EyePointManager.hpp"
#include "mw4shell.hpp" #include "mw4shell.hpp"
#include "NavPoint.hpp" #include "NavPoint.hpp"
//상훈 앞 //sanghoon begin
#include "MWVideoRenderer.hpp" #include "MWVideoRenderer.hpp"
//상훈 뒤 //sanghoon end
#include <Adept\CollisionGrid.hpp> #include <Adept\CollisionGrid.hpp>
#include <Adept\Controls.hpp> #include <Adept\Controls.hpp>
@@ -101,7 +101,7 @@ bool _stdcall WriteImageAfterGrab(BYTE* Image, const char* pcszFilePrefix);
#include <mbstring.h> #include <mbstring.h>
#define __mbsrchr(s,c) (char*)_mbsrchr((const unsigned char*)(s),(c)) #define __mbsrchr(s,c) (char*)_mbsrchr((const unsigned char*)(s),(c))
// 鉉 - start // hyun begin
#include <windows.h> #include <windows.h>
#include "ctcls.h" #include "ctcls.h"
@@ -208,7 +208,7 @@ float g_fNeedFlushLevel = 0.66;
float g_fTimeMsgSender = 1.5f; float g_fTimeMsgSender = 1.5f;
float g_fTimeScoringAtEnd = 10.0f; float g_fTimeScoringAtEnd = 10.0f;
Mech* FindNextMechToFollowByScore(Mech* pCur); // jcem Mech* FindNextMechToFollowByScore(Mech* pCur); // jcem
// 鉉 - end // hyun end
CamerashipParams g_CamerashipParams; CamerashipParams g_CamerashipParams;
@@ -2285,7 +2285,7 @@ void
if (MWGUIManager::GetInstance () && IsObserving(true)) if (MWGUIManager::GetInstance () && IsObserving(true))
{ {
Check_Object(MWGUIManager::GetInstance()); Check_Object(MWGUIManager::GetInstance());
//상훈 //sanghoon
if (!CTCL_IsConsoleX() && !g_CamerashipParams.m_bAllowChatDisplay) { if (!CTCL_IsConsoleX() && !g_CamerashipParams.m_bAllowChatDisplay) {
HUDChat *chat; HUDChat *chat;
chat = Cast_Object (HUDChat *,MWGUIManager::GetInstance ()->Component (MWGUIManager::HUD_CHAT)); chat = Cast_Object (HUDChat *,MWGUIManager::GetInstance ()->Component (MWGUIManager::HUD_CHAT));
@@ -3781,11 +3781,11 @@ void VehicleInterface::ApplyControls(Time till)
} }
else if (controlPacket.lookCommand == AnalogControlSave::LookBack) else if (controlPacket.lookCommand == AnalogControlSave::LookBack)
{ {
//상훈 //sanghoon
ShowHUDIfOn(true); ShowHUDIfOn(true);
//MWGUIManager::GetInstance()->HideHudComponent (HUD_TARGETARROW); //MWGUIManager::GetInstance()->HideHudComponent (HUD_TARGETARROW);
//ShowHUDIfOn(false); //ShowHUDIfOn(false);
//상훈 //sanghoon
// MSL 5.04 Rear Firing Weapons // MSL 5.04 Rear Firing Weapons
// ShowStatic(cameraView == InMechCameraView); // ShowStatic(cameraView == InMechCameraView);
ShowStatic(true); ShowStatic(true);
@@ -4968,7 +4968,7 @@ void
Scalar fT = gos_GetElapsedTime(); Scalar fT = gos_GetElapsedTime();
if ((fT - g_fLastScoringTimeCechk) >= CAMERASHIP_SCORING_CHECK) { if ((fT - g_fLastScoringTimeCechk) >= CAMERASHIP_SCORING_CHECK) {
g_fLastScoringTimeCechk = fT; g_fLastScoringTimeCechk = fT;
//상훈 //sanghoon
if (Application::GetInstance()->networkingFlag) if (Application::GetInstance()->networkingFlag)
{ {
bool bNearEnd = false; bool bNearEnd = false;
@@ -5378,7 +5378,7 @@ again:
if ((m_curView == STATE_DEATH_SEQUENCE_START) || (m_curView == STATE_DEATH_SEQUENCE_TRANS)) { if ((m_curView == STATE_DEATH_SEQUENCE_START) || (m_curView == STATE_DEATH_SEQUENCE_TRANS)) {
bool bStateEnded = false; bool bStateEnded = false;
if (m_pMechDying != pMech) { if (m_pMechDying != pMech) {
// 죽는 도중에 타겟이 바뀐 경우 // Case where target changes while dying
ClearFixedPoint(); ClearFixedPoint();
m_fTimeStateEnd = fMT + g_CamerashipParams.m_fTimeStandard; m_fTimeStateEnd = fMT + g_CamerashipParams.m_fTimeStandard;
m_pMechDying = m_pEnemy = NULL; m_pMechDying = m_pEnemy = NULL;
@@ -5419,7 +5419,7 @@ again:
} }
if ((m_pEnemy != m_pMechDying) && m_pEnemy->IsDestroyed()) { if ((m_pEnemy != m_pMechDying) && m_pEnemy->IsDestroyed()) {
if (m_curView == STATE_DEATH_SEQUENCE_START) { if (m_curView == STATE_DEATH_SEQUENCE_START) {
// 죽음을 보여주는 도중에 상대방이 죽은 경우... // Case where opponent dies while death animation is playing...
// move to trans... // move to trans...
bStateEnded = true; bStateEnded = true;
} }
@@ -7495,7 +7495,7 @@ void
// MSL 5.02 Zoom // MSL 5.02 Zoom
// m_reticuleCamera->SetPerspective(near_clip_zoom, far_clip_main + (100.0f * (horizontal_fov_main - horizontal_fov_zoom)), horizontal_fov_zoom, (height_to_width_zoom)); // m_reticuleCamera->SetPerspective(near_clip_zoom, far_clip_main + (100.0f * (horizontal_fov_main - horizontal_fov_zoom)), horizontal_fov_zoom, (height_to_width_zoom));
m_reticuleCamera->SetPerspective(near_clip_zoom, far_clip_main + (100.0f * (horizontal_fov_main - horizontal_fov_zoom)), horizontal_fov_zoom, (height_to_width_zoom*1.75)); m_reticuleCamera->SetPerspective(near_clip_zoom, far_clip_main + (100.0f * (horizontal_fov_main - horizontal_fov_zoom)), horizontal_fov_zoom, (height_to_width_zoom*1.75));
//상훈 //sanghoon
// float height=(1-g_fZoomMarginLR*2)*800 * height_to_width_zoom/600; // float height=(1-g_fZoomMarginLR*2)*800 * height_to_width_zoom/600;
// float tb_margin=(1-height)/2; // float tb_margin=(1-height)/2;
// m_reticuleCamera->SetViewport(1-g_fZoomMarginLR,1-tb_margin, g_fZoomMarginLR, tb_margin); // m_reticuleCamera->SetViewport(1-g_fZoomMarginLR,1-tb_margin, g_fZoomMarginLR, tb_margin);
@@ -8121,7 +8121,7 @@ void VehicleInterface::ChainFireGroup (Stuff::Time till,ChainIteratorOf<Weapon *
} }
// //
// 鉉 - start // hyun begin
groupWeaponIterator->ReadAndNext(); groupWeaponIterator->ReadAndNext();
@@ -8135,7 +8135,7 @@ void VehicleInterface::ChainFireGroup (Stuff::Time till,ChainIteratorOf<Weapon *
BOOL bWeaponGroup3 = (group3FireRequest > 0) && GetWeaponGroupID (*weapon, 3); BOOL bWeaponGroup3 = (group3FireRequest > 0) && GetWeaponGroupID (*weapon, 3);
// //
// 鉉 - end // hyun end
// //
num_weapons ++; num_weapons ++;
@@ -8369,7 +8369,7 @@ void
} }
} }
*/ */
// fireRequest > 0 (Enter Key : None Used) : // fireRequest > 0 (Enter Key : None Used) : hyun
if(fireRequest > 0) if(fireRequest > 0)
{ {
switch(weaponMode) switch(weaponMode)
@@ -8521,12 +8521,12 @@ void VehicleInterface::OverrideAutoCenterToTorsoMessageHandler(Adept::ReceiverDa
Verify(message->messageID == OverrideAutoCenterToTorsoMessageID); Verify(message->messageID == OverrideAutoCenterToTorsoMessageID);
if (GetShutdownState()) { if (GetShutdownState()) {
g_pRIOMain->SetLampState (28, LAMP_OFF); // g_pRIOMain->SetLampState (28, LAMP_OFF); // hyun
return; return;
} }
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (28, LAMP_BRIGHT); // g_pRIOMain->SetLampState (28, LAMP_BRIGHT); // hyun
if (perminateTorsoMode == CenterLegsToTorso) if (perminateTorsoMode == CenterLegsToTorso)
{ {
@@ -8539,7 +8539,7 @@ void VehicleInterface::OverrideAutoCenterToTorsoMessageHandler(Adept::ReceiverDa
} }
else else
{ {
g_pRIOMain->SetLampState (28, LAMP_DEFAULT); // g_pRIOMain->SetLampState (28, LAMP_DEFAULT); // hyun
} }
} }
@@ -8658,11 +8658,11 @@ void
} }
} }
g_pRIOMain->SetLampState (17, LAMP_BRIGHT);// g_pRIOMain->SetLampState (17, LAMP_BRIGHT);// hyun
} }
else else
{ {
g_pRIOMain->SetLampState (17, LAMP_DEFAULT);// g_pRIOMain->SetLampState (17, LAMP_DEFAULT);// hyun
} }
} }
@@ -8749,17 +8749,17 @@ void
Verify(message->messageID == CrouchCommandMessageID); Verify(message->messageID == CrouchCommandMessageID);
if (GetShutdownState()) { if (GetShutdownState()) {
g_pRIOMain->SetLampState (20, LAMP_OFF);// g_pRIOMain->SetLampState (20, LAMP_OFF);// hyun
return; return;
} }
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (20, LAMP_BRIGHT);// g_pRIOMain->SetLampState (20, LAMP_BRIGHT);// hyun
// if (executionState->GetState () == ExecutionStateEngine::AutoPilotState) // if (executionState->GetState () == ExecutionStateEngine::AutoPilotState)
executionState->RequestState(ExecutionStateEngine::AlwaysExecuteState); executionState->RequestState(ExecutionStateEngine::AlwaysExecuteState);
QueCommand(VehicleCommand::CrouchCommand); QueCommand(VehicleCommand::CrouchCommand);
} else { } else {
g_pRIOMain->SetLampState (20, LAMP_DEFAULT);// g_pRIOMain->SetLampState (20, LAMP_DEFAULT);// hyun
} }
} }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -8786,10 +8786,10 @@ void
if (GetShutdownState()) { if (GetShutdownState()) {
if (g_bJumpZoom) if (g_bJumpZoom)
g_pRIOMain->SetLampState (16, LAMP_OFF);// g_pRIOMain->SetLampState (16, LAMP_OFF);// hyun
g_pRIOMain->SetLampState (50, LAMP_OFF); g_pRIOMain->SetLampState (50, LAMP_OFF);
g_pRIOMain->SetLampState (33, LAMP_OFF);// g_pRIOMain->SetLampState (33, LAMP_OFF);// hyun
g_pRIOMain->SetLampState (34, LAMP_OFF);// g_pRIOMain->SetLampState (34, LAMP_OFF);// hyun
return; return;
} }
@@ -8797,7 +8797,7 @@ void
{ {
if (GetJumpJetState() > 0) { if (GetJumpJetState() > 0) {
if (g_bJumpZoom) if (g_bJumpZoom)
g_pRIOMain->SetLampState (16, LAMP_BRIGHT);// g_pRIOMain->SetLampState (16, LAMP_BRIGHT);// hyun
g_pRIOMain->SetLampState (33, LAMP_BRIGHT); g_pRIOMain->SetLampState (33, LAMP_BRIGHT);
g_pRIOMain->SetLampState (34, LAMP_BRIGHT); g_pRIOMain->SetLampState (34, LAMP_BRIGHT);
} }
@@ -8811,10 +8811,10 @@ void
if (!GetShutdownState()) if (!GetShutdownState())
if (GetJumpJetState() > 0) { if (GetJumpJetState() > 0) {
if (g_bJumpZoom) if (g_bJumpZoom)
g_pRIOMain->SetLampState (16, LAMP_DEFAULT);// g_pRIOMain->SetLampState (16, LAMP_DEFAULT);// hyun
g_pRIOMain->SetLampState (50, LAMP_DEFAULT); g_pRIOMain->SetLampState (50, LAMP_DEFAULT);
g_pRIOMain->SetLampState (33, LAMP_DEFAULT);// g_pRIOMain->SetLampState (33, LAMP_DEFAULT);// hyun
g_pRIOMain->SetLampState (34, LAMP_DEFAULT);// g_pRIOMain->SetLampState (34, LAMP_DEFAULT);// hyun
} }
} }
@@ -9284,12 +9284,12 @@ void
} }
if (!GetShutdownState()) if (!GetShutdownState())
g_pRIOMain->SetLampState (7, LAMP_BRIGHT);// g_pRIOMain->SetLampState (7, LAMP_BRIGHT);// hyun
} }
else else
{ {
if (!GetShutdownState()) if (!GetShutdownState())
g_pRIOMain->SetLampState (7, LAMP_DEFAULT);// g_pRIOMain->SetLampState (7, LAMP_DEFAULT);// hyun
} }
*/ */
} }
@@ -9341,7 +9341,7 @@ void
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
//SetWeaponMode(GroupFireMode); //hyun SetWeaponMode(GroupFireMode);
// selectedWeaponGroup = 1; // selectedWeaponGroup = 1;
group1FireRequest ++; group1FireRequest ++;
// fireRequest ++; // fireRequest ++;
@@ -9379,7 +9379,7 @@ void
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
//SetWeaponMode(GroupFireMode); //hyun SetWeaponMode(GroupFireMode);
// selectedWeaponGroup = 2; // selectedWeaponGroup = 2;
group2FireRequest ++; group2FireRequest ++;
// fireRequest ++; // fireRequest ++;
@@ -9415,7 +9415,7 @@ void
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
//SetWeaponMode(GroupFireMode); //hyun SetWeaponMode(GroupFireMode);
// selectedWeaponGroup = 3; // selectedWeaponGroup = 3;
// fireRequest ++; // fireRequest ++;
group3FireRequest ++; group3FireRequest ++;
@@ -9468,7 +9468,7 @@ void
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
//SetWeaponMode(GroupFireMode); //hyun SetWeaponMode(GroupFireMode);
// selectedWeaponGroup = 4; // selectedWeaponGroup = 4;
// fireRequest ++; // fireRequest ++;
// group4FireRequest ++; // group4FireRequest ++;
@@ -9508,7 +9508,7 @@ void
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
//SetWeaponMode(GroupFireMode); //hyun SetWeaponMode(GroupFireMode);
// selectedWeaponGroup = 5; // selectedWeaponGroup = 5;
// fireRequest ++; // fireRequest ++;
// group5FireRequest ++; // group5FireRequest ++;
@@ -9554,7 +9554,7 @@ void
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
//SetWeaponMode(GroupFireMode); //hyun SetWeaponMode(GroupFireMode);
//group6FireRequest ++; //group6FireRequest ++;
} }
else else
@@ -10344,19 +10344,19 @@ void
Verify(message->messageID == ToggleSearchLightMessageID); Verify(message->messageID == ToggleSearchLightMessageID);
if (GetShutdownState()) { if (GetShutdownState()) {
g_pRIOMain->SetLampState (27, LAMP_OFF);// g_pRIOMain->SetLampState (27, LAMP_OFF);// hyun
return; return;
} }
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
if (g_SearchLight == TRUE) if (g_SearchLight == TRUE)
g_pRIOMain->SetLampState (27, LAMP_BRIGHT);// g_pRIOMain->SetLampState (27, LAMP_BRIGHT);// hyun
QueCommand(VehicleCommand::ToggleSearchLightCommand); QueCommand(VehicleCommand::ToggleSearchLightCommand);
} }
else else
{ {
if (g_SearchLight == TRUE) if (g_SearchLight == TRUE)
g_pRIOMain->SetLampState (27, LAMP_DEFAULT);// g_pRIOMain->SetLampState (27, LAMP_DEFAULT);// hyun
} }
} }
@@ -10546,7 +10546,7 @@ void
{ {
//if (!GetShutdownState()) //if (!GetShutdownState())
//if (g_bCool == TRUE) { //if (g_bCool == TRUE) {
// g_pRIOMain->SetLampState (19, LAMP_BRIGHT);// // g_pRIOMain->SetLampState (19, LAMP_BRIGHT);// hyun
//} //}
isCooling ++; isCooling ++;
@@ -10560,7 +10560,7 @@ void
{ {
//if (!GetShutdownState()) //if (!GetShutdownState())
//if (g_bCool == TRUE) { //if (g_bCool == TRUE) {
// g_pRIOMain->SetLampState (19, LAMP_DEFAULT);// // g_pRIOMain->SetLampState (19, LAMP_DEFAULT);// hyun
//} //}
isCooling --; isCooling --;
@@ -10734,7 +10734,7 @@ void
if (GetShutdownState()) if (GetShutdownState())
{ {
g_pRIOMain->SetLampState (26, LAMP_OFF);// g_pRIOMain->SetLampState (26, LAMP_OFF);// hyun
g_pRIOMain->SetLampState (48, LAMP_OFF); // Light Amp Lamp MFD g_pRIOMain->SetLampState (48, LAMP_OFF); // Light Amp Lamp MFD
return; return;
} }
@@ -10759,7 +10759,7 @@ void
MWGUIManager::GetInstance()->ShowLightAmplification(); MWGUIManager::GetInstance()->ShowLightAmplification();
Mission::GetInstance()->SetLightAmpMissionLights(); Mission::GetInstance()->SetLightAmpMissionLights();
ShowZoomIfOn (false); ShowZoomIfOn (false);
g_pRIOMain->SetLampState (26, LAMP_BRIGHT);// g_pRIOMain->SetLampState (26, LAMP_BRIGHT);// hyun
if (!g_bJumpZoom) if (!g_bJumpZoom)
{ {
if (g_pRIOMain->GetLampState (16) == LAMP_BRIGHT) if (g_pRIOMain->GetLampState (16) == LAMP_BRIGHT)
@@ -10773,12 +10773,12 @@ void
{ {
if(vehicle->DoesHaveLightAmp()) if(vehicle->DoesHaveLightAmp())
{ {
g_pRIOMain->SetLampState (26, LAMP_DEFAULT);// g_pRIOMain->SetLampState (26, LAMP_DEFAULT);// hyun
g_pRIOMain->SetLampState (48, LAMP_DEFAULT); // Light Amp Lamp MFD g_pRIOMain->SetLampState (48, LAMP_DEFAULT); // Light Amp Lamp MFD
} }
else else
{ {
g_pRIOMain->SetLampState (26, LAMP_OFF);// g_pRIOMain->SetLampState (26, LAMP_OFF);// hyun
g_pRIOMain->SetLampState (48, LAMP_OFF); // Light Amp Lamp MFD g_pRIOMain->SetLampState (48, LAMP_OFF); // Light Amp Lamp MFD
} }
} }
@@ -10864,12 +10864,12 @@ void
Verify(message->messageID == NextNavPointMessageID); Verify(message->messageID == NextNavPointMessageID);
if (GetShutdownState()) { if (GetShutdownState()) {
g_pRIOMain->SetLampState (38, LAMP_OFF);// g_pRIOMain->SetLampState (38, LAMP_OFF);// hyun
return; return;
} }
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (38, LAMP_BRIGHT);// g_pRIOMain->SetLampState (38, LAMP_BRIGHT);// hyun
m_selectedNavPoint.Remove(); m_selectedNavPoint.Remove();
NavPoint *nav_point; NavPoint *nav_point;
if((nav_point = NavPoint::GetNextNavPoint()) != NULL) if((nav_point = NavPoint::GetNextNavPoint()) != NULL)
@@ -10890,7 +10890,7 @@ void
} }
else else
{ {
g_pRIOMain->SetLampState (38, LAMP_DEFAULT);// g_pRIOMain->SetLampState (38, LAMP_DEFAULT);// hyun
} }
} }
@@ -10915,12 +10915,12 @@ void
Verify(message->messageID == PreviousNavPointMessageID); Verify(message->messageID == PreviousNavPointMessageID);
if (GetShutdownState()) { if (GetShutdownState()) {
g_pRIOMain->SetLampState (37, LAMP_OFF);// g_pRIOMain->SetLampState (37, LAMP_OFF);// hyun
return; return;
} }
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (37, LAMP_BRIGHT);// g_pRIOMain->SetLampState (37, LAMP_BRIGHT);// hyun
m_selectedNavPoint.Remove(); m_selectedNavPoint.Remove();
NavPoint *nav_point; NavPoint *nav_point;
if((nav_point = NavPoint::GetPreviousNavPoint()) != NULL) if((nav_point = NavPoint::GetPreviousNavPoint()) != NULL)
@@ -10936,7 +10936,7 @@ void
} }
else else
{ {
g_pRIOMain->SetLampState (37, LAMP_DEFAULT);// g_pRIOMain->SetLampState (37, LAMP_DEFAULT);// hyun
} }
} }
@@ -10961,12 +10961,12 @@ void
Verify(message->messageID == NextEnemyMessageID); Verify(message->messageID == NextEnemyMessageID);
if (GetShutdownState()) { if (GetShutdownState()) {
g_pRIOMain->SetLampState (10, LAMP_OFF);// g_pRIOMain->SetLampState (10, LAMP_OFF);// hyun
return; return;
} }
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (10, LAMP_BRIGHT);// g_pRIOMain->SetLampState (10, LAMP_BRIGHT);// hyun
Entity *next_enemy = NULL; Entity *next_enemy = NULL;
Sensor *sensor = vehicle->GetSensor(); Sensor *sensor = vehicle->GetSensor();
if(sensor) if(sensor)
@@ -10978,7 +10978,7 @@ void
} }
else else
{ {
g_pRIOMain->SetLampState (10, LAMP_DEFAULT);// g_pRIOMain->SetLampState (10, LAMP_DEFAULT);// hyun
} }
} }
@@ -11003,12 +11003,12 @@ void
Verify(message->messageID == PreviousEnemyMessageID); Verify(message->messageID == PreviousEnemyMessageID);
if (GetShutdownState()) { if (GetShutdownState()) {
g_pRIOMain->SetLampState (9, LAMP_OFF);// g_pRIOMain->SetLampState (9, LAMP_OFF);// hyun
return; return;
} }
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (9, LAMP_BRIGHT);// g_pRIOMain->SetLampState (9, LAMP_BRIGHT);// hyun
Entity *next_enemy = NULL; Entity *next_enemy = NULL;
Sensor *sensor = vehicle->GetSensor(); Sensor *sensor = vehicle->GetSensor();
if(sensor) if(sensor)
@@ -11020,7 +11020,7 @@ void
} }
else else
{ {
g_pRIOMain->SetLampState (9, LAMP_DEFAULT);// g_pRIOMain->SetLampState (9, LAMP_DEFAULT);// hyun
} }
} }
@@ -11045,12 +11045,12 @@ void
Verify(message->messageID == NearestEnemyMessageID); Verify(message->messageID == NearestEnemyMessageID);
if (GetShutdownState()) { if (GetShutdownState()) {
g_pRIOMain->SetLampState (11, LAMP_OFF);// g_pRIOMain->SetLampState (11, LAMP_OFF);// hyun
return; return;
} }
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (11, LAMP_BRIGHT);// g_pRIOMain->SetLampState (11, LAMP_BRIGHT);// hyun
m_interfaceTarget.Remove(); m_interfaceTarget.Remove();
m_targetCamera->SetScene(NULL); m_targetCamera->SetScene(NULL);
Entity *entity = NULL; Entity *entity = NULL;
@@ -11065,7 +11065,7 @@ void
} }
else else
{ {
g_pRIOMain->SetLampState (11, LAMP_DEFAULT);// g_pRIOMain->SetLampState (11, LAMP_DEFAULT);// hyun
} }
} }
@@ -11232,12 +11232,12 @@ void
if (GetShutdownState()) if (GetShutdownState())
{ {
g_pRIOMain->SetLampState (8, LAMP_OFF);// g_pRIOMain->SetLampState (8, LAMP_OFF);// hyun
return; return;
} }
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (8, LAMP_BRIGHT);// g_pRIOMain->SetLampState (8, LAMP_BRIGHT);// hyun
Entity *target_entity; Entity *target_entity;
target_entity = targetQueryEntity.GetCurrent(); target_entity = targetQueryEntity.GetCurrent();
@@ -11260,7 +11260,7 @@ void
} }
else else
{ {
g_pRIOMain->SetLampState (8, LAMP_DEFAULT);// g_pRIOMain->SetLampState (8, LAMP_DEFAULT);// hyun
} }
} }
@@ -11285,12 +11285,12 @@ void
Verify(message->messageID == NextFriendlyMessageID); Verify(message->messageID == NextFriendlyMessageID);
if (GetShutdownState()) { if (GetShutdownState()) {
g_pRIOMain->SetLampState (14, LAMP_OFF);// g_pRIOMain->SetLampState (14, LAMP_OFF);// hyun
return; return;
} }
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (14, LAMP_BRIGHT);// g_pRIOMain->SetLampState (14, LAMP_BRIGHT);// hyun
Entity *next_friendly = NULL; Entity *next_friendly = NULL;
Sensor *sensor = vehicle->GetSensor(); Sensor *sensor = vehicle->GetSensor();
if(sensor) if(sensor)
@@ -11303,7 +11303,7 @@ void
} }
else else
{ {
g_pRIOMain->SetLampState (14, LAMP_DEFAULT);// g_pRIOMain->SetLampState (14, LAMP_DEFAULT);// hyun
} }
} }
@@ -11328,12 +11328,12 @@ void
Verify(message->messageID == PreviousFriendlyMessageID); Verify(message->messageID == PreviousFriendlyMessageID);
if (GetShutdownState()) { if (GetShutdownState()) {
g_pRIOMain->SetLampState (13, LAMP_OFF);// g_pRIOMain->SetLampState (13, LAMP_OFF);// hyun
return; return;
} }
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (13, LAMP_BRIGHT);// g_pRIOMain->SetLampState (13, LAMP_BRIGHT);// hyun
Entity *next_friendly = NULL; Entity *next_friendly = NULL;
Sensor *sensor = vehicle->GetSensor(); Sensor *sensor = vehicle->GetSensor();
if(sensor) if(sensor)
@@ -11346,7 +11346,7 @@ void
} }
else else
{ {
g_pRIOMain->SetLampState (13, LAMP_DEFAULT);// g_pRIOMain->SetLampState (13, LAMP_DEFAULT);// hyun
} }
} }
@@ -11371,12 +11371,12 @@ void
Verify(message->messageID == NearestFriendlyMessageID); Verify(message->messageID == NearestFriendlyMessageID);
if (GetShutdownState()) { if (GetShutdownState()) {
g_pRIOMain->SetLampState (15, LAMP_OFF);// g_pRIOMain->SetLampState (15, LAMP_OFF);// hyun
return; return;
} }
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (15, LAMP_BRIGHT);// g_pRIOMain->SetLampState (15, LAMP_BRIGHT);// hyun
Entity *entity = NULL; Entity *entity = NULL;
Sensor *sensor = vehicle->GetSensor(); Sensor *sensor = vehicle->GetSensor();
if(sensor) if(sensor)
@@ -11388,7 +11388,7 @@ void
} }
else else
{ {
g_pRIOMain->SetLampState (15, LAMP_DEFAULT);// g_pRIOMain->SetLampState (15, LAMP_DEFAULT);// hyun
} }
} }
@@ -11478,7 +11478,7 @@ void VehicleInterface::OverrideShutdownMessageHandler(Adept::ReceiverDataMessage
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
//if (!GetShutdownState()) //if (!GetShutdownState())
// g_pRIOMain->SetLampState (18, LAMP_BRIGHT);// // g_pRIOMain->SetLampState (18, LAMP_BRIGHT);// hyun
HeatManager *heat; HeatManager *heat;
if (vehicle->IsDerivedFrom (Mech::DefaultData)) if (vehicle->IsDerivedFrom (Mech::DefaultData))
{ {
@@ -11492,7 +11492,7 @@ void VehicleInterface::OverrideShutdownMessageHandler(Adept::ReceiverDataMessage
} }
else { else {
//if (!GetShutdownState()) //if (!GetShutdownState())
// g_pRIOMain->SetLampState (18, LAMP_DEFAULT);// // g_pRIOMain->SetLampState (18, LAMP_DEFAULT);// hyun
} }
} }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -11541,7 +11541,7 @@ void VehicleInterface::RightMFDMessageHandler (Adept::ReceiverDataMessageOf<int>
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (52, LAMP_BRIGHT);// g_pRIOMain->SetLampState (52, LAMP_BRIGHT);// hyun
if(MWGUIManager::GetInstance()) if(MWGUIManager::GetInstance())
{ {
Check_Object(MWGUIManager::GetInstance()); Check_Object(MWGUIManager::GetInstance());
@@ -11552,7 +11552,7 @@ void VehicleInterface::RightMFDMessageHandler (Adept::ReceiverDataMessageOf<int>
} }
else else
{ {
g_pRIOMain->SetLampState (52, LAMP_DEFAULT);// g_pRIOMain->SetLampState (52, LAMP_DEFAULT);// hyun
} }
} }
@@ -11584,12 +11584,12 @@ void VehicleInterface::LeftMFDMessageHandler (Adept::ReceiverDataMessageOf<int>
Verify(message->messageID == LeftMFDMessageID); Verify(message->messageID == LeftMFDMessageID);
if (GetShutdownState()) { if (GetShutdownState()) {
g_pRIOMain->SetLampState (12, LAMP_OFF);// g_pRIOMain->SetLampState (12, LAMP_OFF);// hyun
return; return;
} }
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (12, LAMP_BRIGHT);// g_pRIOMain->SetLampState (12, LAMP_BRIGHT);// hyun
if(MWGUIManager::GetInstance()) if(MWGUIManager::GetInstance())
{ {
Check_Object(MWGUIManager::GetInstance()); Check_Object(MWGUIManager::GetInstance());
@@ -11610,7 +11610,7 @@ void VehicleInterface::LeftMFDMessageHandler (Adept::ReceiverDataMessageOf<int>
} }
else else
{ {
g_pRIOMain->SetLampState (12, LAMP_DEFAULT);// g_pRIOMain->SetLampState (12, LAMP_DEFAULT);// hyun
} }
} }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -11632,12 +11632,12 @@ void VehicleInterface::ToggleRadarPassiveMessageHandler (Adept::ReceiverDataMess
Verify(message->messageID == ToggleRadarPassiveMessageID); Verify(message->messageID == ToggleRadarPassiveMessageID);
if (GetShutdownState()) { if (GetShutdownState()) {
g_pRIOMain->SetLampState (25, LAMP_OFF);// g_pRIOMain->SetLampState (25, LAMP_OFF);// hyun
return; return;
} }
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (25, LAMP_BRIGHT);// g_pRIOMain->SetLampState (25, LAMP_BRIGHT);// hyun
if(!vehicle->vehicleShutDown) if(!vehicle->vehicleShutDown)
{ {
if(MWGUIManager::GetInstance()) if(MWGUIManager::GetInstance())
@@ -11676,7 +11676,7 @@ void VehicleInterface::ToggleRadarPassiveMessageHandler (Adept::ReceiverDataMess
} }
else else
{ {
g_pRIOMain->SetLampState (25, LAMP_DEFAULT);// g_pRIOMain->SetLampState (25, LAMP_DEFAULT);// hyun
} }
} }
@@ -11702,12 +11702,12 @@ void
Verify(message->messageID == ToggleRadarRangeMessageID); Verify(message->messageID == ToggleRadarRangeMessageID);
if (GetShutdownState()) { if (GetShutdownState()) {
g_pRIOMain->SetLampState (24, LAMP_OFF);// g_pRIOMain->SetLampState (24, LAMP_OFF);// hyun
return; return;
} }
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (24, LAMP_BRIGHT);// g_pRIOMain->SetLampState (24, LAMP_BRIGHT);// hyun
if(!vehicle->vehicleShutDown) if(!vehicle->vehicleShutDown)
{ {
if(MWGUIManager::GetInstance()) if(MWGUIManager::GetInstance())
@@ -11739,7 +11739,7 @@ void
} }
else else
{ {
g_pRIOMain->SetLampState (24, LAMP_DEFAULT);// g_pRIOMain->SetLampState (24, LAMP_DEFAULT);// hyun
} }
} }
@@ -13533,13 +13533,13 @@ void VehicleInterface::ShowObjectivesMessageHandler(Adept::ReceiverDataMessageOf
{ {
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (36, LAMP_BRIGHT);// g_pRIOMain->SetLampState (36, LAMP_BRIGHT);// hyun
g_bObjMode = !g_bObjMode; g_bObjMode = !g_bObjMode;
// ObjectiveRenderer::Instance->ToggleObjective (); // ObjectiveRenderer::Instance->ToggleObjective ();
} }
else else
{ {
g_pRIOMain->SetLampState (36, LAMP_DEFAULT);// g_pRIOMain->SetLampState (36, LAMP_DEFAULT);// hyun
} }
} }
else else
@@ -13568,12 +13568,12 @@ void VehicleInterface::MuteMessageHandler(Adept::ReceiverDataMessageOf<int> *mes
if(message->dataContents > 0) if(message->dataContents > 0)
{ {
g_pRIOMain->SetLampState (55, LAMP_BRIGHT);// g_pRIOMain->SetLampState (55, LAMP_BRIGHT);// hyun
g_bMuteMode = !g_bMuteMode; g_bMuteMode = !g_bMuteMode;
} }
else else
{ {
g_pRIOMain->SetLampState (55, LAMP_DEFAULT);// g_pRIOMain->SetLampState (55, LAMP_DEFAULT);// hyun
} }
} }
@@ -13689,7 +13689,7 @@ void
if (GetShutdownState()) { if (GetShutdownState()) {
if (!g_bJumpZoom) if (!g_bJumpZoom)
g_pRIOMain->SetLampState (16, LAMP_OFF);// g_pRIOMain->SetLampState (16, LAMP_OFF);// hyun
g_pRIOMain->SetLampState (51, LAMP_OFF); g_pRIOMain->SetLampState (51, LAMP_OFF);
return; return;
} }
@@ -14489,7 +14489,7 @@ void VehicleInterface::ShowZoom (void)
Check_Object(m_reticuleCamera); Check_Object(m_reticuleCamera);
m_reticuleCamera->GetPerspective(near_clip, far_clip, horizontal_fov, height_to_width); m_reticuleCamera->GetPerspective(near_clip, far_clip, horizontal_fov, height_to_width);
//m_reticuleCamera->SetPerspective(near_clip, far_clip, s_zoomFOV[0], height_to_width); //m_reticuleCamera->SetPerspective(near_clip, far_clip, s_zoomFOV[0], height_to_width);
//상훈 //sanghoon
// jcem - begin // jcem - begin
float fZoom; float fZoom;
gosASSERT(g_fZoomFOVA >= g_fZoomFOVB); gosASSERT(g_fZoomFOVA >= g_fZoomFOVB);
+1 -1
View File
@@ -42,7 +42,7 @@ public:
const char* m_pcsz; const char* m_pcsz;
int m_nLauncherConnection; // 0: no connection, +1: connection, -1: connecting int m_nLauncherConnection; // 0: no connection, +1: connection, -1: connecting
int m_nConnection2; // m_bCameraShip값에 따라 게임 혹은 카메라 쉽과의 접속을 의미, 0: no connection, +1: connection, -1: connecting int m_nConnection2; // Connection to game or camera ship per m_bCameraShip, 0: no connection, +1: connected, -1: connecting
int m_nApplType; int m_nApplType;
int m_nApplState; int m_nApplState;
int m_nGameState; int m_nGameState;
+37 -37
View File
@@ -1,5 +1,5 @@
#include "MW4Headers.hpp" #include "MW4Headers.hpp"
//상훈 앞 //sanghoon begin
#include "MWMission.hpp" #include "MWMission.hpp"
#include "VehicleInterface.hpp" #include "VehicleInterface.hpp"
#include "Vehicle.hpp" #include "Vehicle.hpp"
@@ -21,7 +21,7 @@
#include "mech.hpp" #include "mech.hpp"
#include "mechlabheaders.h" #include "mechlabheaders.h"
#include "bucket.hpp" #include "bucket.hpp"
//상훈 뒤 //sanghoon end
#include "hudcomp.hpp" #include "hudcomp.hpp"
#include "HUDChat.hpp" #include "HUDChat.hpp"
#include "hudcomm.hpp" #include "hudcomm.hpp"
@@ -30,7 +30,7 @@
#include "mwapplication.hpp" #include "mwapplication.hpp"
#include "..\missionlang\resource.h" #include "..\missionlang\resource.h"
//상훈짱 begin //sanghoon begin
#include <windows.h> #include <windows.h>
#include <ddraw.h> #include <ddraw.h>
#include <d3d.h> #include <d3d.h>
@@ -43,7 +43,7 @@
extern Scalar g_fLastStartTime; extern Scalar g_fLastStartTime;
extern Adept::ReplicatorID g_LastTarget; extern Adept::ReplicatorID g_LastTarget;
//상훈짱 end //sanghoon end
extern "C" char* _stdcall CharPrevA(const char* lpszStart, const char* lpszCurrent); extern "C" char* _stdcall CharPrevA(const char* lpszStart, const char* lpszCurrent);
#define CharPrev CharPrevA #define CharPrev CharPrevA
@@ -164,7 +164,7 @@ void HUDChat::Reset (void)
// KillData (); // KillData ();
comm = Cast_Object (HUDComm *, MWGUIManager::GetInstance ()->Component (MWGUIManager::HUD_COMM)); comm = Cast_Object (HUDComm *, MWGUIManager::GetInstance ()->Component (MWGUIManager::HUD_COMM));
//mr_device의 맵 데이타를 로드한다. //Load map data for mr_device.
if(hsh_mrdev_initialized){ if(hsh_mrdev_initialized){
extern char AssetsDirectory1[MAX_PATH]; extern char AssetsDirectory1[MAX_PATH];
const Map__GameModel *model = Map::GetInstance ()->GetGameModel (); const Map__GameModel *model = Map::GetInstance ()->GetGameModel ();
@@ -228,12 +228,12 @@ static const float sm1_offset[][2]={
{ 0*2, 0*2}, //special2 { 0*2, 0*2}, //special2
}; };
//number: 0,1,2,3 lancemate의 순서.. //number: 0,1,2,3 lancemate order..
//part: 해당 lancemate mech의 part //part: mech part of the lancemate
//color:해당 part의 color //color: color for this part
void RenderAux1SmallMech(int num,int part,int color) void RenderAux1SmallMech(int num,int part,int color)
{ {
//각각의 offset에 따라서 그린다. //Draw according to each offset.
if(sm1_texture[part][2]!=0){ if(sm1_texture[part][2]!=0){
mfd_device.DrawTexture( mfd_device.DrawTexture(
sm1_offset[part][0]+190+num*160, sm1_offset[part][0]+190+num*160,
@@ -598,15 +598,15 @@ void HUDChat::DrawImplementation(void)
#endif #endif
if(draw_mr){ if(draw_mr){
//미션 리뷰 내용을 그린다. //Draw mission review content.
//_______________________________________________________________________________________________________ //_______________________________________________________________________________________________________
// //
// Mech상태 및 메시지 // Mech status and messages
//_______________________________________________________________________________________________________ //_______________________________________________________________________________________________________
if(!mr_device.map_loaded){ if(!mr_device.map_loaded){
comm = Cast_Object (HUDComm *, MWGUIManager::GetInstance ()->Component (MWGUIManager::HUD_COMM)); comm = Cast_Object (HUDComm *, MWGUIManager::GetInstance ()->Component (MWGUIManager::HUD_COMM));
//mr_device의 맵 데이타를 로드한다. //Load map data for mr_device.
extern char AssetsDirectory1[MAX_PATH]; extern char AssetsDirectory1[MAX_PATH];
const Map__GameModel *model = Map::GetInstance ()->GetGameModel (); const Map__GameModel *model = Map::GetInstance ()->GetGameModel ();
char temp[256]; char temp[256];
@@ -629,7 +629,7 @@ void HUDChat::DrawImplementation(void)
int mech_count=0; int mech_count=0;
PMechInfo pMechInfos = &g_aMechInfos[0]; PMechInfo pMechInfos = &g_aMechInfos[0];
{ {
//현재 다른 메크들의 이름 /Kill/Death를 그린다. //Draw the name/Kill/Death stats of other mechs.
mech_count=MWApplication::GetInstance()->GetMechInfos(2, g_aMechInfos, g_TeamOrderOthers); mech_count=MWApplication::GetInstance()->GetMechInfos(2, g_aMechInfos, g_TeamOrderOthers);
g_TeamOrderCount=mech_count; g_TeamOrderCount=mech_count;
if (mech_count > 8) // jcem if (mech_count > 8) // jcem
@@ -657,7 +657,7 @@ void HUDChat::DrawImplementation(void)
mr_device.pD3DDevice->SetTexture(0,mr_device.pDDSTexture); mr_device.pD3DDevice->SetTexture(0,mr_device.pDDSTexture);
//메크의 Damage 상태를 그린다. //Draw mech Damage status.
for (j=0;j<11;j++){ for (j=0;j<11;j++){
if (j==7 || j==9 || j==10) if (j==7 || j==9 || j==10)
continue; continue;
@@ -669,7 +669,7 @@ void HUDChat::DrawImplementation(void)
} }
} }
//메크의 Callsign/Score/Kills/Deaths를 그린다. //Draw mech Callsign/Score/Kills/Deaths.
int nScore = 0, nKills = 0, nDeaths = 0; int nScore = 0, nKills = 0, nDeaths = 0;
callsign=pMechInfos->m_pcszName; callsign=pMechInfos->m_pcszName;
if (hud) { if (hud) {
@@ -695,7 +695,7 @@ void HUDChat::DrawImplementation(void)
pMechInfos++; pMechInfos++;
} }
//채팅장의 내용을 그린다. //Draw the contents of the chat window.
stlport::list<ChatData>::iterator iter; stlport::list<ChatData>::iterator iter;
int cy=300+30;//chat_y int cy=300+30;//chat_y
for (iter = m_Messages.begin ();iter != m_Messages.end ();iter++){ for (iter = m_Messages.begin ();iter != m_Messages.end ();iter++){
@@ -733,8 +733,8 @@ void HUDChat::DrawImplementation(void)
int i; int i;
// Secondary Maps // Secondary Maps
//맵과 맵 경계선을 그린다. (게임중에 변하지 않으므로 한번만 그린다.) //Draw map and boundary. (Drawn once since it does not change during game.)
//DrawMapBoundary();//다른 버전 구현할 것... //DrawMapBoundary();//Implement alternate version...
mr_device.pD3DDevice->SetRenderState(D3DRENDERSTATE_CLIPPING ,TRUE); mr_device.pD3DDevice->SetRenderState(D3DRENDERSTATE_CLIPPING ,TRUE);
mr_device.pD3DDevice->SetTexture(0,mr_device.pDDSMapTexture); mr_device.pD3DDevice->SetTexture(0,mr_device.pDDSMapTexture);
mr_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, TRUE ); mr_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, TRUE );
@@ -748,7 +748,7 @@ void HUDChat::DrawImplementation(void)
//MechWarrior4::VehicleInterface* p = MechWarrior4::VehicleInterface::GetInstance(); //MechWarrior4::VehicleInterface* p = MechWarrior4::VehicleInterface::GetInstance();
//미션 리뷰에서는 현재 메크가 중심에 표시되므로 맵이 스크롤 되어 표시된다. //In mission review, current mech is shown at center so the map scrolls.
float MR_MSF=4.0f;//Mission Review - Map Scale Factor float MR_MSF=4.0f;//Mission Review - Map Scale Factor
const float ViewSize=300.0f;//Mission Review - Map Size const float ViewSize=300.0f;//Mission Review - Map Size
const float ViewLMargin=10; const float ViewLMargin=10;
@@ -758,9 +758,9 @@ void HUDChat::DrawImplementation(void)
D3DVIEWPORT7 viewport={ViewLMargin,ViewTMargin,ViewSize,ViewSize,0.0f,1.0f}; D3DVIEWPORT7 viewport={ViewLMargin,ViewTMargin,ViewSize,ViewSize,0.0f,1.0f};
mr_device.pD3DDevice->SetViewport(&viewport); mr_device.pD3DDevice->SetViewport(&viewport);
///////////////////// MAP 시작 ////////////////////// ///////////////////// MAP BEGIN //////////////////////
//Focus Mech를 설정하는 루틴을 넣어야한다. //Need to add routine to set Focus Mech.
Scalar multx,multz; Scalar multx,multz;
@@ -787,10 +787,10 @@ void HUDChat::DrawImplementation(void)
mr_device.pD3DDevice->SetTexture(0,mr_device.pDDSTexture); mr_device.pD3DDevice->SetTexture(0,mr_device.pDDSTexture);
//맵상에 메크들들 그리기.텍스트 먼저.. //Draw mechs on map. Text first..
for(i=0,pMechInfos = &g_aMechInfos[0];i<mech_count;i++,pMechInfos++){ for(i=0,pMechInfos = &g_aMechInfos[0];i<mech_count;i++,pMechInfos++){
Mech* pMech = pMechInfos->m_pMech; Mech* pMech = pMechInfos->m_pMech;
//메크의 위치를 구할 것.. //TODO: get mech position..
Stuff::Point3D pos; Stuff::Point3D pos;
@@ -827,10 +827,10 @@ void HUDChat::DrawImplementation(void)
color,callsign,TEXTALIGN_HCENTER|TEXTALIGN_TOP); color,callsign,TEXTALIGN_HCENTER|TEXTALIGN_TOP);
} }
//아이콘 그리기. //Draw icon.
for(i=0,pMechInfos = &g_aMechInfos[0];i<mech_count;i++,pMechInfos++){ for(i=0,pMechInfos = &g_aMechInfos[0];i<mech_count;i++,pMechInfos++){
Mech* pMech = pMechInfos->m_pMech; Mech* pMech = pMechInfos->m_pMech;
//메크의 위치를 구할 것.. //TODO: get mech position..
Stuff::Point3D pos; Stuff::Point3D pos;
@@ -886,7 +886,7 @@ void HUDChat::DrawImplementation(void)
mr_device.pD3DDevice->SetViewport(&viewport2); mr_device.pD3DDevice->SetViewport(&viewport2);
///////////////////// MAP ////////////////////// ///////////////////// MAP END //////////////////////
//_______________________________________________________________________________________________________ //_______________________________________________________________________________________________________
// //
@@ -894,7 +894,7 @@ void HUDChat::DrawImplementation(void)
//_______________________________________________________________________________________________________ //_______________________________________________________________________________________________________
//미션 시간 그리기...hudtimer.cpp에 DrawImplementation에서 따온것임.. //Draw mission timer... taken from DrawImplementation in hudtimer.cpp..
MWMission *mwmiss = Cast_Object (MWMission *,Mission::GetInstance ()); MWMission *mwmiss = Cast_Object (MWMission *,Mission::GetInstance ());
Verify (mwmiss); Verify (mwmiss);
Stuff::Scalar cur_time=mwmiss->GetMissionTime();//-mwmiss->GetMissionTime(); Stuff::Scalar cur_time=mwmiss->GetMissionTime();//-mwmiss->GetMissionTime();
@@ -923,7 +923,7 @@ void HUDChat::DrawImplementation(void)
if(g_nTeamOrderMode==TEAM_MODE){ if(g_nTeamOrderMode==TEAM_MODE){
int i,j; int i,j;
int size=3; int size=3;
//메크들의 상태를 그린다. //Draw mech status.
PMechInfo pMechInfos = &g_aMechInfos[1]; PMechInfo pMechInfos = &g_aMechInfos[1];
size=MWApplication::GetInstance()->GetMechInfos(0, g_aMechInfos, g_TeamOrderOthers); size=MWApplication::GetInstance()->GetMechInfos(0, g_aMechInfos, g_TeamOrderOthers);
size--; size--;
@@ -970,7 +970,7 @@ void HUDChat::DrawImplementation(void)
pMechInfos++; pMechInfos++;
} }
mfd_device.DrawMFDBackText(mfd_text_comm1); mfd_device.DrawMFDBackText(mfd_text_comm1);
//채팅장의 내용을 그린다. //Draw the contents of the chat window.
stlport::list<ChatData>::iterator iter; stlport::list<ChatData>::iterator iter;
int cy=240;//chat_y int cy=240;//chat_y
for (iter = m_Messages.begin ();iter != m_Messages.end ();iter++){ for (iter = m_Messages.begin ();iter != m_Messages.end ();iter++){
@@ -996,7 +996,7 @@ void HUDChat::DrawImplementation(void)
} }
}else if(g_nTeamOrderMode==FREEFORALL_MODE){ }else if(g_nTeamOrderMode==FREEFORALL_MODE){
//현재 다른 메크들의 이름 /Kill/Death를 그린다. //Draw the name/Kill/Death stats of other mechs.
int size=0; int size=0;
PMechInfo pMechInfos = &g_aMechInfos[1]; PMechInfo pMechInfos = &g_aMechInfos[1];
size=MWApplication::GetInstance()->GetMechInfos(2, g_aMechInfos, g_TeamOrderOthers); size=MWApplication::GetInstance()->GetMechInfos(2, g_aMechInfos, g_TeamOrderOthers);
@@ -1006,10 +1006,10 @@ void HUDChat::DrawImplementation(void)
size = 7; size = 7;
int i; int i;
//번호를 먼저 지운다. //Clear the numbers first.
// MSL 5.03 Comm MFD // MSL 5.03 Comm MFD
for(i=0;i<7;i++)mfd_text_comm3[i][0]=0; for(i=0;i<7;i++)mfd_text_comm3[i][0]=0;
//번호를 채워 넣는다. //Fill in the numbers.
// MSL 5.03 Comm MFD // MSL 5.03 Comm MFD
for(i=0;i<size;i++)itoa(i+1,mfd_text_comm3[i],10); for(i=0;i<size;i++)itoa(i+1,mfd_text_comm3[i],10);
@@ -1064,8 +1064,8 @@ void HUDChat::DrawImplementation(void)
if(size.cx<160){ if(size.cx<160){
mfd_device.pFont[1].DrawText((float)p2->x,(float)p2->y,0xFFFFFFFF,callsign,TEXTALIGN_ORG); mfd_device.pFont[1].DrawText((float)p2->x,(float)p2->y,0xFFFFFFFF,callsign,TEXTALIGN_ORG);
}else{ }else{
//최소크기 폰트도.. 넘어선다... //Even the minimum font size is exceeded...
//2line으로 만든다. //Split into 2 lines.
char callsign2[128]; char callsign2[128];
strcpy(callsign2,callsign); strcpy(callsign2,callsign);
int len2=strlen(callsign)/2; int len2=strlen(callsign)/2;
@@ -1120,7 +1120,7 @@ void HUDChat::DrawImplementation(void)
pMechInfos++; pMechInfos++;
} }
//채팅장의 내용을 그린다. //Draw the contents of the chat window.
stlport::list<ChatData>::iterator iter; stlport::list<ChatData>::iterator iter;
int cy=180;//chat_y int cy=180;//chat_y
for (iter = m_Messages.begin ();iter != m_Messages.end ();iter++){ for (iter = m_Messages.begin ();iter != m_Messages.end ();iter++){
@@ -1145,7 +1145,7 @@ void HUDChat::DrawImplementation(void)
iter = m_Messages.erase (iter); iter = m_Messages.erase (iter);
} }
/* /*
//MWMission.cpp에서 가져온것인 //Taken from MWMission.cpp
MWMission *mwmiss = Cast_Object (MWMission *,Mission::GetInstance ()); MWMission *mwmiss = Cast_Object (MWMission *,Mission::GetInstance ());
int death=0,kill=0;//,score int death=0,kill=0;//,score
@@ -1167,7 +1167,7 @@ void HUDChat::DrawImplementation(void)
}else if(g_nTeamOrderMode==TEAM_MESSAGE2){ }else if(g_nTeamOrderMode==TEAM_MESSAGE2){
;//do nothing ;//do nothing
} }
//상훈 뒤 //sanghoon end
mfd_device.EndChannel(); mfd_device.EndChannel();
} else { } else {
}//hsh_initialized }//hsh_initialized
+4 -4
View File
@@ -1,5 +1,5 @@
#include "MW4Headers.hpp" #include "MW4Headers.hpp"
//상훈 앞 //sanghoon begin
#include "MWMission.hpp" #include "MWMission.hpp"
#include "VehicleInterface.hpp" #include "VehicleInterface.hpp"
#include "Narc.hpp" #include "Narc.hpp"
@@ -13,7 +13,7 @@
#include "mwguimanager.hpp" #include "mwguimanager.hpp"
#include "MWPlayer.hpp" #include "MWPlayer.hpp"
#include <Adept\Mission.hpp> #include <Adept\Mission.hpp>
//상훈 뒤 //sanghoon end
#include "hudcomp.hpp" #include "hudcomp.hpp"
#include "HUDComm.hpp" #include "HUDComm.hpp"
@@ -25,14 +25,14 @@
#include "..\missionlang\resource.h" #include "..\missionlang\resource.h"
#include "mechlabheaders.h" #include "mechlabheaders.h"
//상훈짱 begin //sanghoon begin
#include <windows.h> #include <windows.h>
#include <ddraw.h> #include <ddraw.h>
#include <d3d.h> #include <d3d.h>
#include <GameOS\render.hpp> #include <GameOS\render.hpp>
//상훈짱 end //sanghoon end
using namespace MechWarrior4; using namespace MechWarrior4;
+3 -3
View File
@@ -333,7 +333,7 @@ inline DWORD DarkerColor (DWORD color)
{ m_Justification = value; } { m_Justification = value; }
void Wrap (bool value) void Wrap (bool value)
{ m_Wrap = value; } { m_Wrap = value; }
//상훈 //sanghoon
void SetAsAlt(){ void SetAsAlt(){
m_Font=altFontHandle; m_Font=altFontHandle;
} }
@@ -381,9 +381,9 @@ inline DWORD DarkerColor (DWORD color)
virtual void EndPos (DWORD& x,DWORD& y, bool bAdjust = true); virtual void EndPos (DWORD& x,DWORD& y, bool bAdjust = true);
bool Empty (void) bool Empty (void)
{ return (m_Text[0] == 0); } { return (m_Text[0] == 0); }
//상훈 앞 //sanghoon begin
char *hsh_get_m_Text(){return m_Text;} char *hsh_get_m_Text(){return m_Text;}
//상훈 뒤 //sanghoon end
}; };
class HUDNumberText : public HUDText class HUDNumberText : public HUDText
+10 -10
View File
@@ -95,7 +95,7 @@ void HUDTargetArrow::SetZoomWindow(Stuff::Scalar left,Stuff::Scalar top,Stuff::S
void HUDTargetArrow::DrawImplementation(void) void HUDTargetArrow::DrawImplementation(void)
{ {
//상훈-깜박임 처리는 어디서 하는지 찾아 볼것. //sanghoon - need to find where blink handling is done.
Point3D loc,size; Point3D loc,size;
DWORD color; DWORD color;
int textx,texty,ty2; int textx,texty,ty2;
@@ -208,7 +208,7 @@ void HUDTargetArrow::DrawImplementation(void)
{ {
size = m_Textures[5]->Size (); size = m_Textures[5]->Size ();
m_Textures[5]->Draw (Point3D (m_TargetX,m_TargetY,0.9f),size,color); m_Textures[5]->Draw (Point3D (m_TargetX,m_TargetY,0.9f),size,color);
//꺽쇠 네개가 하나로 합쳐진 텍스쳐... //Texture of four angle brackets merged into one...
} }
else else
{ {
@@ -278,7 +278,7 @@ void HUDTorsoBar::DrawImplementation(void)
Scalar currentxval,currentyval; Scalar currentxval,currentyval;
Point3D size,loc,texsize; Point3D size,loc,texsize;
//x축을 나타내는 그래프를 그리는 루틴... //Routine to draw the graph representing the x-axis...
//_________________________________________________________________________ //_________________________________________________________________________
size = TwistSize (); size = TwistSize ();
texsize = m_Textures[0]->Size (); texsize = m_Textures[0]->Size ();
@@ -289,7 +289,7 @@ void HUDTorsoBar::DrawImplementation(void)
if (currentxval > 0) if (currentxval > 0)
loc.x += 1.0f; loc.x += 1.0f;
DWORD color = DarkerColor (Color ()); DWORD color = DarkerColor (Color ());
//가로 ruler를 그린다.(화살표는 들어있지 않음) //Draw horizontal ruler. (arrows not included)
m_Textures[5]->Draw (loc,m_Textures[5]->Size (),color,HUDTexture::NO_FLIP,true); m_Textures[5]->Draw (loc,m_Textures[5]->Size (),color,HUDTexture::NO_FLIP,true);
color = Color (); color = Color ();
if (currentxval != 0) if (currentxval != 0)
@@ -315,19 +315,19 @@ void HUDTorsoBar::DrawImplementation(void)
ty= (DWORD) (loc.y+size.y+10); ty= (DWORD) (loc.y+size.y+10);
if ((currentxval > 5) || (currentxval < -5)) if ((currentxval > 5) || (currentxval < -5))
{ {
//과도한 twist시에 방향표시해줌.. //Shows direction indicator when torso twist is excessive..
m_TwistText->Draw (Point3D ((Scalar) tx,(Scalar) ty,0.9f)); m_TwistText->Draw (Point3D ((Scalar) tx,(Scalar) ty,0.9f));
} }
//상체표시 사각형.. //Upper body indicator rectangle..
// Changed Torso Bar from Green to Yellow // Changed Torso Bar from Green to Yellow
// MSL 5.00 // MSL 5.00
color = MakeColor (255,255,0,250); color = MakeColor (255,255,0,250);
my_DrawRect (min,(int) loc.y,max,(int) (loc.y+size.y),color); my_DrawRect (min,(int) loc.y,max,(int) (loc.y+size.y),color);
color = DarkerColor (Color ()); color = DarkerColor (Color ());
//위쪽, 상체 방향표시 화살표.. //Top arrow indicating upper body direction..
m_Textures[2]->Draw (Point3D (loc.x-currentxval,loc.y-1,0.9f),texsize,color); m_Textures[2]->Draw (Point3D (loc.x-currentxval,loc.y-1,0.9f),texsize,color);
//아래쪽. 중심표시 화살표.. //Bottom arrow indicating center position..
m_Textures[3]->Draw (Point3D (loc.x-1,loc.y+size.y+1,0.9f),texsize,color); m_Textures[3]->Draw (Point3D (loc.x-1,loc.y+size.y+1,0.9f),texsize,color);
// DrawLine ((int) (loc.x-currentxval),(int) (loc.y-1),(int) (loc.x-currentxval),(int) (loc.y+size.y),color); // DrawLine ((int) (loc.x-currentxval),(int) (loc.y-1),(int) (loc.x-currentxval),(int) (loc.y+size.y),color);
} }
@@ -339,7 +339,7 @@ void HUDTorsoBar::DrawImplementation(void)
// DrawLine ((int) (loc.x),(int) (loc.y-1),(int) (loc.x),(int) (loc.y+size.y),color); // DrawLine ((int) (loc.x),(int) (loc.y-1),(int) (loc.x),(int) (loc.y+size.y),color);
} }
//y축을 나타내는 그래프를 그리는 루틴...<==여기는 과도한 상하를 나타내는 텍스트가 없다. //Routine to draw graph for y-axis... <== no excessive up/down text here.
//_________________________________________________________________________ //_________________________________________________________________________
size = PitchSize (); size = PitchSize ();
currentyval = (m_TorsoPitch*size.y)/100.0f; // 33 is the width of the bar currentyval = (m_TorsoPitch*size.y)/100.0f; // 33 is the width of the bar
@@ -382,7 +382,7 @@ void HUDTorsoBar::DrawImplementation(void)
m_Textures[1]->Draw (Point3D (loc.x+size.x,loc.y,0.9f),texsize,color); m_Textures[1]->Draw (Point3D (loc.x+size.x,loc.y,0.9f),texsize,color);
// DrawLine ((int) (loc.x-1),(int) (loc.y),(int) (loc.x+size.x+2),(int) (loc.y),color); // DrawLine ((int) (loc.x-1),(int) (loc.y),(int) (loc.x+size.x+2),(int) (loc.y),color);
} }
//.. DrawImplementation. //End.. DrawImplementation.
} }
+34 -34
View File
@@ -9,7 +9,7 @@
#include "mwapplication.hpp" #include "mwapplication.hpp"
#include "..\missionlang\resource.h" #include "..\missionlang\resource.h"
//상훈짱 begin //sanghoon begin
#include <windows.h> #include <windows.h>
#include <ddraw.h> #include <ddraw.h>
#include <d3d.h> #include <d3d.h>
@@ -34,7 +34,7 @@ bool g_bNextTargetMode = false;
bool g_bCrossTargetMode = false; bool g_bCrossTargetMode = false;
// MSL 5.03 Secondary Damage Display // MSL 5.03 Secondary Damage Display
int g_nAuxilMode = 0; int g_nAuxilMode = 0;
//상훈짱 end //sanghoon end
using namespace MechWarrior4; using namespace MechWarrior4;
namespace HUDDAMAGE namespace HUDDAMAGE
@@ -330,9 +330,9 @@ HUDDamage::HUDDamage()
Color (MakeColor (0,175,0,150)); Color (MakeColor (0,175,0,150));
m_DamageFlashTime = 0; m_DamageFlashTime = 0;
m_HitFlashTime = 0; m_HitFlashTime = 0;
//상훈 앞 //sanghoon begin
VehicleInterface::GetInstance()->hudDamageMode=false; VehicleInterface::GetInstance()->hudDamageMode=false;
//상훈 뒤 //sanghoon end
m_ArmorMode = VehicleInterface::GetInstance()->hudDamageMode; m_ArmorMode = VehicleInterface::GetInstance()->hudDamageMode;
for (i=0;i<MAX_HUD_DAMAGE_ZONE+1;i++) for (i=0;i<MAX_HUD_DAMAGE_ZONE+1;i++)
{ {
@@ -410,7 +410,7 @@ void HUDDamage::Reset (void)
} }
else else
{ {
//상훈 //sanghoon
mfd_device.LoadDamageTexture(texturename[m_MechID]); mfd_device.LoadDamageTexture(texturename[m_MechID]);
radar_device.LoadRadarDamageTexture(texturename[m_MechID]); radar_device.LoadRadarDamageTexture(texturename[m_MechID]);
} }
@@ -464,7 +464,7 @@ void HUDDamage::ArmorValue (Scalar values[MAX_HUD_DAMAGE_ZONE+1],bool firstpass)
m_ArmorValues[i] = values[i]; m_ArmorValues[i] = values[i];
} }
} }
//상훈 앞 //sanghoon begin
//nst DWORD SH_DamageColor[6]={0xFFFFFFFF,0xFFCCCCCC,0xFF999999,0xFF666666,0xFF333333,0xFF000000}; //nst DWORD SH_DamageColor[6]={0xFFFFFFFF,0xFFCCCCCC,0xFF999999,0xFF666666,0xFF333333,0xFF000000};
const DWORD SH_DamageColor[6]={0xFFFFFFFF,0xFFDDDDDD,0xFFBBBBBB,0xFF999999,0xFF777777,0xFF333333}; const DWORD SH_DamageColor[6]={0xFFFFFFFF,0xFFDDDDDD,0xFFBBBBBB,0xFF999999,0xFF777777,0xFF333333};
@@ -566,7 +566,7 @@ static RECT damage_back_frames[4]={
{504,245,566,382}, {504,245,566,382},
{573,245,634,382}, {573,245,634,382},
}; };
//상훈 뒤 //sanghoon end
void HUDDamage::DrawImplementation(void) void HUDDamage::DrawImplementation(void)
{ {
@@ -632,7 +632,7 @@ void HUDDamage::DrawImplementation(void)
color = Color (); color = Color ();
for (i=0;i<10;i++) for (i=0;i<10;i++)
{ {
//글자를 그리는 곳인가?? //Is this where text is drawn??
m_Textures[20+i]->Draw (Point3D ((Scalar) bartable[i]+1.0f,(Scalar) y,0.9f),size,MakeColor (255,255,255,255),HUDTexture::NO_FLIP,true); m_Textures[20+i]->Draw (Point3D ((Scalar) bartable[i]+1.0f,(Scalar) y,0.9f),size,MakeColor (255,255,255,255),HUDTexture::NO_FLIP,true);
if (!(m_HitFlashCount[trans_array[i]] & 0x01)) if (!(m_HitFlashCount[trans_array[i]] & 0x01))
{ {
@@ -752,7 +752,7 @@ void HUDDamage::DrawImplementation(void)
fred = 0; fred = 0;
for (i=0;i<11;i++) for (i=0;i<11;i++)
{//13이라는 숫자가 의미하는 것은 무엇일까? {//What does the number 13 mean here?
#if 0 #if 0
if (i != fred) if (i != fred)
{ {
@@ -872,7 +872,7 @@ void HUDDamage::DrawImplementation(void)
mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA );
mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA ); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA );
//원래것은..13,14,14,14,14,14,14,14,16,14의 간격을 두고 있다. //The original spacing is 13,14,14,14,14,14,14,14,16,14.
const hsh_bartable[11] = {26+61*0,26+61*1,26+61*2,26+61*3,26+61*4,26+61*5,26+61*6,26+61*7,522,591,540}; const hsh_bartable[11] = {26+61*0,26+61*1,26+61*2,26+61*3,26+61*4,26+61*5,26+61*6,26+61*7,522,591,540};
DWORD color=0xFFFFFFFF; DWORD color=0xFFFFFFFF;
@@ -907,7 +907,7 @@ void HUDDamage::DrawImplementation(void)
radar_device.pDDSTarget->Blt(&rc,NULL,NULL,DDBLT_COLORFILL ,&fx); radar_device.pDDSTarget->Blt(&rc,NULL,NULL,DDBLT_COLORFILL ,&fx);
for (i=0;i<11;i++) for (i=0;i<11;i++)
{//13이라는 숫자가 의미하는 것은 무엇일까? {//What does the number 13 mean here?
int dv=m_DamageValues[i]; int dv=m_DamageValues[i];
DWORD color=0xFF000000; DWORD color=0xFF000000;
if(0<=dv && dv<=5) if(0<=dv && dv<=5)
@@ -948,7 +948,7 @@ void HUDDamage::DrawImplementation(void)
{ {
if (m_ArmorValues[trans_array[i]] != -1) if (m_ArmorValues[trans_array[i]] != -1)
{ {
hsh_x=hsh_bartable[i];//7에서는 예외이다. hsh_x=hsh_bartable[i];//Exception at index 7.
int tr=trans_array[i]; int tr=trans_array[i];
DWORD color=(m_HitFlashCount[tr] & 0x01)? 0xFFFFFFFF : SH_DamageColor[m_DamageValues[tr]]; DWORD color=(m_HitFlashCount[tr] & 0x01)? 0xFFFFFFFF : SH_DamageColor[m_DamageValues[tr]];
@@ -999,7 +999,7 @@ void HUDDamage::DrawImplementation(void)
mfd_device.LoadDamageTexture(texturename[m_MechID]); mfd_device.LoadDamageTexture(texturename[m_MechID]);
for (i=0;i<13;i++) for (i=0;i<13;i++)
{//13이라는 숫자가 의미하는 것은 무엇일까? {//What does the number 13 mean here?
int dv=m_DamageValues[i]; int dv=m_DamageValues[i];
DWORD color=0xFF000000; DWORD color=0xFF000000;
if(0<=dv && dv<=5)color=SH_DamageColor[dv]; if(0<=dv && dv<=5)color=SH_DamageColor[dv];
@@ -1249,7 +1249,7 @@ HUDTargetDamage::HUDTargetDamage() :
m_TargetName->Justification (HUDText::LEFT_ALIGN); m_TargetName->Justification (HUDText::LEFT_ALIGN);
m_TargetRangeText = new HUDNumberText (); m_TargetRangeText = new HUDNumberText ();
m_TargetRangeText->Justification (HUDText::LEFT_ALIGN); m_TargetRangeText->Justification (HUDText::LEFT_ALIGN);
//상훈 //sanghoon
// m_TargetRangeText->SetSize(HUDText::LARGE_SIZE); // m_TargetRangeText->SetSize(HUDText::LARGE_SIZE);
m_TargetRangeText->SetSize(HUDText::MEDIUM_SIZE); m_TargetRangeText->SetSize(HUDText::MEDIUM_SIZE);
m_TargetAlignment = 0; m_TargetAlignment = 0;
@@ -1269,9 +1269,9 @@ HUDTargetDamage::HUDTargetDamage() :
m_TargetMechID = 0; m_TargetMechID = 0;
m_Weapons.clear (); m_Weapons.clear ();
//상훈 앞 //sanghoon begin
VehicleInterface::GetInstance()->hudTargetDamageMode=false; VehicleInterface::GetInstance()->hudTargetDamageMode=false;
//상훈 뒤 //sanghoon end
m_ArmorMode = VehicleInterface::GetInstance()->hudTargetDamageMode; m_ArmorMode = VehicleInterface::GetInstance()->hudTargetDamageMode;
m_LastMechMode = false; m_LastMechMode = false;
} }
@@ -1315,7 +1315,7 @@ void HUDTargetDamage::Reset (void)
} }
else else
{ {
//상훈 //sanghoon
mfd_device.LoadTargetTexture(texturename[m_TargetMechID]); mfd_device.LoadTargetTexture(texturename[m_TargetMechID]);
} }
@@ -1764,7 +1764,7 @@ if(!hsh_initialized){
if (m_TargetTonnage == -1) if (m_TargetTonnage == -1)
{ {
//타켓이 메크가 아닐때.. //When target is not a mech..
Verify (!m_ArmorMode); // only mechs show armor mode Verify (!m_ArmorMode); // only mechs show armor mode
if (m_TargetVehicle.GetCurrent()->IsDerivedFrom (MWObject::DefaultData)) if (m_TargetVehicle.GetCurrent()->IsDerivedFrom (MWObject::DefaultData))
{ {
@@ -1805,7 +1805,7 @@ if(!hsh_initialized){
} }
else else
{ {
//타켓이 메크일때.. //When target is a mech..
Verify (m_TargetVehicle.GetCurrent ()->IsDerivedFrom (Mech::DefaultData)); Verify (m_TargetVehicle.GetCurrent ()->IsDerivedFrom (Mech::DefaultData));
Mech *mech = Cast_Object(Mech *, m_TargetVehicle.GetCurrent()); Mech *mech = Cast_Object(Mech *, m_TargetVehicle.GetCurrent());
Check_Object (mech); Check_Object (mech);
@@ -1826,7 +1826,7 @@ if(!hsh_initialized){
if (m_ArmorMode) if (m_ArmorMode)
{ {
//타켓이 메크이고 아머 모드일때 //When target is a mech and in armor mode
int x,y; int x,y;
size = m_Textures[20]->Size (); size = m_Textures[20]->Size ();
@@ -1897,7 +1897,7 @@ if(!hsh_initialized){
} }
else else
{ {
//상훈 //sanghoon
mfd_device.LoadTargetTexture(texturename[m_TargetMechID]); mfd_device.LoadTargetTexture(texturename[m_TargetMechID]);
} }
@@ -1910,7 +1910,7 @@ if(!hsh_initialized){
fred = 0; fred = 0;
for (i=0;i<11;i++) for (i=0;i<11;i++)
{//13이라는 숫자가 의미하는 것은 무엇일까? {//What does the number 13 mean here?
#if 0 #if 0
if (i != fred) if (i != fred)
{ {
@@ -1983,7 +1983,7 @@ else
if (m_TargetVehicle.GetCurrent ()) if (m_TargetVehicle.GetCurrent ())
{ {
//3D target 또는 2D Target을 그린다. //Draw 3D target or 2D target.
if (!m_ArmorMode) if (!m_ArmorMode)
{ {
if(g_f3dtarget) if(g_f3dtarget)
@@ -2006,19 +2006,19 @@ else
int mechindex=GetMechIndex(model->mechID); int mechindex=GetMechIndex(model->mechID);
if(mechindex>=0) if(mechindex>=0)
{ {
//지원되는 mech만 그린다. //Draw only supported mechs.
// MSL 5.02 Target MFD Image // MSL 5.02 Target MFD Image
int x=(mechindex%8)*128; int x=(mechindex%8)*128;
int y=(mechindex/8)*128; int y=(mechindex/8)*128;
// int x=(mechindex%4)*128; // int x=(mechindex%4)*128;
// int y=(mechindex/4)*128; // int y=(mechindex/4)*128;
//Target을 2D로 그린다. //Draw target in 2D.
mfd_device.pD3DDevice->SetTexture(0,mfd_device.pDDSMechTexture); mfd_device.pD3DDevice->SetTexture(0,mfd_device.pDDSMechTexture);
mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, FALSE); mfd_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, FALSE);
mfd_device.pD3DDevice->SetTextureStageState(0,D3DTSS_MAGFILTER,D3DTFG_LINEAR); mfd_device.pD3DDevice->SetTextureStageState(0,D3DTSS_MAGFILTER,D3DTFG_LINEAR);
mfd_device.pD3DDevice->SetTextureStageState(0,D3DTSS_MINFILTER,D3DTFG_LINEAR); mfd_device.pD3DDevice->SetTextureStageState(0,D3DTSS_MINFILTER,D3DTFG_LINEAR);
//메크의 종류별로 좌표를 계산하는.. 루틴을 작성하여 집어 넣을것... //Need to write routine to calculate coordinates per mech type...
// MSL 5.02 Target MFD Image // MSL 5.02 Target MFD Image
mfd_device.tw=1024,mfd_device.th=1024; mfd_device.tw=1024,mfd_device.th=1024;
// MSL 5.02 Target MFD Image Resize // MSL 5.02 Target MFD Image Resize
@@ -2060,7 +2060,7 @@ else
radar_device.pDDSTarget->Blt(&rc,NULL,NULL,DDBLT_COLORFILL ,&fx); radar_device.pDDSTarget->Blt(&rc,NULL,NULL,DDBLT_COLORFILL ,&fx);
for (int i=0;i<11;i++) for (int i=0;i<11;i++)
{//13이라는 숫자가 의미하는 것은 무엇일까? {//What does the number 13 mean here?
int dv=m_DamageValues[i]; int dv=m_DamageValues[i];
DWORD color=0xFF000000; DWORD color=0xFF000000;
if(0<=dv && dv<=5) if(0<=dv && dv<=5)
@@ -2103,7 +2103,7 @@ else
if (m_ShowData) if (m_ShowData)
{ {
//좌측 하단의 target의 무기의 상태를 표시하는 루틴.. //Routine to display weapon status of target in lower-left..
if (!m_ArmorMode) if (!m_ArmorMode)
{ {
stlport::vector<WeaponData>::iterator iter; stlport::vector<WeaponData>::iterator iter;
@@ -2134,7 +2134,7 @@ else
if (m_TargetTonnage == -1) if (m_TargetTonnage == -1)
{ {
//타켓이 메크가 아닐때.. //When target is not a mech..
Verify (!m_ArmorMode); // only mechs show armor mode Verify (!m_ArmorMode); // only mechs show armor mode
if (m_TargetVehicle.GetCurrent()->IsDerivedFrom (MWObject::DefaultData)) if (m_TargetVehicle.GetCurrent()->IsDerivedFrom (MWObject::DefaultData))
{ {
@@ -2145,7 +2145,7 @@ else
m_ArmorValues[0] = (veh->m_HitPoints / veh->m_MaxHitPoints); m_ArmorValues[0] = (veh->m_HitPoints / veh->m_MaxHitPoints);
if (m_ArmorValues[0] != -1) if (m_ArmorValues[0] != -1)
{ {
//데미지 막대 그래프를 그린다. 높이와 색상 동시에 표현된다. //Draw damage bar graph. Height and color are expressed simultaneously.
int level; int level;
level = (int) ((m_ArmorValues[0]*(MAX_HUD_DAMAGE_LEVEL))+0.5f); level = (int) ((m_ArmorValues[0]*(MAX_HUD_DAMAGE_LEVEL))+0.5f);
level = MAX_HUD_DAMAGE_LEVEL - level; level = MAX_HUD_DAMAGE_LEVEL - level;
@@ -2160,7 +2160,7 @@ else
}//When the target is not a mech. }//When the target is not a mech.
else else
{ {
//타켓이 메크일때.. //When target is a mech..
Verify (m_TargetVehicle.GetCurrent ()->IsDerivedFrom (Mech::DefaultData)); Verify (m_TargetVehicle.GetCurrent ()->IsDerivedFrom (Mech::DefaultData));
Mech *mech = Cast_Object(Mech *, m_TargetVehicle.GetCurrent()); Mech *mech = Cast_Object(Mech *, m_TargetVehicle.GetCurrent());
Check_Object (mech); Check_Object (mech);
@@ -2178,7 +2178,7 @@ else
if (m_ArmorMode) if (m_ArmorMode)
{ {
//타켓이 메크이고 아머 모드일때 //When target is a mech and in armor mode
for (i=0;i<MAX_HUD_DAMAGE_ZONE;i++) for (i=0;i<MAX_HUD_DAMAGE_ZONE;i++)
{ {
int tr=trans_array[i]; int tr=trans_array[i];
@@ -2208,12 +2208,12 @@ else
// MSL 5.03 Target Damage Display // MSL 5.03 Target Damage Display
mfd_device.LoadTargetTexture(texturename[m_TargetMechID]); mfd_device.LoadTargetTexture(texturename[m_TargetMechID]);
//타켓이 메크이고 아머 모드가 아닐때.. //When target is a mech and NOT in armor mode..
if(mfd_device.pDDSTargetTexture==0) if(mfd_device.pDDSTargetTexture==0)
mfd_device.LoadTargetTexture(texturename[m_TargetMechID]); mfd_device.LoadTargetTexture(texturename[m_TargetMechID]);
for (i=0;i<11;i++) for (i=0;i<11;i++)
{//13이라는 숫자가 의미하는 것은 무엇일까? {//What does the number 13 mean here?
int dv=m_DamageValues[i]; int dv=m_DamageValues[i];
DWORD color=0xFF000000; DWORD color=0xFF000000;
if(0<=dv && dv<=5)color=SH_DamageColor[dv]; if(0<=dv && dv<=5)color=SH_DamageColor[dv];
+6 -6
View File
@@ -77,11 +77,11 @@ namespace MechWarrior4
int m_TargetMechID; int m_TargetMechID;
bool m_ShowData; bool m_ShowData;
bool m_LastMechMode; bool m_LastMechMode;
//상훈 앞 //sanghoon begin
public: public:
char hsh_targetname[64]; char hsh_targetname[64];
char hsh_targetrange[64]; char hsh_targetrange[64];
//상훈 뒤 //sanghoon end
public: public:
HUDTargetDamage(); HUDTargetDamage();
@@ -97,10 +97,10 @@ namespace MechWarrior4
void TargetName (char *name) void TargetName (char *name)
{ {
m_TargetName->UpdateText (name); m_TargetName->UpdateText (name);
//상훈 앞 //sanghoon begin
strncpy(hsh_targetname,name,sizeof(hsh_targetname)); strncpy(hsh_targetname,name,sizeof(hsh_targetname));
hsh_targetname[sizeof(hsh_targetname)-1]=0; hsh_targetname[sizeof(hsh_targetname)-1]=0;
//상훈 뒤 //sanghoon end
} }
void TargetRange (Stuff::Scalar value) void TargetRange (Stuff::Scalar value)
{ {
@@ -108,10 +108,10 @@ namespace MechWarrior4
int temp = (int) value; int temp = (int) value;
sprintf (text,"%dm",temp); sprintf (text,"%dm",temp);
m_TargetRangeText->UpdateText (text); m_TargetRangeText->UpdateText (text);
//상훈 앞 //sanghoon begin
strncpy(hsh_targetrange,text,sizeof(hsh_targetrange)); strncpy(hsh_targetrange,text,sizeof(hsh_targetrange));
hsh_targetrange[sizeof(hsh_targetrange)-1]=0; hsh_targetrange[sizeof(hsh_targetrange)-1]=0;
//상훈 뒤 //sanghoon end
} }
void TargetTonnage (Stuff::Scalar value); void TargetTonnage (Stuff::Scalar value);
void TargetAlignment (int value) void TargetAlignment (int value)
+8 -8
View File
@@ -8,14 +8,14 @@
#include "mwapplication.hpp" #include "mwapplication.hpp"
// MSL 5.02 Nav Points // MSL 5.02 Nav Points
#include "navpoint.hpp" #include "navpoint.hpp"
//상훈짱 begin //sanghoon begin
#include <windows.h> #include <windows.h>
#include <ddraw.h> #include <ddraw.h>
#include <d3d.h> #include <d3d.h>
#include <GameOS\render.hpp> #include <GameOS\render.hpp>
extern char AssetsDirectory1[MAX_PATH]; extern char AssetsDirectory1[MAX_PATH];
//상훈짱 end //sanghoon end
const Stuff::Time SHOT_TIME = 2.0; const Stuff::Time SHOT_TIME = 2.0;
@@ -37,7 +37,7 @@ HUDMap::HUDMap():
AddTexture ("hud\\map",0,28,28,228,228); AddTexture ("hud\\map",0,28,28,228,228);
else{ else{
AddTexture (model->m_HudMap,0,0,0,255,255); AddTexture (model->m_HudMap,0,0,0,255,255);
//상훈 앞 //sanghoon begin
radar_device.MapDrawn=false; radar_device.MapDrawn=false;
/* /*
if(hsh_initialized){ if(hsh_initialized){
@@ -49,7 +49,7 @@ HUDMap::HUDMap():
radar_device.MapDrawn=true; radar_device.MapDrawn=true;
} }
*/ */
//상훈 뒤 //sanghoon end
} }
Location (Point3D (301,399,0.9f)); Location (Point3D (301,399,0.9f));
@@ -154,7 +154,7 @@ void HUDMap::DrawImplementation(void)
Point3D loc,size; Point3D loc,size;
int i; int i;
//맵을 그린다. //Draw the map.
Vehicle *vehicle = m_Vehicle.GetCurrent(); Vehicle *vehicle = m_Vehicle.GetCurrent();
loc = Location (); loc = Location ();
@@ -163,7 +163,7 @@ void HUDMap::DrawImplementation(void)
// loc.y -= (size.y/2.0f); // loc.y -= (size.y/2.0f);
m_Textures[0]->Draw (loc,size,MakeColor (255,255,255,255),HUDTexture::NO_FLIP,true); m_Textures[0]->Draw (loc,size,MakeColor (255,255,255,255),HUDTexture::NO_FLIP,true);
//Torso Sweep(파이모양 시야각 표시도형)을 표시한다. //Display Torso Sweep (pie-shaped field-of-view indicator).
if (NULL == vehicle) if (NULL == vehicle)
return; return;
@@ -214,7 +214,7 @@ void HUDMap::DrawImplementation(void)
//Draw Radar Blips //Draw Radar Blips
//레이다의 오브젝트들을 표시한다. //Display radar objects.
MWObject *current_object; MWObject *current_object;
for(i=0;i<vehicle->GetSensor()->numberOfContacts;i++) for(i=0;i<vehicle->GetSensor()->numberOfContacts;i++)
@@ -332,7 +332,7 @@ void HUDMap::DrawImplementation(void)
color = MakeColor (255,255,255,250); color = MakeColor (255,255,255,250);
m_Textures[id+20]->Draw (Point3D (object_display_pos.x,object_display_pos.y,0.9f),size,color,HUDTexture::NO_FLIP,true); m_Textures[id+20]->Draw (Point3D (object_display_pos.x,object_display_pos.y,0.9f),size,color,HUDTexture::NO_FLIP,true);
} }
//작전 범위(Boundary) 표시 다각형(주황빨강) //Operation boundary display polygon (orange-red)
size = Size (); size = Size ();
loc = Location (); loc = Location ();
Mission *miss; Mission *miss;
+2 -2
View File
@@ -34,9 +34,9 @@ namespace MechWarrior4
void DrawImplementation(void); void DrawImplementation(void);
void ConvertMapCoords (float& x,float& y); void ConvertMapCoords (float& x,float& y);
void ConvertMapCoords (Point3D& pt); void ConvertMapCoords (Point3D& pt);
//상훈 앞 //sanghoon begin
bool hsh_fdraw; bool hsh_fdraw;
//상훈 뒤 //sanghoon end
public: public:
HUDMap(); HUDMap();
+5 -5
View File
@@ -90,7 +90,7 @@ get_score:
HUDScore::HUDScore() HUDScore::HUDScore()
{ {
m_AnimTime = 0; m_AnimTime = 0;
//상훈 //sanghoon
Location (Point3D (0,0,0.9f)); Location (Point3D (0,0,0.9f));
// Location (Point3D (200,100,0.9f)); // Location (Point3D (200,100,0.9f));
Size (Point3D (310,300,0.9f)); Size (Point3D (310,300,0.9f));
@@ -128,7 +128,7 @@ HUDScore::HUDScore()
m_PingHeader = new HUDText (); m_PingHeader = new HUDText ();
m_PingHeader ->SetAsAlt(); m_PingHeader ->SetAsAlt();
//상훈 //sanghoon
/* /*
m_PingHeader->Justification (HUDText::LEFT_ALIGN); m_PingHeader->Justification (HUDText::LEFT_ALIGN);
m_PingHeader->UpdateText (app->GetLocString (IDS_PINGHEADER)); m_PingHeader->UpdateText (app->GetLocString (IDS_PINGHEADER));
@@ -444,7 +444,7 @@ void HUDScore::DrawImplementation(void)
m_TimeLeftText->UpdateText (text); m_TimeLeftText->UpdateText (text);
} }
//상훈 //sanghoon
count+=1; count+=1;
loc = Location (); loc = Location ();
loc.y=600-count*LINE_HEIGHT; loc.y=600-count*LINE_HEIGHT;
@@ -455,7 +455,7 @@ void HUDScore::DrawImplementation(void)
DWORD bcolor = BrighterColor (Color ()); DWORD bcolor = BrighterColor (Color ());
//상훈.. //sanghoon
{ {
Stuff::Point3D loc2(800-size.x,600-LINE_HEIGHT-1,0.9f); Stuff::Point3D loc2(800-size.x,600-LINE_HEIGHT-1,0.9f);
LDrawRect (loc2,0,0,size.x,LINE_HEIGHT,MakeColor (0,150,0,128)); LDrawRect (loc2,0,0,size.x,LINE_HEIGHT,MakeColor (0,150,0,128));
@@ -481,7 +481,7 @@ void HUDScore::DrawImplementation(void)
m_PlayerTitle->Draw (Point3D (loc.x+10,yvalue,0.9f)); m_PlayerTitle->Draw (Point3D (loc.x+10,yvalue,0.9f));
DWORD h; DWORD h;
//상훈 //sanghoon
//m_PingHeader->DrawSize (pingwidth,h); //m_PingHeader->DrawSize (pingwidth,h);
//pingx = loc.x + size.x - pingwidth - 10; //pingx = loc.x + size.x - pingwidth - 10;
pingx = loc.x + size.x ; pingx = loc.x + size.x ;
+2 -2
View File
@@ -367,10 +367,10 @@ void HUDReticle::DrawImplementation(void)
m_Textures[36]->Draw (loc,size,m_LeftCenterColor); m_Textures[36]->Draw (loc,size,m_LeftCenterColor);
m_Textures[37]->Draw (loc,size,m_RightCenterColor); m_Textures[37]->Draw (loc,size,m_RightCenterColor);
for (i=0;i<3;i++)//상훈 원래 6이었음 for (i=0;i<3;i++)//sanghoon: originally 6
{ {
size = m_Textures[20+i]->Size (); size = m_Textures[20+i]->Size ();
//CanHit Hudweapon에서 set한다... //CanHit is set in Hudweapon...
if (m_Weapons->CanHit (i)) if (m_Weapons->CanHit (i))
color = MakeColor (0,255,0,255); color = MakeColor (0,255,0,255);
else { else {
+13 -13
View File
@@ -15,14 +15,14 @@ static float RECOVER_FROM_JAMMING_TIME = 5.0f;
// MSL 5.03 Ammo Bay Fire // MSL 5.03 Ammo Bay Fire
static float TIME_AMMO_BAY_FIRE = 7.0f; static float TIME_AMMO_BAY_FIRE = 7.0f;
//상훈짱 begin //sanghoon begin
#include <windows.h> #include <windows.h>
#include <ddraw.h> #include <ddraw.h>
#include <d3d.h> #include <d3d.h>
#include <GameOS\render.hpp> #include <GameOS\render.hpp>
extern bool g_bNoWeaponRangeCheck; extern bool g_bNoWeaponRangeCheck;
//상훈짱 end //sanghoon end
static void MakeStringCaps(char* buffer) static void MakeStringCaps(char* buffer)
{ {
@@ -555,7 +555,7 @@ if(mfd_device.BeginChannel(4))
int rh=25;//row_height int rh=25;//row_height
//16개의 row를 가질수 있는것으로 가정한다.(row포함) //Assumes up to 16 rows (including header row).
// background boxes // background boxes
mfd_device.DrawQuad(0+lm,0+tm,96+lm,(totalcount+1)*rh+10+tm,0xFF404040); mfd_device.DrawQuad(0+lm,0+tm,96+lm,(totalcount+1)*rh+10+tm,0xFF404040);
@@ -609,13 +609,13 @@ if(mfd_device.BeginChannel(4))
DWORD hsh_color1=0,hsh_color2=0; DWORD hsh_color1=0,hsh_color2=0;
//무기 발사가능 상태: 각각의 색상에 대해 정확히 정의 할것. //Weapon fire-ready status: define exact color for each state.
//정상(타겟안에 있음)(발사가능) 0xFFFFFFFF //Normal (target in range)(can fire) 0xFFFFFFFF
//정상(타겟밖에 있음)(발사가능) 0xFFFFFFFF //Normal (target out of range)(can fire) 0xFFFFFFFF
//로딩중(발사 불가) 0xFFA0A0A0 //Reloading (cannot fire) 0xFFA0A0A0
//탄알이 떨어짐(발사불가) 0xFF808080 //Out of ammo (cannot fire) 0xFF808080
//고장남(발사불가) 0xFF606060 //Destroyed (cannot fire) 0xFF606060
DWORD nameheight=30; DWORD nameheight=30;
int top=5+(weapony+1)*rh; int top=5+(weapony+1)*rh;
int bottom = top+rh; int bottom = top+rh;
@@ -694,7 +694,7 @@ if(mfd_device.BeginChannel(4))
char *weapon_string[3]={"1","2","3"}; char *weapon_string[3]={"1","2","3"};
//해당 무기의 그룹의 상태를 표시한다. //Display the status of the weapon group.
for(int i=0;i<3;i++){ for(int i=0;i<3;i++){
DWORD weapon_color=weapon_flag[i]?normal_color:nogroup_color; DWORD weapon_color=weapon_flag[i]?normal_color:nogroup_color;
// MSL 5.00 Added Ammocount check, if = 0 then weapon name same as ammo nogroup_color // MSL 5.00 Added Ammocount check, if = 0 then weapon name same as ammo nogroup_color
@@ -707,7 +707,7 @@ if(mfd_device.BeginChannel(4))
Point3D numsize = m_Textures[20]->Size (); Point3D numsize = m_Textures[20]->Size ();
//무기 이름을 표시한다. //Display weapon name.
// MSL 5.00 Added Ammocount check, if = 0 then weapon name same as ammo out_color // MSL 5.00 Added Ammocount check, if = 0 then weapon name same as ammo out_color
switch (weapon->m_status) switch (weapon->m_status)
{ {
@@ -786,7 +786,7 @@ if(mfd_device.BeginChannel(4))
} }
} }
//현재 엔터키로 발사되는 선택된 무기에 대해서 프레임을 표시한다. //Display frame for the selected weapon currently fired with Enter.
if (weapon->m_weapon == m_SingleFire.GetCurrent ()){ if (weapon->m_weapon == m_SingleFire.GetCurrent ()){
mfd_device.DrawFrame(155+lm,top+1+tm,545+lm,bottom-1+tm,0xFFFFFFFF); mfd_device.DrawFrame(155+lm,top+1+tm,545+lm,bottom-1+tm,0xFFFFFFFF);
} }
@@ -795,7 +795,7 @@ if(mfd_device.BeginChannel(4))
if ((ammocount > -1) && (weapon->m_status != 2)){ if ((ammocount > -1) && (weapon->m_status != 2)){
mfd_device.pFont[0].DrawText(615-5+lm,center+tm,ammocount_color,text,TEXTALIGN_VCENTER|TEXTALIGN_RIGHT); mfd_device.pFont[0].DrawText(615-5+lm,center+tm,ammocount_color,text,TEXTALIGN_VCENTER|TEXTALIGN_RIGHT);
}else if (ammocount == -1){ }else if (ammocount == -1){
//무기수가 제한이 없는 무기의 종류에는 '-'를 표시한다. //Display '-' for weapon types with unlimited ammo.
mfd_device.pFont[0].DrawText(615-5+lm,center+tm,ammocount_color,"-",TEXTALIGN_VCENTER|TEXTALIGN_RIGHT); mfd_device.pFont[0].DrawText(615-5+lm,center+tm,ammocount_color,"-",TEXTALIGN_VCENTER|TEXTALIGN_RIGHT);
} }
weapony ++; weapony ++;
+46 -46
View File
@@ -1008,27 +1008,27 @@ const char* ArmorZoneStr(int nArmorZone)
case Adept::DamageObject::NullArmorZone: case Adept::DamageObject::NullArmorZone:
return "()"; return "()";
case Adept::DamageObject::LeftLegArmorZone: case Adept::DamageObject::LeftLegArmorZone:
return "왼발"; return "Left Leg";
case Adept::DamageObject::RightLegArmorZone: case Adept::DamageObject::RightLegArmorZone:
return "오른발"; return "Right Leg";
case Adept::DamageObject::LeftArmArmorZone: case Adept::DamageObject::LeftArmArmorZone:
return "왼팔"; return "Left Arm";
case Adept::DamageObject::RightArmArmorZone: case Adept::DamageObject::RightArmArmorZone:
return "오른팔"; return "Right Arm";
case Adept::DamageObject::RightTorsoArmorZone: case Adept::DamageObject::RightTorsoArmorZone:
return "우측"; return "Right Torso";
case Adept::DamageObject::LeftTorsoArmorZone: case Adept::DamageObject::LeftTorsoArmorZone:
return "좌측"; return "Left Torso";
case Adept::DamageObject::CenterTorsoArmorZone: case Adept::DamageObject::CenterTorsoArmorZone:
return "전면"; return "Front";
case Adept::DamageObject::CenterRearTorsoArmorZone: case Adept::DamageObject::CenterRearTorsoArmorZone:
return "후면"; return "Rear";
case Adept::DamageObject::HeadArmorZone: case Adept::DamageObject::HeadArmorZone:
return "머리"; return "Head";
case Adept::DamageObject::SpecialArmorZone1: case Adept::DamageObject::SpecialArmorZone1:
return "보조장치1"; return "Aux Device 1";
case Adept::DamageObject::SpecialArmorZone2: case Adept::DamageObject::SpecialArmorZone2:
return "보조장치2"; return "Aux Device 2";
case Adept::DamageObject::DefaultArmorZone: case Adept::DamageObject::DefaultArmorZone:
return "Default"; return "Default";
} }
@@ -1990,83 +1990,83 @@ public:
static SMSGFMT s_aKill[20][2] = { static SMSGFMT s_aKill[20][2] = {
{ {
{ "%s's %s destroys %s's %s!", 0 }, // ok! { "%s's %s destroys %s's %s!", 0 }, // ok!
{ "%s %s, %s의 %s을(를) 파괴하다!", 0 }, // ok! { "%s's %s destroyed %s's %s!", 0 }, // ok!
}, },
{ {
{ "%s's %s explodes in a fire-ball, thanks to %s.", 1 }, // ok! { "%s's %s explodes in a fire-ball, thanks to %s.", 1 }, // ok!
{ "%s %s, 각 기관부의 화염으로 폭발! %s의 절묘한 공격성공!", 1 }, // ok! { "%s's %s explodes in flames! %s lands a perfect hit!", 1 }, // ok!
}, },
{ {
{ "%s delivers the last blow as %s's %s explodes in flames!", 2 }, // ok! { "%s delivers the last blow as %s's %s explodes in flames!", 2 }, // ok!
{ "%s %s %s!", 2 - 100}, // ok! { "%s took a hit to %s's %s!", 2 - 100}, // ok!
}, },
{ {
{ "Smoking wreckage is all that's left of %s's %s after %s delivers the fatal blow!", 1 }, { "Smoking wreckage is all that's left of %s's %s after %s delivers the fatal blow!", 1 },
{ "%s의 무자비한 공격으로 %s의 %s 불타는 잔해만 남길 것이다.", 2 }, // ok! { "%s's merciless assault leaves only burning wreckage of %s's %s.", 2 }, // ok!
}, },
{ {
{ "Glorious victory goes to %s as the wreckage from %s's %s lies burning on the battlefield!", 2 }, { "Glorious victory goes to %s as the wreckage from %s's %s lies burning on the battlefield!", 2 },
{ "전황은 급속도로 진전, %s의 생존가능성은 0%%!", 8 }, // ok! { "The battle escalates rapidly - %s's survival probability is 0%%!", 8 }, // ok!
}, },
{ {
{ "%s's %s is put out of it's misery by a devastating shot from %s.", 1 }, { "%s's %s is put out of it's misery by a devastating shot from %s.", 1 },
{ "%s의 압도적인 화력 앞에 %s 처참히 무너지고 있다.", 4 }, // ok! { "Under %s's overwhelming firepower, %s crumbles miserably.", 4 }, // ok!
}, },
{ {
{ "%s racks up another kill marker from reducing %s's %s to rubble!", 2 }, { "%s racks up another kill marker from reducing %s's %s to rubble!", 2 },
{ "%s %s의 %s을(를) 때려 눕히고, 새로운 킬마크를 얻었다.", 2 }, // ok! { "%s knocked out %s's %s and earned a new kill mark.", 2 }, // ok!
}, },
{ {
{ "Fresh paint is applied to %s's %s to mark the destruction of %s's %s!", 0 }, // ok! { "Fresh paint is applied to %s's %s to mark the destruction of %s's %s!", 0 }, // ok!
{ "%s는 %s를 격추한 킬마크를 %s에 추가했다.", 0 - 100 }, { "%s added a kill mark on %s for shooting down %s.", 0 - 100 },
}, },
{ {
{ "The burning wreckage of %s's %s is a reminder to all of the prowess of %s's battle skills!", 1 }, { "The burning wreckage of %s's %s is a reminder to all of the prowess of %s's battle skills!", 1 },
{ "%s의 잔해는 %s이(가) 가져갈 승리의 기념품이 될것이다.", 7 }, // ok! { "The wreckage of %s will be %s's trophy of victory.", 7 }, // ok!
}, },
{ {
{ "The thunderous explosion of %s's %s is music to the ears of %s!", 1 }, { "The thunderous explosion of %s's %s is music to the ears of %s!", 1 },
{ "%s의 귀에 들려오는 죽음의 전주곡. 지휘자는 %s.", 7 }, // ok! { "A death prelude echoes in %s's ears. The conductor: %s.", 7 }, // ok!
}, },
{ {
{ "%s's %s is destroyed by %s's %s.", 3 }, { "%s's %s is destroyed by %s's %s.", 3 },
{ "%s' %s, %s %s에게 파괴되었다.", 3 }, // ok! { "%s's %s was destroyed by %s's %s.", 3 }, // ok!
}, },
{ {
{ "%s brings the four horseman of the apocalypse down upon %s.", 4 }, { "%s brings the four horseman of the apocalypse down upon %s.", 4 },
{ "%s(이)가 휘두르는 심판의 추가 %s에게 작렬했다.", 4 }, // ok! { "The pendulum of judgment swung by %s strikes %s.", 4 }, // ok!
}, },
{ {
{ "%s's life flashes as %s reduces the %s to a burning wreck.", 5 }, { "%s's life flashes as %s reduces the %s to a burning wreck.", 5 },
{ "%s의 마지막 생명줄에, %s !", 7 - 100 }, // ok! { "On %s's last lifeline, %s!", 7 - 100 }, // ok!
}, },
{ {
{ "%s is deafened by the resounding roar of the exploding %s, thanks to %s.", 1 }, { "%s is deafened by the resounding roar of the exploding %s, thanks to %s.", 1 },
{ "%s 기체의 폭발소리와 함께, 저 하늘로 날아갔다. %s에게 영광을!", 7 }, // ok! { "%s's mech explodes skyward. Glory to %s!", 7 }, // ok!
}, },
{ {
{ "A kill marker is placed on %s's %s to mark the victory over %s.", 6 }, { "A kill marker is placed on %s's %s to mark the victory over %s.", 6 },
{ "%s의 %s에 새로운 킬마크를 추가해야 할 듯, 희생자는 %s", 6 }, // ok! { "A new kill mark should be added to %s's %s, victim: %s", 6 }, // ok!
}, },
{ {
{ "%s is delivered unto the inferno with regards from %s.", 7 }, { "%s is delivered unto the inferno with regards from %s.", 7 },
{ "%s, %s의 호위하에 지옥으로 향했다. %s에게 명복을!", 9 }, // ok! { "%s headed to hell under %s's escort. Rest in peace, %s!", 9 }, // ok!
}, },
{ {
{ "Another kill marker is given up by %s, as %s celebrates victory.", 7 }, { "Another kill marker is given up by %s, as %s celebrates victory.", 7 },
{ "%s, %s의 새로운 킬 마크가 되었다. 영원한 안식을…", 7 - 100 }, { "%s became %s's new kill mark. Rest in peace...", 7 - 100 },
}, },
{ {
{ "Best wishes in the afterlife are presented to %s from %s.", 7 }, { "Best wishes in the afterlife are presented to %s from %s.", 7 },
{ "%s에게 남은 것은 오직 %s에 대한 복수뿐!", 7 }, // ok! { "All that remains for %s is revenge against %s!", 7 }, // ok!
}, },
{ {
{ "Tragedy strikes %s as %s guns the %s down.", 5 }, { "Tragedy strikes %s as %s guns the %s down.", 5 },
{ "%s 모든 화력을 동원해 %s %s을(를) 파괴했다.", 2 }, // ok! { "%s brought all firepower to bear and destroyed %s's %s.", 2 }, // ok!
}, },
{ {
{ "%s earns the revenge of %s after the tragic destruction of the %s.", 2 }, { "%s earns the revenge of %s after the tragic destruction of the %s.", 2 },
{ "%s의 비극적인 최후! %s 절망하는 %s을(를) 지켜볼 뿐이다.", 9 }, // ok! { "A tragic end for %s! %s can only watch %s in despair.", 9 }, // ok!
}, },
}; };
@@ -2077,11 +2077,11 @@ static SMSGFMT s_aKill[20][2] = {
static SMSGFMT s_aSuicide[2][2] = { static SMSGFMT s_aSuicide[2][2] = {
{ {
{ "%s leaves the battlefield in disgrace after causing the destruction of the %s.", 0 }, { "%s leaves the battlefield in disgrace after causing the destruction of the %s.", 0 },
{ "%s 자폭! %s 불명예스럽게 전장을 떠났다!", 2 }, { "%s self-destructed! %s left the battlefield in disgrace!", 2 },
}, },
{ {
{ "%s will not grace the halls of the honored mechwarriors after self-destructing the %s.", 0 }, { "%s will not grace the halls of the honored mechwarriors after self-destructing the %s.", 0 },
{ "%s 자폭! 비겁자여, 진실로 승리를 원하는가?", 3 }, { "%s self-destructed! Coward, do you truly desire victory?", 3 },
}, },
}; };
@@ -2106,43 +2106,43 @@ static SMSGFMT s_aSuicide[2][2] = {
static SMSGFMT s_aShot[10][2] = { static SMSGFMT s_aShot[10][2] = {
{ {
{ "%s's %s fires the %s and damages the %s of %s's %s.", 0 }, { "%s's %s fires the %s and damages the %s of %s's %s.", 0 },
{ "%s %s의 %s에 %s으로 공격했다", 1 }, // ok! { "%s attacked %s's %s with %s", 1 }, // ok!
}, },
{ {
{ "%s fires the %s's %s and decimates the %s of %s's %s.", 2 }, { "%s fires the %s's %s and decimates the %s of %s's %s.", 2 },
{ "%s이(가) 탑승한 %s, %s %s이(가) 탑승한 %s %s에 피해를 입혔다.", 2 }, { "%s piloting %s damaged %s's %s on %s's %s.", 2 },
}, },
{ {
{ "%s's %s takes a devastating hit in the %s from %s.", 3 }, { "%s's %s takes a devastating hit in the %s from %s.", 3 },
{ "%s %s, %s의 압도적인 공격에 %s에 피해를 입었다.", 4 }, // ok! { "%s's %s took damage to the %s under %s's overwhelming attack.", 4 }, // ok!
}, },
{ {
{ "%s's %s suffers a direct hit to it's %s from %s's %s.", 5 }, { "%s's %s suffers a direct hit to it's %s from %s's %s.", 5 },
{ "%s %s은(는) %s %s에 직접적인 피해를 받았다. 피해 %s!", 6 -100}, { "%s's %s took direct damage from %s's %s. Damage: %s!", 6 -100},
}, },
{ {
{ "%s damages %s's %s.", 7 }, { "%s damages %s's %s.", 7 },
{ "%s, %s %s에 피해를 입혔다..", 7 }, // ok! { "%s dealt damage to %s's %s..", 7 }, // ok!
}, },
{ {
{ "Dense black smoke pours from %s's %s as a result of %s's targeted hit.", 8 }, { "Dense black smoke pours from %s's %s as a result of %s's targeted hit.", 8 },
{ "%s의 절묘한 공격으로 %s %s에서 검은 연기가 퍼지고 있다.", 7 }, // ok! { "Black smoke billows from %s's %s from %s's precise attack.", 7 }, // ok!
}, },
{ {
{ "Fire boils from the damaged %s of %s's %s after %s hits it with a %s.", 9 }, { "Fire boils from the damaged %s of %s's %s after %s hits it with a %s.", 9 },
{ "%s %s을(를) 발사하여, %s이(가) 탑승한 %s %s에 피해를 발생시켰다.", 10 }, // ok! { "%s fired %s, dealing damage to the %s of %s's %s.", 10 }, // ok!
}, },
{ {
{ "Smoke and fire are trailing from %s's %s, all results of the %s blast inflicted by %s.", 11 }, { "Smoke and fire are trailing from %s's %s, all results of the %s blast inflicted by %s.", 11 },
{ "%s의 %s 공격에, 불과 연기가 %s의 기체를 뒤덮고 있다.", 15 }, // ok! { "Fire and smoke engulf %s's mech from %s's %s attack.", 15 }, // ok!
}, },
{ {
{ "%s targets and fires the %s; %s cries in dismay as the %s's %s is damaged.", 10 }, { "%s targets and fires the %s; %s cries in dismay as the %s's %s is damaged.", 10 },
{ "%s %s을(를) 조준하여 %s이(가) 탑승한 %s %s에 맞춘 후 방아쇠를 당겼다.", 10 }, // ok! { "%s aimed %s and pulled the trigger, hitting the %s of %s's %s.", 10 }, // ok!
}, },
{ {
{ "%s takes a severe wound to the %s as %s aims for the %s again.", 13 }, { "%s takes a severe wound to the %s as %s aims for the %s again.", 13 },
{ "%s 다시 %s %s을(를) 조준하여 사격했다. %s, %s에 심각한 피해를 입은 듯.", 14 -100}, { "%s aimed again at %s's %s and fired. %s seems to have taken serious damage to %s.", 14 -100},
}, },
}; };
@@ -2150,19 +2150,19 @@ static SMSGFMT s_aShot[10][2] = {
static SMSGFMT s_aCTF[1][2] = { static SMSGFMT s_aCTF[1][2] = {
{ {
{ "%s captured flag.", 0 }, { "%s captured flag.", 0 },
{ "%s, 깃발 획득!.", 0 }, { "%s captured the flag!", 0 },
}, },
}; };
static SMSGFMT s_aFBK[1][2] = { static SMSGFMT s_aFBK[1][2] = {
{ {
{ "%s destroyed friendly building.", 0 }, { "%s destroyed friendly building.", 0 },
{ "%s, 깃발 획득!.", 0 }, { "%s captured the flag!", 0 },
}, },
}; };
static SMSGFMT s_aEBK[1][2] = { static SMSGFMT s_aEBK[1][2] = {
{ {
{ "%s destroyed enemy building.", 0 }, { "%s destroyed enemy building.", 0 },
{ "%s, 깃발 획득!.", 0 }, { "%s captured the flag!", 0 },
}, },
}; };
const SMSGFMT* pcFMT; const SMSGFMT* pcFMT;
@@ -1077,7 +1077,7 @@ int CStrArray::GetTotalLength() const
int nTotalLength; int nTotalLength;
int i, nSize = GetSize(); int i, nSize = GetSize();
nTotalLength = nSize; // nSize개의 '\0' nTotalLength = nSize; // nSize null terminators '\0'
for(i = 0; i < nSize; i++) { for(i = 0; i < nSize; i++) {
nTotalLength += strlen(GetAt(i)); nTotalLength += strlen(GetAt(i));
} }
@@ -2,7 +2,7 @@
#include<Windows.h> #include<Windows.h>
// //
//Do not use .\EulaTest\\1.0 as the key for your game; use your game name and version instead //Do not use ....\EulaTest\\1.0 as the key for your game; use your game name and version instead...
// PLEASE NOTE: do not place backslashes on beginning or end of regkey. // PLEASE NOTE: do not place backslashes on beginning or end of regkey.
// //
@@ -11,7 +11,7 @@
typedef DWORD (*EBUPROC) (LPCTSTR lpRegKeyLocation, LPCTSTR lpEULAFileName, LPCSTR lpWarrantyFileName, BOOL fCheckForFirstRun); typedef DWORD (*EBUPROC) (LPCTSTR lpRegKeyLocation, LPCTSTR lpEULAFileName, LPCSTR lpWarrantyFileName, BOOL fCheckForFirstRun);
// //
//The game applications .RC file should define strings for the EULA and WARRANTY pathnames //The game application's .RC file should define strings for the EULA and WARRANTY pathnames...
// //
@@ -28,13 +28,13 @@ bool FirstRunEula(const char *eula_filename,const char *warranty_filename)
if (NULL == hMod) if (NULL == hMod)
hMod = LoadLibrary("EBUEula.dll"); hMod = LoadLibrary("EBUEula.dll");
if (NULL == hMod) // cant attach to DLL if (NULL == hMod) // can't attach to DLL
{ {
STOP(("Cannot Load EBUEula.dll")); STOP(("Cannot Load EBUEula.dll"));
} }
pfnEBUEula = (EBUPROC) GetProcAddress(hMod, "EBUEula"); pfnEBUEula = (EBUPROC) GetProcAddress(hMod, "EBUEula");
if (NULL == pfnEBUEula) // cant find entry point if (NULL == pfnEBUEula) // can't find entry point
{ {
FreeLibrary(hMod); FreeLibrary(hMod);
STOP(("Cannot Find Entry Point to EBUEula.dll")); STOP(("Cannot Find Entry Point to EBUEula.dll"));
@@ -43,9 +43,9 @@ bool FirstRunEula(const char *eula_filename,const char *warranty_filename)
// //
//This call enables both EULA and warranty accepting/viewing/printing. If your //This call enables both EULA and warranty accepting/viewing/printing. If your
//game doesnt ship with a WARRANTY file, specifiy NULL instead of szWarranty //game doesn't ship with a WARRANTY file, specifiy NULL instead of szWarranty...
//The code below, for instance, works with both OEM and retail builds //The code below, for instance, works with both OEM and retail builds...
// //
const char *pszWarrantyParam = 0xFFFFFFFF != GetFileAttributes(warranty_filename) ? warranty_filename : NULL; const char *pszWarrantyParam = 0xFFFFFFFF != GetFileAttributes(warranty_filename) ? warranty_filename : NULL;
@@ -190,10 +190,10 @@ int bloatSizeTable[8] = {
extern bool(__cdecl *NoCDMessageFunction)(void); extern bool(__cdecl *NoCDMessageFunction)(void);
extern bool gNoDialogs; extern bool gNoDialogs;
//상훈.. begin //sanghoon begin
extern bool use_shgui; extern bool use_shgui;
extern int SCREENS; extern int SCREENS;
//상훈.. end //sanghoon end
bool gRunEula=true; bool gRunEula=true;
bool gNoCD=false; bool gNoCD=false;
@@ -290,13 +290,13 @@ void _stdcall InitializeGameEngine()
// bool needflip=Environment.fullScreen && IsFirstRun(); // bool needflip=Environment.fullScreen && IsFirstRun();
//상훈 앞 //sanghoon begin
bool needflip=false; bool needflip=false;
//상훈 뒤 //sanghoon end
if(needflip){ if(needflip){
//상훈 앞 //sanghoon begin
//MessageBeep(MB_ICONEXCLAMATION); //MessageBeep(MB_ICONEXCLAMATION);
//상훈 뒤 //sanghoon end
EnterWindowMode(); EnterWindowMode();
} }
@@ -336,7 +336,7 @@ void _stdcall InitializeGameEngine()
{ {
//Original //Original
//page->GetEntry("videodriverindex",&Environment.FullScreenDevice); //page->GetEntry("videodriverindex",&Environment.FullScreenDevice);
//상훈 //sanghoon
Environment.FullScreenDevice=0; Environment.FullScreenDevice=0;
page->GetEntry("antialias",&Environment.AntiAlias); page->GetEntry("antialias",&Environment.AntiAlias);
page->GetEntry("bitdepth",&Environment.bitDepth); page->GetEntry("bitdepth",&Environment.bitDepth);
@@ -355,7 +355,7 @@ void _stdcall InitializeGameEngine()
//Original //Original
//page->GetEntry("HudDamageMode",&VehicleInterface::hudDamageMode); //page->GetEntry("HudDamageMode",&VehicleInterface::hudDamageMode);
//page->GetEntry("HudTargetDamageMode",&VehicleInterface::hudTargetDamageMode); //page->GetEntry("HudTargetDamageMode",&VehicleInterface::hudTargetDamageMode);
//상훈 //sanghoon
VehicleInterface::hudDamageMode=false; VehicleInterface::hudDamageMode=false;
VehicleInterface::hudTargetDamageMode=false; VehicleInterface::hudTargetDamageMode=false;
} }
@@ -1088,9 +1088,9 @@ DWORD __stdcall gos_EnableSetting( gosSetting Setting, DWORD Value );
Environment.soundDisable = (strstr(all_lower, "-nosound") != NULL); Environment.soundDisable = (strstr(all_lower, "-nosound") != NULL);
Environment.fullScreen = (strstr(all_lower, "-window") == NULL); Environment.fullScreen = (strstr(all_lower, "-window") == NULL);
//상훈짱.. begin //sanghoon begin
use_shgui=Environment.fullScreen?1:0; use_shgui=Environment.fullScreen?1:0;
//상훈짱.. end //sanghoon end
gNoAutoConfig= (strstr(all_lower, "-noautoconfig") != NULL); gNoAutoConfig= (strstr(all_lower, "-noautoconfig") != NULL);
+22 -22
View File
@@ -517,7 +517,7 @@ void CSOC_Server::OnSendFile()
BYTE bCode; BYTE bCode;
if (Disassemble("B", &bCode)) { if (Disassemble("B", &bCode)) {
ASSERT((bCode == 0) || (bCode == 3)); ASSERT((bCode == 0) || (bCode == 3));
// 받아가시오 from Game to console... // Receiving from Game to console...
SYSTEMTIME* pSysTime; SYSTEMTIME* pSysTime;
WORD wSysTimeSize; WORD wSysTimeSize;
GUID* pGUID; GUID* pGUID;
@@ -533,7 +533,7 @@ void CSOC_Server::OnSendFile()
pSF = g_pCTCLManager->m_SFM_Recv.Find(*pGUID, nType); pSF = g_pCTCLManager->m_SFM_Recv.Find(*pGUID, nType);
if (pSF) { if (pSF) {
if (bCode == 3) { if (bCode == 3) {
// 미션리뷰 서버가 mission review 받았다는 것을 받았느냐? // Did we receive confirmation the mission review server got the mission review?
pSF->m_bProcessed = true; pSF->m_bProcessed = true;
g_pCTCLManager->m_SFM_Recv.Cut(pSF); g_pCTCLManager->m_SFM_Recv.Cut(pSF);
g_pCTCLManager->m_SFM_Done.AddTail(pSF); g_pCTCLManager->m_SFM_Done.AddTail(pSF);
@@ -910,7 +910,7 @@ void CSOC_Client::OnSendFile()
BYTE bCode; BYTE bCode;
if (Disassemble("B", &bCode)) { if (Disassemble("B", &bCode)) {
ASSERT((bCode == 1) || (bCode == 2)); ASSERT((bCode == 1) || (bCode == 2));
// 받았오 from console to Game... // Received from console to Game...
SYSTEMTIME* pSysTime; SYSTEMTIME* pSysTime;
WORD wSysTimeSize; WORD wSysTimeSize;
GUID* pGUID; GUID* pGUID;
@@ -1437,21 +1437,21 @@ void CCTCLManager::Run()
#endif // !defined(CTCL_LAUNCHER) #endif // !defined(CTCL_LAUNCHER)
} else { } else {
/* /*
. Code executed for both client and server.
* *Possible states:
/ .. Before server/client role is determined: waiting for commands
(// .) (Commands such as exit/start-server/start-client may arrive.)
Running as server, waiting for server mech configuration data
(CreateSession가 .) (State after CreateSession has been called.)
Bot들에 Running as server, waiting for Bot information
( .) (Client joining happens automatically between client and server.)
Launch를 Running as server, waiting for Launch
==> . ==>Client has no waiting state as data is transferred immediately on startup.
==> . ==>Define each state and implement the appropriate handling for each.
switch(state){ switch(state){
} }
*/ */
@@ -1533,8 +1533,8 @@ void CCTCLManager::DoMech4Comm()
} }
break; break;
case 1: case 1:
//서버/클라이언트로서 실행준비하도록 명령을 전달한다. //Send command to prepare for execution as server/client.
//또한 서버를 실행하는데 필요한 모든 파라미터도 함께 전달한다. //Also transmit all parameters required to run the server.
for(i = 0; i < g_nPlayerInfos; i++) { for(i = 0; i < g_nPlayerInfos; i++) {
SPlayerInfo& pi = g_aPlayerInfos[i]; SPlayerInfo& pi = g_aPlayerInfos[i];
if (!pi.m_bBot) { if (!pi.m_bBot) {
@@ -1561,12 +1561,12 @@ void CCTCLManager::DoMech4Comm()
} }
} }
if (i == g_nPlayerInfos) { if (i == g_nPlayerInfos) {
// Bot들에 대한 정보를 모두 한데 묶어서 보낸다. // Bundle and send all Bot information together.
CPacket pak(&SVR.GetGameSOC()); CPacket pak(&SVR.GetGameSOC());
pak.Assemble("B", C_BOTS); pak.Assemble("B", C_BOTS);
for(i = 0; i < g_nPlayerInfos; i++) { for(i = 0; i < g_nPlayerInfos; i++) {
if (i != g_nServer) { // 원래 Bot만 지금은 서버를 제외한 전부... if (i != g_nServer) { // Originally bots only; now everyone except the server...
SPlayerInfo& pi = g_aPlayerInfos[i]; SPlayerInfo& pi = g_aPlayerInfos[i];
pak.Assemble("BnsDWwsnn", pi.m_bBot, pi.m_nLevelOrTesla, pi.m_szName, pi.m_nMechIndex, pi.m_fileID, pi.m_recordID, pi.m_szMech, pi.m_nTeamOrSkin, pi.m_nDecal); pak.Assemble("BnsDWwsnn", pi.m_bBot, pi.m_nLevelOrTesla, pi.m_szName, pi.m_nMechIndex, pi.m_fileID, pi.m_recordID, pi.m_szMech, pi.m_nTeamOrSkin, pi.m_nDecal);
} }
@@ -1577,10 +1577,10 @@ void CCTCLManager::DoMech4Comm()
} }
break; break;
case 4: case 4:
// 게임이 성공적으로 만들어지면 서버와 클라이언트들의 Mech에 대한 정보들을 Set한다... // Once the game is successfully created, set Mech info for server and all clients...
if (SOCGame.m_nGameReturn == _EGR_OkCreateSession) { if (SOCGame.m_nGameReturn == _EGR_OkCreateSession) {
for(i = 0; i < g_nPlayerInfos; i++) { for(i = 0; i < g_nPlayerInfos; i++) {
if (i != g_nServer) { // 서버는 이미 SetMech에 진입한 상태... if (i != g_nServer) { // Server has already entered SetMech...
SPlayerInfo& pi = g_aPlayerInfos[i]; SPlayerInfo& pi = g_aPlayerInfos[i];
if (!pi.m_bBot) { if (!pi.m_bBot) {
CTeslaInfo& ti = m_aTIs.GetAt(pi.m_nLevelOrTesla); CTeslaInfo& ti = m_aTIs.GetAt(pi.m_nLevelOrTesla);
@@ -1593,8 +1593,8 @@ void CCTCLManager::DoMech4Comm()
} }
break; break;
case 6: case 6:
//모든 클라이언드들이 서버에 참여하기를 기다린다.<==이 응답은 서버로 부터 얻을 수 있다. //Wait for all clients to join the server. <==This response comes from the server.
//참여가 모두 끝났으면, 서버로 하여금 게임을 Launch시키도록 한다. //Once all clients have joined, instruct the server to Launch the game.
if (SOCGame.m_nGameReturn == _EGR_OkLaunchReady) { if (SOCGame.m_nGameReturn == _EGR_OkLaunchReady) {
g_nMech4Comm = 9; g_nMech4Comm = 9;
} }
+1 -1
View File
@@ -42,7 +42,7 @@ public:
const char* m_pcsz; const char* m_pcsz;
int m_nLauncherConnection; // 0: no connection, +1: connection, -1: connecting int m_nLauncherConnection; // 0: no connection, +1: connection, -1: connecting
int m_nConnection2; // m_bCameraShip값에 따라 게임 혹은 카메라 쉽과의 접속을 의미, 0: no connection, +1: connection, -1: connecting int m_nConnection2; // Connection to game or camera ship per m_bCameraShip, 0: no connection, +1: connected, -1: connecting
int m_nApplType; int m_nApplType;
int m_nApplState; int m_nApplState;
int m_nGameState; int m_nGameState;
@@ -44,7 +44,7 @@ int GetDayEnd(int nYear, int nMonth)
long GetTotalSeconds(int nYear, int nMonth, int nDay) long GetTotalSeconds(int nYear, int nMonth, int nDay)
{ {
// nYear, nMonth, nDay날의 0시 0분 0초를 0으로 한 초단위 수... // Seconds elapsed since 00:00:00 on the date nYear/nMonth/nDay...
ASSERT(nYear >= 1970); ASSERT(nYear >= 1970);
ASSERT((1 <= nMonth) && (nMonth <= 12)); ASSERT((1 <= nMonth) && (nMonth <= 12));
ASSERT(1 <= nDay); ASSERT(1 <= nDay);
@@ -57,13 +57,13 @@ long GetTotalSeconds(int nYear, int nMonth, int nDay)
if (IsLeapYear(nStart)) { if (IsLeapYear(nStart)) {
nDays++; nDays++;
} }
lTotal += nDays * 24 * 60 * 60; // 24시간 60분 60초 lTotal += nDays * 24 * 60 * 60; // 24 hours * 60 min * 60 sec
} }
for(nStart = 1; nStart < nMonth; nStart++) { for(nStart = 1; nStart < nMonth; nStart++) {
int nDayEnd = GetDayEnd(nYear, nStart); int nDayEnd = GetDayEnd(nYear, nStart);
lTotal += nDayEnd * 24 * 60 * 60; // 24시간 60분 60초 lTotal += nDayEnd * 24 * 60 * 60; // 24 hours * 60 min * 60 sec
} }
lTotal += (nDay - 1) * 24 * 60 * 60; // 24시간 60분 60초 lTotal += (nDay - 1) * 24 * 60 * 60; // 24 hours * 60 min * 60 sec
return lTotal; return lTotal;
} }
@@ -16,7 +16,7 @@ class CTimeDate
public: public:
union { union {
struct { struct {
// Bit Field는 앞쪽에 지정된 것이 LowBit이다. // Bit Fields declared first are at the low-bit end.
DWORD m_xDay: 5; // 2^0, 2^5-1 DWORD m_xDay: 5; // 2^0, 2^5-1
DWORD m_xMonth: 4; // 2^5, 2^4-1 DWORD m_xMonth: 4; // 2^5, 2^4-1
DWORD m_xYear: TIMEDATE_YEAR_BITS; // from 1900-2155 // 2^9, 2^8-1 DWORD m_xYear: TIMEDATE_YEAR_BITS; // from 1900-2155 // 2^9, 2^8-1
@@ -1375,7 +1375,7 @@ void CSockAddr::SetTarget(const char* pcszAddr)
{ {
if (pcszAddr) { if (pcszAddr) {
sin_addr.s_addr = inet_addr(pcszAddr); sin_addr.s_addr = inet_addr(pcszAddr);
if (sin_addr.s_addr == INADDR_ANY) { // 0.0.0.0이기 때문에 HOST/Network Addr무관 if (sin_addr.s_addr == INADDR_ANY) { // 0.0.0.0, HOST/Network Addr irrelevant
hostent* pHN = gethostbyname(pcszAddr); hostent* pHN = gethostbyname(pcszAddr);
if (pHN) { if (pHN) {
sin_addr.s_addr = *(u_long*)pHN->h_addr; sin_addr.s_addr = *(u_long*)pHN->h_addr;
@@ -3667,7 +3667,7 @@ CSOCListen* CSOCManager::DoListen(int nPort, PFN_CreateSOCClient pfnCSC, DWORD d
pSOCListen = new CSOCListen(nPort); pSOCListen = new CSOCListen(nPort);
pSOCListen->SetCSCParam(pfnCSC, dwCSCParam1, dwCSCParam2); pSOCListen->SetCSCParam(pfnCSC, dwCSCParam1, dwCSCParam2);
if (!DoListen(pSOCListen, nPort)) { if (!DoListen(pSOCListen, nPort)) {
// 같은 포트를 2번 Listen 하는 경우?... // Case of Listen on the same port twice?...
pSOCListen = NULL; pSOCListen = NULL;
} }
+25 -25
View File
@@ -41,7 +41,7 @@ extern char SERVERID[];
#endif // !MAX_PACKET #endif // !MAX_PACKET
#ifndef MAX_FTPBUF #ifndef MAX_FTPBUF
#define MAX_FTPBUF 1024 #define MAX_FTPBUF 1024
// MAX_FTPBUF는 MAX_PACKET보다 반드시 작아야 한다? // MAX_FTPBUF must be smaller than MAX_PACKET?
// 9+size==sizeof(bCmd) + sizeof(FTID) + sizeof(size) + size // 9+size==sizeof(bCmd) + sizeof(FTID) + sizeof(size) + size
#endif // !MAX_FTPBUF #endif // !MAX_FTPBUF
@@ -251,7 +251,7 @@ private:
#define ESTRF_USER_START 100 #define ESTRF_USER_START 100
#define ESTRF_PASSWORDCHANGED 110 // 로그인하고 있는 동안에 패스워드가 바뀜 #define ESTRF_PASSWORDCHANGED 110 // Password changed while logged in
void Randomize(); void Randomize();
@@ -268,7 +268,7 @@ union UPacketValue
class CDAPacket : public SOCBase_Class class CDAPacket : public SOCBase_Class
{ {
// Packet의 앞 부분을 처리하고 난 뒷 부분의 가변 파라미터... // Variable parameters in the tail portion after processing the packet header...
public: public:
BYTE m_bCmd; BYTE m_bCmd;
BYTE m_bReserved; BYTE m_bReserved;
@@ -361,8 +361,8 @@ public:
#define C_ROOM_MAKE 232 #define C_ROOM_MAKE 232
// s - name, s - password // s - name, s - password
#define C_ROOM_JOIN 233 #define C_ROOM_JOIN 233
// d - number(Room을 떠나는 것은 -1), s - password // d - number (leaving a Room = -1), s - password
#define S_ROOM_JOIN 233 // C_ROOM_MAKE/C_ROOM_JOIN의 결과... #define S_ROOM_JOIN 233 // Result of C_ROOM_MAKE/C_ROOM_JOIN...
// b - code(CSCODE_OK or error code), d - number // b - code(CSCODE_OK or error code), d - number
#define C_ROOM_UPDS 234 // CSCODE_... + @ #define C_ROOM_UPDS 234 // CSCODE_... + @
@@ -384,13 +384,13 @@ public:
#define S_FTP 254 //... see ftp.txt #define S_FTP 254 //... see ftp.txt
#define X_KEEPALIVE 255 // no parameters, should be ignored... #define X_KEEPALIVE 255 // no parameters, should be ignored...
#define TX_SYSTEM 0 // 시스템 메시지... #define TX_SYSTEM 0 // System message...
#define TX_NORMAL 1 // 일반 채팅 텍스트 #define TX_NORMAL 1 // Regular chat text
#define TX_WARNING 2 // 경고 #define TX_WARNING 2 // Warning
#define TX_ERROR 3 // 오류 #define TX_ERROR 3 // Error
#define TX_FATAL 4 // 치명적인 오류 #define TX_FATAL 4 // Fatal error
#define TX_INFO 5 // 사용자 정보 등의 Information Result... #define TX_INFO 5 // Information result (e.g. user info)...
#define TX_SAY 6 // 귓속말 #define TX_SAY 6 // Whisper
#define TX_LOCAL 7 // local echo.... #define TX_LOCAL 7 // local echo....
#define TX_UNKNOWN 0xffff // unknown... #define TX_UNKNOWN 0xffff // unknown...
@@ -493,7 +493,7 @@ CPacket
protected: protected:
CSOC* m_pSOC; CSOC* m_pSOC;
private: private:
// 이 안의 블럭은 반드시 연속해야 한다... // The block within must be contiguous...
WORD m_wLen; WORD m_wLen;
BYTE m_ba[MAX_PACKET]; BYTE m_ba[MAX_PACKET];
// //
@@ -587,7 +587,7 @@ end of variable PACKET_MAP definitions...
class CFileTransfer : public TDBLNK(CFileTransfer*) class CFileTransfer : public TDBLNK(CFileTransfer*)
{ {
public: public:
// 서버로 부터 받은 정보... - 혹은 클라이언트에게 전해줄 정보... // Information received from server... - or information to relay to client...
BOOL m_bClientSite; BOOL m_bClientSite;
DWORD m_dwFTID; DWORD m_dwFTID;
DWORD m_dwGUARD; DWORD m_dwGUARD;
@@ -680,18 +680,18 @@ protected:
// time out to Drop... // time out to Drop...
DWORD m_dwKARcvTimeOut; DWORD m_dwKARcvTimeOut;
#ifdef WIN32 #ifdef WIN32
// 보통 Login과정에 쓰이는 윈도우 핸들 // Window handle typically used during Login process
HWND m_hWndOwner; HWND m_hWndOwner;
#endif // WIN32 #endif // WIN32
// 보통 글로벌 변수로 쓰이는 소켓포인터에 대한 자동 NULL Assign을 위하여 // For auto NULL assignment of socket pointer typically used as a global variable
PSOC* m_ppSOC; PSOC* m_ppSOC;
// 소켓을 구분하기 위하여 사용자 프로그램에서 쓰이는 아이디 // ID used in user program to identify a socket
// 주로 서버의 경우에는 클라이언트가 접속할 때마다 고유 아이디를 부여하여 사용 // Mainly for servers: assigns a unique ID each time a client connects
// 하나의 Client가 다수의 서버에 접속할 때(주로 Star형) 각각의 접속을 구분할 때 사용 // Used to distinguish each connection when a client connects to multiple servers (Star topology)
// 클라이언트가 하나의 서버에만 접속하는 경우 클라이언트가 서버에 접속 중인지 혹은 접속했는지를 판단할 때 // When a client connects to only one server: used to check if client is connecting or already connected
// CSOCManager::FindSOC(CSOC_SERVER_ID==default)->GetConnectionState()를 사용. // Use CSOCManager::FindSOC(CSOC_SERVER_ID==default)->GetConnectionState().
// limits.h를 include해야함. // Must include limits.h.
// CSOC생성시의 기본값: CSOCServer == CSOC_SERVER_ID(=INT_MIN), CSOCClient == CSOC_CLIENT_ID(=0), CSOCListen == CSOC_LISTEN_ID(=-1) // Default values at CSOC creation: CSOCServer==CSOC_SERVER_ID(INT_MIN), CSOCClient==CSOC_CLIENT_ID(0), CSOCListen==CSOC_LISTEN_ID(-1)
union { union {
int m_nID; int m_nID;
UINT m_uID; UINT m_uID;
@@ -725,8 +725,8 @@ protected:
DWORD m_xGracefulRemote: 1; DWORD m_xGracefulRemote: 1;
DWORD m_xAbortyLocal: 1; DWORD m_xAbortyLocal: 1;
DWORD m_xAbortyRemote: 1; DWORD m_xAbortyRemote: 1;
DWORD m_xLoginStarted: 1; // 사용자가 직접 값을 Setting해야 한다. DWORD m_xLoginStarted: 1; // Must be set directly by the caller.
DWORD m_xLoginOK: 1; // 사용자가 직접 값을 Setting해야 한다. DWORD m_xLoginOK: 1; // Must be set directly by the caller.
} m_DW; } m_DW;
DWORD m_dwVarFlags; DWORD m_dwVarFlags;
}; };
@@ -6,7 +6,7 @@ inline BOOL AssertDialog(const char* pcszExpr, const char* pcszfile, int nLine)
{ {
char szBuf[MAX_PATH * 2]; char szBuf[MAX_PATH * 2];
sprintf(szBuf, "\"%s\" 파일의 %d줄에서 ASSERT!!!\n\n디버깅을 하시겠습니까?", pcszfile, nLine); sprintf(szBuf, "ASSERT!!! in \"%s\" at line %d\n\nDo you want to debug?", pcszfile, nLine);
#ifdef WIN32 #ifdef WIN32
return ::MessageBox(NULL, szBuf, pcszExpr, MB_YESNO) == IDYES; return ::MessageBox(NULL, szBuf, pcszExpr, MB_YESNO) == IDYES;
+1 -1
View File
@@ -1077,7 +1077,7 @@ int CStrArray::GetTotalLength() const
int nTotalLength; int nTotalLength;
int i, nSize = GetSize(); int i, nSize = GetSize();
nTotalLength = nSize; // nSize개의 '\0' nTotalLength = nSize; // nSize null terminators '\0'
for(i = 0; i < nSize; i++) { for(i = 0; i < nSize; i++) {
nTotalLength += strlen(GetAt(i)); nTotalLength += strlen(GetAt(i));
} }
@@ -3092,13 +3092,13 @@ bool FirstRunEula(const char *eula_filename,const char *warranty_filename)
if (NULL == hMod) if (NULL == hMod)
hMod = LoadLibrary("EBUEula.dll"); hMod = LoadLibrary("EBUEula.dll");
if (NULL == hMod) // cant attach to DLL if (NULL == hMod) // can't attach to DLL
{ {
STOP(("Cannot Load EBUEula.dll")); STOP(("Cannot Load EBUEula.dll"));
} }
pfnEBUEula = (EBUPROC) GetProcAddress(hMod, "EBUEula"); pfnEBUEula = (EBUPROC) GetProcAddress(hMod, "EBUEula");
if (NULL == pfnEBUEula) // cant find entry point if (NULL == pfnEBUEula) // can't find entry point
{ {
FreeLibrary(hMod); FreeLibrary(hMod);
STOP(("Cannot Find Entry Point to EBUEula.dll")); STOP(("Cannot Find Entry Point to EBUEula.dll"));
@@ -3107,9 +3107,9 @@ bool FirstRunEula(const char *eula_filename,const char *warranty_filename)
// //
//This call enables both EULA and warranty accepting/viewing/printing. If your //This call enables both EULA and warranty accepting/viewing/printing. If your
//game doesnt ship with a WARRANTY file, specifiy NULL instead of szWarranty //game doesn't ship with a WARRANTY file, specifiy NULL instead of szWarranty...
//The code below, for instance, works with both OEM and retail builds //The code below, for instance, works with both OEM and retail builds...
// //
const char *pszWarrantyParam = 0xFFFFFFFF != GetFileAttributes(warranty_filename) ? warranty_filename : NULL; const char *pszWarrantyParam = 0xFFFFFFFF != GetFileAttributes(warranty_filename) ? warranty_filename : NULL;
+22 -22
View File
@@ -517,7 +517,7 @@ void CSOC_Server::OnSendFile()
BYTE bCode; BYTE bCode;
if (Disassemble("B", &bCode)) { if (Disassemble("B", &bCode)) {
ASSERT((bCode == 0) || (bCode == 3)); ASSERT((bCode == 0) || (bCode == 3));
// 받아가시오 from Game to console... // Receiving from Game to console...
SYSTEMTIME* pSysTime; SYSTEMTIME* pSysTime;
WORD wSysTimeSize; WORD wSysTimeSize;
GUID* pGUID; GUID* pGUID;
@@ -533,7 +533,7 @@ void CSOC_Server::OnSendFile()
pSF = g_pCTCLManager->m_SFM_Recv.Find(*pGUID, nType); pSF = g_pCTCLManager->m_SFM_Recv.Find(*pGUID, nType);
if (pSF) { if (pSF) {
if (bCode == 3) { if (bCode == 3) {
// 미션리뷰 서버가 mission review 받았다는 것을 받았느냐? // Did we receive confirmation the mission review server got the mission review?
pSF->m_bProcessed = true; pSF->m_bProcessed = true;
g_pCTCLManager->m_SFM_Recv.Cut(pSF); g_pCTCLManager->m_SFM_Recv.Cut(pSF);
g_pCTCLManager->m_SFM_Done.AddTail(pSF); g_pCTCLManager->m_SFM_Done.AddTail(pSF);
@@ -910,7 +910,7 @@ void CSOC_Client::OnSendFile()
BYTE bCode; BYTE bCode;
if (Disassemble("B", &bCode)) { if (Disassemble("B", &bCode)) {
ASSERT((bCode == 1) || (bCode == 2)); ASSERT((bCode == 1) || (bCode == 2));
// 받았오 from console to Game... // Received from console to Game...
SYSTEMTIME* pSysTime; SYSTEMTIME* pSysTime;
WORD wSysTimeSize; WORD wSysTimeSize;
GUID* pGUID; GUID* pGUID;
@@ -1438,21 +1438,21 @@ void CCTCLManager::Run()
#endif // !defined(CTCL_LAUNCHER) #endif // !defined(CTCL_LAUNCHER)
} else { } else {
/* /*
. Code executed for both client and server.
* *Possible states:
/ .. Before server/client role is determined: waiting for commands
(// .) (Commands such as exit/start-server/start-client may arrive.)
Running as server, waiting for server mech configuration data
(CreateSession가 .) (State after CreateSession has been called.)
Bot들에 Running as server, waiting for Bot information
( .) (Client joining happens automatically between client and server.)
Launch를 Running as server, waiting for Launch
==> . ==>Client has no waiting state as data is transferred immediately on startup.
==> . ==>Define each state and implement the appropriate handling for each.
switch(state){ switch(state){
} }
*/ */
@@ -1534,8 +1534,8 @@ void CCTCLManager::DoMech4Comm()
} }
break; break;
case 1: case 1:
//서버/클라이언트로서 실행준비하도록 명령을 전달한다. //Send command to prepare for execution as server/client.
//또한 서버를 실행하는데 필요한 모든 파라미터도 함께 전달한다. //Also transmit all parameters required to run the server.
for(i = 0; i < g_nPlayerInfos; i++) { for(i = 0; i < g_nPlayerInfos; i++) {
SPlayerInfo& pi = g_aPlayerInfos[i]; SPlayerInfo& pi = g_aPlayerInfos[i];
if (!pi.m_bBot) { if (!pi.m_bBot) {
@@ -1562,12 +1562,12 @@ void CCTCLManager::DoMech4Comm()
} }
} }
if (i == g_nPlayerInfos) { if (i == g_nPlayerInfos) {
// Bot들에 대한 정보를 모두 한데 묶어서 보낸다. // Bundle and send all Bot information together.
CPacket pak(&SVR.GetGameSOC()); CPacket pak(&SVR.GetGameSOC());
pak.Assemble("B", C_BOTS); pak.Assemble("B", C_BOTS);
for(i = 0; i < g_nPlayerInfos; i++) { for(i = 0; i < g_nPlayerInfos; i++) {
if (i != g_nServer) { // 원래 Bot만 지금은 서버를 제외한 전부... if (i != g_nServer) { // Originally bots only; now everyone except the server...
SPlayerInfo& pi = g_aPlayerInfos[i]; SPlayerInfo& pi = g_aPlayerInfos[i];
pak.Assemble("BnsDWwsnn", pi.m_bBot, pi.m_nLevelOrTesla, pi.m_szName, pi.m_nMechIndex, pi.m_fileID, pi.m_recordID, pi.m_szMech, pi.m_nTeamOrSkin, pi.m_nDecal); pak.Assemble("BnsDWwsnn", pi.m_bBot, pi.m_nLevelOrTesla, pi.m_szName, pi.m_nMechIndex, pi.m_fileID, pi.m_recordID, pi.m_szMech, pi.m_nTeamOrSkin, pi.m_nDecal);
} }
@@ -1578,10 +1578,10 @@ void CCTCLManager::DoMech4Comm()
} }
break; break;
case 4: case 4:
// 게임이 성공적으로 만들어지면 서버와 클라이언트들의 Mech에 대한 정보들을 Set한다... // Once the game is successfully created, set Mech info for server and all clients...
if (SOCGame.m_nGameReturn == _EGR_OkCreateSession) { if (SOCGame.m_nGameReturn == _EGR_OkCreateSession) {
for(i = 0; i < g_nPlayerInfos; i++) { for(i = 0; i < g_nPlayerInfos; i++) {
if (i != g_nServer) { // 서버는 이미 SetMech에 진입한 상태... if (i != g_nServer) { // Server has already entered SetMech...
SPlayerInfo& pi = g_aPlayerInfos[i]; SPlayerInfo& pi = g_aPlayerInfos[i];
if (!pi.m_bBot) { if (!pi.m_bBot) {
CTeslaInfo& ti = m_aTIs.GetAt(pi.m_nLevelOrTesla); CTeslaInfo& ti = m_aTIs.GetAt(pi.m_nLevelOrTesla);
@@ -1594,8 +1594,8 @@ void CCTCLManager::DoMech4Comm()
} }
break; break;
case 6: case 6:
//모든 클라이언드들이 서버에 참여하기를 기다린다.<==이 응답은 서버로 부터 얻을 수 있다. //Wait for all clients to join the server. <==This response comes from the server.
//참여가 모두 끝났으면, 서버로 하여금 게임을 Launch시키도록 한다. //Once all clients have joined, instruct the server to Launch the game.
if (SOCGame.m_nGameReturn == _EGR_OkLaunchReady) { if (SOCGame.m_nGameReturn == _EGR_OkLaunchReady) {
g_nMech4Comm = 9; g_nMech4Comm = 9;
} }
+1 -1
View File
@@ -42,7 +42,7 @@ public:
const char* m_pcsz; const char* m_pcsz;
int m_nLauncherConnection; // 0: no connection, +1: connection, -1: connecting int m_nLauncherConnection; // 0: no connection, +1: connection, -1: connecting
int m_nConnection2; // m_bCameraShip값에 따라 게임 혹은 카메라 쉽과의 접속을 의미, 0: no connection, +1: connection, -1: connecting int m_nConnection2; // Connection to game or camera ship per m_bCameraShip, 0: no connection, +1: connected, -1: connecting
int m_nApplType; int m_nApplType;
int m_nApplState; int m_nApplState;
int m_nGameState; int m_nGameState;
+4 -4
View File
@@ -44,7 +44,7 @@ int GetDayEnd(int nYear, int nMonth)
long GetTotalSeconds(int nYear, int nMonth, int nDay) long GetTotalSeconds(int nYear, int nMonth, int nDay)
{ {
// nYear, nMonth, nDay날의 0시 0분 0초를 0으로 한 초단위 수... // Seconds elapsed since 00:00:00 on the date nYear/nMonth/nDay...
ASSERT(nYear >= 1970); ASSERT(nYear >= 1970);
ASSERT((1 <= nMonth) && (nMonth <= 12)); ASSERT((1 <= nMonth) && (nMonth <= 12));
ASSERT(1 <= nDay); ASSERT(1 <= nDay);
@@ -57,13 +57,13 @@ long GetTotalSeconds(int nYear, int nMonth, int nDay)
if (IsLeapYear(nStart)) { if (IsLeapYear(nStart)) {
nDays++; nDays++;
} }
lTotal += nDays * 24 * 60 * 60; // 24시간 60분 60초 lTotal += nDays * 24 * 60 * 60; // 24 hours * 60 min * 60 sec
} }
for(nStart = 1; nStart < nMonth; nStart++) { for(nStart = 1; nStart < nMonth; nStart++) {
int nDayEnd = GetDayEnd(nYear, nStart); int nDayEnd = GetDayEnd(nYear, nStart);
lTotal += nDayEnd * 24 * 60 * 60; // 24시간 60분 60초 lTotal += nDayEnd * 24 * 60 * 60; // 24 hours * 60 min * 60 sec
} }
lTotal += (nDay - 1) * 24 * 60 * 60; // 24시간 60분 60초 lTotal += (nDay - 1) * 24 * 60 * 60; // 24 hours * 60 min * 60 sec
return lTotal; return lTotal;
} }
+1 -1
View File
@@ -16,7 +16,7 @@ class CTimeDate
public: public:
union { union {
struct { struct {
// Bit Field는 앞쪽에 지정된 것이 LowBit이다. // Bit Fields declared first are at the low-bit end.
DWORD m_xDay: 5; // 2^0, 2^5-1 DWORD m_xDay: 5; // 2^0, 2^5-1
DWORD m_xMonth: 4; // 2^5, 2^4-1 DWORD m_xMonth: 4; // 2^5, 2^4-1
DWORD m_xYear: TIMEDATE_YEAR_BITS; // from 1900-2155 // 2^9, 2^8-1 DWORD m_xYear: TIMEDATE_YEAR_BITS; // from 1900-2155 // 2^9, 2^8-1
@@ -1375,7 +1375,7 @@ void CSockAddr::SetTarget(const char* pcszAddr)
{ {
if (pcszAddr) { if (pcszAddr) {
sin_addr.s_addr = inet_addr(pcszAddr); sin_addr.s_addr = inet_addr(pcszAddr);
if (sin_addr.s_addr == INADDR_ANY) { // 0.0.0.0이기 때문에 HOST/Network Addr무관 if (sin_addr.s_addr == INADDR_ANY) { // 0.0.0.0, HOST/Network Addr irrelevant
hostent* pHN = gethostbyname(pcszAddr); hostent* pHN = gethostbyname(pcszAddr);
if (pHN) { if (pHN) {
sin_addr.s_addr = *(u_long*)pHN->h_addr; sin_addr.s_addr = *(u_long*)pHN->h_addr;
@@ -3667,7 +3667,7 @@ CSOCListen* CSOCManager::DoListen(int nPort, PFN_CreateSOCClient pfnCSC, DWORD d
pSOCListen = new CSOCListen(nPort); pSOCListen = new CSOCListen(nPort);
pSOCListen->SetCSCParam(pfnCSC, dwCSCParam1, dwCSCParam2); pSOCListen->SetCSCParam(pfnCSC, dwCSCParam1, dwCSCParam2);
if (!DoListen(pSOCListen, nPort)) { if (!DoListen(pSOCListen, nPort)) {
// 같은 포트를 2번 Listen 하는 경우?... // Case of Listen on the same port twice?...
pSOCListen = NULL; pSOCListen = NULL;
} }
+25 -25
View File
@@ -41,7 +41,7 @@ extern char SERVERID[];
#endif // !MAX_PACKET #endif // !MAX_PACKET
#ifndef MAX_FTPBUF #ifndef MAX_FTPBUF
#define MAX_FTPBUF 1024 #define MAX_FTPBUF 1024
// MAX_FTPBUF는 MAX_PACKET보다 반드시 작아야 한다? // MAX_FTPBUF must be smaller than MAX_PACKET?
// 9+size==sizeof(bCmd) + sizeof(FTID) + sizeof(size) + size // 9+size==sizeof(bCmd) + sizeof(FTID) + sizeof(size) + size
#endif // !MAX_FTPBUF #endif // !MAX_FTPBUF
@@ -251,7 +251,7 @@ private:
#define ESTRF_USER_START 100 #define ESTRF_USER_START 100
#define ESTRF_PASSWORDCHANGED 110 // 로그인하고 있는 동안에 패스워드가 바뀜 #define ESTRF_PASSWORDCHANGED 110 // Password changed while logged in
void Randomize(); void Randomize();
@@ -268,7 +268,7 @@ union UPacketValue
class CDAPacket : public SOCBase_Class class CDAPacket : public SOCBase_Class
{ {
// Packet의 앞 부분을 처리하고 난 뒷 부분의 가변 파라미터... // Variable parameters in the tail portion after processing the packet header...
public: public:
BYTE m_bCmd; BYTE m_bCmd;
BYTE m_bReserved; BYTE m_bReserved;
@@ -361,8 +361,8 @@ public:
#define C_ROOM_MAKE 232 #define C_ROOM_MAKE 232
// s - name, s - password // s - name, s - password
#define C_ROOM_JOIN 233 #define C_ROOM_JOIN 233
// d - number(Room을 떠나는 것은 -1), s - password // d - number (leaving a Room = -1), s - password
#define S_ROOM_JOIN 233 // C_ROOM_MAKE/C_ROOM_JOIN의 결과... #define S_ROOM_JOIN 233 // Result of C_ROOM_MAKE/C_ROOM_JOIN...
// b - code(CSCODE_OK or error code), d - number // b - code(CSCODE_OK or error code), d - number
#define C_ROOM_UPDS 234 // CSCODE_... + @ #define C_ROOM_UPDS 234 // CSCODE_... + @
@@ -384,13 +384,13 @@ public:
#define S_FTP 254 //... see ftp.txt #define S_FTP 254 //... see ftp.txt
#define X_KEEPALIVE 255 // no parameters, should be ignored... #define X_KEEPALIVE 255 // no parameters, should be ignored...
#define TX_SYSTEM 0 // 시스템 메시지... #define TX_SYSTEM 0 // System message...
#define TX_NORMAL 1 // 일반 채팅 텍스트 #define TX_NORMAL 1 // Regular chat text
#define TX_WARNING 2 // 경고 #define TX_WARNING 2 // Warning
#define TX_ERROR 3 // 오류 #define TX_ERROR 3 // Error
#define TX_FATAL 4 // 치명적인 오류 #define TX_FATAL 4 // Fatal error
#define TX_INFO 5 // 사용자 정보 등의 Information Result... #define TX_INFO 5 // Information result (e.g. user info)...
#define TX_SAY 6 // 귓속말 #define TX_SAY 6 // Whisper
#define TX_LOCAL 7 // local echo.... #define TX_LOCAL 7 // local echo....
#define TX_UNKNOWN 0xffff // unknown... #define TX_UNKNOWN 0xffff // unknown...
@@ -493,7 +493,7 @@ CPacket
protected: protected:
CSOC* m_pSOC; CSOC* m_pSOC;
private: private:
// 이 안의 블럭은 반드시 연속해야 한다... // The block within must be contiguous...
WORD m_wLen; WORD m_wLen;
BYTE m_ba[MAX_PACKET]; BYTE m_ba[MAX_PACKET];
// //
@@ -587,7 +587,7 @@ end of variable PACKET_MAP definitions...
class CFileTransfer : public TDBLNK(CFileTransfer*) class CFileTransfer : public TDBLNK(CFileTransfer*)
{ {
public: public:
// 서버로 부터 받은 정보... - 혹은 클라이언트에게 전해줄 정보... // Information received from server... - or information to relay to client...
BOOL m_bClientSite; BOOL m_bClientSite;
DWORD m_dwFTID; DWORD m_dwFTID;
DWORD m_dwGUARD; DWORD m_dwGUARD;
@@ -680,18 +680,18 @@ protected:
// time out to Drop... // time out to Drop...
DWORD m_dwKARcvTimeOut; DWORD m_dwKARcvTimeOut;
#ifdef WIN32 #ifdef WIN32
// 보통 Login과정에 쓰이는 윈도우 핸들 // Window handle typically used during Login process
HWND m_hWndOwner; HWND m_hWndOwner;
#endif // WIN32 #endif // WIN32
// 보통 글로벌 변수로 쓰이는 소켓포인터에 대한 자동 NULL Assign을 위하여 // For auto NULL assignment of socket pointer typically used as a global variable
PSOC* m_ppSOC; PSOC* m_ppSOC;
// 소켓을 구분하기 위하여 사용자 프로그램에서 쓰이는 아이디 // ID used in user program to identify a socket
// 주로 서버의 경우에는 클라이언트가 접속할 때마다 고유 아이디를 부여하여 사용 // Mainly for servers: assigns a unique ID each time a client connects
// 하나의 Client가 다수의 서버에 접속할 때(주로 Star형) 각각의 접속을 구분할 때 사용 // Used to distinguish each connection when a client connects to multiple servers (Star topology)
// 클라이언트가 하나의 서버에만 접속하는 경우 클라이언트가 서버에 접속 중인지 혹은 접속했는지를 판단할 때 // When a client connects to only one server: used to check if client is connecting or already connected
// CSOCManager::FindSOC(CSOC_SERVER_ID==default)->GetConnectionState()를 사용. // Use CSOCManager::FindSOC(CSOC_SERVER_ID==default)->GetConnectionState().
// limits.h를 include해야함. // Must include limits.h.
// CSOC생성시의 기본값: CSOCServer == CSOC_SERVER_ID(=INT_MIN), CSOCClient == CSOC_CLIENT_ID(=0), CSOCListen == CSOC_LISTEN_ID(=-1) // Default values at CSOC creation: CSOCServer==CSOC_SERVER_ID(INT_MIN), CSOCClient==CSOC_CLIENT_ID(0), CSOCListen==CSOC_LISTEN_ID(-1)
union { union {
int m_nID; int m_nID;
UINT m_uID; UINT m_uID;
@@ -725,8 +725,8 @@ protected:
DWORD m_xGracefulRemote: 1; DWORD m_xGracefulRemote: 1;
DWORD m_xAbortyLocal: 1; DWORD m_xAbortyLocal: 1;
DWORD m_xAbortyRemote: 1; DWORD m_xAbortyRemote: 1;
DWORD m_xLoginStarted: 1; // 사용자가 직접 값을 Setting해야 한다. DWORD m_xLoginStarted: 1; // Must be set directly by the caller.
DWORD m_xLoginOK: 1; // 사용자가 직접 값을 Setting해야 한다. DWORD m_xLoginOK: 1; // Must be set directly by the caller.
} m_DW; } m_DW;
DWORD m_dwVarFlags; DWORD m_dwVarFlags;
}; };
+1 -1
View File
@@ -6,7 +6,7 @@ inline BOOL AssertDialog(const char* pcszExpr, const char* pcszfile, int nLine)
{ {
char szBuf[MAX_PATH * 2]; char szBuf[MAX_PATH * 2];
sprintf(szBuf, "\"%s\" 파일의 %d줄에서 ASSERT!!!\n\n디버깅을 하시겠습니까?", pcszfile, nLine); sprintf(szBuf, "ASSERT!!! in \"%s\" at line %d\n\nDo you want to debug?", pcszfile, nLine);
#ifdef WIN32 #ifdef WIN32
return ::MessageBox(NULL, szBuf, pcszExpr, MB_YESNO) == IDYES; return ::MessageBox(NULL, szBuf, pcszExpr, MB_YESNO) == IDYES;
+1 -1
View File
@@ -1077,7 +1077,7 @@ int CStrArray::GetTotalLength() const
int nTotalLength; int nTotalLength;
int i, nSize = GetSize(); int i, nSize = GetSize();
nTotalLength = nSize; // nSize개의 '\0' nTotalLength = nSize; // nSize null terminators '\0'
for(i = 0; i < nSize; i++) { for(i = 0; i < nSize; i++) {
nTotalLength += strlen(GetAt(i)); nTotalLength += strlen(GetAt(i));
} }
+2 -2
View File
@@ -80,7 +80,7 @@ void CSpcFileDialog::SetCustomFilter(const char* pcszName/* = NULL*/, const char
m_ofn.lpstrCustomFilter = p; m_ofn.lpstrCustomFilter = p;
if (!pcszName) { if (!pcszName) {
pcszName = "사용자 정의 파일"; pcszName = "User-defined file";
} }
strcpy(p, pcszName); strcpy(p, pcszName);
p = &p[strlen(pcszName)]; p = &p[strlen(pcszName)];
@@ -111,7 +111,7 @@ BOOL CSpcFileDialog::DoMessage(HWND hParent, UINT uMsg, WPARAM wParam, LPARAM lP
switch(uMsg) { switch(uMsg) {
case WM_INITDIALOG: case WM_INITDIALOG:
if (m_dwStyle) { if (m_dwStyle) {
//0x480 // 파일 이름 Edit //0x480 // File Name Edit
HWND hReadOnly = ::GetDlgItem(hParent, 0x0410); // Read Only HWND hReadOnly = ::GetDlgItem(hParent, 0x0410); // Read Only
if (hReadOnly) { if (hReadOnly) {
if (m_dwStyle == (DWORD)(-1)) { if (m_dwStyle == (DWORD)(-1)) {
+2 -2
View File
@@ -21,8 +21,8 @@ public:
CSpcFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL); CSpcFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL);
void SetTitle(const char* pcszTitle); void SetTitle(const char* pcszTitle);
void SetWorkingDir(const char* pcszWorkingDir); void SetWorkingDir(const char* pcszWorkingDir);
void SetFilterIndex(int nFilterIndex); // 1 기준한 값, 0은 사용자 필터 void SetFilterIndex(int nFilterIndex); // 1-based index, 0 = user-defined filter
int GetFilterIndex() const; // 1 기준한 값, 0은 사용자 필터 int GetFilterIndex() const; // 1-based index, 0 = user-defined filter
void SetCustomFilter(const char* pcszName = NULL, const char* pcszExt = NULL); void SetCustomFilter(const char* pcszName = NULL, const char* pcszExt = NULL);
void EnableHook(const char* pcszWindowText, DWORD dwStyle = (DWORD)(-1)); void EnableHook(const char* pcszWindowText, DWORD dwStyle = (DWORD)(-1));
+46 -46
View File
@@ -1008,27 +1008,27 @@ const char* ArmorZoneStr(int nArmorZone)
case Adept::DamageObject::NullArmorZone: case Adept::DamageObject::NullArmorZone:
return "()"; return "()";
case Adept::DamageObject::LeftLegArmorZone: case Adept::DamageObject::LeftLegArmorZone:
return "왼발"; return "Left Leg";
case Adept::DamageObject::RightLegArmorZone: case Adept::DamageObject::RightLegArmorZone:
return "오른발"; return "Right Leg";
case Adept::DamageObject::LeftArmArmorZone: case Adept::DamageObject::LeftArmArmorZone:
return "왼팔"; return "Left Arm";
case Adept::DamageObject::RightArmArmorZone: case Adept::DamageObject::RightArmArmorZone:
return "오른팔"; return "Right Arm";
case Adept::DamageObject::RightTorsoArmorZone: case Adept::DamageObject::RightTorsoArmorZone:
return "우측"; return "Right Torso";
case Adept::DamageObject::LeftTorsoArmorZone: case Adept::DamageObject::LeftTorsoArmorZone:
return "좌측"; return "Left Torso";
case Adept::DamageObject::CenterTorsoArmorZone: case Adept::DamageObject::CenterTorsoArmorZone:
return "전면"; return "Front";
case Adept::DamageObject::CenterRearTorsoArmorZone: case Adept::DamageObject::CenterRearTorsoArmorZone:
return "후면"; return "Rear";
case Adept::DamageObject::HeadArmorZone: case Adept::DamageObject::HeadArmorZone:
return "머리"; return "Head";
case Adept::DamageObject::SpecialArmorZone1: case Adept::DamageObject::SpecialArmorZone1:
return "보조장치1"; return "Aux Device 1";
case Adept::DamageObject::SpecialArmorZone2: case Adept::DamageObject::SpecialArmorZone2:
return "보조장치2"; return "Aux Device 2";
case Adept::DamageObject::DefaultArmorZone: case Adept::DamageObject::DefaultArmorZone:
return "Default"; return "Default";
} }
@@ -1996,83 +1996,83 @@ public:
static SMSGFMT s_aKill[20][2] = { static SMSGFMT s_aKill[20][2] = {
{ {
{ "%s's %s destroys %s's %s!", 0 }, // ok! { "%s's %s destroys %s's %s!", 0 }, // ok!
{ "%s %s, %s의 %s을(를) 파괴하다!", 0 }, // ok! { "%s's %s destroyed %s's %s!", 0 }, // ok!
}, },
{ {
{ "%s's %s explodes in a fire-ball, thanks to %s.", 1 }, // ok! { "%s's %s explodes in a fire-ball, thanks to %s.", 1 }, // ok!
{ "%s %s, 각 기관부의 화염으로 폭발! %s의 절묘한 공격성공!", 1 }, // ok! { "%s's %s explodes in flames! %s lands a perfect hit!", 1 }, // ok!
}, },
{ {
{ "%s delivers the last blow as %s's %s explodes in flames!", 2 }, // ok! { "%s delivers the last blow as %s's %s explodes in flames!", 2 }, // ok!
{ "%s %s %s!", 2 - 100}, // ok! { "%s took a hit to %s's %s!", 2 - 100}, // ok!
}, },
{ {
{ "Smoking wreckage is all that's left of %s's %s after %s delivers the fatal blow!", 1 }, { "Smoking wreckage is all that's left of %s's %s after %s delivers the fatal blow!", 1 },
{ "%s의 무자비한 공격으로 %s의 %s 불타는 잔해만 남길 것이다.", 2 }, // ok! { "%s's merciless assault leaves only burning wreckage of %s's %s.", 2 }, // ok!
}, },
{ {
{ "Glorious victory goes to %s as the wreckage from %s's %s lies burning on the battlefield!", 2 }, { "Glorious victory goes to %s as the wreckage from %s's %s lies burning on the battlefield!", 2 },
{ "전황은 급속도로 진전, %s의 생존가능성은 0%%!", 8 }, // ok! { "The battle escalates rapidly - %s's survival probability is 0%%!", 8 }, // ok!
}, },
{ {
{ "%s's %s is put out of it's misery by a devastating shot from %s.", 1 }, { "%s's %s is put out of it's misery by a devastating shot from %s.", 1 },
{ "%s의 압도적인 화력 앞에 %s 처참히 무너지고 있다.", 4 }, // ok! { "Under %s's overwhelming firepower, %s crumbles miserably.", 4 }, // ok!
}, },
{ {
{ "%s racks up another kill marker from reducing %s's %s to rubble!", 2 }, { "%s racks up another kill marker from reducing %s's %s to rubble!", 2 },
{ "%s %s의 %s을(를) 때려 눕히고, 새로운 킬마크를 얻었다.", 2 }, // ok! { "%s knocked out %s's %s and earned a new kill mark.", 2 }, // ok!
}, },
{ {
{ "Fresh paint is applied to %s's %s to mark the destruction of %s's %s!", 0 }, // ok! { "Fresh paint is applied to %s's %s to mark the destruction of %s's %s!", 0 }, // ok!
{ "%s는 %s를 격추한 킬마크를 %s에 추가했다.", 0 - 100 }, { "%s added a kill mark on %s for shooting down %s.", 0 - 100 },
}, },
{ {
{ "The burning wreckage of %s's %s is a reminder to all of the prowess of %s's battle skills!", 1 }, { "The burning wreckage of %s's %s is a reminder to all of the prowess of %s's battle skills!", 1 },
{ "%s의 잔해는 %s이(가) 가져갈 승리의 기념품이 될것이다.", 7 }, // ok! { "The wreckage of %s will be %s's trophy of victory.", 7 }, // ok!
}, },
{ {
{ "The thunderous explosion of %s's %s is music to the ears of %s!", 1 }, { "The thunderous explosion of %s's %s is music to the ears of %s!", 1 },
{ "%s의 귀에 들려오는 죽음의 전주곡. 지휘자는 %s.", 7 }, // ok! { "A death prelude echoes in %s's ears. The conductor: %s.", 7 }, // ok!
}, },
{ {
{ "%s's %s is destroyed by %s's %s.", 3 }, { "%s's %s is destroyed by %s's %s.", 3 },
{ "%s' %s, %s %s에게 파괴되었다.", 3 }, // ok! { "%s's %s was destroyed by %s's %s.", 3 }, // ok!
}, },
{ {
{ "%s brings the four horsemen of the apocalypse down upon %s.", 4 }, { "%s brings the four horsemen of the apocalypse down upon %s.", 4 },
{ "%s(이)가 휘두르는 심판의 추가 %s에게 작렬했다.", 4 }, // ok! { "The pendulum of judgment swung by %s strikes %s.", 4 }, // ok!
}, },
{ {
{ "%s's life flashes as %s reduces the %s to a burning wreck.", 5 }, { "%s's life flashes as %s reduces the %s to a burning wreck.", 5 },
{ "%s의 마지막 생명줄에, %s !", 7 - 100 }, // ok! { "On %s's last lifeline, %s!", 7 - 100 }, // ok!
}, },
{ {
{ "%s is deafened by the resounding roar of the exploding %s, thanks to %s.", 1 }, { "%s is deafened by the resounding roar of the exploding %s, thanks to %s.", 1 },
{ "%s 기체의 폭발소리와 함께, 저 하늘로 날아갔다. %s에게 영광을!", 7 }, // ok! { "%s's mech explodes skyward. Glory to %s!", 7 }, // ok!
}, },
{ {
{ "A kill marker is placed on %s's %s to mark the victory over %s.", 6 }, { "A kill marker is placed on %s's %s to mark the victory over %s.", 6 },
{ "%s의 %s에 새로운 킬마크를 추가해야 할 듯, 희생자는 %s", 6 }, // ok! { "A new kill mark should be added to %s's %s, victim: %s", 6 }, // ok!
}, },
{ {
{ "%s is delivered unto the inferno with regards from %s.", 7 }, { "%s is delivered unto the inferno with regards from %s.", 7 },
{ "%s, %s의 호위하에 지옥으로 향했다. %s에게 명복을!", 9 }, // ok! { "%s headed to hell under %s's escort. Rest in peace, %s!", 9 }, // ok!
}, },
{ {
{ "Another kill marker is given up by %s, as %s celebrates victory.", 7 }, { "Another kill marker is given up by %s, as %s celebrates victory.", 7 },
{ "%s, %s의 새로운 킬 마크가 되었다. 영원한 안식을…", 7 - 100 }, { "%s became %s's new kill mark. Rest in peace...", 7 - 100 },
}, },
{ {
{ "Best wishes in the afterlife are presented to %s from %s.", 7 }, { "Best wishes in the afterlife are presented to %s from %s.", 7 },
{ "%s에게 남은 것은 오직 %s에 대한 복수뿐!", 7 }, // ok! { "All that remains for %s is revenge against %s!", 7 }, // ok!
}, },
{ {
{ "Tragedy strikes %s as %s guns the %s down.", 5 }, { "Tragedy strikes %s as %s guns the %s down.", 5 },
{ "%s 모든 화력을 동원해 %s %s을(를) 파괴했다.", 2 }, // ok! { "%s brought all firepower to bear and destroyed %s's %s.", 2 }, // ok!
}, },
{ {
{ "%s earns the revenge of %s after the tragic destruction of the %s.", 2 }, { "%s earns the revenge of %s after the tragic destruction of the %s.", 2 },
{ "%s의 비극적인 최후! %s 절망하는 %s을(를) 지켜볼 뿐이다.", 9 }, // ok! { "A tragic end for %s! %s can only watch %s in despair.", 9 }, // ok!
}, },
}; };
@@ -2083,11 +2083,11 @@ static SMSGFMT s_aKill[20][2] = {
static SMSGFMT s_aSuicide[2][2] = { static SMSGFMT s_aSuicide[2][2] = {
{ {
{ "%s leaves the battlefield in disgrace after causing the destruction of the %s.", 0 }, { "%s leaves the battlefield in disgrace after causing the destruction of the %s.", 0 },
{ "%s 자폭! %s 불명예스럽게 전장을 떠났다!", 2 }, { "%s self-destructed! %s left the battlefield in disgrace!", 2 },
}, },
{ {
{ "%s will not grace the halls of the honored mechwarriors after self-destructing the %s.", 0 }, { "%s will not grace the halls of the honored mechwarriors after self-destructing the %s.", 0 },
{ "%s 자폭! 비겁자여, 진실로 승리를 원하는가?", 3 }, { "%s self-destructed! Coward, do you truly desire victory?", 3 },
}, },
}; };
@@ -2112,43 +2112,43 @@ static SMSGFMT s_aSuicide[2][2] = {
static SMSGFMT s_aShot[10][2] = { static SMSGFMT s_aShot[10][2] = {
{ {
{ "%s's %s fires the %s and damages the %s of %s's %s.", 0 }, { "%s's %s fires the %s and damages the %s of %s's %s.", 0 },
{ "%s %s의 %s에 %s으로 공격했다", 1 }, // ok! { "%s attacked %s's %s with %s", 1 }, // ok!
}, },
{ {
{ "%s fires the %s's %s and decimates the %s of %s's %s.", 2 }, { "%s fires the %s's %s and decimates the %s of %s's %s.", 2 },
{ "%s이(가) 탑승한 %s, %s %s이(가) 탑승한 %s %s에 피해를 입혔다.", 2 }, { "%s piloting %s damaged %s's %s on %s's %s.", 2 },
}, },
{ {
{ "%s's %s takes a devastating hit in the %s from %s.", 3 }, { "%s's %s takes a devastating hit in the %s from %s.", 3 },
{ "%s %s, %s의 압도적인 공격에 %s에 피해를 입었다.", 4 }, // ok! { "%s's %s took damage to the %s under %s's overwhelming attack.", 4 }, // ok!
}, },
{ {
{ "%s's %s suffers a direct hit to it's %s from %s's %s.", 5 }, { "%s's %s suffers a direct hit to it's %s from %s's %s.", 5 },
{ "%s %s은(는) %s %s에 직접적인 피해를 받았다. 피해 %s!", 6 -100}, { "%s's %s took direct damage from %s's %s. Damage: %s!", 6 -100},
}, },
{ {
{ "%s damages %s's %s.", 7 }, { "%s damages %s's %s.", 7 },
{ "%s, %s %s에 피해를 입혔다..", 7 }, // ok! { "%s dealt damage to %s's %s..", 7 }, // ok!
}, },
{ {
{ "Dense black smoke pours from %s's %s as a result of %s's targeted hit.", 8 }, { "Dense black smoke pours from %s's %s as a result of %s's targeted hit.", 8 },
{ "%s의 절묘한 공격으로 %s %s에서 검은 연기가 퍼지고 있다.", 7 }, // ok! { "Black smoke billows from %s's %s from %s's precise attack.", 7 }, // ok!
}, },
{ {
{ "Fire boils from the damaged %s of %s's %s after %s hits it with a %s.", 9 }, { "Fire boils from the damaged %s of %s's %s after %s hits it with a %s.", 9 },
{ "%s %s을(를) 발사하여, %s이(가) 탑승한 %s %s에 피해를 발생시켰다.", 10 }, // ok! { "%s fired %s, dealing damage to the %s of %s's %s.", 10 }, // ok!
}, },
{ {
{ "Smoke and fire are trailing from %s's %s, all results of the %s blast inflicted by %s.", 11 }, { "Smoke and fire are trailing from %s's %s, all results of the %s blast inflicted by %s.", 11 },
{ "%s의 %s 공격에, 불과 연기가 %s의 기체를 뒤덮고 있다.", 15 }, // ok! { "Fire and smoke engulf %s's mech from %s's %s attack.", 15 }, // ok!
}, },
{ {
{ "%s targets and fires the %s; %s cries in dismay as the %s's %s is damaged.", 10 }, { "%s targets and fires the %s; %s cries in dismay as the %s's %s is damaged.", 10 },
{ "%s %s을(를) 조준하여 %s이(가) 탑승한 %s %s에 맞춘 후 방아쇠를 당겼다.", 10 }, // ok! { "%s aimed %s and pulled the trigger, hitting the %s of %s's %s.", 10 }, // ok!
}, },
{ {
{ "%s takes a severe wound to the %s as %s aims for the %s again.", 13 }, { "%s takes a severe wound to the %s as %s aims for the %s again.", 13 },
{ "%s 다시 %s %s을(를) 조준하여 사격했다. %s, %s에 심각한 피해를 입은 듯.", 14 -100}, { "%s aimed again at %s's %s and fired. %s seems to have taken serious damage to %s.", 14 -100},
}, },
}; };
@@ -2156,19 +2156,19 @@ static SMSGFMT s_aShot[10][2] = {
static SMSGFMT s_aCTF[1][2] = { static SMSGFMT s_aCTF[1][2] = {
{ {
{ "%s captured flag.", 0 }, { "%s captured flag.", 0 },
{ "%s, 깃발 획득!.", 0 }, { "%s captured the flag!", 0 },
}, },
}; };
static SMSGFMT s_aFBK[1][2] = { static SMSGFMT s_aFBK[1][2] = {
{ {
{ "%s destroyed friendly building.", 0 }, { "%s destroyed friendly building.", 0 },
{ "%s, 깃발 획득!.", 0 }, { "%s captured the flag!", 0 },
}, },
}; };
static SMSGFMT s_aEBK[1][2] = { static SMSGFMT s_aEBK[1][2] = {
{ {
{ "%s destroyed enemy building.", 0 }, { "%s destroyed enemy building.", 0 },
{ "%s, 깃발 획득!.", 0 }, { "%s captured the flag!", 0 },
}, },
}; };
const SMSGFMT* pcFMT; const SMSGFMT* pcFMT;
@@ -28,7 +28,7 @@
// forward declaration // forward declaration
class FPInterface; class FPInterface;
//ッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッ //----------------------------------------------------------------------
// A data channel is a homogeneous collection of objects of a user defined // A data channel is a homogeneous collection of objects of a user defined
// type (data objects). Data channels are uniquely identified by a Class_ID. // type (data objects). Data channels are uniquely identified by a Class_ID.
// //
@@ -52,7 +52,7 @@ class IDataChannel : public InterfaceServer
#define DATACHANNEL_INTERFACE Interface_ID(0x38a718a8, 0x14685b4b) #define DATACHANNEL_INTERFACE Interface_ID(0x38a718a8, 0x14685b4b)
#define GetDataChannelInterface(obj) ((IDataChannel*)obj->GetInterface(DATACHANNEL_INTERFACE)) #define GetDataChannelInterface(obj) ((IDataChannel*)obj->GetInterface(DATACHANNEL_INTERFACE))
//ッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッ //----------------------------------------------------------------------
// Face-data channel interface // Face-data channel interface
// //
// This is an abstraction of a collection of data objects that is // This is an abstraction of a collection of data objects that is
@@ -149,7 +149,7 @@ class IFaceDataChannel : public IDataChannel
#define FACEDATACHANNEL_INTERFACE Interface_ID(0x181358d5, 0x3cab1bc9) #define FACEDATACHANNEL_INTERFACE Interface_ID(0x181358d5, 0x3cab1bc9)
#define GetFaceDataChannelInterface(obj) ((IFaceDataChannel*)obj->GetInterface(FACEDATACHANNEL_INTERFACE)) #define GetFaceDataChannelInterface(obj) ((IFaceDataChannel*)obj->GetInterface(FACEDATACHANNEL_INTERFACE))
//ッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッ //----------------------------------------------------------------------
// Interface class that allows to execute a callback method (Proc) for all // Interface class that allows to execute a callback method (Proc) for all
// face-data channels of an object. // face-data channels of an object.
// //
@@ -21,7 +21,7 @@
// GUID that identifies this ifc (interface) // GUID that identifies this ifc (interface)
#define FACEDATAMGR_INTERFACE Interface_ID(0x1b454148, 0x6a066927) #define FACEDATAMGR_INTERFACE Interface_ID(0x1b454148, 0x6a066927)
//ッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッ //----------------------------------------------------------------------
// Interface for managing face-data channels. // Interface for managing face-data channels.
// Objects that want to have face-data channels should implement this ifc // Objects that want to have face-data channels should implement this ifc
// //
@@ -20,7 +20,7 @@
#include <map> #include <map>
#include "export.h" #include "export.h"
//ッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッ //----------------------------------------------------------------------
// Face-data management implementation // Face-data management implementation
//________________________________________________________________________ //________________________________________________________________________
class IFaceDataMgrImpl : public IFaceDataMgr class IFaceDataMgrImpl : public IFaceDataMgr
@@ -20,7 +20,7 @@
// GUID that identifies this ifc (interface) // GUID that identifies this ifc (interface)
#define PIPELINECLIENT_INTERFACE Interface_ID(0x62383d51, 0x2d0f7d6a) #define PIPELINECLIENT_INTERFACE Interface_ID(0x62383d51, 0x2d0f7d6a)
//ッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッッ //----------------------------------------------------------------------
// This interface should be implemented by objects that flow up the // This interface should be implemented by objects that flow up the
// geometry pipeline and have data members that belong to the pipeline // geometry pipeline and have data members that belong to the pipeline
// channels (geometry, topology, texmap, etc) // channels (geometry, topology, texmap, etc)
@@ -1,7 +1,7 @@
/* /*
* BitMaps.h - MAX bitmap access classes * BitMaps.h - MAX bitmap access classes
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* HashTable.h - HashTable class for MAXScript * HashTable.h - HashTable class for MAXScript
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */
@@ -4,7 +4,7 @@
* IVisualMSMgr - core interface to the VisualMS manager * IVisualMSMgr - core interface to the VisualMS manager
* IVisualMSForm - interface to an existing form * IVisualMSForm - interface to an existing form
* *
* Copyright © Autodesk, Inc, 2000. John Wainwright. * Copyright © Autodesk, Inc, 2000. John Wainwright.
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* MAXKeys.h - MAX controller keyframe access classes * MAXKeys.h - MAX controller keyframe access classes
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* MAXMaterials.h - MAX material & map wrapper classes * MAXMaterials.h - MAX material & map wrapper classes
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* MAXNURBS.h - MAX NURBS access classes * MAXNURBS.h - MAX NURBS access classes
* *
* Copyright © Autodesk, Inc. 1997 * Copyright © Autodesk, Inc. 1997
* Author: John Wainwright * Author: John Wainwright
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* MAXObject.h - MAX object wrapper classes in MAXScript * MAXObject.h - MAX object wrapper classes in MAXScript
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* MAX_commands.h - defines all the invocable MAX UI commands - for the 'max' scripter construct * MAX_commands.h - defines all the invocable MAX UI commands - for the 'max' scripter construct
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* MSCustAttrib.h - MAXScript scriptable custom attributes MAX objects * MSCustAttrib.h - MAXScript scriptable custom attributes MAX objects
* *
* Copyright © Autodesk, Inc, 2000. John Wainwright. * Copyright © Autodesk, Inc, 2000. John Wainwright.
* *
*/ */
@@ -39,7 +39,7 @@
* MSPluginClass instance from which info for the implementing * MSPluginClass instance from which info for the implementing
* the standard ClassDesc2 interface is derived. * the standard ClassDesc2 interface is derived.
* *
* Copyright © Autodesk, Inc, 1998. John Wainwright. * Copyright © Autodesk, Inc, 1998. John Wainwright.
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* MSZipPackage.h - MAXScript Zip Package file classes & utilities * MSZipPackage.h - MAXScript Zip Package file classes & utilities
* *
* Copyright © Autodesk, Inc, 2000. John Wainwright. * Copyright © Autodesk, Inc, 2000. John Wainwright.
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* MSController.h - MAXScript scriptable controllers for MAX * MSController.h - MAXScript scriptable controllers for MAX
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* MAX_classes.h - class object for all the MAX built-in types * MAX_classes.h - class object for all the MAX built-in types
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */
@@ -6,7 +6,7 @@
* working with meshes. Also provides access to MNMesh tools and * working with meshes. Also provides access to MNMesh tools and
* mesh sub-objects as direct properties on nodes. * mesh sub-objects as direct properties on nodes.
* *
* Copyright © Autodesk, Inc., 1998 * Copyright © Autodesk, Inc., 1998
* John Wainwright * John Wainwright
*/ */
@@ -1,7 +1,7 @@
/* /*
* MouseTool.h - scriptable mouse CommandModes for MAX * MouseTool.h - scriptable mouse CommandModes for MAX
* *
* Copyright © Autodesk, Inc, 1998. John Wainwright. * Copyright © Autodesk, Inc, 1998. John Wainwright.
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* Name.h - Name class for MAXScript * Name.h - Name class for MAXScript
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */
@@ -2,7 +2,7 @@
* NamedSet.h - scripter access to named node selection sets * NamedSet.h - scripter access to named node selection sets
* *
* John Wainwright * John Wainwright
* Copyright © Autodesk, Inc. 1997 * Copyright © Autodesk, Inc. 1997
* *
*/ */
@@ -3,7 +3,7 @@
* *
* mirrors the mesh sub-object selection classes for NURBS sub-objects. * mirrors the mesh sub-object selection classes for NURBS sub-objects.
* *
* Copyright © Autodesk, Inc., 1998 * Copyright © Autodesk, Inc., 1998
* John Wainwright * John Wainwright
*/ */
@@ -1,7 +1,7 @@
/* /*
* OLEAutomation.h - OLE Automation services for MAXScript * OLEAutomation.h - OLE Automation services for MAXScript
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* ObjectSets.h - ObjectSet classes for MAXScript * ObjectSets.h - ObjectSet classes for MAXScript
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* Parser.h - a compiler for the 3DS MAX MAXScript scripting language * Parser.h - a compiler for the 3DS MAX MAXScript scripting language
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* PathName.h - PathName class for MAXScript * PathName.h - PathName class for MAXScript
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* Pipe.h - NT TCHAR Pipe wrapper for MAXScript * Pipe.h - NT TCHAR Pipe wrapper for MAXScript
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* Rollouts.h - Rollout panel classes & functions for MAXScript * Rollouts.h - Rollout panel classes & functions for MAXScript
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */
@@ -1,7 +1,7 @@
/* /*
* SceneIO.h - MAXScript-related scene file I/O (persistent globals, on-open script, etc.) * SceneIO.h - MAXScript-related scene file I/O (persistent globals, on-open script, etc.)
* *
* Copyright © Autodesk, Inc, 1998. John Wainwright. * Copyright © Autodesk, Inc, 1998. John Wainwright.
* *
*/ */
@@ -2,7 +2,7 @@
* ScrpCtrl.h - interface to scripter-based expression controllers * ScrpCtrl.h - interface to scripter-based expression controllers
* *
* John Wainwright * John Wainwright
* Copyright © Autodesk, Inc. 1997 * Copyright © Autodesk, Inc. 1997
*/ */
#ifndef _H_SCRPTCTRL #ifndef _H_SCRPTCTRL
@@ -1,7 +1,7 @@
/* /*
* Streams.h - stream family for MAXScript * Streams.h - stream family for MAXScript
* *
* Copyright © John Wainwright 1996 * Copyright © John Wainwright 1996
* *
*/ */

Some files were not shown because too many files have changed in this diff Show More