mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-20 12:39:17 +02:00
glfw
This commit is contained in:
26
Camera.cpp
26
Camera.cpp
@@ -61,8 +61,8 @@ void TCamera::OnCursorMove(double x, double y)
|
||||
void TCamera::Update()
|
||||
{
|
||||
// ABu: zmiana i uniezaleznienie predkosci od FPS
|
||||
double a = (Console::Pressed(VK_SHIFT) ? 5.00 : 1.00);
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
double a = (Global::shiftState ? 5.00 : 1.00);
|
||||
if (Global::ctrlState)
|
||||
a = a * 100;
|
||||
// OldVelocity=Velocity;
|
||||
if (FreeFlyModeFlag == true)
|
||||
@@ -86,27 +86,27 @@ void TCamera::Update()
|
||||
if (Console::Pressed(VkKeyScan('s')))
|
||||
Velocity.z+= a*Timer::GetDeltaTime();
|
||||
|
||||
if (Console::Pressed(VK_NUMPAD4) || Console::Pressed(VK_NUMPAD7) ||
|
||||
Console::Pressed(VK_NUMPAD1))
|
||||
if (Console::Pressed(GLFW_KEY_KP_4) || Console::Pressed(GLFW_KEY_KP_7) ||
|
||||
Console::Pressed(GLFW_KEY_KP_1))
|
||||
Yaw+= +1*M_PI*Timer::GetDeltaTime();
|
||||
|
||||
if (Console::Pressed(VK_NUMPAD6) || Console::Pressed(VK_NUMPAD9) ||
|
||||
Console::Pressed(VK_NUMPAD3))
|
||||
if (Console::Pressed(GLFW_KEY_KP_6) || Console::Pressed(GLFW_KEY_KP_9) ||
|
||||
Console::Pressed(GLFW_KEY_KP_3))
|
||||
Yaw+= -1*M_PI*Timer::GetDeltaTime();
|
||||
|
||||
if (Pressed(VK_NUMPAD2) || Console::Pressed(VK_NUMPAD1) ||
|
||||
Console::Pressed(VK_NUMPAD3))
|
||||
if (Pressed(GLFW_KEY_KP_2) || Console::Pressed(GLFW_KEY_KP_1) ||
|
||||
Console::Pressed(GLFW_KEY_KP_3))
|
||||
Pitch+= -1*M_PI*Timer::GetDeltaTime();
|
||||
|
||||
if (Console::Pressed(VK_NUMPAD8) || Console::Pressed(VK_NUMPAD7) ||
|
||||
Console::Pressed(VK_NUMPAD9))
|
||||
if (Console::Pressed(GLFW_KEY_KP_8) || Console::Pressed(GLFW_KEY_KP_7) ||
|
||||
Console::Pressed(GLFW_KEY_KP_9))
|
||||
Pitch+= +1*M_PI*Timer::GetDeltaTime();
|
||||
if (Console::Pressed(VkKeyScan('.')))
|
||||
Roll+= -1*M_PI*Timer::GetDeltaTime();
|
||||
if (Console::Pressed(VkKeyScan(',')))
|
||||
Roll+= +1*M_PI*Timer::GetDeltaTime();
|
||||
|
||||
if (Console::Pressed(VK_NUMPAD5))
|
||||
if (Console::Pressed(GLFW_KEY_KP_5))
|
||||
Pitch=Roll= 0.0f;
|
||||
*/
|
||||
|
||||
@@ -120,8 +120,8 @@ void TCamera::Update()
|
||||
if (Console::Pressed(Global::Keys[k_MechBackward]))
|
||||
Velocity.z += a;
|
||||
// gora-dol
|
||||
// if (Console::Pressed(VK_NUMPAD9)) Pos.y+=0.1;
|
||||
// if (Console::Pressed(VK_NUMPAD3)) Pos.y-=0.1;
|
||||
// if (Console::Pressed(GLFW_KEY_KP_9)) Pos.y+=0.1;
|
||||
// if (Console::Pressed(GLFW_KEY_KP_3)) Pos.y-=0.1;
|
||||
|
||||
// McZapkie: zeby nie hustalo przy malym FPS:
|
||||
// Velocity= (Velocity+OldVelocity)/2;
|
||||
|
||||
14
Console.cpp
14
Console.cpp
@@ -252,8 +252,8 @@ void Console::BitsUpdate(int mask)
|
||||
SetLedState(VK_CAPITAL, iBits & 2);
|
||||
if (mask & 1) // gdy SHP
|
||||
{ // Scroll Lock ma jakoś dziwnie... zmiana stanu na przeciwny
|
||||
SetLedState(VK_SCROLL, true); // przyciśnięty
|
||||
SetLedState(VK_SCROLL, false); // zwolniony
|
||||
SetLedState(VK_CAPITAL, true); // przyciśnięty
|
||||
SetLedState(VK_CAPITAL, false); // zwolniony
|
||||
++iConfig; // licznik użycia Scroll Lock
|
||||
}
|
||||
break;
|
||||
@@ -398,7 +398,13 @@ void Console::BitsUpdate(int mask)
|
||||
|
||||
bool Console::Pressed(int x)
|
||||
{ // na razie tak - czyta się tylko klawiatura
|
||||
return Global::bActive && (GetKeyState(x) < 0);
|
||||
if (!Global::bActive)
|
||||
return false;
|
||||
|
||||
if (glfwGetKey(Global::window, x) == GLFW_TRUE)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
};
|
||||
|
||||
void Console::ValueSet(int x, double y)
|
||||
@@ -499,7 +505,7 @@ void Console::Update()
|
||||
else
|
||||
{ // błąd komunikacji - zapauzować symulację?
|
||||
if (!(Global::iPause & 8)) // jeśli jeszcze nie oflagowana
|
||||
Global::iTextMode = VK_F1; // pokazanie czasu/pauzy
|
||||
Global::iTextMode = GLFW_KEY_F1; // pokazanie czasu/pauzy
|
||||
Global::iPause |= 8; // tak???
|
||||
PoKeys55[0]->Connect(); // próba ponownego podłączenia
|
||||
}
|
||||
|
||||
750
EU07.cpp
750
EU07.cpp
@@ -19,12 +19,6 @@ Stele, firleju, szociu, hunter, ZiomalCl, OLI_EU and others
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include <dsound.h> //_clear87() itp.
|
||||
|
||||
#include "opengl/glew.h"
|
||||
#include "opengl/wglew.h"
|
||||
#include "opengl/ARB_Multisample.h"
|
||||
|
||||
#include "Globals.h"
|
||||
#include "Logs.h"
|
||||
#include "Console.h"
|
||||
@@ -32,542 +26,20 @@ Stele, firleju, szociu, hunter, ZiomalCl, OLI_EU and others
|
||||
#include "World.h"
|
||||
#include "Mover.h"
|
||||
|
||||
#pragma comment( lib, "glew32.lib" )
|
||||
#pragma comment( lib, "glu32.lib" )
|
||||
#pragma comment( lib, "opengl32.lib" )
|
||||
#pragma comment( lib, "dsound.lib" )
|
||||
#pragma comment( lib, "winmm.lib" )
|
||||
#pragma comment( lib, "setupapi.lib" )
|
||||
#pragma comment( lib, "python27.lib" )
|
||||
#pragma comment (lib, "glew32.lib")
|
||||
#pragma comment (lib, "glu32.lib")
|
||||
#pragma comment (lib, "opengl32.lib")
|
||||
#pragma comment (lib, "dsound.lib")
|
||||
#pragma comment (lib, "winmm.lib")
|
||||
#pragma comment (lib, "setupapi.lib")
|
||||
#pragma comment (lib, "python27.lib")
|
||||
#pragma comment (lib, "dbghelp.lib")
|
||||
#pragma comment (lib, "glfw3.lib") //static
|
||||
|
||||
HDC hDC = NULL; // Private GDI Device Context
|
||||
HGLRC hRC = NULL; // Permanent Rendering Context
|
||||
HWND hWnd = NULL; // Holds Our Window Handle
|
||||
#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
|
||||
|
||||
TWorld World;
|
||||
|
||||
// bool active=TRUE; //window active flag set to TRUE by default
|
||||
bool fullscreen = TRUE; // fullscreen flag set to fullscreen mode by default
|
||||
int WindowWidth = 800;
|
||||
int WindowHeight = 600;
|
||||
int Bpp = 32;
|
||||
|
||||
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // Declaration For WndProc
|
||||
|
||||
//#include "dbgForm.h"
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
int InitGL(GLvoid) // All Setup For OpenGL Goes Here
|
||||
{
|
||||
// _clear87();
|
||||
// _control87(MCW_EM, MCW_EM);
|
||||
glewInit();
|
||||
// hunter-271211: przeniesione
|
||||
// AllocConsole();
|
||||
// SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
|
||||
|
||||
// ShaXbee-121209: Wlaczenie obslugi tablic wierzcholkow
|
||||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
glEnableClientState(GL_NORMAL_ARRAY);
|
||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
Global::pWorld = &World; // Ra: wskaźnik potrzebny do usuwania pojazdów
|
||||
return World.Init(hWnd, hDC); // true jeśli wszystko pójdzie dobrze
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
GLvoid ReSizeGLScene(GLsizei width, GLsizei height) // resize and initialize the GL Window
|
||||
{
|
||||
WindowWidth = width;
|
||||
WindowHeight = height;
|
||||
if (height == 0) // prevent a divide by zero by
|
||||
height = 1; // making height equal one
|
||||
glViewport(0, 0, width, height); // Reset The Current Viewport
|
||||
glMatrixMode(GL_PROJECTION); // select the Projection Matrix
|
||||
glLoadIdentity(); // reset the Projection Matrix
|
||||
// calculate the aspect ratio of the window
|
||||
gluPerspective(45.0f, (GLdouble)width / (GLdouble)height, 0.2f, 2500.0f);
|
||||
glMatrixMode(GL_MODELVIEW); // select the Modelview Matrix
|
||||
glLoadIdentity(); // reset the Modelview Matrix
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
GLvoid KillGLWindow(GLvoid) // properly kill the window
|
||||
{
|
||||
if (hRC) // Do We Have A Rendering Context?
|
||||
{
|
||||
if (!wglMakeCurrent(NULL, NULL)) // are we able to release the DC and RC contexts?
|
||||
{
|
||||
ErrorLog("Fail: window releasing");
|
||||
MessageBox(NULL, "Release of DC and RC failed.", "SHUTDOWN ERROR",
|
||||
MB_OK | MB_ICONINFORMATION);
|
||||
}
|
||||
|
||||
if (!wglDeleteContext(hRC)) // are we able to delete the RC?
|
||||
{
|
||||
ErrorLog("Fail: rendering context releasing");
|
||||
MessageBox(NULL, "Release rendering context failed.", "SHUTDOWN ERROR",
|
||||
MB_OK | MB_ICONINFORMATION);
|
||||
}
|
||||
hRC = NULL; // set RC to NULL
|
||||
}
|
||||
|
||||
if (hDC && !ReleaseDC(hWnd, hDC)) // are we able to release the DC?
|
||||
{
|
||||
ErrorLog("Fail: device context releasing");
|
||||
MessageBox(NULL, "Release device context failed.", "SHUTDOWN ERROR",
|
||||
MB_OK | MB_ICONINFORMATION);
|
||||
hDC = NULL; // set DC to NULL
|
||||
}
|
||||
|
||||
if (hWnd && !DestroyWindow(hWnd)) // are we able to destroy the window?
|
||||
{
|
||||
ErrorLog("Fail: window destroying");
|
||||
MessageBox(NULL, "Could not release hWnd.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION);
|
||||
hWnd = NULL; // set hWnd to NULL
|
||||
}
|
||||
|
||||
if (fullscreen) // Are We In Fullscreen Mode?
|
||||
{
|
||||
ChangeDisplaySettings(NULL, 0); // if so switch back to the desktop
|
||||
ShowCursor(TRUE); // show mouse pointer
|
||||
}
|
||||
// KillFont();
|
||||
}
|
||||
|
||||
/* This code creates our OpenGL Window. Parameters are: *
|
||||
* title - title to appear at the top of the window *
|
||||
* width - width of the GL Window or fullscreen mode *
|
||||
* height - height of the GL Window or fullscreen mode *
|
||||
* bits - number of bits to use for color (8/16/24/32) *
|
||||
* fullscreenflag - use fullscreen mode (TRUE) or windowed mode (FALSE) */
|
||||
|
||||
BOOL CreateGLWindow(char *title, int width, int height, int bits, bool fullscreenflag)
|
||||
{
|
||||
GLuint PixelFormat; // holds the results after searching for a match
|
||||
HINSTANCE hInstance; // holds the instance of the application
|
||||
WNDCLASS wc; // windows class structure
|
||||
DWORD dwExStyle; // window extended style
|
||||
DWORD dwStyle; // window style
|
||||
RECT WindowRect; // grabs rectangle upper left / lower right values
|
||||
WindowRect.left = (long)0; // set left value to 0
|
||||
WindowRect.right = (long)width; // set right value to requested width
|
||||
WindowRect.top = (long)0; // set top value to 0
|
||||
WindowRect.bottom = (long)height; // set bottom value to requested height
|
||||
|
||||
fullscreen = fullscreenflag; // set the global fullscreen flag
|
||||
|
||||
hInstance = GetModuleHandle(NULL); // grab an instance for our window
|
||||
wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; // redraw on size, and own DC for window.
|
||||
wc.lpfnWndProc = (WNDPROC)WndProc; // wndproc handles messages
|
||||
wc.cbClsExtra = 0; // no extra window data
|
||||
wc.cbWndExtra = 0; // no extra window data
|
||||
wc.hInstance = hInstance; // set the instance
|
||||
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); // load the default icon
|
||||
wc.hCursor = LoadCursor(NULL, IDC_ARROW); // load the arrow pointer
|
||||
wc.hbrBackground = NULL; // no background required for GL
|
||||
wc.lpszMenuName = NULL; // we don't want a menu
|
||||
wc.lpszClassName = "EU07"; // nazwa okna do komunikacji zdalnej
|
||||
// // Set The Class Name
|
||||
|
||||
if (!arbMultisampleSupported) // tylko dla pierwszego okna
|
||||
if (!RegisterClass(&wc)) // Attempt To Register The Window Class
|
||||
{
|
||||
ErrorLog("Fail: window class registeration");
|
||||
MessageBox(NULL, "Failed to register the window class.", "ERROR",
|
||||
MB_OK | MB_ICONEXCLAMATION);
|
||||
return FALSE; // Return FALSE
|
||||
}
|
||||
|
||||
if (fullscreen) // Attempt Fullscreen Mode?
|
||||
{
|
||||
DEVMODE dmScreenSettings; // device mode
|
||||
memset(&dmScreenSettings, 0, sizeof(dmScreenSettings)); // makes sure memory's cleared
|
||||
dmScreenSettings.dmSize = sizeof(dmScreenSettings); // size of the devmode structure
|
||||
|
||||
// tolaris-240403: poprawka na odswiezanie monitora
|
||||
// locate primary monitor...
|
||||
if (Global::bAdjustScreenFreq)
|
||||
{
|
||||
POINT point;
|
||||
point.x = 0;
|
||||
point.y = 0;
|
||||
MONITORINFOEX monitorinfo;
|
||||
monitorinfo.cbSize = sizeof(MONITORINFOEX);
|
||||
::GetMonitorInfo(::MonitorFromPoint(point, MONITOR_DEFAULTTOPRIMARY), &monitorinfo);
|
||||
// ..and query for highest supported refresh rate
|
||||
unsigned int refreshrate = 0;
|
||||
int i = 0;
|
||||
while (::EnumDisplaySettings(monitorinfo.szDevice, i, &dmScreenSettings))
|
||||
{
|
||||
if (i > 0)
|
||||
if (dmScreenSettings.dmPelsWidth == (unsigned int)width)
|
||||
if (dmScreenSettings.dmPelsHeight == (unsigned int)height)
|
||||
if (dmScreenSettings.dmBitsPerPel == (unsigned int)bits)
|
||||
if (dmScreenSettings.dmDisplayFrequency > refreshrate)
|
||||
refreshrate = dmScreenSettings.dmDisplayFrequency;
|
||||
++i;
|
||||
}
|
||||
// fill refresh rate info for screen mode change
|
||||
dmScreenSettings.dmDisplayFrequency = refreshrate;
|
||||
dmScreenSettings.dmFields = DM_DISPLAYFREQUENCY;
|
||||
}
|
||||
dmScreenSettings.dmPelsWidth = width; // selected screen width
|
||||
dmScreenSettings.dmPelsHeight = height; // selected screen height
|
||||
dmScreenSettings.dmBitsPerPel = bits; // selected bits per pixel
|
||||
dmScreenSettings.dmFields =
|
||||
dmScreenSettings.dmFields | DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
|
||||
|
||||
// Try to set selected mode and get results. NOTE: CDS_FULLSCREEN gets rid of start bar.
|
||||
if (ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
|
||||
{
|
||||
// If the mode fails, offer two options. Quit or use windowed mode.
|
||||
ErrorLog("Fail: full screen");
|
||||
if (MessageBox(NULL, "The requested fullscreen mode is not supported by\nyour video "
|
||||
"card. Use windowed mode instead?",
|
||||
"EU07", MB_YESNO | MB_ICONEXCLAMATION) == IDYES)
|
||||
{
|
||||
fullscreen = FALSE; // Windowed Mode Selected. Fullscreen = FALSE
|
||||
}
|
||||
else
|
||||
{
|
||||
// Pop Up A Message Box Letting User Know The Program Is Closing.
|
||||
Error("Program will now close.");
|
||||
return FALSE; // Return FALSE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (fullscreen) // Are We Still In Fullscreen Mode?
|
||||
{
|
||||
dwExStyle = WS_EX_APPWINDOW; // Window Extended Style
|
||||
dwStyle = WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN; // Windows Style
|
||||
ShowCursor(FALSE); // Hide Mouse Pointer
|
||||
}
|
||||
else
|
||||
{
|
||||
dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; // Window Extended Style
|
||||
dwStyle = WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN; // Windows Style
|
||||
}
|
||||
|
||||
AdjustWindowRectEx(&WindowRect, dwStyle, FALSE,
|
||||
dwExStyle); // Adjust Window To True Requested Size
|
||||
|
||||
// Create The Window
|
||||
if (NULL ==
|
||||
(hWnd = CreateWindowEx(dwExStyle, // Extended Style For The Window
|
||||
"EU07", // Class Name
|
||||
title, // Window Title
|
||||
dwStyle | // Defined Window Style
|
||||
WS_CLIPSIBLINGS | // Required Window Style
|
||||
WS_CLIPCHILDREN, // Required Window Style
|
||||
0,
|
||||
0, // Window Position
|
||||
WindowRect.right - WindowRect.left, // Calculate Window Width
|
||||
WindowRect.bottom - WindowRect.top, // Calculate Window Height
|
||||
NULL, // No Parent Window
|
||||
NULL, // No Menu
|
||||
hInstance, // Instance
|
||||
NULL))) // Dont Pass Anything To WM_CREATE
|
||||
{
|
||||
KillGLWindow(); // Reset The Display
|
||||
ErrorLog("Fail: window creation");
|
||||
MessageBox(NULL, "Window creation error.", "ERROR", MB_OK | MB_ICONEXCLAMATION);
|
||||
return FALSE; // Return FALSE
|
||||
}
|
||||
|
||||
static PIXELFORMATDESCRIPTOR pfd = // pfd Tells Windows How We Want Things To Be
|
||||
{
|
||||
sizeof(PIXELFORMATDESCRIPTOR), // Size Of This Pixel Format Descriptor
|
||||
1, // Version Number
|
||||
PFD_DRAW_TO_WINDOW | // Format Must Support Window
|
||||
PFD_SUPPORT_OPENGL | // Format Must Support OpenGL
|
||||
PFD_DOUBLEBUFFER, // Must Support Double Buffering
|
||||
PFD_TYPE_RGBA, // Request An RGBA Format
|
||||
bits, // Select Our Color Depth
|
||||
0,
|
||||
0, 0, 0, 0, 0, // Color Bits Ignored
|
||||
0, // No Alpha Buffer
|
||||
0, // Shift Bit Ignored
|
||||
0, // No Accumulation Buffer
|
||||
0, 0, 0, 0, // Accumulation Bits Ignored
|
||||
24, // 32Bit Z-Buffer (Depth Buffer)
|
||||
0, // No Stencil Buffer
|
||||
0, // No Auxiliary Buffer
|
||||
PFD_MAIN_PLANE, // Main Drawing Layer
|
||||
0, // Reserved
|
||||
0, 0, 0 // Layer Masks Ignored
|
||||
};
|
||||
|
||||
if (NULL == (hDC = GetDC(hWnd))) // Did We Get A Device Context?
|
||||
{
|
||||
KillGLWindow(); // Reset The Display
|
||||
ErrorLog("Fail: device context");
|
||||
MessageBox(NULL, "Can't create a GL device context.", "ERROR", MB_OK | MB_ICONEXCLAMATION);
|
||||
return FALSE; // Return FALSE
|
||||
}
|
||||
|
||||
/*
|
||||
Our first pass, Multisampling hasn't been created yet, so we create a window normally
|
||||
If it is supported, then we're on our second pass
|
||||
that means we want to use our pixel format for sampling
|
||||
so set PixelFormat to arbMultiSampleformat instead
|
||||
*/
|
||||
if (!arbMultisampleSupported)
|
||||
{
|
||||
if (NULL == (PixelFormat =
|
||||
ChoosePixelFormat(hDC, &pfd))) // Did Windows Find A Matching Pixel Format?
|
||||
{
|
||||
KillGLWindow(); // Reset The Display
|
||||
ErrorLog("Fail: pixelformat");
|
||||
MessageBox(NULL, "Can't find a suitable pixelformat.", "ERROR",
|
||||
MB_OK | MB_ICONEXCLAMATION);
|
||||
return FALSE; // Return FALSE
|
||||
}
|
||||
}
|
||||
else
|
||||
PixelFormat = arbMultisampleFormat;
|
||||
|
||||
if (!SetPixelFormat(hDC, PixelFormat, &pfd)) // Are We Able To Set The Pixel Format?
|
||||
{
|
||||
KillGLWindow(); // Reset The Display
|
||||
ErrorLog("Fail: pixelformat");
|
||||
MessageBox(NULL, "Can't set the pixelformat.", "ERROR", MB_OK | MB_ICONEXCLAMATION);
|
||||
return FALSE; // Return FALSE
|
||||
}
|
||||
|
||||
if (NULL == (hRC = wglCreateContext(hDC))) // Are We Able To Get A Rendering Context?
|
||||
{
|
||||
KillGLWindow(); // Reset The Display
|
||||
ErrorLog("Fail: OpenGL rendering context creation");
|
||||
MessageBox(NULL, "Can't create a GL rendering context.", "ERROR",
|
||||
MB_OK | MB_ICONEXCLAMATION);
|
||||
return FALSE; // Return FALSE
|
||||
}
|
||||
|
||||
if (!wglMakeCurrent(hDC, hRC)) // Try To Activate The Rendering Context
|
||||
{
|
||||
KillGLWindow(); // Reset The Display
|
||||
ErrorLog("Fail: OpenGL rendering context activation");
|
||||
MessageBox(NULL, "Can't activate the GL rendering context.", "ERROR",
|
||||
MB_OK | MB_ICONEXCLAMATION);
|
||||
return FALSE; // Return FALSE
|
||||
}
|
||||
|
||||
/*
|
||||
Now that our window is created, we want to queary what samples are available
|
||||
we call our InitMultiSample window
|
||||
if we return a valid context, we want to destroy our current window
|
||||
and create a new one using the multisample interface.
|
||||
*/
|
||||
if (Global::iMultisampling)
|
||||
if (!arbMultisampleSupported)
|
||||
if ((Global::iMultisampling =
|
||||
InitMultisample(hInstance, hWnd, pfd, 1 << Global::iMultisampling)) != 0)
|
||||
{
|
||||
// WriteConsoleOnly("Opening second window for multisampling of
|
||||
// "+AnsiString(Global::iMultisampling)+" samples.");
|
||||
KillGLWindow(); // reset the display
|
||||
return CreateGLWindow(title, width, height, bits, fullscreenflag); // rekurencja
|
||||
}
|
||||
|
||||
ShowWindow(hWnd, SW_SHOW); // show the window
|
||||
SetForegroundWindow(hWnd); // slightly higher priority
|
||||
SetFocus(hWnd); // sets keyboard focus to the window
|
||||
ReSizeGLScene(width, height); // set up our perspective GL screen
|
||||
|
||||
if (!InitGL()) // initialize our newly created GL Window
|
||||
{
|
||||
KillGLWindow(); // reset the display
|
||||
ErrorLog("Fail: OpenGL initialization");
|
||||
MessageBox(NULL, "Initialization Failed.", "ERROR", MB_OK | MB_ICONEXCLAMATION);
|
||||
return FALSE; // return FALSE
|
||||
}
|
||||
return TRUE; // success
|
||||
}
|
||||
|
||||
static int mx = 0, my = 0;
|
||||
static POINT mouse;
|
||||
|
||||
static int test = 0;
|
||||
/**/
|
||||
// ************ Globals ************
|
||||
//
|
||||
#define MYDISPLAY 1
|
||||
|
||||
PCOPYDATASTRUCT pDane;
|
||||
|
||||
LRESULT CALLBACK WndProc(HWND hWnd, // handle for this window
|
||||
UINT uMsg, // message for this window
|
||||
WPARAM wParam, // additional message information
|
||||
LPARAM lParam) // additional message information
|
||||
{
|
||||
RECT rect;
|
||||
switch (uMsg) // check for windows messages
|
||||
{
|
||||
case WM_PASTE: //[Ctrl]+[V] potrzebujemy do innych celów
|
||||
return 0;
|
||||
case WM_COPYDATA: // obsługa danych przesłanych przez program sterujący
|
||||
pDane = (PCOPYDATASTRUCT)lParam;
|
||||
if (pDane->dwData == 'EU07') // sygnatura danych
|
||||
World.OnCommandGet((DaneRozkaz *)(pDane->lpData));
|
||||
break;
|
||||
case WM_ACTIVATE: // watch for window activate message
|
||||
// case WM_ACTIVATEAPP:
|
||||
{ // Ra: uzależnienie aktywności od bycia na wierzchu
|
||||
Global::bActive = (LOWORD(wParam) != WA_INACTIVE);
|
||||
if (Global::bInactivePause) // jeśli ma być pauzowanie okna w tle
|
||||
if (Global::bActive)
|
||||
Global::iPause &= ~4; // odpauzowanie, gdy jest na pierwszym planie
|
||||
else
|
||||
Global::iPause |= 4; // włączenie pauzy, gdy nieaktywy
|
||||
if (Global::bActive)
|
||||
SetCursorPos(mx, my);
|
||||
ShowCursor(!Global::bActive);
|
||||
/*
|
||||
if (!HIWORD(wParam)) //check minimization state
|
||||
active=TRUE; //program is active
|
||||
else
|
||||
active=FALSE; //program is no longer active
|
||||
*/
|
||||
return 0; // return to the message loop
|
||||
}
|
||||
case WM_SYSCOMMAND: // intercept system commands
|
||||
{
|
||||
switch (wParam) // check system calls
|
||||
{
|
||||
case 61696: // F10
|
||||
World.OnKeyDown(VK_F10);
|
||||
return 0;
|
||||
case SC_SCREENSAVE: // screensaver trying to start?
|
||||
case SC_MONITORPOWER: // monitor trying to enter powersave?
|
||||
return 0; // prevent from happening
|
||||
}
|
||||
break; // exit
|
||||
}
|
||||
case WM_CLOSE: // did we receive a close message?
|
||||
{
|
||||
PostQuitMessage(0); // send a quit message [Alt]+[F4]
|
||||
return 0; // jump back
|
||||
}
|
||||
case WM_MOUSEMOVE:
|
||||
{
|
||||
// mx= 100;//Global::iWindowWidth/2;
|
||||
// my= 100;//Global::iWindowHeight/2;
|
||||
// SetCursorPos(Global::iWindowWidth/2,Global::iWindowHeight/2);
|
||||
// m_x= LOWORD(lParam);
|
||||
// m_y= HIWORD(lParam);
|
||||
GetCursorPos(&mouse);
|
||||
if (Global::bActive && ((mouse.x != mx) || (mouse.y != my)))
|
||||
{
|
||||
World.OnMouseMove(double(mouse.x - mx) * 0.005, double(mouse.y - my) * 0.01);
|
||||
SetCursorPos(mx, my);
|
||||
}
|
||||
return 0; // jump back
|
||||
}
|
||||
case WM_KEYUP:
|
||||
if (Global::bActive)
|
||||
{
|
||||
World.OnKeyUp(wParam);
|
||||
return 0;
|
||||
}
|
||||
case WM_KEYDOWN:
|
||||
if (Global::bActive)
|
||||
{
|
||||
if (wParam != 17) // bo naciśnięcia [Ctrl] nie ma po co przekazywać
|
||||
if (wParam != 145) //[Scroll Lock] też nie
|
||||
World.OnKeyDown(wParam);
|
||||
switch (wParam)
|
||||
{
|
||||
case VK_ESCAPE: //[Esc] pauzuje tylko bez Debugmode
|
||||
if (DebugModeFlag)
|
||||
break;
|
||||
case 19: //[Pause]
|
||||
if (Global::iPause & 1) // jeśli pauza startowa
|
||||
Global::iPause &= ~1; // odpauzowanie, gdy po wczytaniu miało nie startować
|
||||
else if (!(Global::iMultiplayer & 2)) // w multiplayerze pauza nie ma sensu
|
||||
if (!Console::Pressed(VK_CONTROL)) // z [Ctrl] to radiostop jest
|
||||
// Ra: poniższe nie ma sensu, bo brak komunikacji natychmiast zapauzuje
|
||||
// ponownie
|
||||
// if (Global::iPause&8) //jeśli pauza związana z brakiem komunikacji z
|
||||
// PoKeys
|
||||
// Global::iPause&=~10; //odpauzowanie pauzy PoKeys (chyba nic nie da) i
|
||||
// ewentualnie klawiszowej również
|
||||
// else
|
||||
Global::iPause ^= 2; // zmiana stanu zapauzowania
|
||||
if (Global::iPause) // jak pauza
|
||||
Global::iTextMode = VK_F1; // to wyświetlić zegar i informację
|
||||
break;
|
||||
case VK_F7:
|
||||
if (DebugModeFlag)
|
||||
{ // siatki wyświetlane tyko w trybie testowym
|
||||
Global::bWireFrame = !Global::bWireFrame;
|
||||
++Global::iReCompile; // odświeżyć siatki
|
||||
// Ra: jeszcze usunąć siatki ze skompilowanych obiektów!
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0; // jump back
|
||||
case WM_CHAR:
|
||||
{
|
||||
/*
|
||||
switch ((TCHAR) wParam)
|
||||
{
|
||||
// case 'q':
|
||||
// done= true;
|
||||
// KillGLWindow();
|
||||
// PostQuitMessage(0);
|
||||
// DestroyWindow( hWnd );
|
||||
// break;
|
||||
};
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
case WM_SIZE: // resize the OpenGL window
|
||||
{
|
||||
ReSizeGLScene(LOWORD(lParam), HIWORD(lParam)); // LoWord=Width, HiWord=Height
|
||||
if (GetWindowRect(hWnd, &rect))
|
||||
{ // Ra: zmiana rozmiaru okna bez przesuwania myszy
|
||||
// mx=WindowWidth/2+rect.left; // horizontal position
|
||||
// my=WindowHeight/2+rect.top; // vertical position
|
||||
// SetCursorPos(mx,my);
|
||||
}
|
||||
return 0; // jump back
|
||||
}
|
||||
case WM_MOVE: // przesuwanie okna?
|
||||
{
|
||||
mx = WindowWidth / 2 + LOWORD(lParam); // horizontal position
|
||||
my = WindowHeight / 2 + HIWORD(lParam); // vertical position
|
||||
// SetCursorPos(mx,my);
|
||||
break;
|
||||
}
|
||||
case WM_PAINT:
|
||||
{ // odrysowanie okna
|
||||
break;
|
||||
}
|
||||
// case WM_ERASEBKGND: //Process this message to keep Windows from erasing background.
|
||||
case MM_JOY1BUTTONDOWN:
|
||||
{
|
||||
// WriteLog("Joystick button "+AnsiString(wParam));
|
||||
break;
|
||||
}
|
||||
case WM_CREATE:
|
||||
/* Capture the joystick. If this fails, beep and display
|
||||
* error, then quit.
|
||||
*/
|
||||
if (joySetCapture(hWnd, JOYSTICKID1, 0, FALSE))
|
||||
{
|
||||
// MessageBeep(MB_ICONEXCLAMATION);
|
||||
// MessageBox(hWnd,"Couldn't capture the joystick",NULL,MB_OK|MB_ICONEXCLAMATION);
|
||||
// return -1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
// pass all unhandled messages to DefWindowProc
|
||||
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
||||
};
|
||||
|
||||
#ifdef _WINDOWS
|
||||
void make_minidump( ::EXCEPTION_POINTERS* e ) {
|
||||
|
||||
@@ -617,27 +89,80 @@ LONG CALLBACK unhandled_handler( ::EXCEPTION_POINTERS* e ) {
|
||||
}
|
||||
#endif
|
||||
|
||||
int WINAPI WinMain(HINSTANCE hInstance, // instance
|
||||
HINSTANCE hPrevInstance, // previous instance
|
||||
LPSTR lpCmdLine, // command line parameters
|
||||
int nCmdShow) // window show state
|
||||
void window_resize_callback(GLFWwindow *window, int w, int h)
|
||||
{
|
||||
glViewport(0, 0, w, h); // Reset The Current Viewport
|
||||
glMatrixMode(GL_PROJECTION); // select the Projection Matrix
|
||||
glLoadIdentity(); // reset the Projection Matrix
|
||||
// calculate the aspect ratio of the window
|
||||
gluPerspective(45.0f, (GLdouble)w / (GLdouble)h, 0.2f, 2500.0f);
|
||||
glMatrixMode(GL_MODELVIEW); // select the Modelview Matrix
|
||||
glLoadIdentity(); // reset the Modelview Matrix
|
||||
}
|
||||
|
||||
void cursor_pos_callback(GLFWwindow *window, double x, double y)
|
||||
{
|
||||
if (Global::bActive)
|
||||
World.OnMouseMove(x * 0.005, y * 0.01);
|
||||
glfwSetCursorPos(window, 0.0, 0.0);
|
||||
}
|
||||
|
||||
void key_callback(GLFWwindow *window, int key, int scancode, int action, int mods)
|
||||
{
|
||||
//m7todo: bActive teraz pewnie nie potrzebne
|
||||
if (!Global::bActive)
|
||||
return;
|
||||
|
||||
Global::shiftState = (mods & GLFW_MOD_SHIFT) ? true : false;
|
||||
Global::ctrlState = (mods & GLFW_MOD_CONTROL) ? true : false;
|
||||
|
||||
if (action == GLFW_PRESS)
|
||||
{
|
||||
World.OnKeyDown(key);
|
||||
|
||||
switch (key)
|
||||
{
|
||||
case GLFW_KEY_PAUSE:
|
||||
if (Global::iPause & 1)
|
||||
Global::iPause &= ~1;
|
||||
else if (!(Global::iMultiplayer & 2) &&
|
||||
(mods & GLFW_MOD_CONTROL))
|
||||
Global::iPause ^= 2;
|
||||
if (Global::iPause)
|
||||
Global::iTextMode = GLFW_KEY_F1;
|
||||
break;
|
||||
|
||||
case GLFW_KEY_F7:
|
||||
Global::bWireFrame = !Global::bWireFrame;
|
||||
++Global::iReCompile;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (action == GLFW_RELEASE)
|
||||
{
|
||||
World.OnKeyUp(key);
|
||||
}
|
||||
}
|
||||
|
||||
void focus_callback(GLFWwindow *window, int focus)
|
||||
{
|
||||
Global::bActive = (focus == GLFW_TRUE ? 1 : 0);
|
||||
if (Global::bInactivePause) // jeśli ma być pauzowanie okna w tle
|
||||
if (Global::bActive)
|
||||
Global::iPause &= ~4; // odpauzowanie, gdy jest na pierwszym planie
|
||||
else
|
||||
Global::iPause |= 4; // włączenie pauzy, gdy nieaktywy
|
||||
}
|
||||
|
||||
int main(int argc, char argv[])
|
||||
{
|
||||
#if defined(_MSC_VER) && defined (_DEBUG)
|
||||
// memory leaks
|
||||
_CrtSetDbgFlag( _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG ) | _CRTDBG_LEAK_CHECK_DF );
|
||||
// floating point operation errors
|
||||
auto state = _clearfp();
|
||||
state = _control87( 0, 0 );
|
||||
// this will turn on FPE for #IND and zerodiv
|
||||
state = _control87( state & ~( _EM_ZERODIVIDE | _EM_INVALID ), _MCW_EM );
|
||||
#endif
|
||||
#ifdef _WINDOWS
|
||||
::SetUnhandledExceptionFilter( unhandled_handler );
|
||||
::SetUnhandledExceptionFilter(unhandled_handler);
|
||||
#endif
|
||||
|
||||
MSG msg; // windows message structure
|
||||
BOOL done = FALSE; // bool variable to exit loop
|
||||
fullscreen = true;
|
||||
if (!glfwInit())
|
||||
return -1;
|
||||
|
||||
DeleteFile("errors.txt"); // usunięcie starego
|
||||
Global::LoadIniFile("eu07.ini"); // teraz dopiero można przejrzeć plik z ustawieniami
|
||||
Global::InitKeys("keys.ini"); // wczytanie mapowania klawiszy - jest na stałe
|
||||
@@ -648,31 +173,33 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance
|
||||
AllocConsole();
|
||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
|
||||
}
|
||||
std::string commandline( lpCmdLine ); // parametry uruchomienia
|
||||
if( false == commandline.empty() )
|
||||
{ // analizowanie parametr�w
|
||||
cParser parser( commandline );
|
||||
|
||||
std::string commandline(argv);
|
||||
if (!commandline.empty())
|
||||
{
|
||||
cParser parser(commandline);
|
||||
std::string token;
|
||||
do {
|
||||
do
|
||||
{
|
||||
parser.getTokens();
|
||||
token.clear();
|
||||
parser >> token;
|
||||
|
||||
if( token == "-s" )
|
||||
if (token == "-s")
|
||||
{ // nazwa scenerii
|
||||
parser.getTokens();
|
||||
parser >> Global::SceneryFile;
|
||||
}
|
||||
else if( token == "-v")
|
||||
else if (token == "-v")
|
||||
{ // nazwa wybranego pojazdu
|
||||
parser.getTokens();
|
||||
parser >> Global::asHumanCtrlVehicle;
|
||||
}
|
||||
else if( token == "-modifytga" )
|
||||
else if (token == "-modifytga")
|
||||
{ // wykonanie modyfikacji wszystkich plików TGA
|
||||
Global::iModifyTGA = -1; // specjalny tryb wykonania totalnej modyfikacji
|
||||
}
|
||||
else if( token == "-e3d" )
|
||||
else if (token == "-e3d")
|
||||
{ // wygenerowanie wszystkich plików E3D
|
||||
if (Global::iConvertModels > 0)
|
||||
Global::iConvertModels = -Global::iConvertModels; // specjalny tryb
|
||||
@@ -684,34 +211,40 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance
|
||||
"Program usage: EU07 [-s sceneryfilepath] [-v vehiclename] [-modifytga] [-e3d]",
|
||||
!Global::iWriteLogEnabled);
|
||||
}
|
||||
while( false == token.empty() );
|
||||
while (!token.empty());
|
||||
}
|
||||
/* MC: usunalem tymczasowo bo sie gryzlo z nowym parserem - 8.6.2003
|
||||
AnsiString csp=AnsiString(Global::szSceneryFile);
|
||||
csp=csp.Delete(csp.Pos(AnsiString(strrchr(Global::szSceneryFile,'/')))+1,csp.Length());
|
||||
Global::asCurrentSceneryPath=csp;
|
||||
*/
|
||||
|
||||
fullscreen = Global::bFullScreen;
|
||||
WindowWidth = Global::iWindowWidth;
|
||||
WindowHeight = Global::iWindowHeight;
|
||||
Bpp = Global::iBpp;
|
||||
if (Bpp != 32)
|
||||
Bpp = 16;
|
||||
// create our OpenGL window
|
||||
if (!CreateGLWindow(const_cast<char*>(Global::asHumanCtrlVehicle.c_str()), WindowWidth, WindowHeight, Bpp,
|
||||
fullscreen))
|
||||
return 0; // quit if window was not created
|
||||
SetForegroundWindow(hWnd);
|
||||
// McZapkie: proba przeplukania klawiatury
|
||||
bool fullscreen = Global::bFullScreen;
|
||||
int width = Global::iWindowWidth;
|
||||
int height = Global::iWindowHeight;
|
||||
|
||||
GLFWwindow *window = glfwCreateWindow(width, height, "EU07++", nullptr, nullptr);
|
||||
if (!window)
|
||||
return -1;
|
||||
glfwMakeContextCurrent(window);
|
||||
glfwSwapInterval(1); //vsync
|
||||
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); //capture cursor
|
||||
glfwSetCursorPos(window, 0.0, 0.0);
|
||||
glfwSetFramebufferSizeCallback(window, window_resize_callback);
|
||||
glfwSetCursorPosCallback(window, cursor_pos_callback);
|
||||
glfwSetKeyCallback(window, key_callback);
|
||||
glfwSetWindowFocusCallback(window, focus_callback);
|
||||
glfwGetFramebufferSize(window, &width, &height);
|
||||
window_resize_callback(window, width, height);
|
||||
|
||||
if (glewInit() != GLEW_OK)
|
||||
return -1;
|
||||
|
||||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
glEnableClientState(GL_NORMAL_ARRAY);
|
||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
|
||||
Global::pWorld = &World; // Ra: wskaźnik potrzebny do usuwania pojazdów
|
||||
if (!World.Init(window))
|
||||
return -1;
|
||||
|
||||
Console *pConsole = new Console(); // Ra: nie wiem, czy ma to sens, ale jakoś zainicjowac trzeba
|
||||
while (Console::Pressed(VK_F10))
|
||||
Error("Keyboard buffer problem - press F10"); // na Windows 98 lubi się to pojawiać
|
||||
int iOldSpeed, iOldDelay;
|
||||
SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, &iOldSpeed, 0);
|
||||
SystemParametersInfo(SPI_GETKEYBOARDDELAY, 0, &iOldDelay, 0);
|
||||
SystemParametersInfo(SPI_SETKEYBOARDSPEED, 20, NULL, 0);
|
||||
// SystemParametersInfo(SPI_SETKEYBOARDDELAY,10,NULL,0);
|
||||
|
||||
if (!joyGetNumDevs())
|
||||
WriteLog("No joystick");
|
||||
if (Global::iModifyTGA < 0)
|
||||
@@ -727,43 +260,20 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance
|
||||
World.CreateE3D("models\\"); // rekurencyjne przeglądanie katalogów
|
||||
World.CreateE3D("dynamic\\", true);
|
||||
} // po zrobieniu E3D odpalamy normalnie scenerię, by ją zobaczyć
|
||||
// else
|
||||
//{//główna pętla programu
|
||||
|
||||
Console::On(); // włączenie konsoli
|
||||
while (!done) // loop that runs while done=FALSE
|
||||
while (!glfwWindowShouldClose(window) && World.Update())
|
||||
{
|
||||
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) // is there a message waiting?
|
||||
{
|
||||
if (msg.message == WM_QUIT) // have we received a quit message?
|
||||
done = TRUE; // if so
|
||||
else // if not, deal with window messages
|
||||
{
|
||||
// if (msg.message==WM_CHAR)
|
||||
// World.OnKeyDown(msg.wParam);
|
||||
TranslateMessage(&msg); // translate the message
|
||||
DispatchMessage(&msg); // dispatch the message
|
||||
}
|
||||
}
|
||||
else // if there are no messages
|
||||
{
|
||||
// draw the scene, watch for quit messages
|
||||
// DrawGLScene()
|
||||
// if (!pause)
|
||||
// if (Global::bInactivePause?Global::bActive:true) //tak nie, bo spada z góry
|
||||
if (World.Update()) // Was There A Quit Received?
|
||||
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
||||
else
|
||||
done = true; //[F10] or DrawGLScene signalled a quit
|
||||
}
|
||||
glfwSwapBuffers(window);
|
||||
glfwPollEvents();
|
||||
}
|
||||
Console::Off(); // wyłączenie konsoli (komunikacji zwrotnej)
|
||||
}
|
||||
SystemParametersInfo(SPI_SETKEYBOARDSPEED, iOldSpeed, NULL, 0);
|
||||
SystemParametersInfo(SPI_SETKEYBOARDDELAY, iOldDelay, NULL, 0);
|
||||
delete pConsole; // deaktywania sterownika
|
||||
|
||||
delete pConsole;
|
||||
TPythonInterpreter::killInstance();
|
||||
|
||||
// shutdown
|
||||
KillGLWindow(); // kill the window
|
||||
return (msg.wParam); // exit the program
|
||||
glfwDestroyWindow(window);
|
||||
glfwTerminate();
|
||||
return 0;
|
||||
}
|
||||
|
||||
191
Globals.cpp
191
Globals.cpp
@@ -48,7 +48,10 @@ bool Global::bOpenGL_1_5 = false; // czy są dostępne funkcje OpenGL 1.5
|
||||
*/
|
||||
double Global::fLuminance = 1.0; // jasność światła do automatycznego zapalania
|
||||
int Global::iReCompile = 0; // zwiększany, gdy trzeba odświeżyć siatki
|
||||
HWND Global::hWnd = NULL; // uchwyt okna
|
||||
//HWND Global::hWnd = NULL; // uchwyt okna
|
||||
GLFWwindow *Global::window;
|
||||
bool Global::shiftState;
|
||||
bool Global::ctrlState;
|
||||
int Global::iCameraLast = -1;
|
||||
std::string Global::asRelease = "16.0.1172.482";
|
||||
std::string Global::asVersion =
|
||||
@@ -909,7 +912,7 @@ void Global::ConfigParse(cParser &Parser)
|
||||
fFpsMax = fFpsAverage +
|
||||
fFpsDeviation; // górna granica FPS, przy której promień scenerii będzie zwiększany
|
||||
if (iPause)
|
||||
iTextMode = VK_F1; // jak pauza, to pokazać zegar
|
||||
iTextMode = GLFW_KEY_F1; // jak pauza, to pokazać zegar
|
||||
/* this won't execute anymore with the old parser removed
|
||||
// TBD: remove, or launch depending on passed flag?
|
||||
if (qp)
|
||||
@@ -934,128 +937,90 @@ void Global::ConfigParse(cParser &Parser)
|
||||
|
||||
void Global::InitKeys(std::string asFileName)
|
||||
{
|
||||
// if (FileExists(asFileName))
|
||||
// {
|
||||
// Error("Chwilowo plik keys.ini nie jest obsługiwany. Ładuję standardowe
|
||||
// ustawienia.\nKeys.ini file is temporarily not functional, loading default keymap...");
|
||||
/* TQueryParserComp *Parser;
|
||||
Parser=new TQueryParserComp(NULL);
|
||||
Parser->LoadStringToParse(asFileName);
|
||||
Keys[k_IncMainCtrl] = GLFW_KEY_KP_ADD;
|
||||
Keys[k_IncMainCtrlFAST] = GLFW_KEY_KP_ADD;
|
||||
Keys[k_DecMainCtrl] = GLFW_KEY_KP_SUBTRACT;
|
||||
Keys[k_DecMainCtrlFAST] = GLFW_KEY_KP_SUBTRACT;
|
||||
Keys[k_IncScndCtrl] = GLFW_KEY_KP_DIVIDE;
|
||||
Keys[k_IncScndCtrlFAST] = GLFW_KEY_KP_DIVIDE;
|
||||
Keys[k_DecScndCtrl] = GLFW_KEY_KP_MULTIPLY;
|
||||
Keys[k_DecScndCtrlFAST] = GLFW_KEY_KP_MULTIPLY;
|
||||
|
||||
for (int keycount=0; keycount<MaxKeys; keycount++)
|
||||
{
|
||||
Keys[keycount]=Parser->GetNextSymbol().ToInt();
|
||||
}
|
||||
Keys[k_IncLocalBrakeLevel] = GLFW_KEY_KP_1;
|
||||
Keys[k_DecLocalBrakeLevel] = GLFW_KEY_KP_7;
|
||||
Keys[k_IncBrakeLevel] = GLFW_KEY_KP_3;
|
||||
Keys[k_DecBrakeLevel] = GLFW_KEY_KP_9;
|
||||
Keys[k_Releaser] = GLFW_KEY_KP_6;
|
||||
Keys[k_EmergencyBrake] = GLFW_KEY_KP_0;
|
||||
Keys[k_Brake3] = GLFW_KEY_KP_8;
|
||||
Keys[k_Brake2] = GLFW_KEY_KP_5;
|
||||
Keys[k_Brake1] = GLFW_KEY_KP_2;
|
||||
Keys[k_Brake0] = GLFW_KEY_KP_4;
|
||||
Keys[k_WaveBrake] = GLFW_KEY_KP_DECIMAL;
|
||||
|
||||
delete Parser;
|
||||
*/
|
||||
// }
|
||||
// else
|
||||
{
|
||||
Keys[k_IncMainCtrl] = VK_ADD;
|
||||
Keys[k_IncMainCtrlFAST] = VK_ADD;
|
||||
Keys[k_DecMainCtrl] = VK_SUBTRACT;
|
||||
Keys[k_DecMainCtrlFAST] = VK_SUBTRACT;
|
||||
Keys[k_IncScndCtrl] = VK_DIVIDE;
|
||||
Keys[k_IncScndCtrlFAST] = VK_DIVIDE;
|
||||
Keys[k_DecScndCtrl] = VK_MULTIPLY;
|
||||
Keys[k_DecScndCtrlFAST] = VK_MULTIPLY;
|
||||
///*NORMALNE
|
||||
Keys[k_IncLocalBrakeLevel] = VK_NUMPAD1; // VK_NUMPAD7;
|
||||
// Keys[k_IncLocalBrakeLevelFAST]=VK_END; //VK_HOME;
|
||||
Keys[k_DecLocalBrakeLevel] = VK_NUMPAD7; // VK_NUMPAD1;
|
||||
// Keys[k_DecLocalBrakeLevelFAST]=VK_HOME; //VK_END;
|
||||
Keys[k_IncBrakeLevel] = VK_NUMPAD3; // VK_NUMPAD9;
|
||||
Keys[k_DecBrakeLevel] = VK_NUMPAD9; // VK_NUMPAD3;
|
||||
Keys[k_Releaser] = VK_NUMPAD6;
|
||||
Keys[k_EmergencyBrake] = VK_NUMPAD0;
|
||||
Keys[k_Brake3] = VK_NUMPAD8;
|
||||
Keys[k_Brake2] = VK_NUMPAD5;
|
||||
Keys[k_Brake1] = VK_NUMPAD2;
|
||||
Keys[k_Brake0] = VK_NUMPAD4;
|
||||
Keys[k_WaveBrake] = VK_DECIMAL;
|
||||
//*/
|
||||
/*MOJE
|
||||
Keys[k_IncLocalBrakeLevel]=VK_NUMPAD3; //VK_NUMPAD7;
|
||||
Keys[k_IncLocalBrakeLevelFAST]=VK_NUMPAD3; //VK_HOME;
|
||||
Keys[k_DecLocalBrakeLevel]=VK_DECIMAL; //VK_NUMPAD1;
|
||||
Keys[k_DecLocalBrakeLevelFAST]=VK_DECIMAL; //VK_END;
|
||||
Keys[k_IncBrakeLevel]=VK_NUMPAD6; //VK_NUMPAD9;
|
||||
Keys[k_DecBrakeLevel]=VK_NUMPAD9; //VK_NUMPAD3;
|
||||
Keys[k_Releaser]=VK_NUMPAD5;
|
||||
Keys[k_EmergencyBrake]=VK_NUMPAD0;
|
||||
Keys[k_Brake3]=VK_NUMPAD2;
|
||||
Keys[k_Brake2]=VK_NUMPAD1;
|
||||
Keys[k_Brake1]=VK_NUMPAD4;
|
||||
Keys[k_Brake0]=VK_NUMPAD7;
|
||||
Keys[k_WaveBrake]=VK_NUMPAD8;
|
||||
*/
|
||||
Keys[k_AntiSlipping] = VK_RETURN;
|
||||
Keys[k_Sand] = VkKeyScan('s');
|
||||
Keys[k_Main] = VkKeyScan('m');
|
||||
Keys[k_Active] = VkKeyScan('w');
|
||||
Keys[k_Battery] = VkKeyScan('j');
|
||||
Keys[k_DirectionForward] = VkKeyScan('d');
|
||||
Keys[k_DirectionBackward] = VkKeyScan('r');
|
||||
Keys[k_Fuse] = VkKeyScan('n');
|
||||
Keys[k_Compressor] = VkKeyScan('c');
|
||||
Keys[k_Converter] = VkKeyScan('x');
|
||||
Keys[k_MaxCurrent] = VkKeyScan('f');
|
||||
Keys[k_CurrentAutoRelay] = VkKeyScan('g');
|
||||
Keys[k_BrakeProfile] = VkKeyScan('b');
|
||||
Keys[k_CurrentNext] = VkKeyScan('z');
|
||||
Keys[k_AntiSlipping] = GLFW_KEY_KP_ENTER;
|
||||
Keys[k_Sand] = 'S';
|
||||
Keys[k_Main] = 'M';
|
||||
Keys[k_Active] = 'W';
|
||||
Keys[k_Battery] = 'J';
|
||||
Keys[k_DirectionForward] = 'D';
|
||||
Keys[k_DirectionBackward] = 'R';
|
||||
Keys[k_Fuse] = 'N';
|
||||
Keys[k_Compressor] = 'C';
|
||||
Keys[k_Converter] = 'X';
|
||||
Keys[k_MaxCurrent] = 'F';
|
||||
Keys[k_CurrentAutoRelay] = 'G';
|
||||
Keys[k_BrakeProfile] = 'B';
|
||||
Keys[k_CurrentNext] = 'Z';
|
||||
|
||||
Keys[k_Czuwak] = VkKeyScan(' ');
|
||||
Keys[k_Horn] = VkKeyScan('a');
|
||||
Keys[k_Horn2] = VkKeyScan('a');
|
||||
Keys[k_Czuwak] = ' ';
|
||||
Keys[k_Horn] = 'A';
|
||||
Keys[k_Horn2] = 'A';
|
||||
|
||||
Keys[k_FailedEngineCutOff] = VkKeyScan('e');
|
||||
Keys[k_FailedEngineCutOff] = 'E';
|
||||
|
||||
Keys[k_MechUp] = VK_PRIOR;
|
||||
Keys[k_MechDown] = VK_NEXT;
|
||||
Keys[k_MechLeft] = VK_LEFT;
|
||||
Keys[k_MechRight] = VK_RIGHT;
|
||||
Keys[k_MechForward] = VK_UP;
|
||||
Keys[k_MechBackward] = VK_DOWN;
|
||||
Keys[k_MechUp] = GLFW_KEY_PAGE_UP;
|
||||
Keys[k_MechDown] = GLFW_KEY_PAGE_DOWN;
|
||||
Keys[k_MechLeft] = GLFW_KEY_LEFT;
|
||||
Keys[k_MechRight] = GLFW_KEY_RIGHT;
|
||||
Keys[k_MechForward] = GLFW_KEY_UP;
|
||||
Keys[k_MechBackward] = GLFW_KEY_DOWN;
|
||||
|
||||
Keys[k_CabForward] = VK_HOME;
|
||||
Keys[k_CabBackward] = VK_END;
|
||||
Keys[k_CabForward] = GLFW_KEY_HOME;
|
||||
Keys[k_CabBackward] = GLFW_KEY_END;
|
||||
|
||||
Keys[k_Couple] = VK_INSERT;
|
||||
Keys[k_DeCouple] = VK_DELETE;
|
||||
Keys[k_Couple] = GLFW_KEY_INSERT;
|
||||
Keys[k_DeCouple] = GLFW_KEY_DELETE;
|
||||
|
||||
Keys[k_ProgramQuit] = VK_F10;
|
||||
// Keys[k_ProgramPause]=VK_F3;
|
||||
Keys[k_ProgramHelp] = VK_F1;
|
||||
// Keys[k_FreeFlyMode]=VK_F4;
|
||||
Keys[k_WalkMode] = VK_F5;
|
||||
Keys[k_ProgramQuit] = GLFW_KEY_F10;
|
||||
Keys[k_ProgramHelp] = GLFW_KEY_F1;
|
||||
Keys[k_WalkMode] = GLFW_KEY_F5;
|
||||
|
||||
Keys[k_OpenLeft] = VkKeyScan(',');
|
||||
Keys[k_OpenRight] = VkKeyScan('.');
|
||||
Keys[k_CloseLeft] = VkKeyScan(',');
|
||||
Keys[k_CloseRight] = VkKeyScan('.');
|
||||
Keys[k_DepartureSignal] = VkKeyScan('/');
|
||||
Keys[k_OpenLeft] = ',';
|
||||
Keys[k_OpenRight] = '.';
|
||||
Keys[k_CloseLeft] = ',';
|
||||
Keys[k_CloseRight] = '.';
|
||||
Keys[k_DepartureSignal] = '/';
|
||||
|
||||
// Winger 160204 - obsluga pantografow
|
||||
Keys[k_PantFrontUp] = VkKeyScan('p'); // Ra: zamieniony przedni z tylnym
|
||||
Keys[k_PantFrontDown] = VkKeyScan('p');
|
||||
Keys[k_PantRearUp] = VkKeyScan('o');
|
||||
Keys[k_PantRearDown] = VkKeyScan('o');
|
||||
// Winger 020304 - ogrzewanie
|
||||
Keys[k_Heating] = VkKeyScan('h');
|
||||
Keys[k_LeftSign] = VkKeyScan('y');
|
||||
Keys[k_UpperSign] = VkKeyScan('u');
|
||||
Keys[k_RightSign] = VkKeyScan('i');
|
||||
Keys[k_EndSign] = VkKeyScan('t');
|
||||
// Winger 160204 - obsluga pantografow
|
||||
Keys[k_PantFrontUp] = 'P'; // Ra: zamieniony przedni z tylnym
|
||||
Keys[k_PantFrontDown] = 'P';
|
||||
Keys[k_PantRearUp] = 'O';
|
||||
Keys[k_PantRearDown] = 'O';
|
||||
// Winger 020304 - ogrzewanie
|
||||
Keys[k_Heating] = 'H';
|
||||
Keys[k_LeftSign] = 'Y';
|
||||
Keys[k_UpperSign] = 'U';
|
||||
Keys[k_RightSign] = 'I';
|
||||
Keys[k_EndSign] = 'T';
|
||||
|
||||
Keys[k_SmallCompressor] = VkKeyScan('v');
|
||||
Keys[k_StLinOff] = VkKeyScan('l');
|
||||
// ABu 090305 - przyciski uniwersalne, do roznych bajerow :)
|
||||
Keys[k_Univ1] = VkKeyScan('[');
|
||||
Keys[k_Univ2] = VkKeyScan(']');
|
||||
Keys[k_Univ3] = VkKeyScan(';');
|
||||
Keys[k_Univ4] = VkKeyScan('\'');
|
||||
}
|
||||
Keys[k_SmallCompressor] = 'V';
|
||||
Keys[k_StLinOff] = 'L';
|
||||
// ABu 090305 - przyciski uniwersalne, do roznych bajerow :)
|
||||
Keys[k_Univ1] = '[';
|
||||
Keys[k_Univ2] = ']';
|
||||
Keys[k_Univ3] = ';';
|
||||
Keys[k_Univ4] = '\'';
|
||||
}
|
||||
/*
|
||||
vector3 Global::GetCameraPosition()
|
||||
|
||||
@@ -11,6 +11,7 @@ http://mozilla.org/MPL/2.0/.
|
||||
|
||||
#include <string>
|
||||
#include <Windows.h>
|
||||
#include <GLFW/glfw3.h>
|
||||
#include "opengl/glew.h"
|
||||
#include "dumb3d.h"
|
||||
|
||||
@@ -241,7 +242,9 @@ class Global
|
||||
*/
|
||||
static double fLuminance; // jasność światła do automatycznego zapalania
|
||||
static int iMultiplayer; // blokada działania niektórych eventów na rzecz kominikacji
|
||||
static HWND hWnd; // uchwyt okna
|
||||
static GLFWwindow *window;
|
||||
static bool shiftState; //m7todo: brzydko
|
||||
static bool ctrlState;
|
||||
static int iCameraLast;
|
||||
static std::string asRelease; // numer
|
||||
static std::string asVersion; // z opisem
|
||||
|
||||
25
Ground.cpp
25
Ground.cpp
@@ -17,7 +17,6 @@ http://mozilla.org/MPL/2.0/.
|
||||
#include "Ground.h"
|
||||
|
||||
#include "opengl/glew.h"
|
||||
#include "opengl/glut.h"
|
||||
|
||||
#include "Globals.h"
|
||||
#include "Logs.h"
|
||||
@@ -312,7 +311,7 @@ void TGroundNode::RenderVBO()
|
||||
if (EvLaunch->Render())
|
||||
if ((EvLaunch->dRadius < 0) || (mgn < EvLaunch->dRadius))
|
||||
{
|
||||
if (Console::Pressed(VK_SHIFT) && EvLaunch->Event2 != NULL)
|
||||
if (Global::shiftState && EvLaunch->Event2 != NULL)
|
||||
Global::AddToQuery(EvLaunch->Event2, NULL);
|
||||
else if (EvLaunch->Event1 != NULL)
|
||||
Global::AddToQuery(EvLaunch->Event1, NULL);
|
||||
@@ -537,7 +536,7 @@ void TGroundNode::RenderHidden()
|
||||
if ((EvLaunch->dRadius < 0) || (mgn < EvLaunch->dRadius))
|
||||
{
|
||||
WriteLog("Eventlauncher " + asName);
|
||||
if (Console::Pressed(VK_SHIFT) && (EvLaunch->Event2))
|
||||
if (Global::shiftState && (EvLaunch->Event2))
|
||||
Global::AddToQuery(EvLaunch->Event2, NULL);
|
||||
else if (EvLaunch->Event1)
|
||||
Global::AddToQuery(EvLaunch->Event1, NULL);
|
||||
@@ -2481,7 +2480,7 @@ void TGround::FirstInit()
|
||||
WriteLog("FirstInit is done");
|
||||
};
|
||||
|
||||
bool TGround::Init(std::string asFile, HDC hDC)
|
||||
bool TGround::Init(std::string asFile)
|
||||
{ // główne wczytywanie scenerii
|
||||
if (ToLower(asFile).substr(0, 7) == "scenery")
|
||||
asFile = asFile.erase(0, 8); // Ra: usunięcie niepotrzebnych znaków - zgodność wstecz z 2003
|
||||
@@ -4974,7 +4973,8 @@ void TGround::WyslijEvent(const std::string &e, const std::string &d)
|
||||
cData.dwData = 'EU07'; // sygnatura
|
||||
cData.cbData = 12 + i + j; // 8+dwa liczniki i dwa zera kończące
|
||||
cData.lpData = &r;
|
||||
Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
|
||||
//m7todo
|
||||
//Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
|
||||
CommLog( Now() + " " + std::to_string(r.iComm) + " " + e + " sent" );
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
@@ -4991,7 +4991,8 @@ void TGround::WyslijUszkodzenia(const std::string &t, char fl)
|
||||
cData.dwData = 'EU07'; // sygnatura
|
||||
cData.cbData = 11 + i; // 8+licznik i zero kończące
|
||||
cData.lpData = &r;
|
||||
Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
|
||||
//m7todo
|
||||
//Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
|
||||
CommLog( Now() + " " + std::to_string(r.iComm) + " " + t + " sent");
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
@@ -5007,7 +5008,8 @@ void TGround::WyslijString(const std::string &t, int n)
|
||||
cData.dwData = 'EU07'; // sygnatura
|
||||
cData.cbData = 10 + i; // 8+licznik i zero kończące
|
||||
cData.lpData = &r;
|
||||
Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
|
||||
//m7todo
|
||||
//Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
|
||||
CommLog( Now() + " " + std::to_string(r.iComm) + " " + t + " sent");
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
@@ -5086,7 +5088,8 @@ void TGround::WyslijNamiary(TGroundNode *t)
|
||||
cData.cbData = 10 + i + j; // 8+licznik i zero kończące
|
||||
cData.lpData = &r;
|
||||
// WriteLog("Ramka gotowa");
|
||||
Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
|
||||
//m7todo
|
||||
//Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
|
||||
// WriteLog("Ramka poszla!");
|
||||
CommLog( Now() + " " + std::to_string(r.iComm) + " " + t->asName + " sent");
|
||||
};
|
||||
@@ -5129,7 +5132,8 @@ void TGround::WyslijObsadzone()
|
||||
cData.cbData = 8 + 1984; // 8+licznik i zero kończące
|
||||
cData.lpData = &r;
|
||||
// WriteLog("Ramka gotowa");
|
||||
Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
|
||||
//m7todo
|
||||
//Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
|
||||
CommLog( Now() + " " + std::to_string(r.iComm) + " obsadzone" + " sent");
|
||||
}
|
||||
|
||||
@@ -5153,7 +5157,8 @@ void TGround::WyslijParam(int nr, int fl)
|
||||
cData.dwData = 'EU07'; // sygnatura
|
||||
cData.cbData = 12 + i; // 12+rozmiar danych
|
||||
cData.lpData = &r;
|
||||
Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
|
||||
//m7todo
|
||||
//Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
2
Ground.h
2
Ground.h
@@ -320,7 +320,7 @@ class TGround
|
||||
TGround();
|
||||
~TGround();
|
||||
void Free();
|
||||
bool Init(std::string asFile, HDC hDC);
|
||||
bool Init(std::string asFile);
|
||||
void FirstInit();
|
||||
void InitTracks();
|
||||
void InitTraction();
|
||||
|
||||
@@ -268,7 +268,7 @@ TTexturesManager::AlphaValue TTexturesManager::LoadBMP(std::string const &fileNa
|
||||
if( infoSize > sizeof( info ) ) {
|
||||
WriteLog( "Warning - BMP header is larger than expected, possible format difference." );
|
||||
}
|
||||
file.read((char *)&info, std::min(infoSize, sizeof(info)));
|
||||
file.read((char *)&info, std::min((size_t)infoSize, sizeof(info)));
|
||||
|
||||
if (file.eof())
|
||||
{
|
||||
|
||||
122
Train.cpp
122
Train.cpp
@@ -413,7 +413,7 @@ void TTrain::OnKeyDown(int cKey)
|
||||
// isEztOer=(mvControlled->TrainType==dt_EZT)&&(mvControlled->Mains)&&(mvOccupied->BrakeSubsystem==ss_ESt)&&(mvControlled->ActiveDir!=0);
|
||||
// isEztOer=((mvControlled->TrainType==dt_EZT)&&(mvControlled->Battery==true)&&(mvControlled->EpFuse==true)&&(mvOccupied->BrakeSubsystem==Oerlikon)&&(mvControlled->ActiveDir!=0));
|
||||
|
||||
if (GetAsyncKeyState(VK_SHIFT) < 0)
|
||||
if (Global::shiftState)
|
||||
{ // wciśnięty [Shift]
|
||||
if (cKey == Global::Keys[k_IncMainCtrlFAST]) // McZapkie-200702: szybkie
|
||||
// przelaczanie na poz.
|
||||
@@ -428,7 +428,7 @@ void TTrain::OnKeyDown(int cKey)
|
||||
else if (cKey == Global::Keys[k_DirectionBackward])
|
||||
{
|
||||
if (mvOccupied->Radio == false)
|
||||
if (GetAsyncKeyState(VK_CONTROL) >= 0)
|
||||
if (Global::ctrlState >= 0)
|
||||
{
|
||||
dsbSwitch->SetVolume(DSBVOLUME_MAX);
|
||||
dsbSwitch->Play(0, 0, 0);
|
||||
@@ -580,7 +580,7 @@ void TTrain::OnKeyDown(int cKey)
|
||||
int CouplNr = -2;
|
||||
if (!FreeFlyModeFlag)
|
||||
{
|
||||
if (GetAsyncKeyState(VK_CONTROL) < 0)
|
||||
if (Global::ctrlState)
|
||||
if (mvOccupied->BrakeDelaySwitch(bdelay_R + bdelay_M))
|
||||
{
|
||||
dsbPneumaticRelay->SetVolume(DSBVOLUME_MAX);
|
||||
@@ -607,7 +607,7 @@ void TTrain::OnKeyDown(int cKey)
|
||||
}
|
||||
if (temp)
|
||||
{
|
||||
if (GetAsyncKeyState(VK_CONTROL) < 0)
|
||||
if (Global::ctrlState)
|
||||
if (temp->MoverParameters->BrakeDelaySwitch(bdelay_R + bdelay_M))
|
||||
{
|
||||
dsbPneumaticRelay->SetVolume(DSBVOLUME_MAX);
|
||||
@@ -677,7 +677,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
{ // Ra: dźwięk, gdy razem z [Shift]
|
||||
if ((mvControlled->TrainType & dt_EZT) ? mvControlled == mvOccupied :
|
||||
!mvOccupied->ActiveCab) // tylko w maszynowym
|
||||
if (Console::Pressed(VK_CONTROL)) // z [Ctrl]
|
||||
if (Global::ctrlState) // z [Ctrl]
|
||||
mvControlled->bPantKurek3 = true; // zbiornik pantografu połączony
|
||||
// jest ze zbiornikiem głównym
|
||||
// (pompowanie nie ma sensu)
|
||||
@@ -779,7 +779,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
// przyciemnienia pod Univ4)
|
||||
else if (cKey == Global::Keys[k_Univ3])
|
||||
{
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{
|
||||
if (bCabLight == false) //(ggCabLightButton.GetValue()==0)
|
||||
{
|
||||
@@ -795,7 +795,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
dsbSwitch->Play(0, 0, 0);
|
||||
}
|
||||
/*
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{//z [Ctrl] zapalamy albo gasimy światełko w kabinie
|
||||
if (iCabLightFlag<2) ++iCabLightFlag; //zapalenie
|
||||
}
|
||||
@@ -807,7 +807,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
// hunter-091012: dzwiek dla przyciemnienia swiatelka w kabinie
|
||||
else if (cKey == Global::Keys[k_Univ4])
|
||||
{
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{
|
||||
if (bCabLightDim == false) //(ggCabLightDimButton.GetValue()==0)
|
||||
{
|
||||
@@ -910,7 +910,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
{
|
||||
if (false == (mvOccupied->LightsPosNo > 0))
|
||||
{
|
||||
if ((GetAsyncKeyState(VK_CONTROL) < 0) &&
|
||||
if ((Global::ctrlState) &&
|
||||
(ggRearLeftLightButton.SubModel)) // hunter-230112 - z controlem zapala z tylu
|
||||
{
|
||||
//------------------------------
|
||||
@@ -1030,7 +1030,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
SetLights();
|
||||
}
|
||||
}
|
||||
else if ((GetAsyncKeyState(VK_CONTROL) < 0) &&
|
||||
else if ((Global::ctrlState) &&
|
||||
(ggRearUpperLightButton.SubModel)) // hunter-230112 - z controlem zapala z tylu
|
||||
{
|
||||
//------------------------------
|
||||
@@ -1085,7 +1085,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
{
|
||||
if (false == (mvOccupied->LightsPosNo > 0))
|
||||
{
|
||||
if ((GetAsyncKeyState(VK_CONTROL) < 0) &&
|
||||
if ((Global::ctrlState) &&
|
||||
(ggRearRightLightButton.SubModel)) // hunter-230112 - z controlem zapala z tylu
|
||||
{
|
||||
//------------------------------
|
||||
@@ -1264,7 +1264,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
// World.cpp
|
||||
if (!FreeFlyModeFlag)
|
||||
{
|
||||
if (GetAsyncKeyState(VK_CONTROL) < 0)
|
||||
if (Global::ctrlState)
|
||||
if ((mvOccupied->LocalBrake == ManualBrake) || (mvOccupied->MBrake == true))
|
||||
{
|
||||
mvOccupied->IncManualBrakeLevel(1);
|
||||
@@ -1282,7 +1282,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
// World.cpp
|
||||
if (!FreeFlyModeFlag)
|
||||
{
|
||||
if (GetAsyncKeyState(VK_CONTROL) < 0)
|
||||
if (Global::ctrlState)
|
||||
if ((mvOccupied->LocalBrake == ManualBrake) || (mvOccupied->MBrake == true))
|
||||
mvOccupied->DecManualBrakeLevel(1);
|
||||
else
|
||||
@@ -1376,7 +1376,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
// mvOccupied->IncBrakeLevel());
|
||||
mvOccupied->BrakeLevelSet(mvOccupied->BrakeCtrlPosNo / 2 +
|
||||
(mvOccupied->BrakeHandle == FV4a ? 1 : 0));
|
||||
if (GetAsyncKeyState(VK_CONTROL) < 0)
|
||||
if (Global::ctrlState)
|
||||
mvOccupied->BrakeLevelSet(
|
||||
mvOccupied->Handle->GetPos(bh_NP)); // yB: czy ten stos funkcji nie
|
||||
// powinien być jako oddzielna
|
||||
@@ -1395,7 +1395,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
}
|
||||
else if (cKey == Global::Keys[k_Brake0])
|
||||
{
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{
|
||||
mvOccupied->BrakeCtrlPos2 = 0; // wyrownaj kapturek
|
||||
}
|
||||
@@ -1457,7 +1457,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
else if (cKey == Global::Keys[k_Fuse])
|
||||
//---------------
|
||||
{
|
||||
if (GetAsyncKeyState(VK_CONTROL) < 0) // z controlem
|
||||
if (Global::ctrlState) // z controlem
|
||||
{
|
||||
ggConverterFuseButton.PutValue(1); // hunter-261211
|
||||
if ((mvControlled->Mains == false) && (ggConverterButton.GetValue() == 0) &&
|
||||
@@ -1498,7 +1498,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
}
|
||||
else if (cKey == Global::Keys[k_DirectionBackward]) // r
|
||||
{
|
||||
if (GetAsyncKeyState(VK_CONTROL) < 0)
|
||||
if (Global::ctrlState)
|
||||
{ // wciśnięty [Ctrl]
|
||||
if (mvOccupied->Radio == true)
|
||||
{
|
||||
@@ -1580,7 +1580,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
int CouplNr = -2;
|
||||
if (!FreeFlyModeFlag)
|
||||
{
|
||||
if (GetAsyncKeyState(VK_CONTROL) < 0)
|
||||
if (Global::ctrlState)
|
||||
if (mvOccupied->BrakeDelaySwitch(bdelay_R))
|
||||
{
|
||||
dsbPneumaticRelay->SetVolume(DSBVOLUME_MAX);
|
||||
@@ -1607,7 +1607,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
}
|
||||
if (temp)
|
||||
{
|
||||
if (GetAsyncKeyState(VK_CONTROL) < 0)
|
||||
if (Global::ctrlState)
|
||||
if (temp->MoverParameters->BrakeDelaySwitch(bdelay_R))
|
||||
{
|
||||
dsbPneumaticRelay->SetVolume(DSBVOLUME_MAX);
|
||||
@@ -1672,7 +1672,7 @@ if ((mvControlled->PantFrontVolt) || (mvControlled->PantRearVolt) ||
|
||||
{ // Ra: bez [Shift] też dać dźwięk
|
||||
if ((mvControlled->TrainType & dt_EZT) ? mvControlled == mvOccupied :
|
||||
!mvOccupied->ActiveCab) // tylko w maszynowym
|
||||
if (Console::Pressed(VK_CONTROL)) // z [Ctrl]
|
||||
if (Global::ctrlState) // z [Ctrl]
|
||||
mvControlled->bPantKurek3 =
|
||||
false; // zbiornik pantografu połączony jest z małą sprężarką
|
||||
// (pompowanie ma sens, ale potem trzeba przełączyć)
|
||||
@@ -2009,7 +2009,7 @@ if
|
||||
// przyciemnienia pod Univ4)
|
||||
else if (cKey == Global::Keys[k_Univ3])
|
||||
{
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{
|
||||
if (bCabLight == true) //(ggCabLightButton.GetValue()!=0)
|
||||
{
|
||||
@@ -2025,7 +2025,7 @@ if
|
||||
dsbSwitch->Play(0, 0, 0);
|
||||
}
|
||||
/*
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{//z [Ctrl] zapalamy albo gasimy światełko w kabinie
|
||||
if (iCabLightFlag) --iCabLightFlag; //gaszenie
|
||||
} */
|
||||
@@ -2036,7 +2036,7 @@ if
|
||||
// hunter-091012: dzwiek dla przyciemnienia swiatelka w kabinie
|
||||
else if (cKey == Global::Keys[k_Univ4])
|
||||
{
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{
|
||||
if (bCabLightDim == true) //(ggCabLightDimButton.GetValue()!=0)
|
||||
{
|
||||
@@ -2117,7 +2117,7 @@ if
|
||||
{
|
||||
if (false == (mvOccupied->LightsPosNo > 0))
|
||||
{
|
||||
if ((GetAsyncKeyState(VK_CONTROL) < 0) &&
|
||||
if ((Global::ctrlState) &&
|
||||
(ggRearLeftLightButton.SubModel)) // hunter-230112 - z controlem gasi z tylu
|
||||
{
|
||||
//------------------------------
|
||||
@@ -2236,7 +2236,7 @@ if
|
||||
SetLights();
|
||||
}
|
||||
}
|
||||
else if ((GetAsyncKeyState(VK_CONTROL) < 0) &&
|
||||
else if ((Global::ctrlState) &&
|
||||
(ggRearUpperLightButton.SubModel)) // hunter-230112 - z controlem gasi z tylu
|
||||
{
|
||||
//------------------------------
|
||||
@@ -2290,7 +2290,7 @@ if
|
||||
{
|
||||
if (false == (mvOccupied->LightsPosNo > 0))
|
||||
{
|
||||
if ((GetAsyncKeyState(VK_CONTROL) < 0) &&
|
||||
if ((Global::ctrlState) &&
|
||||
(ggRearRightLightButton.SubModel)) // hunter-230112 - z controlem gasi z tylu
|
||||
{
|
||||
//------------------------------
|
||||
@@ -2427,8 +2427,8 @@ if
|
||||
fMechCroach = -0.5;
|
||||
else
|
||||
fMechCroach = 0.5;
|
||||
// if (!GetAsyncKeyState(VK_SHIFT)<0) // bez shifta
|
||||
if (!Console::Pressed(VK_CONTROL)) // gdy [Ctrl] zwolniony (dodatkowe widoki)
|
||||
// if (!Global::shiftState<0) // bez shifta
|
||||
if (!Global::ctrlState) // gdy [Ctrl] zwolniony (dodatkowe widoki)
|
||||
{
|
||||
if (cKey == Global::Keys[k_MechLeft])
|
||||
{
|
||||
@@ -2517,7 +2517,7 @@ if
|
||||
|
||||
void TTrain::OnKeyUp(int cKey)
|
||||
{ // zwolnienie klawisza
|
||||
if (GetAsyncKeyState(VK_SHIFT) < 0)
|
||||
if (Global::shiftState)
|
||||
{ // wciśnięty [Shift]
|
||||
}
|
||||
else
|
||||
@@ -4198,7 +4198,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
|
||||
if (Console::Pressed(Global::Keys[k_Horn]))
|
||||
{
|
||||
if (Console::Pressed(VK_SHIFT))
|
||||
if (Global::shiftState)
|
||||
{
|
||||
SetFlag(mvOccupied->WarningSignal, 2);
|
||||
mvOccupied->WarningSignal &= (255 - 1);
|
||||
@@ -4229,7 +4229,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
//----------------
|
||||
// hunter-141211: wyl. szybki zalaczony i wylaczony przeniesiony z
|
||||
// OnKeyPress()
|
||||
if (Console::Pressed(VK_SHIFT) && Console::Pressed(Global::Keys[k_Main]))
|
||||
if (Global::shiftState && Console::Pressed(Global::Keys[k_Main]))
|
||||
{
|
||||
fMainRelayTimer += dt;
|
||||
ggMainOnButton.PutValue(1);
|
||||
@@ -4263,7 +4263,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
}
|
||||
//---
|
||||
|
||||
if (!Console::Pressed(VK_SHIFT) && Console::Pressed(Global::Keys[k_Main]))
|
||||
if (!Global::shiftState && Console::Pressed(Global::Keys[k_Main]))
|
||||
{
|
||||
ggMainOffButton.PutValue(1);
|
||||
if (mvControlled->MainSwitch(false))
|
||||
@@ -4402,7 +4402,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
ggAntiSlipButton.UpdateValue(0);
|
||||
//-----------------
|
||||
// hunter-261211: przetwornica i sprezarka
|
||||
if (Console::Pressed(VK_SHIFT) &&
|
||||
if (Global::shiftState &&
|
||||
Console::Pressed(Global::Keys[k_Converter])) // NBMX 14-09-2003: przetwornica wl
|
||||
{ //(mvControlled->CompressorPower<2)
|
||||
ggConverterButton.PutValue(1);
|
||||
@@ -4426,16 +4426,16 @@ bool TTrain::Update( double const Deltatime )
|
||||
}
|
||||
|
||||
// if (
|
||||
// Console::Pressed(VK_SHIFT)&&Console::Pressed(Global::Keys[k_Compressor])&&((mvControlled->EngineType==ElectricSeriesMotor)||(mvControlled->TrainType==dt_EZT))
|
||||
// Global::shiftState&&Console::Pressed(Global::Keys[k_Compressor])&&((mvControlled->EngineType==ElectricSeriesMotor)||(mvControlled->TrainType==dt_EZT))
|
||||
// ) //NBMX 14-09-2003: sprezarka wl
|
||||
if (Console::Pressed(VK_SHIFT) && Console::Pressed(Global::Keys[k_Compressor]) &&
|
||||
if (Global::shiftState && Console::Pressed(Global::Keys[k_Compressor]) &&
|
||||
(mvControlled->CompressorPower < 2)) // hunter-091012: tak jest poprawnie
|
||||
{ // hunter-110212: poprawka dla EZT
|
||||
ggCompressorButton.PutValue(1);
|
||||
mvControlled->CompressorSwitch(true);
|
||||
}
|
||||
|
||||
if (!Console::Pressed(VK_SHIFT) &&
|
||||
if (!Global::shiftState &&
|
||||
Console::Pressed(Global::Keys[k_Converter])) // NBMX 14-09-2003: przetwornica wl
|
||||
{
|
||||
ggConverterButton.PutValue(0);
|
||||
@@ -4446,9 +4446,9 @@ bool TTrain::Update( double const Deltatime )
|
||||
}
|
||||
|
||||
// if (
|
||||
// !Console::Pressed(VK_SHIFT)&&Console::Pressed(Global::Keys[k_Compressor])&&((mvControlled->EngineType==ElectricSeriesMotor)||(mvControlled->TrainType==dt_EZT))
|
||||
// !Global::shiftState&&Console::Pressed(Global::Keys[k_Compressor])&&((mvControlled->EngineType==ElectricSeriesMotor)||(mvControlled->TrainType==dt_EZT))
|
||||
// ) //NBMX 14-09-2003: sprezarka wl
|
||||
if (!Console::Pressed(VK_SHIFT) && Console::Pressed(Global::Keys[k_Compressor]) &&
|
||||
if (!Global::shiftState && Console::Pressed(Global::Keys[k_Compressor]) &&
|
||||
(mvControlled->CompressorPower < 2)) // hunter-091012: tak jest poprawnie
|
||||
{ // hunter-110212: poprawka dla EZT
|
||||
ggCompressorButton.PutValue(0);
|
||||
@@ -4507,7 +4507,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
if (!DebugModeFlag)
|
||||
{
|
||||
if (ggUniversal1Button.SubModel)
|
||||
if (Console::Pressed(VK_SHIFT))
|
||||
if (Global::shiftState)
|
||||
ggUniversal1Button.IncValue(dt / 2);
|
||||
else
|
||||
ggUniversal1Button.DecValue(dt / 2);
|
||||
@@ -4523,7 +4523,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
if (!DebugModeFlag)
|
||||
{
|
||||
if (ggUniversal2Button.SubModel)
|
||||
if (Console::Pressed(VK_SHIFT))
|
||||
if (Global::shiftState)
|
||||
ggUniversal2Button.IncValue(dt / 2);
|
||||
else
|
||||
ggUniversal2Button.DecValue(dt / 2);
|
||||
@@ -4533,9 +4533,9 @@ bool TTrain::Update( double const Deltatime )
|
||||
// hunter-091012: zrobione z uwzglednieniem przelacznika swiatla
|
||||
if (Console::Pressed(Global::Keys[k_Univ3]))
|
||||
{
|
||||
if (Console::Pressed(VK_SHIFT))
|
||||
if (Global::shiftState)
|
||||
{
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{
|
||||
bCabLight = true;
|
||||
if (ggCabLightButton.SubModel)
|
||||
@@ -4558,7 +4558,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{
|
||||
bCabLight = false;
|
||||
if (ggCabLightButton.SubModel)
|
||||
@@ -4589,10 +4589,10 @@ bool TTrain::Update( double const Deltatime )
|
||||
if (ggUniversal3Button.SubModel)
|
||||
|
||||
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{//z [Ctrl] zapalamy albo gasimy światełko w kabinie
|
||||
//tutaj jest bez sensu, trzeba reagować na wciskanie klawisza!
|
||||
if (Console::Pressed(VK_SHIFT))
|
||||
if (Global::shiftState)
|
||||
{//zapalenie
|
||||
if (iCabLightFlag<2) ++iCabLightFlag;
|
||||
}
|
||||
@@ -4604,7 +4604,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
}
|
||||
else
|
||||
{//bez [Ctrl] przełączamy cośtem
|
||||
if (Console::Pressed(VK_SHIFT))
|
||||
if (Global::shiftState)
|
||||
{
|
||||
ggUniversal3Button.PutValue(1); //hunter-131211: z UpdateValue na
|
||||
PutValue - by zachowywal sie jak pozostale przelaczniki
|
||||
@@ -4645,7 +4645,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
if (Console::Pressed(Global::Keys[k_Univ4]))
|
||||
{
|
||||
if (ggUniversal4Button.SubModel)
|
||||
if (Console::Pressed(VK_SHIFT))
|
||||
if (Global::shiftState)
|
||||
{
|
||||
ActiveUniversal4=true;
|
||||
//ggUniversal4Button.UpdateValue(1);
|
||||
@@ -4662,9 +4662,9 @@ bool TTrain::Update( double const Deltatime )
|
||||
// swiatla
|
||||
if (Console::Pressed(Global::Keys[k_Univ4]))
|
||||
{
|
||||
if (Console::Pressed(VK_SHIFT))
|
||||
if (Global::shiftState)
|
||||
{
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{
|
||||
bCabLightDim = true;
|
||||
if (ggCabLightDimButton.SubModel)
|
||||
@@ -4680,7 +4680,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{
|
||||
bCabLightDim = false;
|
||||
if (ggCabLightDimButton.SubModel)
|
||||
@@ -4720,7 +4720,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
// ((mvOccupied->BrakeHandle==FV4a)&&(Console::Pressed(Global::Keys[k_IncBrakeLevel])))
|
||||
if ((Console::Pressed(Global::Keys[k_IncBrakeLevel])))
|
||||
{
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{
|
||||
// mvOccupied->BrakeCtrlPos2-=dt/20.0;
|
||||
// if (mvOccupied->BrakeCtrlPos2<-1.5) mvOccupied->BrakeCtrlPos2=-1.5;
|
||||
@@ -4735,7 +4735,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
// ((mvOccupied->BrakeHandle==FV4a)&&(Console::Pressed(Global::Keys[k_DecBrakeLevel])))
|
||||
if ((Console::Pressed(Global::Keys[k_DecBrakeLevel])))
|
||||
{
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{
|
||||
// mvOccupied->BrakeCtrlPos2+=(mvOccupied->BrakeCtrlPos2>2?0:dt/20.0);
|
||||
// if (mvOccupied->BrakeCtrlPos2<-3) mvOccupied->BrakeCtrlPos2=-3;
|
||||
@@ -4751,7 +4751,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
|
||||
if ((mvOccupied->BrakeHandle == FV4a) && (Console::Pressed(Global::Keys[k_IncBrakeLevel])))
|
||||
{
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{
|
||||
mvOccupied->BrakeCtrlPos2 -= dt / 20.0;
|
||||
if (mvOccupied->BrakeCtrlPos2 < -1.5)
|
||||
@@ -4768,7 +4768,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
|
||||
if ((mvOccupied->BrakeHandle == FV4a) && (Console::Pressed(Global::Keys[k_DecBrakeLevel])))
|
||||
{
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
if (Global::ctrlState)
|
||||
{
|
||||
mvOccupied->BrakeCtrlPos2 += (mvOccupied->BrakeCtrlPos2 > 2 ? 0 : dt / 20.0);
|
||||
if (mvOccupied->BrakeCtrlPos2 < -3)
|
||||
@@ -4821,7 +4821,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
|
||||
if (Console::Pressed(Global::Keys[k_Main])) //[]
|
||||
{
|
||||
if (Console::Pressed(VK_SHIFT))
|
||||
if (Global::shiftState)
|
||||
ggMainButton.PutValue(1);
|
||||
else
|
||||
ggMainButton.PutValue(0);
|
||||
@@ -4846,10 +4846,10 @@ bool TTrain::Update( double const Deltatime )
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Console::Pressed(VK_SHIFT))
|
||||
if (Global::shiftState)
|
||||
{
|
||||
// if (Console::Pressed(k_CurrentNext))
|
||||
{ // Ra: było pod VK_F3
|
||||
{ // Ra: było pod GLFW_KEY_F3
|
||||
if ((mvOccupied->EpFuseSwitch(true)))
|
||||
{
|
||||
dsbPneumaticSwitch->SetVolume(-10);
|
||||
@@ -4860,8 +4860,8 @@ bool TTrain::Update( double const Deltatime )
|
||||
else
|
||||
{
|
||||
// if (Console::Pressed(k_CurrentNext))
|
||||
{ // Ra: było pod VK_F3
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
{ // Ra: było pod GLFW_KEY_F3
|
||||
if (Global::ctrlState)
|
||||
{
|
||||
if ((mvOccupied->EpFuseSwitch(false)))
|
||||
{
|
||||
@@ -4890,7 +4890,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
// Winger 010304 PantAllDownButton
|
||||
if (Console::Pressed(Global::Keys[k_PantFrontUp]))
|
||||
{
|
||||
if (Console::Pressed(VK_SHIFT))
|
||||
if (Global::shiftState)
|
||||
ggPantFrontButton.PutValue(1);
|
||||
else
|
||||
ggPantAllDownButton.PutValue(1);
|
||||
@@ -4903,7 +4903,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
|
||||
if (Console::Pressed(Global::Keys[k_PantRearUp]))
|
||||
{
|
||||
if (Console::Pressed(VK_SHIFT))
|
||||
if (Global::shiftState)
|
||||
ggPantRearButton.PutValue(1);
|
||||
else
|
||||
ggPantFrontButtonOff.PutValue(1);
|
||||
|
||||
228
World.cpp
228
World.cpp
@@ -12,7 +12,10 @@ http://mozilla.org/MPL/2.0/.
|
||||
|
||||
*/
|
||||
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include "World.h"
|
||||
|
||||
#include "opengl/glew.h"
|
||||
@@ -44,6 +47,11 @@ TDynamicObject *Controlled = NULL; // pojazd, który prowadzimy
|
||||
|
||||
const double fTimeMax = 1.00; //[s] maksymalny czas aktualizacji w jednek klatce
|
||||
|
||||
extern "C"
|
||||
{
|
||||
GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window); //m7todo: potrzebne do directsound
|
||||
}
|
||||
|
||||
TWorld::TWorld()
|
||||
{
|
||||
// randomize();
|
||||
@@ -92,6 +100,8 @@ void TWorld::TrainDelete(TDynamicObject *d)
|
||||
|
||||
GLvoid TWorld::glPrint(const char *txt) // custom GL "Print" routine
|
||||
{ // wypisywanie tekstu 2D na ekranie
|
||||
//m7todo
|
||||
return;
|
||||
if (!txt)
|
||||
return;
|
||||
if (Global::bGlutFont)
|
||||
@@ -164,10 +174,12 @@ BOOL GetDisplayMonitorInfo(int nDeviceIndex, LPSTR lpszMonitorInfo)
|
||||
}
|
||||
*/
|
||||
|
||||
bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
bool TWorld::Init(GLFWwindow *w)
|
||||
{
|
||||
auto timestart = std::chrono::system_clock::now();
|
||||
Global::hWnd = NhWnd; // do WM_COPYDATA
|
||||
|
||||
window = w;
|
||||
Global::window = w; // do WM_COPYDATA
|
||||
Global::pCamera = &Camera; // Ra: wskaźnik potrzebny do likwidacji drgań
|
||||
Global::detonatoryOK = true;
|
||||
WriteLog("Starting MaSzyna rail vehicle simulator.");
|
||||
@@ -419,6 +431,8 @@ bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
|
||||
/*--------------------Render Initialization End---------------------*/
|
||||
|
||||
//m7todo: font
|
||||
/*
|
||||
WriteLog("Font init"); // początek inicjacji fontów 2D
|
||||
if (Global::bGlutFont) // jeśli wybrano GLUT font, próbujemy zlinkować GLUT32.DLL
|
||||
{
|
||||
@@ -459,16 +473,14 @@ bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
WriteLog("Display Lists font used."); //+AnsiString(glGetError())
|
||||
}
|
||||
WriteLog("Font init OK"); //+AnsiString(glGetError())
|
||||
|
||||
*/
|
||||
Timer::ResetTimers();
|
||||
|
||||
hWnd = NhWnd;
|
||||
glColor4f(1.0f, 3.0f, 3.0f, 0.0f);
|
||||
// SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
||||
// glClear(GL_COLOR_BUFFER_BIT);
|
||||
// glFlush();
|
||||
|
||||
SetForegroundWindow(hWnd);
|
||||
WriteLog("Sound Init");
|
||||
|
||||
glLoadIdentity();
|
||||
@@ -502,11 +514,14 @@ bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
glRasterPos2f(-0.25f, -0.10f);
|
||||
glPrint("Dzwiek / Sound...");
|
||||
}
|
||||
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
||||
|
||||
glfwSwapBuffers(window);
|
||||
|
||||
glEnable(GL_LIGHTING);
|
||||
/*-----------------------Sound Initialization-----------------------*/
|
||||
TSoundsManager::Init(hWnd);
|
||||
|
||||
TSoundsManager::Init(glfwGetWin32Window(window));
|
||||
|
||||
// TSoundsManager::LoadSounds( "" );
|
||||
/*---------------------Sound Initialization End---------------------*/
|
||||
WriteLog("Sound Init OK");
|
||||
@@ -515,7 +530,8 @@ bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
glRasterPos2f(-0.25f, -0.11f);
|
||||
glPrint("OK.");
|
||||
}
|
||||
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
||||
|
||||
glfwSwapBuffers(window);
|
||||
|
||||
int i;
|
||||
|
||||
@@ -526,7 +542,7 @@ bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
glRasterPos2f(-0.25f, -0.12f);
|
||||
glPrint("Tekstury / Textures...");
|
||||
}
|
||||
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
||||
glfwSwapBuffers(window);
|
||||
|
||||
TTexturesManager::Init();
|
||||
WriteLog("Textures init OK");
|
||||
@@ -535,7 +551,7 @@ bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
glRasterPos2f(-0.25f, -0.13f);
|
||||
glPrint("OK.");
|
||||
}
|
||||
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
||||
glfwSwapBuffers(window);
|
||||
|
||||
WriteLog("Models init");
|
||||
if (Global::detonatoryOK)
|
||||
@@ -543,7 +559,7 @@ bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
glRasterPos2f(-0.25f, -0.14f);
|
||||
glPrint("Modele / Models...");
|
||||
}
|
||||
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
||||
glfwSwapBuffers(window);
|
||||
// McZapkie: dodalem sciezke zeby mozna bylo definiowac skad brac modele ale to malo eleganckie
|
||||
// TModelsManager::LoadModels(asModelsPatch);
|
||||
TModelsManager::Init();
|
||||
@@ -553,7 +569,7 @@ bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
glRasterPos2f(-0.25f, -0.15f);
|
||||
glPrint("OK.");
|
||||
}
|
||||
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
||||
glfwSwapBuffers(window);
|
||||
|
||||
WriteLog("Ground init");
|
||||
if (Global::detonatoryOK)
|
||||
@@ -561,9 +577,9 @@ bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
glRasterPos2f(-0.25f, -0.16f);
|
||||
glPrint("Sceneria / Scenery (please wait)...");
|
||||
}
|
||||
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
||||
glfwSwapBuffers(window);
|
||||
|
||||
Ground.Init(Global::SceneryFile, hDC);
|
||||
Ground.Init(Global::SceneryFile);
|
||||
// Global::tSinceStart= 0;
|
||||
Clouds.Init();
|
||||
WriteLog("Ground init OK");
|
||||
@@ -572,7 +588,7 @@ bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
glRasterPos2f(-0.25f, -0.17f);
|
||||
glPrint("OK.");
|
||||
}
|
||||
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
||||
glfwSwapBuffers(window);
|
||||
|
||||
// TTrack *Track=Ground.FindGroundNode("train_start",TP_TRACK)->pTrack;
|
||||
|
||||
@@ -589,7 +605,7 @@ bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
glRasterPos2f(-0.25f, -0.18f);
|
||||
glPrint("Przygotowanie kabiny do sterowania...");
|
||||
}
|
||||
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
||||
glfwSwapBuffers(window);
|
||||
|
||||
strcat(buff, Global::asHumanCtrlVehicle.c_str());
|
||||
WriteLog(buff);
|
||||
@@ -611,7 +627,7 @@ bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
glPrint("OK.");
|
||||
}
|
||||
FollowView();
|
||||
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
||||
glfwSwapBuffers(window);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -622,7 +638,7 @@ bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
glRasterPos2f(-0.25f, -0.20f);
|
||||
glPrint("Blad inicjalizacji sterowanego pojazdu!");
|
||||
}
|
||||
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
||||
glfwSwapBuffers(window);
|
||||
Controlled = NULL;
|
||||
mvControlled = NULL;
|
||||
Camera.Type = tp_Free;
|
||||
@@ -640,7 +656,7 @@ bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
}
|
||||
}
|
||||
FreeFlyModeFlag = true; // Ra: automatycznie włączone latanie
|
||||
SwapBuffers(hDC); // swap buffers (double buffering)
|
||||
glfwSwapBuffers(window);
|
||||
Controlled = NULL;
|
||||
mvControlled = NULL;
|
||||
Camera.Type = tp_Free;
|
||||
@@ -685,44 +701,11 @@ void TWorld::OnKeyDown(int cKey)
|
||||
// na każdy kod wirtualny niech przypadają 4 bajty: 2 dla naciśnięcia i 2 dla zwolnienia
|
||||
// powtórzone 256 razy da 1kB na każdy stan przełączników, łącznie będzie 4kB pierwszej tabeli
|
||||
// przekodowania
|
||||
if (!Global::iPause)
|
||||
{ // podczas pauzy klawisze nie działają
|
||||
std::string info = "Key pressed: [";
|
||||
if (Console::Pressed(VK_SHIFT))
|
||||
info += "Shift]+[";
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
info += "Ctrl]+[";
|
||||
if (cKey > 192) // coś tam jeszcze ciekawego jest?
|
||||
{
|
||||
if (cKey < 255) // 255 to [Fn] w laptopach
|
||||
WriteLog(info + (char)(cKey - 128) + "]");
|
||||
}
|
||||
else if (cKey >= 186)
|
||||
WriteLog(info + std::string(";=,-./~").substr(cKey - 186, 1) + "]");
|
||||
else if (cKey > 123) // coś tam jeszcze ciekawego jest?
|
||||
WriteLog(info + std::to_string(cKey) + "]"); // numer klawisza
|
||||
else if (cKey >= 112) // funkcyjne
|
||||
WriteLog(info + "F" + std::to_string(cKey - 111) + "]");
|
||||
else if (cKey >= 96)
|
||||
WriteLog(info + "Num" + std::string("0123456789*+?-./").substr(cKey - 96, 1) + "]");
|
||||
else if (((cKey >= '0') && (cKey <= '9')) || ((cKey >= 'A') && (cKey <= 'Z')) ||
|
||||
(cKey == ' '))
|
||||
WriteLog(info + (char)(cKey) + "]");
|
||||
else if (cKey == '-')
|
||||
WriteLog(info + "Insert]");
|
||||
else if (cKey == '.')
|
||||
WriteLog(info + "Delete]");
|
||||
else if (cKey == '$')
|
||||
WriteLog(info + "Home]");
|
||||
else if (cKey == '#')
|
||||
WriteLog(info + "End]");
|
||||
else if (cKey > 'Z') //żeby nie logować kursorów
|
||||
WriteLog(info + std::to_string(cKey) + "]"); // numer klawisza
|
||||
}
|
||||
if ((cKey <= '9') ? (cKey >= '0') : false) // klawisze cyfrowe
|
||||
//m7todo: printowanie klawiszy?
|
||||
if (cKey >= '0' && cKey <= '9')
|
||||
{
|
||||
int i = cKey - '0'; // numer klawisza
|
||||
if (Console::Pressed(VK_SHIFT))
|
||||
if (Global::shiftState)
|
||||
{ // z [Shift] uruchomienie eventu
|
||||
if (!Global::iPause) // podczas pauzy klawisze nie działają
|
||||
if (KeyEvents[i])
|
||||
@@ -730,8 +713,8 @@ void TWorld::OnKeyDown(int cKey)
|
||||
}
|
||||
else // zapamiętywanie kamery może działać podczas pauzy
|
||||
if (FreeFlyModeFlag) // w trybie latania można przeskakiwać do ustawionych kamer
|
||||
if ((Global::iTextMode != VK_F12) &&
|
||||
(Global::iTextMode != VK_F3)) // ograniczamy użycie kamer
|
||||
if ((Global::iTextMode != GLFW_KEY_F12) &&
|
||||
(Global::iTextMode != GLFW_KEY_F3)) // ograniczamy użycie kamer
|
||||
{
|
||||
if ((!Global::pFreeCameraInit[i].x && !Global::pFreeCameraInit[i].y &&
|
||||
!Global::pFreeCameraInit[i].z))
|
||||
@@ -763,66 +746,56 @@ void TWorld::OnKeyDown(int cKey)
|
||||
}
|
||||
// będzie jeszcze załączanie sprzęgów z [Ctrl]
|
||||
}
|
||||
else if ((cKey >= VK_F1) ? (cKey <= VK_F12) : false)
|
||||
else if (cKey >= GLFW_KEY_F1 && cKey <= GLFW_KEY_F12)
|
||||
{
|
||||
switch (cKey)
|
||||
{
|
||||
case VK_F1: // czas i relacja
|
||||
case VK_F3:
|
||||
case VK_F5: // przesiadka do innego pojazdu
|
||||
case VK_F8: // FPS
|
||||
case VK_F9: // wersja, typ wyświetlania, błędy OpenGL
|
||||
case VK_F10:
|
||||
case GLFW_KEY_F1: // czas i relacja
|
||||
case GLFW_KEY_F3:
|
||||
case GLFW_KEY_F5: // przesiadka do innego pojazdu
|
||||
case GLFW_KEY_F8: // FPS
|
||||
case GLFW_KEY_F9: // wersja, typ wyświetlania, błędy OpenGL
|
||||
case GLFW_KEY_F10:
|
||||
if (Global::iTextMode == cKey)
|
||||
Global::iTextMode =
|
||||
(Global::iPause && (cKey != VK_F1) ? VK_F1 :
|
||||
(Global::iPause && (cKey != GLFW_KEY_F1) ? GLFW_KEY_F1 :
|
||||
0); // wyłączenie napisów, chyba że pauza
|
||||
else
|
||||
Global::iTextMode = cKey;
|
||||
break;
|
||||
case VK_F2: // parametry pojazdu
|
||||
case GLFW_KEY_F2: // parametry pojazdu
|
||||
if (Global::iTextMode == cKey) // jeśli kolejne naciśnięcie
|
||||
++Global::iScreenMode[cKey - VK_F1]; // kolejny ekran
|
||||
++Global::iScreenMode[cKey - GLFW_KEY_F1]; // kolejny ekran
|
||||
else
|
||||
{ // pierwsze naciśnięcie daje pierwszy (tzn. zerowy) ekran
|
||||
Global::iTextMode = cKey;
|
||||
Global::iScreenMode[cKey - VK_F1] = 0;
|
||||
Global::iScreenMode[cKey - GLFW_KEY_F1] = 0;
|
||||
}
|
||||
break;
|
||||
case VK_F12: // coś tam jeszcze
|
||||
if (Console::Pressed(VK_CONTROL) && Console::Pressed(VK_SHIFT))
|
||||
case GLFW_KEY_F12:
|
||||
if (Global::ctrlState && Global::shiftState)
|
||||
DebugModeFlag = !DebugModeFlag; // taka opcjonalna funkcja, może się czasem przydać
|
||||
/* //Ra 2F1P: teraz włączanie i wyłączanie klawiszami cyfrowymi po użyciu [F12]
|
||||
else if (Console::Pressed(VK_SHIFT))
|
||||
{//odpalenie logu w razie "W"
|
||||
if ((Global::iWriteLogEnabled&2)==0) //nie było okienka
|
||||
{//otwarcie okna
|
||||
AllocConsole();
|
||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
|
||||
}
|
||||
Global::iWriteLogEnabled|=3;
|
||||
} */
|
||||
else
|
||||
Global::iTextMode = cKey;
|
||||
break;
|
||||
case VK_F4:
|
||||
case GLFW_KEY_F4:
|
||||
InOutKey();
|
||||
break;
|
||||
case VK_F6:
|
||||
case GLFW_KEY_F6:
|
||||
if (DebugModeFlag)
|
||||
{ // przyspieszenie symulacji do testowania scenerii... uwaga na FPS!
|
||||
// Global::iViewMode=VK_F6;
|
||||
if (Console::Pressed(VK_CONTROL))
|
||||
Global::fTimeSpeed = (Console::Pressed(VK_SHIFT) ? 10.0 : 5.0);
|
||||
// Global::iViewMode=GLFW_KEY_F6;
|
||||
if (Global::ctrlState)
|
||||
Global::fTimeSpeed = (Global::shiftState ? 10.0 : 5.0);
|
||||
else
|
||||
Global::fTimeSpeed = (Console::Pressed(VK_SHIFT) ? 2.0 : 1.0);
|
||||
Global::fTimeSpeed = (Global::shiftState ? 2.0 : 1.0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
// if (cKey!=VK_F4)
|
||||
// if (cKey!=GLFW_KEY_F4)
|
||||
return; // nie są przekazywane do pojazdu wcale
|
||||
}
|
||||
if (Global::iTextMode == VK_F10) // wyświetlone napisy klawiszem F10
|
||||
if (Global::iTextMode == GLFW_KEY_F10) // wyświetlone napisy klawiszem F10
|
||||
{ // i potwierdzenie
|
||||
if( cKey == 'Y' ) {
|
||||
// flaga wyjścia z programu
|
||||
@@ -831,9 +804,9 @@ void TWorld::OnKeyDown(int cKey)
|
||||
}
|
||||
return; // nie przekazujemy do pociągu
|
||||
}
|
||||
else if ((Global::iTextMode == VK_F12) ? (cKey >= '0') && (cKey <= '9') : false)
|
||||
else if ((Global::iTextMode == GLFW_KEY_F12) ? (cKey >= '0') && (cKey <= '9') : false)
|
||||
{ // tryb konfiguracji debugmode (przestawianie kamery już wyłączone
|
||||
if (!Console::Pressed(VK_SHIFT)) // bez [Shift]
|
||||
if (!Global::shiftState) // bez [Shift]
|
||||
{
|
||||
if (cKey == '1')
|
||||
Global::iWriteLogEnabled ^= 1; // włącz/wyłącz logowanie do pliku
|
||||
@@ -855,7 +828,7 @@ void TWorld::OnKeyDown(int cKey)
|
||||
if (Controlled->MoverParameters->Radio)
|
||||
Ground.RadioStop(Camera.Pos);
|
||||
}
|
||||
else if (!Global::iPause) //||(cKey==VK_F4)) //podczas pauzy sterownaie nie działa, F4 tak
|
||||
else if (!Global::iPause) //||(cKey==GLFW_KEY_F4)) //podczas pauzy sterownaie nie działa, F4 tak
|
||||
if (Train)
|
||||
if (Controlled)
|
||||
if ((Controlled->Controller == Humandriver) ? true : DebugModeFlag || (cKey == 'Q'))
|
||||
@@ -867,7 +840,7 @@ void TWorld::OnKeyDown(int cKey)
|
||||
TDynamicObject *temp = Global::DynamicNearest();
|
||||
if (temp)
|
||||
{
|
||||
if (GetAsyncKeyState(VK_CONTROL) < 0) // z ctrl odcinanie
|
||||
if (Global::ctrlState) // z ctrl odcinanie
|
||||
{
|
||||
temp->MoverParameters->BrakeStatus ^= 128;
|
||||
}
|
||||
@@ -884,7 +857,7 @@ void TWorld::OnKeyDown(int cKey)
|
||||
TDynamicObject *temp = Global::DynamicNearest();
|
||||
if (temp)
|
||||
{
|
||||
if (Console::Pressed(VK_SHIFT) ? temp->MoverParameters->IncBrakeMult() :
|
||||
if (Global::shiftState ? temp->MoverParameters->IncBrakeMult() :
|
||||
temp->MoverParameters->DecBrakeMult())
|
||||
if (Train)
|
||||
{ // dźwięk oczywiście jest w kabinie
|
||||
@@ -907,9 +880,9 @@ void TWorld::OnKeyDown(int cKey)
|
||||
CouplNr = 0; // z [-1,1] zrobić [0,1]
|
||||
int mask, set = 0; // Ra: [Shift]+[Ctrl]+[T] odpala mi jakąś idiotyczną zmianę
|
||||
// tapety pulpitu :/
|
||||
if (GetAsyncKeyState(VK_SHIFT) < 0) // z [Shift] zapalanie
|
||||
if (Global::shiftState) // z [Shift] zapalanie
|
||||
set = mask = 64; // bez [Ctrl] założyć tabliczki
|
||||
else if (GetAsyncKeyState(VK_CONTROL) < 0)
|
||||
else if (Global::ctrlState)
|
||||
set = mask = 2 + 32; // z [Ctrl] zapalić światła czerwone
|
||||
else
|
||||
mask = 2 + 32 + 64; // wyłączanie ściąga wszystko
|
||||
@@ -929,7 +902,7 @@ void TWorld::OnKeyDown(int cKey)
|
||||
TDynamicObject *temp = Global::DynamicNearest();
|
||||
if (temp)
|
||||
{
|
||||
if (GetAsyncKeyState(VK_CONTROL) < 0)
|
||||
if (Global::ctrlState)
|
||||
if ((temp->MoverParameters->LocalBrake == ManualBrake) ||
|
||||
(temp->MoverParameters->MBrake == true))
|
||||
temp->MoverParameters->IncManualBrakeLevel(1);
|
||||
@@ -949,7 +922,7 @@ void TWorld::OnKeyDown(int cKey)
|
||||
TDynamicObject *temp = Global::DynamicNearest();
|
||||
if (temp)
|
||||
{
|
||||
if (GetAsyncKeyState(VK_CONTROL) < 0)
|
||||
if (Global::ctrlState)
|
||||
if ((temp->MoverParameters->LocalBrake == ManualBrake) ||
|
||||
(temp->MoverParameters->MBrake == true))
|
||||
temp->MoverParameters->DecManualBrakeLevel(1);
|
||||
@@ -1041,7 +1014,7 @@ void TWorld::DistantView()
|
||||
void TWorld::FollowView(bool wycisz)
|
||||
{ // ustawienie śledzenia pojazdu
|
||||
// ABu 180404 powrot mechanika na siedzenie albo w okolicę pojazdu
|
||||
// if (Console::Pressed(VK_F4)) Global::iViewMode=VK_F4;
|
||||
// if (Console::Pressed(GLFW_KEY_F4)) Global::iViewMode=GLFW_KEY_F4;
|
||||
// Ra: na zewnątrz wychodzimy w Train.cpp
|
||||
Camera.Reset(); // likwidacja obrotów - patrzy horyzontalnie na południe
|
||||
if (Controlled) // jest pojazd do prowadzenia?
|
||||
@@ -1196,7 +1169,7 @@ bool TWorld::Update()
|
||||
Ground.UpdatePhys(fMaxDt,n); //Ra: teraz czas kroku jest (względnie) stały
|
||||
if (DebugModeFlag)
|
||||
if (Global::bActive) //nie przyspieszać, gdy jedzie w tle :)
|
||||
if (GetAsyncKeyState(VK_ESCAPE)<0)
|
||||
if (GetAsyncKeyState(GLFW_KEY_ESCAPE)<0)
|
||||
{//yB dodał przyspieszacz fizyki
|
||||
Ground.UpdatePhys(fMaxDt,n);
|
||||
Ground.UpdatePhys(fMaxDt,n);
|
||||
@@ -1228,7 +1201,7 @@ bool TWorld::Update()
|
||||
Ground.Update(dt, n); // tu zrobić tylko coklatkową aktualizację przesunięć
|
||||
if (DebugModeFlag)
|
||||
if (Global::bActive) // nie przyspieszać, gdy jedzie w tle :)
|
||||
if (GetAsyncKeyState(VK_ESCAPE) < 0)
|
||||
if (Console::Pressed(GLFW_KEY_ESCAPE))
|
||||
{ // yB dodał przyspieszacz fizyki
|
||||
Ground.Update(dt, n);
|
||||
Ground.Update(dt, n);
|
||||
@@ -1268,7 +1241,7 @@ TWorld::Update_Camera( double const Deltatime ) {
|
||||
|
||||
// Console::Update(); //tu jest zależne od FPS, co nie jest korzystne
|
||||
if( Global::bActive ) { // obsługa ruchu kamery tylko gdy okno jest aktywne
|
||||
if( Console::Pressed( VK_LBUTTON ) ) {
|
||||
if( glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS ) {
|
||||
Camera.Reset(); // likwidacja obrotów - patrzy horyzontalnie na południe
|
||||
// if (!FreeFlyModeFlag) //jeśli wewnątrz - patrzymy do tyłu
|
||||
// Camera.LookAt=Train->pMechPosition-Normalize(Train->GetDirection())*10;
|
||||
@@ -1294,7 +1267,7 @@ TWorld::Update_Camera( double const Deltatime ) {
|
||||
if( FreeFlyModeFlag )
|
||||
Camera.RaLook(); // jednorazowe przestawienie kamery
|
||||
}
|
||||
else if( Console::Pressed( VK_RBUTTON ) ) //||Console::Pressed(VK_F4))
|
||||
else if(glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_RIGHT) == GLFW_PRESS ) //||Console::Pressed(GLFW_KEY_F4))
|
||||
FollowView( false ); // bez wyciszania dźwięków
|
||||
/*
|
||||
else if( Global::iTextMode == -1 ) { // tu mozna dodac dopisywanie do logu przebiegu lokomotywy
|
||||
@@ -1314,7 +1287,7 @@ TWorld::Update_Camera( double const Deltatime ) {
|
||||
tempangle =
|
||||
Controlled->VectorFront() * ( Controlled->MoverParameters->ActiveCab == -1 ? -1 : 1 );
|
||||
modelrotate = atan2( -tempangle.x, tempangle.z );
|
||||
if( Console::Pressed( VK_CONTROL ) ? ( Console::Pressed( Global::Keys[ k_MechLeft ] ) ||
|
||||
if( Global::ctrlState ? ( Console::Pressed( Global::Keys[ k_MechLeft ] ) ||
|
||||
Console::Pressed( Global::Keys[ k_MechRight ] ) ) :
|
||||
false ) { // jeśli lusterko lewe albo prawe (bez rzucania na razie)
|
||||
bool lr = Console::Pressed( Global::Keys[ k_MechLeft ] );
|
||||
@@ -1333,7 +1306,7 @@ TWorld::Update_Camera( double const Deltatime ) {
|
||||
Camera.Yaw = 0; // odchylenie na bok od Camera.LookAt
|
||||
if( Train->Dynamic()->MoverParameters->ActiveCab == 0 )
|
||||
Camera.LookAt = Camera.Pos - Train->GetDirection(); // gdy w korytarzu
|
||||
else if( Console::Pressed( VK_SHIFT ) ) { // patrzenie w bok przez szybę
|
||||
else if( Global::shiftState ) { // patrzenie w bok przez szybę
|
||||
Camera.LookAt = Camera.Pos -
|
||||
( lr ? -1 : 1 ) * Train->Dynamic()->VectorLeft() *
|
||||
Train->Dynamic()->MoverParameters->ActiveCab;
|
||||
@@ -1780,13 +1753,13 @@ TWorld::Render_UI() {
|
||||
// OutText1+= " Slowing Down !!! ";
|
||||
// }
|
||||
}
|
||||
/*if (Console::Pressed(VK_F5))
|
||||
/*if (Console::Pressed(GLFW_KEY_F5))
|
||||
{Global::slowmotion=true;};
|
||||
if (Console::Pressed(VK_F6))
|
||||
if (Console::Pressed(GLFW_KEY_F6))
|
||||
{Global::slowmotion=false;};*/
|
||||
|
||||
if( Global::iTextMode == VK_F8 ) {
|
||||
Global::iViewMode = VK_F8;
|
||||
if( Global::iTextMode == GLFW_KEY_F8 ) {
|
||||
Global::iViewMode = GLFW_KEY_F8;
|
||||
OutText1 = " FPS: ";
|
||||
OutText1 += to_string( Timer::GetFPS(), 2 );
|
||||
//OutText1 += sprintf();
|
||||
@@ -1796,7 +1769,7 @@ TWorld::Render_UI() {
|
||||
OutText1 += to_string( Ground.iRendered );
|
||||
}
|
||||
|
||||
// if (Console::Pressed(VK_F7))
|
||||
// if (Console::Pressed(GLFW_KEY_F7))
|
||||
//{
|
||||
// OutText1=FloatToStrF(Controlled->MoverParameters->Couplers[0].CouplingFlag,ffFixed,2,0)+",
|
||||
// ";
|
||||
@@ -1804,7 +1777,7 @@ TWorld::Render_UI() {
|
||||
//}
|
||||
|
||||
/*
|
||||
if (Console::Pressed(VK_F5))
|
||||
if (Console::Pressed(GLFW_KEY_F5))
|
||||
{
|
||||
int line=2;
|
||||
OutText1="Time: "+FloatToStrF(GlobalTime->hh,ffFixed,2,0)+":"
|
||||
@@ -1831,7 +1804,7 @@ TWorld::Render_UI() {
|
||||
};
|
||||
// */
|
||||
/*
|
||||
if (Console::Pressed(VK_F6))
|
||||
if (Console::Pressed(GLFW_KEY_F6))
|
||||
{
|
||||
//GlobalTime->UpdateMTableTime(100);
|
||||
//OutText1=FloatToStrF(SquareMagnitude(Global::pCameraPosition-Controlled->GetPosition()),ffFixed,10,0);
|
||||
@@ -1918,17 +1891,20 @@ TWorld::Render_UI() {
|
||||
}
|
||||
|
||||
glDisable( GL_LIGHTING );
|
||||
//m7todo: title
|
||||
/*
|
||||
if( Controlled )
|
||||
SetWindowText( hWnd, Controlled->MoverParameters->Name.c_str() );
|
||||
else
|
||||
SetWindowText( hWnd, Global::SceneryFile.c_str() ); // nazwa scenerii
|
||||
*/
|
||||
glBindTexture( GL_TEXTURE_2D, 0 );
|
||||
glColor4f( 1.0f, 0.0f, 0.0f, 1.0f );
|
||||
glLoadIdentity();
|
||||
glTranslatef( 0.0f, 0.0f, -0.50f );
|
||||
|
||||
if( Global::iTextMode == VK_F1 ) { // tekst pokazywany po wciśnięciu [F1]
|
||||
// Global::iViewMode=VK_F1;
|
||||
if( Global::iTextMode == GLFW_KEY_F1 ) { // tekst pokazywany po wciśnięciu [F1]
|
||||
// Global::iViewMode=GLFW_KEY_F1;
|
||||
glColor3f( 1.0f, 1.0f, 1.0f ); // a, damy białym
|
||||
OutText1 =
|
||||
"Time: "
|
||||
@@ -1952,16 +1928,16 @@ TWorld::Render_UI() {
|
||||
OutText3 = ""; // Pomoc w sterowaniu - [F9]";
|
||||
// OutText3=AnsiString(Global::pCameraRotationDeg); //kąt kamery względem północy
|
||||
}
|
||||
else if( Global::iTextMode == VK_F12 ) { // opcje włączenia i wyłączenia logowania
|
||||
else if( Global::iTextMode == GLFW_KEY_F12 ) { // opcje włączenia i wyłączenia logowania
|
||||
OutText1 = "[0] Debugmode " + std::string( DebugModeFlag ? "(on)" : "(off)" );
|
||||
OutText2 = "[1] log.txt " + std::string( ( Global::iWriteLogEnabled & 1 ) ? "(on)" : "(off)" );
|
||||
OutText3 = "[2] Console " + std::string( ( Global::iWriteLogEnabled & 2 ) ? "(on)" : "(off)" );
|
||||
}
|
||||
else if( Global::iTextMode == VK_F2 ) { // ABu: info dla najblizszego pojazdu!
|
||||
else if( Global::iTextMode == GLFW_KEY_F2 ) { // ABu: info dla najblizszego pojazdu!
|
||||
TDynamicObject *tmp = FreeFlyModeFlag ? Ground.DynamicNearest( Camera.Pos ) :
|
||||
Controlled; // w trybie latania lokalizujemy wg mapy
|
||||
if( tmp ) {
|
||||
if( Global::iScreenMode[ Global::iTextMode - VK_F1 ] == 0 ) { // jeśli domyślny ekran po pierwszym naciśnięciu
|
||||
if( Global::iScreenMode[ Global::iTextMode - GLFW_KEY_F1 ] == 0 ) { // jeśli domyślny ekran po pierwszym naciśnięciu
|
||||
OutText3 = "";
|
||||
OutText1 = "Vehicle name: " + tmp->MoverParameters->Name;
|
||||
// yB OutText1+="; d: "+FloatToStrF(tmp->ABuGetDirection(),ffFixed,2,0);
|
||||
@@ -2155,7 +2131,7 @@ TWorld::Render_UI() {
|
||||
tmp->NextConnected->GetName() + ":" +
|
||||
to_string( tmp->MoverParameters->Couplers[ 1 ].CouplingFlag ) :
|
||||
std::string( "NULL" ) );
|
||||
if( Console::Pressed( VK_F2 ) ) {
|
||||
if( Console::Pressed( GLFW_KEY_F2 ) ) {
|
||||
WriteLog( OutText1 );
|
||||
WriteLog( OutText2 );
|
||||
WriteLog( OutText3 );
|
||||
@@ -2228,7 +2204,7 @@ TWorld::Render_UI() {
|
||||
// OutText3="enrot="+FloatToStrF(Controlled->MoverParameters->enrot,ffFixed,6,2);
|
||||
// OutText3="; n="+FloatToStrF(Controlled->MoverParameters->n,ffFixed,6,2);
|
||||
} // koniec treści podstawowego ekranu FK_V2
|
||||
else if( Global::iTextMode == VK_F5 ) { // przesiadka do innego pojazdu
|
||||
else if( Global::iTextMode == GLFW_KEY_F5 ) { // przesiadka do innego pojazdu
|
||||
if( FreeFlyModeFlag ) // jeśli tryb latania
|
||||
{
|
||||
TDynamicObject *tmp = Ground.DynamicNearest( Camera.Pos, 50, true ); //łapiemy z obsadą
|
||||
@@ -2251,7 +2227,7 @@ TWorld::Render_UI() {
|
||||
else
|
||||
SafeDelete( Train ); // i nie ma czym sterować
|
||||
// Global::pUserDynamic=Controlled; //renerowanie pojazdu względem kabiny
|
||||
// Global::iTextMode=VK_F4;
|
||||
// Global::iTextMode=GLFW_KEY_F4;
|
||||
if( Train )
|
||||
InOutKey(); // do kabiny
|
||||
}
|
||||
@@ -2285,8 +2261,8 @@ TWorld::Render_UI() {
|
||||
}
|
||||
*/
|
||||
}
|
||||
else if( Global::iTextMode == VK_F10 ) { // tu mozna dodac dopisywanie do logu przebiegu lokomotywy
|
||||
// Global::iViewMode=VK_F10;
|
||||
else if( Global::iTextMode == GLFW_KEY_F10 ) { // tu mozna dodac dopisywanie do logu przebiegu lokomotywy
|
||||
// Global::iViewMode=GLFW_KEY_F10;
|
||||
// return false;
|
||||
OutText1 = ( "To quit press [Y] key." );
|
||||
OutText3 = ( "Aby zakonczyc program, przycisnij klawisz [Y]." );
|
||||
@@ -2483,9 +2459,9 @@ TWorld::Render_UI() {
|
||||
// ABu 150205: prosty help, zeby sie na forum nikt nie pytal, jak ma ruszyc :)
|
||||
|
||||
if( Global::detonatoryOK ) {
|
||||
// if (Console::Pressed(VK_F9)) ShowHints(); //to nie działa prawidłowo - prosili wyłączyć
|
||||
if( Global::iTextMode == VK_F9 ) { // informacja o wersji, sposobie wyświetlania i błędach OpenGL
|
||||
// Global::iViewMode=VK_F9;
|
||||
// if (Console::Pressed(GLFW_KEY_F9)) ShowHints(); //to nie działa prawidłowo - prosili wyłączyć
|
||||
if( Global::iTextMode == GLFW_KEY_F9 ) { // informacja o wersji, sposobie wyświetlania i błędach OpenGL
|
||||
// Global::iViewMode=GLFW_KEY_F9;
|
||||
OutText1 = Global::asVersion; // informacja o wersji
|
||||
OutText2 = std::string( "Rendering mode: " ) + ( Global::bUseVBO ? "VBO" : "Display Lists" );
|
||||
if( Global::iMultiplayer )
|
||||
@@ -2497,7 +2473,7 @@ TWorld::Render_UI() {
|
||||
Global::Bezogonkow( ( (char *)gluErrorString( err ) ) );
|
||||
}
|
||||
}
|
||||
if( Global::iTextMode == VK_F3 ) { // wyświetlenie rozkładu jazdy, na razie jakkolwiek
|
||||
if( Global::iTextMode == GLFW_KEY_F3 ) { // wyświetlenie rozkładu jazdy, na razie jakkolwiek
|
||||
TDynamicObject *tmp = FreeFlyModeFlag ?
|
||||
Ground.DynamicNearest( Camera.Pos ) :
|
||||
Controlled; // w trybie latania lokalizujemy wg mapy
|
||||
@@ -2585,7 +2561,7 @@ TWorld::Render_UI() {
|
||||
}
|
||||
}
|
||||
}
|
||||
// if ((Global::iTextMode!=VK_F3))
|
||||
// if ((Global::iTextMode!=GLFW_KEY_F3))
|
||||
{ // stenogramy dźwięków (ukryć, gdy tabelka skanowania lub rozkład?)
|
||||
glColor3f( 1.0f, 1.0f, 0.0f ); //żółte
|
||||
for( int i = 0; i < 5; ++i ) { // kilka linijek
|
||||
|
||||
5
World.h
5
World.h
@@ -9,6 +9,7 @@ http://mozilla.org/MPL/2.0/.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <GLFW/glfw3.h>
|
||||
#include <string>
|
||||
#include "Camera.h"
|
||||
#include "Ground.h"
|
||||
@@ -22,8 +23,8 @@ class TWorld
|
||||
void DistantView();
|
||||
|
||||
public:
|
||||
bool Init(HWND NhWnd, HDC hDC);
|
||||
HWND hWnd;
|
||||
bool Init(GLFWwindow *w);
|
||||
GLFWwindow *window;
|
||||
GLvoid glPrint(const char *fmt);
|
||||
void OnKeyDown(int cKey);
|
||||
void OnKeyUp(int cKey);
|
||||
|
||||
13
maszyna.sln
13
maszyna.sln
@@ -1,25 +1,28 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2013
|
||||
VisualStudioVersion = 12.0.40629.0
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "maszyna", "maszyna.vcxproj", "{8E0232E5-1C67-442F-9E04-45ED2DDFC960}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{8E0232E5-1C67-442F-9E04-45ED2DDFC960}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8E0232E5-1C67-442F-9E04-45ED2DDFC960}.Debug|x64.Build.0 = Debug|x64
|
||||
{8E0232E5-1C67-442F-9E04-45ED2DDFC960}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{8E0232E5-1C67-442F-9E04-45ED2DDFC960}.Debug|x86.Build.0 = Debug|Win32
|
||||
{8E0232E5-1C67-442F-9E04-45ED2DDFC960}.Release|x64.ActiveCfg = Release|x64
|
||||
{8E0232E5-1C67-442F-9E04-45ED2DDFC960}.Release|x64.Build.0 = Release|x64
|
||||
{8E0232E5-1C67-442F-9E04-45ED2DDFC960}.Release|x86.ActiveCfg = Release|Win32
|
||||
{8E0232E5-1C67-442F-9E04-45ED2DDFC960}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(Performance) = preSolution
|
||||
HasPerformanceSessions = true
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
@@ -1,14 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{8E0232E5-1C67-442F-9E04-45ED2DDFC960}</ProjectGuid>
|
||||
@@ -18,12 +26,22 @@
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120_xp</PlatformToolset>
|
||||
<PlatformToolset>v140_xp</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v140_xp</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120_xp</PlatformToolset>
|
||||
<PlatformToolset>v140_xp</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v140_xp</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
@@ -31,20 +49,37 @@
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<TargetName>eu07++</TargetName>
|
||||
<IntDir>$(SolutionDir)tmp\$(PlatformShortName)-$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir>$(SolutionDir)bin\</OutDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<TargetName>eu07++</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<TargetName>eu07++</TargetName>
|
||||
<IntDir>$(SolutionDir)tmp\$(PlatformShortName)-$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir>$(SolutionDir)bin\</OutDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>C:\Users\VB\Desktop\maszyna\lib;$(IncludePath)</IncludePath>
|
||||
<LibraryPath>C:\Users\VB\Desktop\maszyna\lib-vc2015;$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<TargetName>eu07++</TargetName>
|
||||
<IncludePath>C:\Users\VB\Desktop\maszyna\lib;$(IncludePath)</IncludePath>
|
||||
<LibraryPath>C:\Users\VB\Desktop\maszyna\lib-vc2015;$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
@@ -64,6 +99,23 @@
|
||||
<AdditionalLibraryDirectories>$(DXSKD_DIR)lib/$(PlatformShortName);$(SolutionDir)opengl;$(SolutionDir)python/libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir);$(SolutionDir)console;$(SolutionDir)mczapkie;$(SolutionDir)opengl;$(SolutionDir)python/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<FloatingPointExceptions>true</FloatingPointExceptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<AdditionalLibraryDirectories>$(DXSKD_DIR)lib/$(PlatformShortName);$(SolutionDir)opengl;$(SolutionDir)python/libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
@@ -83,6 +135,24 @@
|
||||
<AdditionalLibraryDirectories>$(DXSKD_DIR)lib/$(PlatformShortName);$(SolutionDir)opengl;$(SolutionDir)python/libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir);$(SolutionDir)console;$(SolutionDir)mczapkie;$(SolutionDir)opengl;$(SolutionDir)python/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(DXSKD_DIR)lib/$(PlatformShortName);$(SolutionDir)opengl;$(SolutionDir)python/libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="AdvSound.cpp" />
|
||||
<ClCompile Include="AirCoupler.cpp" />
|
||||
@@ -114,7 +184,6 @@
|
||||
<ClCompile Include="MemCell.cpp" />
|
||||
<ClCompile Include="Model3d.cpp" />
|
||||
<ClCompile Include="mtable.cpp" />
|
||||
<ClCompile Include="opengl\ARB_Multisample.cpp" />
|
||||
<ClCompile Include="parser.cpp" />
|
||||
<ClCompile Include="PyInt.cpp" />
|
||||
<ClCompile Include="RealSound.cpp" />
|
||||
@@ -125,7 +194,9 @@
|
||||
<ClCompile Include="Spring.cpp" />
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Texture.cpp" />
|
||||
<ClCompile Include="TextureDDS.cpp" />
|
||||
@@ -171,7 +242,6 @@
|
||||
<ClInclude Include="Model3d.h" />
|
||||
<ClInclude Include="mtable.h" />
|
||||
<ClInclude Include="Names.h" />
|
||||
<ClInclude Include="opengl\arb_multisample.h" />
|
||||
<ClInclude Include="opengl\glew.h" />
|
||||
<ClInclude Include="opengl\wglew.h" />
|
||||
<ClInclude Include="parser.h" />
|
||||
|
||||
@@ -13,9 +13,6 @@
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\opengl">
|
||||
<UniqueIdentifier>{d91dfdb6-7d84-4b52-a16a-bad302b45e3c}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\mczapkie">
|
||||
<UniqueIdentifier>{fafd38ab-4c2a-48c8-8e66-ad0d928573b3}</UniqueIdentifier>
|
||||
</Filter>
|
||||
@@ -156,9 +153,6 @@
|
||||
<ClCompile Include="World.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="opengl\ARB_Multisample.cpp">
|
||||
<Filter>Source Files\opengl</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="mczapkie\friction.cpp">
|
||||
<Filter>Source Files\mczapkie</Filter>
|
||||
</ClCompile>
|
||||
@@ -191,9 +185,6 @@
|
||||
<ClInclude Include="opengl\glew.h">
|
||||
<Filter>Header Files\opengl</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="opengl\arb_multisample.h">
|
||||
<Filter>Header Files\opengl</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Globals.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
|
||||
@@ -4,9 +4,18 @@
|
||||
<LocalDebuggerWorkingDirectory>..\..\Projects\maszyna</LocalDebuggerWorkingDirectory>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LocalDebuggerWorkingDirectory>..\..\Projects\maszyna</LocalDebuggerWorkingDirectory>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LocalDebuggerWorkingDirectory>..\..\Projects\maszyna</LocalDebuggerWorkingDirectory>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
<LocalDebuggerEnvironment>_NO_DEBUG_HEAP=1</LocalDebuggerEnvironment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LocalDebuggerWorkingDirectory>..\..\Projects\maszyna</LocalDebuggerWorkingDirectory>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
<LocalDebuggerEnvironment>_NO_DEBUG_HEAP=1</LocalDebuggerEnvironment>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -1,120 +0,0 @@
|
||||
/*========================================================================================
|
||||
|
||||
Name: ARB_multisample.cpp
|
||||
Author: Colt "MainRoach" McAnlis
|
||||
Date: 4/29/04
|
||||
Desc: This file contains the context to load a WGL extension from a string
|
||||
As well as collect the sample format available based upon the graphics card.
|
||||
|
||||
========================================================================================*/
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "arb_multisample.h"
|
||||
#include "glew.h"
|
||||
#include "wglew.h"
|
||||
|
||||
// Declairations We'll Use
|
||||
#define WGL_SAMPLE_BUFFERS_ARB 0x2041
|
||||
#define WGL_SAMPLES_ARB 0x2042
|
||||
|
||||
bool arbMultisampleSupported = false;
|
||||
int arbMultisampleFormat = 0;
|
||||
|
||||
// WGLisExtensionSupported: This Is A Form Of The Extension For WGL
|
||||
bool WGLisExtensionSupported(const char *extension)
|
||||
{
|
||||
const size_t extlen = strlen(extension);
|
||||
const char *supported = NULL;
|
||||
|
||||
// Try To Use wglGetExtensionStringARB On Current DC, If Possible
|
||||
PROC wglGetExtString = wglGetProcAddress("wglGetExtensionsStringARB");
|
||||
|
||||
if (wglGetExtString)
|
||||
supported = ((char*(__stdcall*)(HDC))wglGetExtString)(wglGetCurrentDC());
|
||||
|
||||
// If That Failed, Try Standard Opengl Extensions String
|
||||
if (supported == NULL)
|
||||
supported = (char*)glGetString(GL_EXTENSIONS);
|
||||
|
||||
// If That Failed Too, Must Be No Extensions Supported
|
||||
if (supported == NULL)
|
||||
return false;
|
||||
|
||||
// Begin Examination At Start Of String, Increment By 1 On False Match
|
||||
for (const char* p = supported; ; p++)
|
||||
{
|
||||
// Advance p Up To The Next Possible Match
|
||||
p = strstr(p, extension);
|
||||
|
||||
if (p == NULL)
|
||||
return false; // No Match
|
||||
|
||||
// Make Sure That Match Is At The Start Of The String Or That
|
||||
// The Previous Char Is A Space, Or Else We Could Accidentally
|
||||
// Match "wglFunkywglExtension" With "wglExtension"
|
||||
|
||||
// Also, Make Sure That The Following Character Is Space Or NULL
|
||||
// Or Else "wglExtensionTwo" Might Match "wglExtension"
|
||||
if ((p==supported || p[-1]==' ') && (p[extlen]=='\0' || p[extlen]==' '))
|
||||
return true; // Match
|
||||
}
|
||||
}
|
||||
|
||||
int InitMultisample(HINSTANCE hInstance,HWND hWnd,PIXELFORMATDESCRIPTOR pfd,int mode)
|
||||
{//used to query the multisample frequencies
|
||||
arbMultisampleSupported=false;
|
||||
//see if the string exists in WGL!
|
||||
if (!WGLisExtensionSupported("WGL_ARB_multisample"))
|
||||
return 0;
|
||||
//get our pixel format
|
||||
PFNWGLCHOOSEPIXELFORMATARBPROC wglChoosePixelFormatARB=(PFNWGLCHOOSEPIXELFORMATARBPROC)wglGetProcAddress("wglChoosePixelFormatARB");
|
||||
if (!wglChoosePixelFormatARB)
|
||||
return 0;
|
||||
//get our current device context
|
||||
HDC hDC=GetDC(hWnd);
|
||||
int pixelFormat;
|
||||
int valid;
|
||||
UINT numFormats;
|
||||
float fAttributes[]={0,0};
|
||||
// These attributes are the bits we want to test for in our sample
|
||||
// everything is pretty standard, the only one we want to
|
||||
// really focus on is the SAMPLE BUFFERS ARB and WGL SAMPLES
|
||||
// these two are going to do the main testing for whether or not
|
||||
// we support multisampling on this hardware.
|
||||
int iAttributes[]=
|
||||
{
|
||||
WGL_DRAW_TO_WINDOW_ARB,GL_TRUE,
|
||||
WGL_SUPPORT_OPENGL_ARB,GL_TRUE,
|
||||
WGL_ACCELERATION_ARB,WGL_FULL_ACCELERATION_ARB,
|
||||
WGL_COLOR_BITS_ARB,24,
|
||||
WGL_ALPHA_BITS_ARB,8,
|
||||
WGL_DEPTH_BITS_ARB,16,
|
||||
WGL_STENCIL_BITS_ARB,0,
|
||||
WGL_DOUBLE_BUFFER_ARB,GL_TRUE,
|
||||
WGL_SAMPLE_BUFFERS_ARB,GL_TRUE,
|
||||
WGL_SAMPLES_ARB,mode,
|
||||
0,0
|
||||
};
|
||||
/*
|
||||
//first we check to see if we can get a pixel format for 4 samples
|
||||
valid=wglChoosePixelFormatARB(hDC,iAttributes,fAttributes,1,&pixelFormat,&numFormats);
|
||||
if (valid&&(numFormats>=1))
|
||||
{//if we returned true, and our format count is greater than 1
|
||||
arbMultisampleSupported=true;
|
||||
arbMultisampleFormat=pixelFormat;
|
||||
return arbMultisampleSupported;
|
||||
}
|
||||
*/
|
||||
while (iAttributes[19]>1)
|
||||
{//our pixel format with (mode) samples failed, test for less samples
|
||||
valid=wglChoosePixelFormatARB(hDC,iAttributes,fAttributes,1,&pixelFormat,&numFormats);
|
||||
if (valid&&(numFormats>=1))
|
||||
{//if we returned true, and our format count is greater than 1
|
||||
arbMultisampleSupported=true;
|
||||
arbMultisampleFormat=pixelFormat;
|
||||
return iAttributes[19]; //return number of samples
|
||||
}
|
||||
iAttributes[19]>>=1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
/*====================================
|
||||
Name: ARB_multisample.h
|
||||
Author: Colt "MainRoach" McAnlis
|
||||
Date: 4/29/04
|
||||
Desc:
|
||||
This file contains our external items
|
||||
|
||||
====================================*/
|
||||
|
||||
#ifndef __ARB_MULTISAMPLE_H__
|
||||
#define __ARB_MULTISAMPLE_H__
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
//Globals
|
||||
extern bool arbMultisampleSupported;
|
||||
extern int arbMultisampleFormat;
|
||||
|
||||
//If you don't want multisampling, set this to 0
|
||||
#define CHECK_FOR_MULTISAMPLE 1
|
||||
|
||||
//to check for our sampling
|
||||
int InitMultisample(HINSTANCE hInstance,HWND hWnd,PIXELFORMATDESCRIPTOR pfd,int mode=4);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user