//----------------------------------------------------------------------------- // Purpose: // Input : *buf - // from - // to - //----------------------------------------------------------------------------- bool CInput::WriteUsercmdDeltaToBuffer( bf_write *buf, int from, int to, bool isnewcommand ) { Assert( m_pCommands ); CUserCmd nullcmd; CUserCmd *f, *t; int startbit = buf->GetNumBitsWritten(); if ( from == -1 ) { f = &nullcmd; } else { f = GetUserCmd( from ); if ( !f ) { // DevMsg( "WARNING! User command delta too old (from %i, to %i)\n", from, to ); f = &nullcmd; } else { ValidateUserCmd( f, from ); } } t = GetUserCmd( to ); if ( !t ) { // DevMsg( "WARNING! User command too old (from %i, to %i)\n", from, to ); t = &nullcmd; } else { ValidateUserCmd( t, to ); } // Write it into the buffer WriteUsercmd( buf, t, f ); if ( buf->IsOverflowed() ) { int endbit = buf->GetNumBitsWritten(); Msg( "WARNING! User command buffer overflow(%i %i), last cmd was %i bits long\n", from, to, endbit - startbit ); return false; } return true; }
//----------------------------------------------------------------------------- // Purpose: // Input : buf - // buffersize - // slot - //----------------------------------------------------------------------------- void CInput::EncodeUserCmdToBuffer( bf_write& buf, int sequence_number ) { CUserCmd nullcmd; CUserCmd *cmd = GetUserCmd( sequence_number); WriteUsercmd( &buf, cmd, &nullcmd ); }
long FAR PASCAL DoWindowMessage ( HWND hMain, unsigned message, WPARAM wParam, LONG lParam) { switch ( message ) { case WM_CREATE: return (StartUpDDE()); case WM_KEYDOWN: { if ( LOWORD(wParam) == VK_SHIFT ) { extern int ShiftKeyDown; ShiftKeyDown = TRUE; } break; } case WM_KEYUP: { if ( LOWORD(wParam) == VK_SHIFT ) { extern int ShiftKeyDown; ShiftKeyDown = FALSE; } break; } case WM_CHAR: { GetUserCmd ( LOWORD(wParam), FALSE, 0 ); break; } case WM_ACTIVATEAPP: { extern int ApplicationFocus; ApplicationFocus = (int) LOWORD(wParam); if (!ApplicationFocus ) UpdateCursor( ARROW_CURSOR ); break; } case WM_TIMER: { static int value = 0; extern HCURSOR NowCursor, WAIT[]; extern int ApplicationFocus; value ++; NowCursor = WAIT[value]; if (ApplicationFocus ) SetCursor ( NowCursor ); if (value > 7 ) value = 0; break; } case WM_SETCURSOR: { extern HCURSOR NowCursor; SetCursor ( NowCursor ); break; } case WM_SETFOCUS: { extern SCREEN WinDialog; CreateCaret ( hMain, NULL, 1, WinDialog.LineSize); ShowCaret ( hMain ); break; } case WM_KILLFOCUS: { HideCaret ( hMain ); DestroyCaret(); break; } case WM_PAINT: { PAINTSTRUCT ps; HDC hDC; BeginPaint (hMain, (LPPAINTSTRUCT)&ps); hDC = ps.hdc; SetMapMode (hDC, MM_TEXT); RedrawTerminal(hDC); ValidateRect (hMain, (LPRECT)NULL); EndPaint (hMain, (LPPAINTSTRUCT)&ps); break; } case WM_SIZE: { extern SCREEN WinDialog; int min, max; GetScrollRange (hMain,SB_VERT,&min, &max); WinDialog.NoLines = (HIWORD (lParam) / WinDialog.LineSize) - 1; SetScrollRange (hMain, SB_VERT, WinDialog.NoLines, max, TRUE ); InvalidateRect ( hMain, NULL, TRUE ); switch ( LOWORD(wParam) ) { case SIZE_MINIMIZED: PostMessage ( hMain, WM_COMMAND, IDC_WIN_MINIMIZE, 0); break; case SIZE_RESTORED: PostMessage ( hMain, WM_COMMAND, IDC_WIN_MAXIMIZE, 0); break; } break; } case WM_HSCROLL: { extern SCREEN WinDialog; int min, max, cp; GetScrollRange (hMain,SB_HORZ,&min, &max); cp = GetScrollPos ( hMain, SB_HORZ ); switch (LOWORD(wParam)) { case SB_LINEDOWN: { cp++; break; } case SB_LINEUP: { cp--; break; } case SB_PAGEDOWN: { cp += WinDialog.NoLines; break; } case SB_PAGEUP: { cp -= WinDialog.NoLines; break; } case SB_THUMBTRACK: { cp = LOWORD(lParam); break; } default: { return (0); } } if (cp > max) cp = max; if (cp < min) cp = min; SetScrollPos (hMain, SB_HORZ, cp, TRUE ); InvalidateRect (hMain, NULL, TRUE ); break; } case WM_VSCROLL: { extern SCREEN WinDialog; int min, max, cp; static int CaretON = TRUE; GetScrollRange (hMain,SB_VERT,&min, &max); cp = GetScrollPos ( hMain, SB_VERT ); switch (LOWORD(wParam)) { case SB_LINEDOWN: { cp++; break; } case SB_LINEUP: { cp--; break; } case SB_PAGEDOWN: { cp += WinDialog.NoLines; break; } case SB_PAGEUP: { cp -= WinDialog.NoLines; break; } case SB_THUMBTRACK: { cp = LOWORD(lParam); break; } default: { return (0); } } if (cp >= max) { cp = max; ShowCaret ( hMain ); CaretON = TRUE; } else if ( CaretON ) { HideCaret ( hMain ); CaretON = FALSE; } if (cp < WinDialog.NoLines) cp = WinDialog.NoLines; SetScrollPos (hMain, SB_VERT, cp, TRUE ); InvalidateRect (hMain, NULL, TRUE ); break; } case WM_DESTROY: { /* Shut Down DDE Server. */ ShutDownDDE ( ); /* Free Dialog Window */ DeleteTerminal(); /* Quit Windows */ PostQuitMessage(0); return 0; } /*-------------------------------+ | Used to Update the Module Menu | +-------------------------------*/ case WM_INITMENUPOPUP: { int MenuID = GetMenuItemID((HMENU) wParam, 0); if ( MenuID == IDM_MODULE_ONE ) UpdateModuleMenu ((HMENU)wParam); break; } case WM_CLOSE: PostMessage ( hMain, WM_COMMAND, IDM_FILE_QUIT, 0); break; default: return (DefWindowProc(hMain, message, wParam, lParam)); } return (TRUE); }