mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 18:39:18 +02:00
Poprawka dla MWD aby kompilował się na VS
This commit is contained in:
369
Console/MWD.cpp
369
Console/MWD.cpp
@@ -14,10 +14,10 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
author: Maciej Witek 2016
|
author: Maciej Witek 2016
|
||||||
Autor nie ponosi odpowiedzialności za niewłaciwe używanie lub działanie programu!
|
Autor nie ponosi odpowiedzialności za niewłaciwe używanie lub działanie programu!
|
||||||
*/
|
*/
|
||||||
|
#include "stdafx.h"
|
||||||
#include "MWD.h"
|
#include "MWD.h"
|
||||||
#include "Logs.h"
|
|
||||||
#include "Globals.h"
|
#include "Globals.h"
|
||||||
|
#include "Logs.h"
|
||||||
#include "World.h"
|
#include "World.h"
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
@@ -50,7 +50,8 @@ MWDComm::MWDComm() // konstruktor
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
while (i < BYTETOWRITE)
|
while (i < BYTETOWRITE)
|
||||||
{
|
{
|
||||||
if(i<BYTETOREAD)ReadDataBuff[i] = 0;
|
if (i < BYTETOREAD)
|
||||||
|
ReadDataBuff[i] = 0;
|
||||||
WriteDataBuff[i] = 0;
|
WriteDataBuff[i] = 0;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
@@ -72,11 +73,15 @@ MWDComm::~MWDComm() // destruktor
|
|||||||
bool MWDComm::Open() // otwieranie portu COM
|
bool MWDComm::Open() // otwieranie portu COM
|
||||||
{
|
{
|
||||||
LPCSTR portId = Global::sMWDPortId.c_str();
|
LPCSTR portId = Global::sMWDPortId.c_str();
|
||||||
hComm = CreateFile(portId, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
hComm = CreateFile(portId, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
|
||||||
|
FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
|
|
||||||
if (hComm == INVALID_HANDLE_VALUE){
|
if (hComm == INVALID_HANDLE_VALUE)
|
||||||
if(GetLastError()==ERROR_FILE_NOT_FOUND){
|
{
|
||||||
WriteLog("PortCOM ERROR: serial port does not exist"); //serial port does not exist. Inform user.
|
if (GetLastError() == ERROR_FILE_NOT_FOUND)
|
||||||
|
{
|
||||||
|
WriteLog("PortCOM ERROR: serial port does not exist"); // serial port does not exist.
|
||||||
|
// Inform user.
|
||||||
}
|
}
|
||||||
WriteLog("PortCOM ERROR! not open!");
|
WriteLog("PortCOM ERROR! not open!");
|
||||||
// some other error occurred. Inform user.
|
// some other error occurred. Inform user.
|
||||||
@@ -138,8 +143,10 @@ bool MWDComm::Close() // zamykanie portu COM
|
|||||||
|
|
||||||
inline bool MWDComm::GetMWDState() // sprawdzanie otwarcia portu COM
|
inline bool MWDComm::GetMWDState() // sprawdzanie otwarcia portu COM
|
||||||
{
|
{
|
||||||
if(hComm > 0) return 1;
|
if (hComm > 0)
|
||||||
else return 0;
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MWDComm::ReadData() // odbieranie danych + odczyta danych analogowych i zapis do zmiennych
|
bool MWDComm::ReadData() // odbieranie danych + odczyta danych analogowych i zapis do zmiennych
|
||||||
@@ -147,10 +154,15 @@ bool MWDComm::ReadData() // odbieranie danych + odczyta danych analogowych i zap
|
|||||||
DWORD bytes_read;
|
DWORD bytes_read;
|
||||||
ReadFile(hComm, &ReadDataBuff[0], BYTETOREAD, &bytes_read, NULL);
|
ReadFile(hComm, &ReadDataBuff[0], BYTETOREAD, &bytes_read, NULL);
|
||||||
|
|
||||||
fAnalog[0] = (float)((ReadDataBuff[9]<<8)+ReadDataBuff[8]) / Global::fMWDAnalogCalib[0][3]; //4095.0f; //max wartosc wynikająca z rozdzielczości
|
fAnalog[0] =
|
||||||
fAnalog[1] = (float)((ReadDataBuff[11]<<8)+ReadDataBuff[10]) / Global::fMWDAnalogCalib[1][3];
|
(float)((ReadDataBuff[9] << 8) + ReadDataBuff[8]) /
|
||||||
fAnalog[2] = (float)((ReadDataBuff[13]<<8)+ReadDataBuff[12]) / Global::fMWDAnalogCalib[2][3];
|
Global::fMWDAnalogCalib[0][3]; // 4095.0f; //max wartosc wynikająca z rozdzielczości
|
||||||
fAnalog[3] = (float)((ReadDataBuff[15]<<8)+ReadDataBuff[14]) / Global::fMWDAnalogCalib[3][3];
|
fAnalog[1] =
|
||||||
|
(float)((ReadDataBuff[11] << 8) + ReadDataBuff[10]) / Global::fMWDAnalogCalib[1][3];
|
||||||
|
fAnalog[2] =
|
||||||
|
(float)((ReadDataBuff[13] << 8) + ReadDataBuff[12]) / Global::fMWDAnalogCalib[2][3];
|
||||||
|
fAnalog[3] =
|
||||||
|
(float)((ReadDataBuff[15] << 8) + ReadDataBuff[14]) / Global::fMWDAnalogCalib[3][3];
|
||||||
CheckData();
|
CheckData();
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -174,9 +186,11 @@ bool MWDComm::Run() // wywo
|
|||||||
if (GetMWDState())
|
if (GetMWDState())
|
||||||
{
|
{
|
||||||
SendData();
|
SendData();
|
||||||
if (Global::bMWDInputDataEnable) ReadData();
|
if (Global::bMWDInputDataEnable)
|
||||||
|
ReadData();
|
||||||
return 1;
|
return 1;
|
||||||
}else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
WriteLog("Port COM: connection ERROR!");
|
WriteLog("Port COM: connection ERROR!");
|
||||||
// może spróbować się połączyć znowu?
|
// może spróbować się połączyć znowu?
|
||||||
@@ -186,7 +200,7 @@ bool MWDComm::Run() // wywo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MWDComm::CheckData() // sprawdzanie wejść cyfrowych i odpowiednie sterowanie maszyną
|
void MWDComm::CheckData() // sprawdzanie wejść cyfrowych i odpowiednie sterowanie maszyną
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (i < 6)
|
while (i < 6)
|
||||||
@@ -200,9 +214,11 @@ bool MWDComm::CheckData() // sprawdzanie wej
|
|||||||
Port0: 0 NC odblok. przek. sprężarki i wentyl. oporów
|
Port0: 0 NC odblok. przek. sprężarki i wentyl. oporów
|
||||||
1 M wyłącznik wył. szybkiego
|
1 M wyłącznik wył. szybkiego
|
||||||
2 Shift+M impuls załączający wył. szybki
|
2 Shift+M impuls załączający wył. szybki
|
||||||
3 N odblok. przekaźników nadmiarowych i różnicowego obwodu głównego
|
3 N odblok. przekaźników nadmiarowych
|
||||||
|
i różnicowego obwodu głównego
|
||||||
4 NC rezerwa
|
4 NC rezerwa
|
||||||
5 Ctrl+N odblok. przek. nadmiarowych przetwornicy, ogrzewania pociągu i różnicowych obw. pomocniczych
|
5 Ctrl+N odblok. przek. nadmiarowych
|
||||||
|
przetwornicy, ogrzewania pociągu i różnicowych obw. pomocniczych
|
||||||
6 L wył. styczników liniowych
|
6 L wył. styczników liniowych
|
||||||
7 SPACE kasowanie czuwaka
|
7 SPACE kasowanie czuwaka
|
||||||
|
|
||||||
@@ -211,7 +227,8 @@ bool MWDComm::CheckData() // sprawdzanie wej
|
|||||||
2 (Shift) C sprężarka
|
2 (Shift) C sprężarka
|
||||||
3 S piasecznice
|
3 S piasecznice
|
||||||
4 (Shift) H ogrzewanie składu
|
4 (Shift) H ogrzewanie składu
|
||||||
5 przel. hamowania Shift+B pspbpwy Ctrl+B pospieszny B towarowy
|
5 przel. hamowania Shift+B
|
||||||
|
pspbpwy Ctrl+B pospieszny B towarowy
|
||||||
6 przel. hamowania
|
6 przel. hamowania
|
||||||
7 (Shift) F rozruch w/n
|
7 (Shift) F rozruch w/n
|
||||||
|
|
||||||
@@ -235,169 +252,235 @@ bool MWDComm::CheckData() // sprawdzanie wej
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* po przełączeniu bistabilnego najpierw wciskamy klawisz i przy następnym
|
/* po przełączeniu bistabilnego najpierw wciskamy klawisz i przy następnym
|
||||||
wejściu w pętlę MWD puszczamy bo inaczej nie działa */
|
wejściu w pętlę MWD puszczamy bo inaczej nie działa
|
||||||
|
*/
|
||||||
|
|
||||||
// wciskanie przycisków klawiatury
|
// wciskanie przycisków klawiatury
|
||||||
/*PORT0*/
|
/*PORT0*/
|
||||||
if(maskData[0] & 0x02 && lastStateData[0] & 0x02) KeyBoard('M',1); // wyłączenie wyłącznika szybkiego
|
if (maskData[0] & 0x02 && lastStateData[0] & 0x02)
|
||||||
else KeyBoard('M',0); // monostabilny
|
KeyBoard('M', 1); // wyłączenie wyłącznika szybkiego
|
||||||
if(maskData[0] & 0x04 && lastStateData[0] & 0x04) { // impuls załączający wyłącznik szybki
|
else
|
||||||
|
KeyBoard('M', 0); // monostabilny
|
||||||
|
if (maskData[0] & 0x04 && lastStateData[0] & 0x04)
|
||||||
|
{ // impuls załączający wyłącznik szybki
|
||||||
KeyBoard(0x10, 1); // monostabilny
|
KeyBoard(0x10, 1); // monostabilny
|
||||||
KeyBoard('M', 1);
|
KeyBoard('M', 1);
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
KeyBoard('M', 0);
|
KeyBoard('M', 0);
|
||||||
KeyBoard(0x10, 0);
|
KeyBoard(0x10, 0);
|
||||||
}
|
}
|
||||||
if(maskData[0] & 0x08 && lastStateData[0] & 0x08) KeyBoard('N',1); // odblok nadmiarowego silników trakcyjnych
|
if (maskData[0] & 0x08 && lastStateData[0] & 0x08)
|
||||||
else KeyBoard('N',0); // monostabilny
|
KeyBoard('N', 1); // odblok nadmiarowego silników trakcyjnych
|
||||||
if(maskData[0] & 0x20 && lastStateData[0] & 0x20) { // odblok nadmiarowego przetwornicy, ogrzewania poc.
|
else
|
||||||
|
KeyBoard('N', 0); // monostabilny
|
||||||
|
if (maskData[0] & 0x20 && lastStateData[0] & 0x20)
|
||||||
|
{ // odblok nadmiarowego przetwornicy, ogrzewania poc.
|
||||||
KeyBoard(0x11, 1); // różnicowego obwodów pomocniczych
|
KeyBoard(0x11, 1); // różnicowego obwodów pomocniczych
|
||||||
KeyBoard('N', 1); // monostabilny
|
KeyBoard('N', 1); // monostabilny
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
KeyBoard('N', 0);
|
KeyBoard('N', 0);
|
||||||
KeyBoard(0x11, 0);
|
KeyBoard(0x11, 0);
|
||||||
}
|
}
|
||||||
if(maskData[0] & 0x40 && lastStateData[0] & 0x40) KeyBoard('L',1); // wył. styczników liniowych
|
if (maskData[0] & 0x40 && lastStateData[0] & 0x40)
|
||||||
else KeyBoard('L',0); // monostabilny
|
KeyBoard('L', 1); // wył. styczników liniowych
|
||||||
if(maskData[0] & 0x80 && lastStateData[0] & 0x80) KeyBoard(0x20,1); // kasowanie czuwaka/SHP
|
else
|
||||||
else KeyBoard(0x20,0); // kasowanie czuwaka/SHP
|
KeyBoard('L', 0); // monostabilny
|
||||||
|
if (maskData[0] & 0x80 && lastStateData[0] & 0x80)
|
||||||
|
KeyBoard(0x20, 1); // kasowanie czuwaka/SHP
|
||||||
|
else
|
||||||
|
KeyBoard(0x20, 0); // kasowanie czuwaka/SHP
|
||||||
|
|
||||||
/*PORT1*/
|
/*PORT1*/
|
||||||
|
|
||||||
// puszczanie przycisku bistabilnego klawiatury
|
// puszczanie przycisku bistabilnego klawiatury
|
||||||
if(maskSwitch[1]&0x02){
|
if (maskSwitch[1] & 0x02)
|
||||||
if(bitSwitch[1] &0x02){
|
{
|
||||||
|
if (bitSwitch[1] & 0x02)
|
||||||
|
{
|
||||||
KeyBoard('X', 0);
|
KeyBoard('X', 0);
|
||||||
KeyBoard(0x10, 0);
|
KeyBoard(0x10, 0);
|
||||||
}else KeyBoard('X',0);
|
}
|
||||||
|
else
|
||||||
|
KeyBoard('X', 0);
|
||||||
maskSwitch[1] &= ~0x02;
|
maskSwitch[1] &= ~0x02;
|
||||||
}
|
}
|
||||||
if(maskSwitch[1]&0x04){
|
if (maskSwitch[1] & 0x04)
|
||||||
if(bitSwitch[1] &0x04){
|
{
|
||||||
|
if (bitSwitch[1] & 0x04)
|
||||||
|
{
|
||||||
KeyBoard('C', 0);
|
KeyBoard('C', 0);
|
||||||
KeyBoard(0x10, 0);
|
KeyBoard(0x10, 0);
|
||||||
}else KeyBoard('C',0);
|
}
|
||||||
|
else
|
||||||
|
KeyBoard('C', 0);
|
||||||
maskSwitch[1] &= ~0x04;
|
maskSwitch[1] &= ~0x04;
|
||||||
}
|
}
|
||||||
if(maskSwitch[1]&0x10){
|
if (maskSwitch[1] & 0x10)
|
||||||
if(bitSwitch[1] &0x10){
|
{
|
||||||
|
if (bitSwitch[1] & 0x10)
|
||||||
|
{
|
||||||
KeyBoard('H', 0);
|
KeyBoard('H', 0);
|
||||||
KeyBoard(0x10, 0);
|
KeyBoard(0x10, 0);
|
||||||
}else KeyBoard('H',0);
|
}
|
||||||
|
else
|
||||||
|
KeyBoard('H', 0);
|
||||||
maskSwitch[1] &= ~0x10;
|
maskSwitch[1] &= ~0x10;
|
||||||
}
|
}
|
||||||
if(maskSwitch[1] & 0x20 || maskSwitch[1] & 0x40){
|
if (maskSwitch[1] & 0x20 || maskSwitch[1] & 0x40)
|
||||||
if(maskSwitch[1] & 0x20) KeyBoard(0x10,0);
|
{
|
||||||
if(maskSwitch[1] & 0x40) KeyBoard(0x11,0);
|
if (maskSwitch[1] & 0x20)
|
||||||
|
KeyBoard(0x10, 0);
|
||||||
|
if (maskSwitch[1] & 0x40)
|
||||||
|
KeyBoard(0x11, 0);
|
||||||
KeyBoard('B', 0);
|
KeyBoard('B', 0);
|
||||||
maskSwitch[1] &= ~0x60;
|
maskSwitch[1] &= ~0x60;
|
||||||
}
|
}
|
||||||
if(maskSwitch[1]&0x80){
|
if (maskSwitch[1] & 0x80)
|
||||||
if(bitSwitch[1] &0x80){
|
{
|
||||||
|
if (bitSwitch[1] & 0x80)
|
||||||
|
{
|
||||||
KeyBoard('F', 0);
|
KeyBoard('F', 0);
|
||||||
KeyBoard(0x10, 0);
|
KeyBoard(0x10, 0);
|
||||||
}else KeyBoard('F',0);
|
}
|
||||||
|
else
|
||||||
|
KeyBoard('F', 0);
|
||||||
maskSwitch[1] &= ~0x80;
|
maskSwitch[1] &= ~0x80;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (maskData[1] & 0x02 && lastStateData[1] & 0x02)
|
||||||
if(maskData[1] & 0x02 && lastStateData[1] & 0x02) { // przetwornica
|
{ // przetwornica
|
||||||
KeyBoard(0x10, 1); // bistabilny
|
KeyBoard(0x10, 1); // bistabilny
|
||||||
KeyBoard('X', 1);
|
KeyBoard('X', 1);
|
||||||
maskSwitch[1] |= 0x02;
|
maskSwitch[1] |= 0x02;
|
||||||
bitSwitch[1] |= 0x02;
|
bitSwitch[1] |= 0x02;
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
maskSwitch[1] |= 0x02;
|
maskSwitch[1] |= 0x02;
|
||||||
bitSwitch[1] &= ~0x02;
|
bitSwitch[1] &= ~0x02;
|
||||||
KeyBoard('X', 1);
|
KeyBoard('X', 1);
|
||||||
}
|
}
|
||||||
if(maskData[1] & 0x04 && lastStateData[1] & 0x04) { // sprężarka
|
if (maskData[1] & 0x04 && lastStateData[1] & 0x04)
|
||||||
|
{ // sprężarka
|
||||||
KeyBoard(0x10, 1); // bistabilny
|
KeyBoard(0x10, 1); // bistabilny
|
||||||
KeyBoard('C', 1);
|
KeyBoard('C', 1);
|
||||||
maskSwitch[1] |= 0x04;
|
maskSwitch[1] |= 0x04;
|
||||||
bitSwitch[1] |= 0x04;
|
bitSwitch[1] |= 0x04;
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
maskSwitch[1] |= 0x04;
|
maskSwitch[1] |= 0x04;
|
||||||
bitSwitch[1] &= ~0x04;
|
bitSwitch[1] &= ~0x04;
|
||||||
KeyBoard('C', 1);
|
KeyBoard('C', 1);
|
||||||
}
|
}
|
||||||
if(maskData[1] & 0x08 && lastStateData[1] & 0x08) KeyBoard('S',1); // piasecznica
|
if (maskData[1] & 0x08 && lastStateData[1] & 0x08)
|
||||||
else KeyBoard('S',0); // monostabilny
|
KeyBoard('S', 1); // piasecznica
|
||||||
if(maskData[1] & 0x10 && lastStateData[1] & 0x10) { // ogrzewanie składu
|
else
|
||||||
|
KeyBoard('S', 0); // monostabilny
|
||||||
|
if (maskData[1] & 0x10 && lastStateData[1] & 0x10)
|
||||||
|
{ // ogrzewanie składu
|
||||||
KeyBoard(0x11, 1); // bistabilny
|
KeyBoard(0x11, 1); // bistabilny
|
||||||
KeyBoard('H', 1);
|
KeyBoard('H', 1);
|
||||||
maskSwitch[1] |= 0x10;
|
maskSwitch[1] |= 0x10;
|
||||||
bitSwitch[1] |= 0x10;
|
bitSwitch[1] |= 0x10;
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
maskSwitch[1] |= 0x10;
|
maskSwitch[1] |= 0x10;
|
||||||
bitSwitch[1] &= ~0x10;
|
bitSwitch[1] &= ~0x10;
|
||||||
KeyBoard('H', 1);
|
KeyBoard('H', 1);
|
||||||
}
|
}
|
||||||
if(maskData[1] & 0x20 || maskData[1] & 0x40){ // przełącznik hamowania
|
if (maskData[1] & 0x20 || maskData[1] & 0x40)
|
||||||
if(lastStateData[1] & 0x20){ // Shift+B
|
{ // przełącznik hamowania
|
||||||
|
if (lastStateData[1] & 0x20)
|
||||||
|
{ // Shift+B
|
||||||
KeyBoard(0x10, 1);
|
KeyBoard(0x10, 1);
|
||||||
maskSwitch[1] |= 0x20;
|
maskSwitch[1] |= 0x20;
|
||||||
}else if(lastStateData[1] & 0x40){ // Ctrl+B
|
}
|
||||||
|
else if (lastStateData[1] & 0x40)
|
||||||
|
{ // Ctrl+B
|
||||||
KeyBoard(0x11, 1);
|
KeyBoard(0x11, 1);
|
||||||
maskSwitch[1] |= 0x40;
|
maskSwitch[1] |= 0x40;
|
||||||
}
|
}
|
||||||
KeyBoard('B', 1);
|
KeyBoard('B', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(maskData[1] & 0x80 && lastStateData[1] & 0x80) { // rozruch wysoki/niski
|
if (maskData[1] & 0x80 && lastStateData[1] & 0x80)
|
||||||
|
{ // rozruch wysoki/niski
|
||||||
KeyBoard(0x10, 1); // bistabilny
|
KeyBoard(0x10, 1); // bistabilny
|
||||||
KeyBoard('F', 1);
|
KeyBoard('F', 1);
|
||||||
maskSwitch[1] |= 0x80;
|
maskSwitch[1] |= 0x80;
|
||||||
bitSwitch[1] |= 0x80;
|
bitSwitch[1] |= 0x80;
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
maskSwitch[1] |= 0x80;
|
maskSwitch[1] |= 0x80;
|
||||||
bitSwitch[1] &= ~0x80;
|
bitSwitch[1] &= ~0x80;
|
||||||
KeyBoard('F', 1);
|
KeyBoard('F', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*PORT2*/
|
/*PORT2*/
|
||||||
|
|
||||||
if(maskSwitch[2]&0x01){
|
if (maskSwitch[2] & 0x01)
|
||||||
if(bitSwitch[2] &0x01){
|
{
|
||||||
|
if (bitSwitch[2] & 0x01)
|
||||||
|
{
|
||||||
KeyBoard('P', 0);
|
KeyBoard('P', 0);
|
||||||
KeyBoard(0x10, 0);
|
KeyBoard(0x10, 0);
|
||||||
}else KeyBoard('P',0);
|
}
|
||||||
|
else
|
||||||
|
KeyBoard('P', 0);
|
||||||
maskSwitch[2] &= ~0x01;
|
maskSwitch[2] &= ~0x01;
|
||||||
}
|
}
|
||||||
if(maskSwitch[2]&0x02){
|
if (maskSwitch[2] & 0x02)
|
||||||
if(bitSwitch[2] &0x02){
|
{
|
||||||
|
if (bitSwitch[2] & 0x02)
|
||||||
|
{
|
||||||
KeyBoard('O', 0);
|
KeyBoard('O', 0);
|
||||||
KeyBoard(0x10, 0);
|
KeyBoard(0x10, 0);
|
||||||
}else KeyBoard('O',0);
|
}
|
||||||
|
else
|
||||||
|
KeyBoard('O', 0);
|
||||||
maskSwitch[2] &= ~0x02;
|
maskSwitch[2] &= ~0x02;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (maskData[2] & 0x01 && lastStateData[2] & 0x01)
|
||||||
if(maskData[2] & 0x01 && lastStateData[2] & 0x01) { // pantograf przedni
|
{ // pantograf przedni
|
||||||
KeyBoard(0x10, 1); // bistabilny
|
KeyBoard(0x10, 1); // bistabilny
|
||||||
KeyBoard('P', 1);
|
KeyBoard('P', 1);
|
||||||
maskSwitch[2] |= 0x01;
|
maskSwitch[2] |= 0x01;
|
||||||
bitSwitch[2] |= 0x01;
|
bitSwitch[2] |= 0x01;
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
maskSwitch[2] |= 0x01;
|
maskSwitch[2] |= 0x01;
|
||||||
bitSwitch[2] &= ~0x01;
|
bitSwitch[2] &= ~0x01;
|
||||||
KeyBoard('P', 1);
|
KeyBoard('P', 1);
|
||||||
}
|
}
|
||||||
if(maskData[2] & 0x02 && lastStateData[2] & 0x02) { // pantograf tylni
|
if (maskData[2] & 0x02 && lastStateData[2] & 0x02)
|
||||||
|
{ // pantograf tylni
|
||||||
KeyBoard(0x10, 1); // bistabilny
|
KeyBoard(0x10, 1); // bistabilny
|
||||||
KeyBoard('O', 1);
|
KeyBoard('O', 1);
|
||||||
maskSwitch[2] |= 0x02;
|
maskSwitch[2] |= 0x02;
|
||||||
bitSwitch[2] |= 0x02;
|
bitSwitch[2] |= 0x02;
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
maskSwitch[2] |= 0x02;
|
maskSwitch[2] |= 0x02;
|
||||||
bitSwitch[2] &= ~0x02;
|
bitSwitch[2] &= ~0x02;
|
||||||
KeyBoard('O', 1);
|
KeyBoard('O', 1);
|
||||||
}
|
}
|
||||||
if(maskData[2] & 0x04 && lastStateData[2] & 0x04) { // przyhamowanie przy poślizgu
|
if (maskData[2] & 0x04 && lastStateData[2] & 0x04)
|
||||||
|
{ // przyhamowanie przy poślizgu
|
||||||
KeyBoard(0x10, 1); // monostabilny
|
KeyBoard(0x10, 1); // monostabilny
|
||||||
KeyBoard(0x0D, 1);
|
KeyBoard(0x0D, 1);
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
KeyBoard(0x0D, 0);
|
KeyBoard(0x0D, 0);
|
||||||
KeyBoard(0x10, 0);
|
KeyBoard(0x10, 0);
|
||||||
@@ -420,35 +503,48 @@ bool MWDComm::CheckData() // sprawdzanie wej
|
|||||||
KeyBoard(0x11,0);
|
KeyBoard(0x11,0);
|
||||||
KeyBoard(' ',1);
|
KeyBoard(' ',1);
|
||||||
}*/
|
}*/
|
||||||
if(maskData[2] & 0x20 && lastStateData[2] & 0x20) KeyBoard(0x66,1); // odluźniacz
|
if (maskData[2] & 0x20 && lastStateData[2] & 0x20)
|
||||||
else KeyBoard(0x66,0); // monostabilny
|
KeyBoard(0x66, 1); // odluźniacz
|
||||||
if(maskData[2] & 0x40 && lastStateData[2] & 0x40) { // syrena wysoka
|
else
|
||||||
|
KeyBoard(0x66, 0); // monostabilny
|
||||||
|
if (maskData[2] & 0x40 && lastStateData[2] & 0x40)
|
||||||
|
{ // syrena wysoka
|
||||||
KeyBoard(0x10, 1); // monostabilny
|
KeyBoard(0x10, 1); // monostabilny
|
||||||
KeyBoard('A', 1);
|
KeyBoard('A', 1);
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
KeyBoard('A', 0);
|
KeyBoard('A', 0);
|
||||||
KeyBoard(0x10, 0);
|
KeyBoard(0x10, 0);
|
||||||
}
|
}
|
||||||
if(maskData[2] & 0x80 && lastStateData[2] & 0x80) KeyBoard('A',1); // syrena niska
|
if (maskData[2] & 0x80 && lastStateData[2] & 0x80)
|
||||||
else KeyBoard('A',0); // monostabilny
|
KeyBoard('A', 1); // syrena niska
|
||||||
|
else
|
||||||
|
KeyBoard('A', 0); // monostabilny
|
||||||
|
|
||||||
/*PORT3*/
|
/*PORT3*/
|
||||||
|
|
||||||
if(maskSwitch[3]&0x01){
|
if (maskSwitch[3] & 0x01)
|
||||||
if(bitSwitch[3] &0x01){
|
{
|
||||||
|
if (bitSwitch[3] & 0x01)
|
||||||
|
{
|
||||||
KeyBoard('J', 0);
|
KeyBoard('J', 0);
|
||||||
KeyBoard(0x10, 0);
|
KeyBoard(0x10, 0);
|
||||||
}else KeyBoard('J',0);
|
}
|
||||||
|
else
|
||||||
|
KeyBoard('J', 0);
|
||||||
maskSwitch[3] &= ~0x01;
|
maskSwitch[3] &= ~0x01;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(maskData[3] & 0x01 && lastStateData[3] & 0x01) { // bateria
|
if (maskData[3] & 0x01 && lastStateData[3] & 0x01)
|
||||||
|
{ // bateria
|
||||||
KeyBoard(0x10, 1); // bistabilny
|
KeyBoard(0x10, 1); // bistabilny
|
||||||
KeyBoard('J', 1);
|
KeyBoard('J', 1);
|
||||||
maskSwitch[3] |= 0x01;
|
maskSwitch[3] |= 0x01;
|
||||||
bitSwitch[3] |= 0x01;
|
bitSwitch[3] |= 0x01;
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
maskSwitch[3] |= 0x01;
|
maskSwitch[3] |= 0x01;
|
||||||
bitSwitch[3] &= ~0x01;
|
bitSwitch[3] &= ~0x01;
|
||||||
KeyBoard('J', 1);
|
KeyBoard('J', 1);
|
||||||
@@ -543,7 +639,8 @@ bool MWDComm::CheckData() // sprawdzanie wej
|
|||||||
KeyBoard('X',1); //
|
KeyBoard('X',1); //
|
||||||
KeyBoard('X',0);
|
KeyBoard('X',0);
|
||||||
KeyBoard(0x10,0);
|
KeyBoard(0x10,0);
|
||||||
}else{ KeyBoard('X',1); //
|
}else{
|
||||||
|
KeyBoard('X',1); //
|
||||||
KeyBoard('X',0);
|
KeyBoard('X',0);
|
||||||
}
|
}
|
||||||
if(maskData[5] & 0x04 && lastStateData[1] & 0x04) {
|
if(maskData[5] & 0x04 && lastStateData[1] & 0x04) {
|
||||||
@@ -551,53 +648,63 @@ bool MWDComm::CheckData() // sprawdzanie wej
|
|||||||
KeyBoard('C',1); //
|
KeyBoard('C',1); //
|
||||||
KeyBoard('C',0);
|
KeyBoard('C',0);
|
||||||
KeyBoard(0x10,0);
|
KeyBoard(0x10,0);
|
||||||
}else{ KeyBoard('C',1); //
|
}else{
|
||||||
|
KeyBoard('C',1); //
|
||||||
KeyBoard('C',0);
|
KeyBoard('C',0);
|
||||||
}
|
}
|
||||||
if(maskData[5] & 0x08 && lastStateData[1] & 0x08) KeyBoard('S',1); //
|
if(maskData[5] & 0x08 && lastStateData[1] & 0x08) KeyBoard('S',1); //
|
||||||
else KeyBoard('S',0);
|
else
|
||||||
|
KeyBoard('S',0);
|
||||||
|
|
||||||
|
|
||||||
if(maskData[5] & 0x10 && lastStateData[1] & 0x10) {
|
if(maskData[5] & 0x10 && lastStateData[1] & 0x10) {
|
||||||
KeyBoard(0x11,1);
|
KeyBoard(0x11,1);
|
||||||
KeyBoard('H',1);
|
KeyBoard('H',1);
|
||||||
}else{ KeyBoard('H',0);
|
}else{
|
||||||
|
KeyBoard('H',0);
|
||||||
KeyBoard(0x11,0);
|
KeyBoard(0x11,0);
|
||||||
}
|
}
|
||||||
if(maskData[5] & 0x20 && lastStateData[1] & 0x20) {
|
if(maskData[5] & 0x20 && lastStateData[1] & 0x20) {
|
||||||
KeyBoard(0x11,1);
|
KeyBoard(0x11,1);
|
||||||
KeyBoard(' ',1);
|
KeyBoard(' ',1);
|
||||||
}else{ KeyBoard(' ',0);
|
}else{
|
||||||
|
KeyBoard(' ',0);
|
||||||
KeyBoard(0x11,0);
|
KeyBoard(0x11,0);
|
||||||
}
|
}
|
||||||
if(maskData[5] & 0x40 && lastStateData[1] & 0x40) {
|
if(maskData[5] & 0x40 && lastStateData[1] & 0x40) {
|
||||||
KeyBoard(0x10,1);
|
KeyBoard(0x10,1);
|
||||||
KeyBoard(' ',1);
|
KeyBoard(' ',1);
|
||||||
}else{ KeyBoard(' ',0);
|
}else{
|
||||||
|
KeyBoard(' ',0);
|
||||||
KeyBoard(0x10,0);
|
KeyBoard(0x10,0);
|
||||||
}
|
}
|
||||||
if(maskData[5] & 0x80 && lastStateData[1] & 0x80) {
|
if(maskData[5] & 0x80 && lastStateData[1] & 0x80) {
|
||||||
KeyBoard(0x10,1);
|
KeyBoard(0x10,1);
|
||||||
KeyBoard('F',1);
|
KeyBoard('F',1);
|
||||||
}else{ KeyBoard('F',0);
|
}else{
|
||||||
|
KeyBoard('F',0);
|
||||||
KeyBoard(0x10,0);
|
KeyBoard(0x10,0);
|
||||||
}//*/
|
}//*/
|
||||||
|
|
||||||
/* NASTAWNIK, BOCZNIK i KIERUNEK */
|
/* NASTAWNIK, BOCZNIK i KIERUNEK */
|
||||||
|
|
||||||
if(bnkMask & 1){ //puszczanie klawiszy
|
if (bnkMask & 1)
|
||||||
|
{ // puszczanie klawiszy
|
||||||
KeyBoard(0x6B, 0);
|
KeyBoard(0x6B, 0);
|
||||||
bnkMask &= ~1;
|
bnkMask &= ~1;
|
||||||
}
|
}
|
||||||
if(bnkMask & 2){
|
if (bnkMask & 2)
|
||||||
|
{
|
||||||
KeyBoard(0x6D, 0);
|
KeyBoard(0x6D, 0);
|
||||||
bnkMask &= ~2;
|
bnkMask &= ~2;
|
||||||
}
|
}
|
||||||
if(bnkMask & 4){
|
if (bnkMask & 4)
|
||||||
|
{
|
||||||
KeyBoard(0x6F, 0);
|
KeyBoard(0x6F, 0);
|
||||||
bnkMask &= ~4;
|
bnkMask &= ~4;
|
||||||
}
|
}
|
||||||
if(bnkMask & 8){
|
if (bnkMask & 8)
|
||||||
|
{
|
||||||
KeyBoard(0x6A, 0);
|
KeyBoard(0x6A, 0);
|
||||||
bnkMask &= ~8;
|
bnkMask &= ~8;
|
||||||
}
|
}
|
||||||
@@ -628,38 +735,59 @@ bool MWDComm::CheckData() // sprawdzanie wej
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Obsługa HASLERA */
|
/* Obsługa HASLERA */
|
||||||
if(ReadDataBuff[0] & 0x80) bCzuwak = true;
|
if (ReadDataBuff[0] & 0x80)
|
||||||
|
bCzuwak = true;
|
||||||
|
|
||||||
if(bKabina1){ // logika rysika 1
|
if (bKabina1)
|
||||||
|
{ // logika rysika 1
|
||||||
bRysik1H = true;
|
bRysik1H = true;
|
||||||
bRysik1L = false;
|
bRysik1L = false;
|
||||||
if(bPrzejazdSHP) bRysik1H = false;
|
if (bPrzejazdSHP)
|
||||||
}else if(bKabina2){
|
bRysik1H = false;
|
||||||
|
}
|
||||||
|
else if (bKabina2)
|
||||||
|
{
|
||||||
bRysik1L = true;
|
bRysik1L = true;
|
||||||
bRysik1H = false;
|
bRysik1H = false;
|
||||||
if(bPrzejazdSHP) bRysik1L = false;
|
if (bPrzejazdSHP)
|
||||||
}else{
|
bRysik1L = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
bRysik1H = false;
|
bRysik1H = false;
|
||||||
bRysik1L = false;
|
bRysik1L = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(bHamowanie){ // logika rysika 2
|
if (bHamowanie)
|
||||||
|
{ // logika rysika 2
|
||||||
bRysik2H = false;
|
bRysik2H = false;
|
||||||
bRysik2L = true;
|
bRysik2L = true;
|
||||||
}else{
|
}
|
||||||
if(bCzuwak) bRysik2H = true;
|
else
|
||||||
else bRysik2H = false;
|
{
|
||||||
|
if (bCzuwak)
|
||||||
|
bRysik2H = true;
|
||||||
|
else
|
||||||
|
bRysik2H = false;
|
||||||
bRysik2L = false;
|
bRysik2L = false;
|
||||||
}
|
}
|
||||||
bCzuwak = false;
|
bCzuwak = false;
|
||||||
if(bRysik1H)WriteDataBuff[6] |= 1<<0;
|
if (bRysik1H)
|
||||||
else WriteDataBuff[6] &= ~(1<<0);
|
WriteDataBuff[6] |= 1 << 0;
|
||||||
if(bRysik1L)WriteDataBuff[6] |= 1<<1;
|
else
|
||||||
else WriteDataBuff[6] &= ~(1<<1);
|
WriteDataBuff[6] &= ~(1 << 0);
|
||||||
if(bRysik2H)WriteDataBuff[6] |= 1<<2;
|
if (bRysik1L)
|
||||||
else WriteDataBuff[6] &= ~(1<<2);
|
WriteDataBuff[6] |= 1 << 1;
|
||||||
if(bRysik2L)WriteDataBuff[6] |= 1<<3;
|
else
|
||||||
else WriteDataBuff[6] &= ~(1<<3);
|
WriteDataBuff[6] &= ~(1 << 1);
|
||||||
|
if (bRysik2H)
|
||||||
|
WriteDataBuff[6] |= 1 << 2;
|
||||||
|
else
|
||||||
|
WriteDataBuff[6] &= ~(1 << 2);
|
||||||
|
if (bRysik2L)
|
||||||
|
WriteDataBuff[6] |= 1 << 3;
|
||||||
|
else
|
||||||
|
WriteDataBuff[6] &= ~(1 << 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MWDComm::KeyBoard(int key, bool s) // emulacja klawiatury
|
void MWDComm::KeyBoard(int key, bool s) // emulacja klawiatury
|
||||||
@@ -673,15 +801,16 @@ void MWDComm::KeyBoard(int key, bool s) // emulacja klawiatury
|
|||||||
|
|
||||||
ip.ki.wVk = key; // virtual-key code for the "a" key
|
ip.ki.wVk = key; // virtual-key code for the "a" key
|
||||||
|
|
||||||
if(s){// Press the "A" key
|
if (s)
|
||||||
|
{ // Press the "A" key
|
||||||
ip.ki.dwFlags = 0; // 0 for key press
|
ip.ki.dwFlags = 0; // 0 for key press
|
||||||
SendInput(1, &ip, sizeof(INPUT));
|
SendInput(1, &ip, sizeof(INPUT));
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
|
ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
|
||||||
SendInput(1, &ip, sizeof(INPUT));
|
SendInput(1, &ip, sizeof(INPUT));
|
||||||
}
|
}
|
||||||
|
|
||||||
// return 1;
|
// return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
Autor nie ponosi odpowiedzialności za niewłaciwe używanie lub działanie programu!
|
Autor nie ponosi odpowiedzialności za niewłaciwe używanie lub działanie programu!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef MWDH
|
#ifndef MWDH
|
||||||
#define MWDH
|
#define MWDH
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
@@ -33,7 +32,7 @@ private:
|
|||||||
|
|
||||||
bool ReadData(); // BYTE *pReadDataBuff);
|
bool ReadData(); // BYTE *pReadDataBuff);
|
||||||
bool SendData(); // BYTE *pWriteDataBuff);
|
bool SendData(); // BYTE *pWriteDataBuff);
|
||||||
bool CheckData(); //sprawdzanie zmian wejść i kontrola mazaków HASLERA
|
void CheckData(); // sprawdzanie zmian wejść i kontrola mazaków HASLERA
|
||||||
void KeyBoard(int key, bool s);
|
void KeyBoard(int key, bool s);
|
||||||
|
|
||||||
bool bRysik1H;
|
bool bRysik1H;
|
||||||
@@ -55,8 +54,6 @@ public:
|
|||||||
bool bHamowanie;
|
bool bHamowanie;
|
||||||
bool bCzuwak;
|
bool bCzuwak;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
float fAnalog[4]; // trzymanie danych z wejść analogowych
|
float fAnalog[4]; // trzymanie danych z wejść analogowych
|
||||||
|
|
||||||
BYTE ReadDataBuff[17]; // bufory danych
|
BYTE ReadDataBuff[17]; // bufory danych
|
||||||
@@ -67,7 +64,6 @@ public:
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
INFO - zmiany dokonane w innych plikach niezbędne do prawidłowego działania:
|
INFO - zmiany dokonane w innych plikach niezbędne do prawidłowego działania:
|
||||||
|
|
||||||
|
|||||||
248
Driver.cpp
248
Driver.cpp
@@ -11,21 +11,21 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
Copyright (C) 2001-2004 Marcin Wozniak, Maciej Czapkiewicz and others
|
Copyright (C) 2001-2004 Marcin Wozniak, Maciej Czapkiewicz and others
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "Driver.h"
|
#include "Driver.h"
|
||||||
|
|
||||||
#include <direct.h>
|
|
||||||
#include "Globals.h"
|
|
||||||
#include "Logs.h"
|
|
||||||
#include "mtable.h"
|
|
||||||
#include "DynObj.h"
|
#include "DynObj.h"
|
||||||
#include "Event.h"
|
#include "Event.h"
|
||||||
|
#include "Globals.h"
|
||||||
#include "Ground.h"
|
#include "Ground.h"
|
||||||
|
#include "Logs.h"
|
||||||
|
#include "McZapkie/MOVER.h"
|
||||||
|
#include "McZapkie/mctools.h"
|
||||||
#include "MemCell.h"
|
#include "MemCell.h"
|
||||||
#include "World.h"
|
#include "World.h"
|
||||||
#include "McZapkie/mctools.h"
|
#include "mtable.h"
|
||||||
#include "McZapkie/MOVER.h"
|
#include <direct.h>
|
||||||
|
|
||||||
#define LOGVELOCITY 0
|
#define LOGVELOCITY 0
|
||||||
#define LOGORDERS 0
|
#define LOGORDERS 0
|
||||||
@@ -162,7 +162,8 @@ void TSpeedPos::CommandCheck()
|
|||||||
// przystanek, najwy<77>ej AI zignoruje przy analizie tabelki
|
// przystanek, najwy<77>ej AI zignoruje przy analizie tabelki
|
||||||
if ((iFlags & spPassengerStopPoint) == 0)
|
if ((iFlags & spPassengerStopPoint) == 0)
|
||||||
fVelNext = 0.0; // TrainParams->IsStop()?0.0:-1.0; //na razie tak
|
fVelNext = 0.0; // TrainParams->IsStop()?0.0:-1.0; //na razie tak
|
||||||
iFlags |= spPassengerStopPoint; // niestety nie da si<73> w tym miejscu wsp<73><70>pracowa<77> z rozk<7A>adem
|
iFlags |=
|
||||||
|
spPassengerStopPoint; // niestety nie da si<73> w tym miejscu wsp<73><70>pracowa<77> z rozk<7A>adem
|
||||||
break;
|
break;
|
||||||
case cm_SetProximityVelocity:
|
case cm_SetProximityVelocity:
|
||||||
// musi zosta<74> gdy<64> inaczej nie dzia<69>aj<61> manewry
|
// musi zosta<74> gdy<64> inaczej nie dzia<69>aj<61> manewry
|
||||||
@@ -204,7 +205,8 @@ bool TSpeedPos::Update(vector3 *p, vector3 *dir, double &len)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
iFlags ^= spElapsed; // 32-mini<6E>ty - b<>dziemy liczy<7A> odleg<65>o<EFBFBD><6F> wzgl<67>dem przeciwnego ko<6B>ca
|
iFlags ^=
|
||||||
|
spElapsed; // 32-mini<6E>ty - b<>dziemy liczy<7A> odleg<65>o<EFBFBD><6F> wzgl<67>dem przeciwnego ko<6B>ca
|
||||||
// toru (nadal mo<6D>e by<62> z przodu i ogranicza<7A>)
|
// toru (nadal mo<6D>e by<62> z przodu i ogranicza<7A>)
|
||||||
if ((iFlags & 0x43) == 3) // tylko je<6A>li (istotny) tor, bo eventy s<> punktowe
|
if ((iFlags & 0x43) == 3) // tylko je<6A>li (istotny) tor, bo eventy s<> punktowe
|
||||||
if (trTrack) // mo<6D>e by<62> NULL, je<6A>li koniec toru (????)
|
if (trTrack) // mo<6D>e by<62> NULL, je<6A>li koniec toru (????)
|
||||||
@@ -245,7 +247,8 @@ bool TSpeedPos::Update(vector3 *p, vector3 *dir, double &len)
|
|||||||
{
|
{
|
||||||
if (Global::iWriteLogEnabled & 8)
|
if (Global::iWriteLogEnabled & 8)
|
||||||
WriteLog("Tor " + trTrack->NameGet() + " zajety przed pojazdem. Num=" +
|
WriteLog("Tor " + trTrack->NameGet() + " zajety przed pojazdem. Num=" +
|
||||||
std::to_string(trTrack->iNumDynamics) + "Dist= " + std::to_string(fDist));
|
std::to_string(trTrack->iNumDynamics) +
|
||||||
|
"Dist= " + std::to_string(fDist));
|
||||||
fVelNext =
|
fVelNext =
|
||||||
0.0; // to zabroni<6E> wjazdu (chyba <20>e ten z przodu te<74> jedzie prosto)
|
0.0; // to zabroni<6E> wjazdu (chyba <20>e ten z przodu te<74> jedzie prosto)
|
||||||
}
|
}
|
||||||
@@ -263,13 +266,15 @@ bool TSpeedPos::Update(vector3 *p, vector3 *dir, double &len)
|
|||||||
// na Mydelniczce potrafi skanowa<77> na wprost mimo pojechania na bok
|
// na Mydelniczce potrafi skanowa<77> na wprost mimo pojechania na bok
|
||||||
}
|
}
|
||||||
// poni<6E>sze nie dotyczy trybu <20><>czenia?
|
// poni<6E>sze nie dotyczy trybu <20><>czenia?
|
||||||
if ((iFlags & spElapsed) ? false :
|
if ((iFlags & spElapsed) ?
|
||||||
|
false :
|
||||||
trTrack->iNumDynamics >
|
trTrack->iNumDynamics >
|
||||||
0) // je<6A>li jeszcze nie wjechano na tor, a co<63> na nim jest
|
0) // je<6A>li jeszcze nie wjechano na tor, a co<63> na nim jest
|
||||||
{
|
{
|
||||||
if (Global::iWriteLogEnabled & 8)
|
if (Global::iWriteLogEnabled & 8)
|
||||||
WriteLog("Rozjazd " + trTrack->NameGet() + " zajety przed pojazdem. Num=" +
|
WriteLog("Rozjazd " + trTrack->NameGet() + " zajety przed pojazdem. Num=" +
|
||||||
std::to_string(trTrack->iNumDynamics) + "Dist= "+ std::to_string(fDist));
|
std::to_string(trTrack->iNumDynamics) +
|
||||||
|
"Dist= " + std::to_string(fDist));
|
||||||
// fDist -= 30.0;
|
// fDist -= 30.0;
|
||||||
fVelNext = 0.0; // to niech stanie w zwi<77>kszonej odleg<65>o<EFBFBD>ci
|
fVelNext = 0.0; // to niech stanie w zwi<77>kszonej odleg<65>o<EFBFBD>ci
|
||||||
// else if (fVelNext==0.0) //je<6A>li zosta<74>a wyzerowana
|
// else if (fVelNext==0.0) //je<6A>li zosta<74>a wyzerowana
|
||||||
@@ -301,10 +306,12 @@ std::string TSpeedPos::TableText()
|
|||||||
return "Flags=#" + to_hex_str(iFlags, 8) + ", Dist=" + to_string(fDist, 1, 7) +
|
return "Flags=#" + to_hex_str(iFlags, 8) + ", Dist=" + to_string(fDist, 1, 7) +
|
||||||
", Vel=" + std::to_string(fVelNext) + ", Name=" + GetName();
|
", Vel=" + std::to_string(fVelNext) + ", Name=" + GetName();
|
||||||
// if (iFlags & spTrack) // je<6A>li tor
|
// if (iFlags & spTrack) // je<6A>li tor
|
||||||
// return "Flags=#" + IntToHex(iFlags, 8) + ", Dist=" + FloatToStrF(fDist, ffFixed, 7, 1) +
|
// return "Flags=#" + IntToHex(iFlags, 8) + ", Dist=" + FloatToStrF(fDist, ffFixed, 7, 1)
|
||||||
|
// +
|
||||||
// ", Vel=" + AnsiString(fVelNext) + ", Track=" + trTrack->NameGet();
|
// ", Vel=" + AnsiString(fVelNext) + ", Track=" + trTrack->NameGet();
|
||||||
// else if (iFlags & spEvent) // je<6A>li event
|
// else if (iFlags & spEvent) // je<6A>li event
|
||||||
// return "Flags=#" + IntToHex(iFlags, 8) + ", Dist=" + FloatToStrF(fDist, ffFixed, 7, 1) +
|
// return "Flags=#" + IntToHex(iFlags, 8) + ", Dist=" + FloatToStrF(fDist, ffFixed, 7, 1)
|
||||||
|
// +
|
||||||
// ", Vel=" + AnsiString(fVelNext) + ", Event=" + evEvent->asName;
|
// ", Vel=" + AnsiString(fVelNext) + ", Event=" + evEvent->asName;
|
||||||
}
|
}
|
||||||
return "Empty";
|
return "Empty";
|
||||||
@@ -312,7 +319,8 @@ std::string TSpeedPos::TableText()
|
|||||||
|
|
||||||
bool TSpeedPos::IsProperSemaphor(TOrders order)
|
bool TSpeedPos::IsProperSemaphor(TOrders order)
|
||||||
{ // sprawdzenie czy semafor jest zgodny z trybem jazdy
|
{ // sprawdzenie czy semafor jest zgodny z trybem jazdy
|
||||||
if (order < 0x40) // Wait_for_orders, Prepare_engine, Change_direction, Connect, Disconnect, Shunt
|
if (order <
|
||||||
|
0x40) // Wait_for_orders, Prepare_engine, Change_direction, Connect, Disconnect, Shunt
|
||||||
{
|
{
|
||||||
if (iFlags & (spSemaphor | spShuntSemaphor))
|
if (iFlags & (spSemaphor | spShuntSemaphor))
|
||||||
return true;
|
return true;
|
||||||
@@ -336,8 +344,10 @@ bool TSpeedPos::Set(TEvent *event, double dist, TOrders order)
|
|||||||
CommandCheck(); // sprawdzenie typu komendy w evencie i okre<72>lenie pr<70>dko<6B>ci
|
CommandCheck(); // sprawdzenie typu komendy w evencie i okre<72>lenie pr<70>dko<6B>ci
|
||||||
// zale<6C>nie od trybu sprawdzenie czy jest tutaj gdzie<69> semafor lub tarcza manewrowa
|
// zale<6C>nie od trybu sprawdzenie czy jest tutaj gdzie<69> semafor lub tarcza manewrowa
|
||||||
// je<6A>li wskazuje stop wtedy wystawiamy true jako koniec sprawdzania
|
// je<6A>li wskazuje stop wtedy wystawiamy true jako koniec sprawdzania
|
||||||
// WriteLog("EventSet: Vel=" + AnsiString(fVelNext) + " iFlags=" + AnsiString(iFlags) + " order="+AnsiString(order));
|
// WriteLog("EventSet: Vel=" + AnsiString(fVelNext) + " iFlags=" + AnsiString(iFlags) + "
|
||||||
if (order < 0x40) // Wait_for_orders, Prepare_engine, Change_direction, Connect, Disconnect, Shunt
|
// order="+AnsiString(order));
|
||||||
|
if (order <
|
||||||
|
0x40) // Wait_for_orders, Prepare_engine, Change_direction, Connect, Disconnect, Shunt
|
||||||
{
|
{
|
||||||
if (iFlags & (spSemaphor | spShuntSemaphor) && fVelNext == 0.0)
|
if (iFlags & (spSemaphor | spShuntSemaphor) && fVelNext == 0.0)
|
||||||
return true;
|
return true;
|
||||||
@@ -358,7 +368,8 @@ void TSpeedPos::Set(TTrack *track, double dist, int flag)
|
|||||||
trTrack = track; // TODO: (t) mo<6D>e by<62> NULL i nie odczytamy ko<6B>ca poprzedniego :/
|
trTrack = track; // TODO: (t) mo<6D>e by<62> NULL i nie odczytamy ko<6B>ca poprzedniego :/
|
||||||
if (trTrack)
|
if (trTrack)
|
||||||
{
|
{
|
||||||
iFlags = flag | (trTrack->eType == tt_Normal ? 2 : 10); // zapami<6D>tanie kierunku wraz z typem
|
iFlags =
|
||||||
|
flag | (trTrack->eType == tt_Normal ? 2 : 10); // zapami<6D>tanie kierunku wraz z typem
|
||||||
if (iFlags & spSwitch)
|
if (iFlags & spSwitch)
|
||||||
if (trTrack->GetSwitchState() & 1)
|
if (trTrack->GetSwitchState() & 1)
|
||||||
iFlags |= spSwitchStatus;
|
iFlags |= spSwitchStatus;
|
||||||
@@ -416,12 +427,13 @@ bool TController::TableNotFound(TEvent *e)
|
|||||||
{ // sprawdzenie, czy nie zosta<74> ju<6A> dodany do tabelki (np. podw<64>jne W4 robi problemy)
|
{ // sprawdzenie, czy nie zosta<74> ju<6A> dodany do tabelki (np. podw<64>jne W4 robi problemy)
|
||||||
int j = (iLast + 1) % iSpeedTableSize; // j, aby sprawdzi<7A> te<74> ostatni<6E> pozycj<63>
|
int j = (iLast + 1) % iSpeedTableSize; // j, aby sprawdzi<7A> te<74> ostatni<6E> pozycj<63>
|
||||||
for (int i = iFirst; i != j; i = (i + 1) % iSpeedTableSize)
|
for (int i = iFirst; i != j; i = (i + 1) % iSpeedTableSize)
|
||||||
if ((sSpeedTable[i].iFlags & (spEnabled | spEvent)) == (spEnabled |
|
if ((sSpeedTable[i].iFlags & (spEnabled | spEvent)) ==
|
||||||
spEvent)) // o ile u<>ywana pozycja
|
(spEnabled | spEvent)) // o ile u<>ywana pozycja
|
||||||
if (sSpeedTable[i].evEvent == e)
|
if (sSpeedTable[i].evEvent == e)
|
||||||
{
|
{
|
||||||
if (Global::iWriteLogEnabled & 8)
|
if (Global::iWriteLogEnabled & 8)
|
||||||
WriteLog("TableNotFound: Event already in SpeedTable: " + sSpeedTable[i].evEvent->asName);
|
WriteLog("TableNotFound: Event already in SpeedTable: " +
|
||||||
|
sSpeedTable[i].evEvent->asName);
|
||||||
return false; // ju<6A> jest, drugi raz dodawa<77> nie ma po co
|
return false; // ju<6A> jest, drugi raz dodawa<77> nie ma po co
|
||||||
}
|
}
|
||||||
return true; // nie ma, czyli mo<6D>na doda<64>
|
return true; // nie ma, czyli mo<6D>na doda<64>
|
||||||
@@ -499,8 +511,9 @@ void TController::TableTraceRoute(double fDistance, TDynamicObject *pVehicle)
|
|||||||
-1.0 :
|
-1.0 :
|
||||||
1.0; // flaga ustawiona, gdy Point2 toru jest bli<6C>ej
|
1.0; // flaga ustawiona, gdy Point2 toru jest bli<6C>ej
|
||||||
fCurrentDistance = sSpeedTable[iLast].fDist; // aktualna odleg<65>o<EFBFBD><6F> do jego Point1
|
fCurrentDistance = sSpeedTable[iLast].fDist; // aktualna odleg<65>o<EFBFBD><6F> do jego Point1
|
||||||
fTrackLength =
|
fTrackLength = sSpeedTable[iLast].iFlags & (spElapsed | spEnd) ?
|
||||||
sSpeedTable[iLast].iFlags & (spElapsed | spEnd) ? 0.0 : pTrack->Length(); // nie dolicza<7A> d<>ugo<67>ci gdy:
|
0.0 :
|
||||||
|
pTrack->Length(); // nie dolicza<7A> d<>ugo<67>ci gdy:
|
||||||
// 32-mini<6E>ty pocz<63>tek,
|
// 32-mini<6E>ty pocz<63>tek,
|
||||||
// 64-jazda do ko<6B>ca toru
|
// 64-jazda do ko<6B>ca toru
|
||||||
}
|
}
|
||||||
@@ -523,8 +536,11 @@ void TController::TableTraceRoute(double fDistance, TDynamicObject *pVehicle)
|
|||||||
if (TableAddNew())
|
if (TableAddNew())
|
||||||
{
|
{
|
||||||
if (Global::iWriteLogEnabled & 8)
|
if (Global::iWriteLogEnabled & 8)
|
||||||
WriteLog("TableTraceRoute: new event found " + pEvent->asName + " by " + OwnerName());
|
WriteLog("TableTraceRoute: new event found " + pEvent->asName +
|
||||||
if (sSpeedTable[iLast].Set( pEvent, fCurrentDistance, OrderCurrentGet())) // dodanie odczytu sygna<6E>u
|
" by " + OwnerName());
|
||||||
|
if (sSpeedTable[iLast].Set(
|
||||||
|
pEvent, fCurrentDistance,
|
||||||
|
OrderCurrentGet())) // dodanie odczytu sygna<6E>u
|
||||||
{
|
{
|
||||||
fDistance = fCurrentDistance; // je<6A>li sygna<6E> stop, to nie ma
|
fDistance = fCurrentDistance; // je<6A>li sygna<6E> stop, to nie ma
|
||||||
// potrzeby dalej skanowa<77>
|
// potrzeby dalej skanowa<77>
|
||||||
@@ -589,8 +605,9 @@ void TController::TableTraceRoute(double fDistance, TDynamicObject *pVehicle)
|
|||||||
sSpeedTable[iLast].iFlags &=
|
sSpeedTable[iLast].iFlags &=
|
||||||
~spReverse; // usuni<6E>cie flagi kierunku, bo mo<6D>e by<62> b<><62>dna
|
~spReverse; // usuni<6E>cie flagi kierunku, bo mo<6D>e by<62> b<><62>dna
|
||||||
if (sSpeedTable[iLast].iFlags < 0)
|
if (sSpeedTable[iLast].iFlags < 0)
|
||||||
sSpeedTable[iLast].iFlags |=
|
sSpeedTable[iLast].iFlags |= spReverse; // ustawienie flagi kierunku
|
||||||
spReverse; // ustawienie flagi kierunku na podstawie wybranego segmentu
|
// na podstawie wybranego
|
||||||
|
// segmentu
|
||||||
if (int(fLastDir) * sSpeedTable[iLast].iFlags < 0)
|
if (int(fLastDir) * sSpeedTable[iLast].iFlags < 0)
|
||||||
fLastDir = -fLastDir;
|
fLastDir = -fLastDir;
|
||||||
if (AIControllFlag) // dla AI na razie losujemy kierunek na kolejnym
|
if (AIControllFlag) // dla AI na razie losujemy kierunek na kolejnym
|
||||||
@@ -711,7 +728,8 @@ void TController::TableCheck(double fDistance)
|
|||||||
if (sSpeedTable[i].Update(&pos, &dir, len))
|
if (sSpeedTable[i].Update(&pos, &dir, len))
|
||||||
{
|
{
|
||||||
if (Global::iWriteLogEnabled & 8)
|
if (Global::iWriteLogEnabled & 8)
|
||||||
WriteLog("TableCheck: Switch change. Delete next entries. (" + sSpeedTable[i].trTrack->NameGet() + ")");
|
WriteLog("TableCheck: Switch change. Delete next entries. (" +
|
||||||
|
sSpeedTable[i].trTrack->NameGet() + ")");
|
||||||
int k = (iLast + 1) % iSpeedTableSize; // skanujemy razem z ostatni<6E> pozycj<63>
|
int k = (iLast + 1) % iSpeedTableSize; // skanujemy razem z ostatni<6E> pozycj<63>
|
||||||
for (int j = (i + 1) % iSpeedTableSize; j != k; j = (j + 1) % iSpeedTableSize)
|
for (int j = (i + 1) % iSpeedTableSize; j != k; j = (j + 1) % iSpeedTableSize)
|
||||||
{ // kasowanie wszystkich rekord<72>w za zmienion<6F> zwrotnic<69>
|
{ // kasowanie wszystkich rekord<72>w za zmienion<6F> zwrotnic<69>
|
||||||
@@ -735,16 +753,20 @@ void TController::TableCheck(double fDistance)
|
|||||||
{
|
{
|
||||||
if (sSpeedTable[i].fDist < -fLength) // a sk<73>ad wyjecha<68> ca<63><61> d<>ugo<67>ci<63> poza
|
if (sSpeedTable[i].fDist < -fLength) // a sk<73>ad wyjecha<68> ca<63><61> d<>ugo<67>ci<63> poza
|
||||||
{ // degradacja pozycji
|
{ // degradacja pozycji
|
||||||
// WriteLog( "TableCheck: Track is behind. Delete from table: " + sSpeedTable[i].trTrack->NameGet());
|
// WriteLog( "TableCheck: Track is behind. Delete from table: " +
|
||||||
|
// sSpeedTable[i].trTrack->NameGet());
|
||||||
sSpeedTable[i].iFlags &= ~spEnabled; // nie liczy si<73>
|
sSpeedTable[i].iFlags &= ~spEnabled; // nie liczy si<73>
|
||||||
}
|
}
|
||||||
else if ((sSpeedTable[i].iFlags & 0xF0000028) ==
|
else if ((sSpeedTable[i].iFlags & 0xF0000028) == spElapsed) // jest z ty<74>u
|
||||||
spElapsed) // jest z ty<74>u (najechany) i nie jest zwrotnic<69> ani skrzy<7A>owaniem
|
// (najechany) i nie
|
||||||
|
// jest zwrotnic<69>
|
||||||
|
// ani skrzy<7A>owaniem
|
||||||
if (sSpeedTable[i].fVelNext < 0) // a nie ma ograniczenia pr<70>dko<6B>ci
|
if (sSpeedTable[i].fVelNext < 0) // a nie ma ograniczenia pr<70>dko<6B>ci
|
||||||
{
|
{
|
||||||
sSpeedTable[i].iFlags =
|
sSpeedTable[i].iFlags =
|
||||||
0; // to nie ma go po co trzyma<6D> (odtykacz usunie ze <20>rodka)
|
0; // to nie ma go po co trzyma<6D> (odtykacz usunie ze <20>rodka)
|
||||||
// WriteLog("TableCheck: Track without speed. Delete from table: " + sSpeedTable[i].trTrack->NameGet());
|
// WriteLog("TableCheck: Track without speed. Delete from table: " +
|
||||||
|
// sSpeedTable[i].trTrack->NameGet());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (sSpeedTable[i].iFlags & spEvent) // je<6A>li event
|
else if (sSpeedTable[i].iFlags & spEvent) // je<6A>li event
|
||||||
@@ -756,7 +778,8 @@ void TController::TableCheck(double fDistance)
|
|||||||
sSpeedTable[i].fDist < -fLength)
|
sSpeedTable[i].fDist < -fLength)
|
||||||
{ // poci<63>g staje zawsze, a samoch<63>d tylko je<6A>li nie przejedzie ca<63><61>
|
{ // poci<63>g staje zawsze, a samoch<63>d tylko je<6A>li nie przejedzie ca<63><61>
|
||||||
// d<>ugo<67>ci<63> (mo<6D>e by<62> zaskoczony zmian<61>)
|
// d<>ugo<67>ci<63> (mo<6D>e by<62> zaskoczony zmian<61>)
|
||||||
// WriteLog("TableCheck: Event is behind. Delete from table: " + sSpeedTable[i].evEvent->asName);
|
// WriteLog("TableCheck: Event is behind. Delete from table: " +
|
||||||
|
// sSpeedTable[i].evEvent->asName);
|
||||||
sSpeedTable[i].iFlags &= ~1; // degradacja pozycji dla samochodu;
|
sSpeedTable[i].iFlags &= ~1; // degradacja pozycji dla samochodu;
|
||||||
// semafory usuwane tylko przy sprawdzaniu,
|
// semafory usuwane tylko przy sprawdzaniu,
|
||||||
// bo wysy<73>aj<61> komendy
|
// bo wysy<73>aj<61> komendy
|
||||||
@@ -831,15 +854,15 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
// ju<6A> semafora)
|
// ju<6A> semafora)
|
||||||
#if LOGSTOPS
|
#if LOGSTOPS
|
||||||
WriteLog(pVehicle->asName + " as " + TrainParams->TrainName + ": at " +
|
WriteLog(pVehicle->asName + " as " + TrainParams->TrainName + ": at " +
|
||||||
std::to_string(GlobalTime->hh) + ":" + std::to_string(GlobalTime->mm) +
|
std::to_string(GlobalTime->hh) + ":" +
|
||||||
" skipped " + asNextStop); // informacja
|
std::to_string(GlobalTime->mm) + " skipped " +
|
||||||
|
asNextStop); // informacja
|
||||||
#endif
|
#endif
|
||||||
fLastStopExpDist = mvOccupied->DistCounter + 0.250 +
|
fLastStopExpDist = mvOccupied->DistCounter + 0.250 +
|
||||||
0.001 * fLength; // przy jakim dystansie (stanie
|
0.001 * fLength; // przy jakim dystansie (stanie
|
||||||
// licznika) ma przesun<75><6E> na
|
// licznika) ma przesun<75><6E> na
|
||||||
// nast<73>pny post<73>j
|
// nast<73>pny post<73>j
|
||||||
TrainParams->UpdateMTable(
|
TrainParams->UpdateMTable(GlobalTime->hh, GlobalTime->mm,
|
||||||
GlobalTime->hh, GlobalTime->mm,
|
|
||||||
asNextStop.substr(19, asNextStop.length()));
|
asNextStop.substr(19, asNextStop.length()));
|
||||||
TrainParams->StationIndexInc(); // przej<65>cie do nast<73>pnej
|
TrainParams->StationIndexInc(); // przej<65>cie do nast<73>pnej
|
||||||
asNextStop =
|
asNextStop =
|
||||||
@@ -1000,7 +1023,9 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
// ma przesun<75><6E> na nast<73>pny post<73>j
|
// ma przesun<75><6E> na nast<73>pny post<73>j
|
||||||
// Controlled-> //zapisa<73> odleg<65>o<EFBFBD><6F> do przejechania
|
// Controlled-> //zapisa<73> odleg<65>o<EFBFBD><6F> do przejechania
|
||||||
TrainParams->StationIndexInc(); // przej<65>cie do nast<73>pnej
|
TrainParams->StationIndexInc(); // przej<65>cie do nast<73>pnej
|
||||||
asNextStop = TrainParams->NextStop(); // pobranie kolejnego miejsca zatrzymania
|
asNextStop =
|
||||||
|
TrainParams
|
||||||
|
->NextStop(); // pobranie kolejnego miejsca zatrzymania
|
||||||
// TableClear(); //aby od nowa sprawdzi<7A>o W4 z inn<6E> nazw<7A> ju<6A> - to nie jest dobry pomys<79>
|
// TableClear(); //aby od nowa sprawdzi<7A>o W4 z inn<6E> nazw<7A> ju<6A> - to nie jest dobry pomys<79>
|
||||||
#if LOGSTOPS
|
#if LOGSTOPS
|
||||||
WriteLog(pVehicle->asName + " as " + TrainParams->TrainName +
|
WriteLog(pVehicle->asName + " as " + TrainParams->TrainName +
|
||||||
@@ -1075,15 +1100,18 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
if (sSpeedTable[i].fDist < 0.0 && sSemNext == &sSpeedTable[i])
|
if (sSpeedTable[i].fDist < 0.0 && sSemNext == &sSpeedTable[i])
|
||||||
{
|
{
|
||||||
if (Global::iWriteLogEnabled & 8)
|
if (Global::iWriteLogEnabled & 8)
|
||||||
WriteLog("TableUpdate: semaphor " + sSemNext->GetName() + " passed by " + OwnerName());
|
WriteLog("TableUpdate: semaphor " + sSemNext->GetName() + " passed by " +
|
||||||
|
OwnerName());
|
||||||
sSemNext = NULL; // je<6A>li min<69>li<6C>my semafor od ograniczenia to go kasujemy ze
|
sSemNext = NULL; // je<6A>li min<69>li<6C>my semafor od ograniczenia to go kasujemy ze
|
||||||
// zmiennej sprawdzaj<61>cej dla skanowania w prz<72>d
|
// zmiennej sprawdzaj<61>cej dla skanowania w prz<72>d
|
||||||
}
|
}
|
||||||
if (sSpeedTable[i].fDist < 0.0 && sSemNextStop == &sSpeedTable[i])
|
if (sSpeedTable[i].fDist < 0.0 && sSemNextStop == &sSpeedTable[i])
|
||||||
{
|
{
|
||||||
if (Global::iWriteLogEnabled & 8)
|
if (Global::iWriteLogEnabled & 8)
|
||||||
WriteLog("TableUpdate: semaphor " + sSemNextStop->GetName() + " passed by " + OwnerName());
|
WriteLog("TableUpdate: semaphor " + sSemNextStop->GetName() +
|
||||||
sSemNextStop = NULL; // je<6A>li min<69>li<6C>my semafor od ograniczenia to go kasujemy ze
|
" passed by " + OwnerName());
|
||||||
|
sSemNextStop =
|
||||||
|
NULL; // je<6A>li min<69>li<6C>my semafor od ograniczenia to go kasujemy ze
|
||||||
// zmiennej sprawdzaj<61>cej dla skanowania w prz<72>d
|
// zmiennej sprawdzaj<61>cej dla skanowania w prz<72>d
|
||||||
}
|
}
|
||||||
if (sSpeedTable[i].fDist > 0.0 &&
|
if (sSpeedTable[i].fDist > 0.0 &&
|
||||||
@@ -1096,7 +1124,8 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
// byl nowy to go dorzucamy do zmiennej, <20>eby ca<63>y
|
// byl nowy to go dorzucamy do zmiennej, <20>eby ca<63>y
|
||||||
// czas widzia<69> najbli<6C>szy
|
// czas widzia<69> najbli<6C>szy
|
||||||
if (Global::iWriteLogEnabled & 8)
|
if (Global::iWriteLogEnabled & 8)
|
||||||
WriteLog("TableUpdate: Next semaphor: " + sSemNext->GetName() + " by " + OwnerName());
|
WriteLog("TableUpdate: Next semaphor: " + sSemNext->GetName() + " by " +
|
||||||
|
OwnerName());
|
||||||
}
|
}
|
||||||
if (!sSemNextStop || (sSemNextStop && sSemNextStop->fVelNext != 0 &&
|
if (!sSemNextStop || (sSemNextStop && sSemNextStop->fVelNext != 0 &&
|
||||||
sSpeedTable[i].fVelNext == 0))
|
sSpeedTable[i].fVelNext == 0))
|
||||||
@@ -1149,10 +1178,12 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
else if (sSpeedTable[i].IsProperSemaphor(OrderCurrentGet()))
|
else if (sSpeedTable[i].IsProperSemaphor(OrderCurrentGet()))
|
||||||
{ // to semaphor
|
{ // to semaphor
|
||||||
if (sSpeedTable[i].fDist < 0)
|
if (sSpeedTable[i].fDist < 0)
|
||||||
VelSignalLast = sSpeedTable[i].fVelNext; //mini<6E>ty daje pr<70>dko<6B><6F> obowi<77>zuj<75>c<EFBFBD>
|
VelSignalLast =
|
||||||
|
sSpeedTable[i].fVelNext; // mini<6E>ty daje pr<70>dko<6B><6F> obowi<77>zuj<75>c<EFBFBD>
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
iDrivigFlags |= moveSemaphorFound; //je<6A>li z przodu to dajemy falg<6C>, <20>e jest
|
iDrivigFlags |= moveSemaphorFound; // je<EFBFBD>li z przodu to dajemy falg<6C>, <20>e
|
||||||
|
// jest
|
||||||
d_to_next_sem = Min0R(sSpeedTable[i].fDist, d_to_next_sem);
|
d_to_next_sem = Min0R(sSpeedTable[i].fDist, d_to_next_sem);
|
||||||
}
|
}
|
||||||
if (sSpeedTable[i].fDist <= d_to_next_sem)
|
if (sSpeedTable[i].fDist <= d_to_next_sem)
|
||||||
@@ -1172,12 +1203,15 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
if (sSpeedTable[i].fSectionVelocityDist == 0.0)
|
if (sSpeedTable[i].fSectionVelocityDist == 0.0)
|
||||||
{
|
{
|
||||||
if (Global::iWriteLogEnabled & 8)
|
if (Global::iWriteLogEnabled & 8)
|
||||||
WriteLog("TableUpdate: Event is behind. SVD = 0: " + sSpeedTable[i].evEvent->asName);
|
WriteLog("TableUpdate: Event is behind. SVD = 0: " +
|
||||||
sSpeedTable[i].iFlags = 0; // je<6A>li punktowy to kasujemy i nie dajemy ograniczenia na sta<74>e
|
sSpeedTable[i].evEvent->asName);
|
||||||
|
sSpeedTable[i].iFlags =
|
||||||
|
0; // je<6A>li punktowy to kasujemy i nie dajemy ograniczenia na sta<74>e
|
||||||
}
|
}
|
||||||
else if (sSpeedTable[i].fSectionVelocityDist < 0.0)
|
else if (sSpeedTable[i].fSectionVelocityDist < 0.0)
|
||||||
{ // ograniczenie obowi<77>zuj<75>ce do nast<73>pnego
|
{ // ograniczenie obowi<77>zuj<75>ce do nast<73>pnego
|
||||||
if (sSpeedTable[i].fVelNext == Global::Min0RSpeed(sSpeedTable[i].fVelNext, VelLimitLast) &&
|
if (sSpeedTable[i].fVelNext ==
|
||||||
|
Global::Min0RSpeed(sSpeedTable[i].fVelNext, VelLimitLast) &&
|
||||||
sSpeedTable[i].fVelNext != VelLimitLast)
|
sSpeedTable[i].fVelNext != VelLimitLast)
|
||||||
{ // je<6A>li ograniczenie jest mniejsze ni<6E> obecne to obowi<77>zuje od zaraz
|
{ // je<6A>li ograniczenie jest mniejsze ni<6E> obecne to obowi<77>zuje od zaraz
|
||||||
VelLimitLast = sSpeedTable[i].fVelNext;
|
VelLimitLast = sSpeedTable[i].fVelNext;
|
||||||
@@ -1186,27 +1220,34 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
{ // je<6A>li wi<77>ksze to musi wyjecha<68> za poprzednie
|
{ // je<6A>li wi<77>ksze to musi wyjecha<68> za poprzednie
|
||||||
VelLimitLast = sSpeedTable[i].fVelNext;
|
VelLimitLast = sSpeedTable[i].fVelNext;
|
||||||
if (Global::iWriteLogEnabled & 8)
|
if (Global::iWriteLogEnabled & 8)
|
||||||
WriteLog("TableUpdate: Event is behind. SVD < 0: " + sSpeedTable[i].evEvent->asName);
|
WriteLog("TableUpdate: Event is behind. SVD < 0: " +
|
||||||
sSpeedTable[i].iFlags = 0; // wyjechali<6C>my poza poprzednie, mo<6D>na skasowa<77>
|
sSpeedTable[i].evEvent->asName);
|
||||||
|
sSpeedTable[i].iFlags =
|
||||||
|
0; // wyjechali<6C>my poza poprzednie, mo<6D>na skasowa<77>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // je<6A>li wi<77>ksze to ograniczenie ma swoj<6F> d<>ugo<67><6F>
|
{ // je<6A>li wi<77>ksze to ograniczenie ma swoj<6F> d<>ugo<67><6F>
|
||||||
if (sSpeedTable[i].fVelNext == Global::Min0RSpeed(sSpeedTable[i].fVelNext, VelLimitLast) &&
|
if (sSpeedTable[i].fVelNext ==
|
||||||
|
Global::Min0RSpeed(sSpeedTable[i].fVelNext, VelLimitLast) &&
|
||||||
sSpeedTable[i].fVelNext != VelLimitLast)
|
sSpeedTable[i].fVelNext != VelLimitLast)
|
||||||
{ // je<6A>li ograniczenie jest mniejsze ni<6E> obecne to obowi<77>zuje od zaraz
|
{ // je<6A>li ograniczenie jest mniejsze ni<6E> obecne to obowi<77>zuje od zaraz
|
||||||
VelLimitLast = sSpeedTable[i].fVelNext;
|
VelLimitLast = sSpeedTable[i].fVelNext;
|
||||||
}
|
}
|
||||||
else if (sSpeedTable[i].fDist < -fLength && sSpeedTable[i].fVelNext != VelLimitLast)
|
else if (sSpeedTable[i].fDist < -fLength &&
|
||||||
|
sSpeedTable[i].fVelNext != VelLimitLast)
|
||||||
{ // je<6A>li wi<77>ksze to musi wyjecha<68> za poprzednie
|
{ // je<6A>li wi<77>ksze to musi wyjecha<68> za poprzednie
|
||||||
VelLimitLast = sSpeedTable[i].fVelNext;
|
VelLimitLast = sSpeedTable[i].fVelNext;
|
||||||
}
|
}
|
||||||
else if (sSpeedTable[i].fDist < -fLength - sSpeedTable[i].fSectionVelocityDist)
|
else if (sSpeedTable[i].fDist <
|
||||||
|
-fLength - sSpeedTable[i].fSectionVelocityDist)
|
||||||
{ //
|
{ //
|
||||||
VelLimitLast = -1.0;
|
VelLimitLast = -1.0;
|
||||||
if (Global::iWriteLogEnabled & 8)
|
if (Global::iWriteLogEnabled & 8)
|
||||||
WriteLog("TableUpdate: Event is behind. SVD > 0: " + sSpeedTable[i].evEvent->asName);
|
WriteLog("TableUpdate: Event is behind. SVD > 0: " +
|
||||||
sSpeedTable[i].iFlags = 0; // wyjechali<6C>my poza poprzednie, mo<6D>na skasowa<77>
|
sSpeedTable[i].evEvent->asName);
|
||||||
|
sSpeedTable[i].iFlags =
|
||||||
|
0; // wyjechali<6C>my poza poprzednie, mo<6D>na skasowa<77>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1219,7 +1260,8 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
v = 0.0; // to mo<6D>e by<62> podany dla tamtego: jecha<68> tak, jakby tam stop by<62>
|
v = 0.0; // to mo<6D>e by<62> podany dla tamtego: jecha<68> tak, jakby tam stop by<62>
|
||||||
else
|
else
|
||||||
{ // zawalidrogi nie ma (albo pojazd jest samochodem), sprawdzi<7A> sygna<6E>
|
{ // zawalidrogi nie ma (albo pojazd jest samochodem), sprawdzi<7A> sygna<6E>
|
||||||
if (sSpeedTable[i].iFlags & spShuntSemaphor) // je<6A>li Tm - w zasadzie to sprawdzi<7A>
|
if (sSpeedTable[i].iFlags &
|
||||||
|
spShuntSemaphor) // je<6A>li Tm - w zasadzie to sprawdzi<7A>
|
||||||
// komend<6E>!
|
// komend<6E>!
|
||||||
{ // je<6A>li podana pr<70>dko<6B><6F> manewrowa
|
{ // je<6A>li podana pr<70>dko<6B><6F> manewrowa
|
||||||
if ((OrderCurrentGet() & Obey_train) ? v == 0.0 : false)
|
if ((OrderCurrentGet() & Obey_train) ? v == 0.0 : false)
|
||||||
@@ -1250,13 +1292,17 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!(sSpeedTable[i].iFlags & spSectionVel)) //je<6A>li jaki<6B> event pasywny ale nie ograniczenie
|
else if (!(sSpeedTable[i].iFlags &
|
||||||
if (go == cm_Unknown) // je<6A>li nie by<62>o komendy wcze<7A>niej - pierwsza si<73> liczy
|
spSectionVel)) // je<6A>li jaki<6B> event pasywny ale nie ograniczenie
|
||||||
|
if (go ==
|
||||||
|
cm_Unknown) // je<6A>li nie by<62>o komendy wcze<7A>niej - pierwsza si<73> liczy
|
||||||
// - ustawianie VelSignal
|
// - ustawianie VelSignal
|
||||||
if (v < 0.0 ? true : v >= 1.0) // bo warto<74><6F> 0.1 s<>u<EFBFBD>y do hamowania tylko
|
if (v < 0.0 ? true :
|
||||||
|
v >= 1.0) // bo warto<74><6F> 0.1 s<>u<EFBFBD>y do hamowania tylko
|
||||||
{
|
{
|
||||||
go = cm_SetVelocity; // mo<6D>e odjecha<68>
|
go = cm_SetVelocity; // mo<6D>e odjecha<68>
|
||||||
// Ra 2014-06: (VelSignal) nie mo<6D>e by<62> tu ustawiane, bo semafor mo<6D>e
|
// Ra 2014-06: (VelSignal) nie mo<6D>e by<62> tu ustawiane, bo semafor
|
||||||
|
// mo<6D>e
|
||||||
// by<62> daleko
|
// by<62> daleko
|
||||||
// VelSignal=v; //nie do ko<6B>ca tak, to jest druga pr<70>dko<6B><6F>; -1 nie
|
// VelSignal=v; //nie do ko<6B>ca tak, to jest druga pr<70>dko<6B><6F>; -1 nie
|
||||||
// wpisywa<77>...
|
// wpisywa<77>...
|
||||||
@@ -1270,11 +1316,13 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
if (sSpeedTable[i].iFlags & spEvent) // je<6A>li event
|
if (sSpeedTable[i].iFlags & spEvent) // je<6A>li event
|
||||||
if ((sSpeedTable[i].evEvent != eSignSkip) ?
|
if ((sSpeedTable[i].evEvent != eSignSkip) ?
|
||||||
true :
|
true :
|
||||||
(sSpeedTable[i].fVelNext != 0.0)) // ale inny ni<6E> ten,
|
(sSpeedTable[i].fVelNext !=
|
||||||
|
0.0)) // ale inny ni<6E> ten,
|
||||||
// na kt<6B>rym mini<6E>to
|
// na kt<6B>rym mini<6E>to
|
||||||
// S1, chyba <20>e si<73>
|
// S1, chyba <20>e si<73>
|
||||||
// ju<6A> zmieni<6E>o
|
// ju<6A> zmieni<6E>o
|
||||||
iDrivigFlags &= ~moveVisibility; // sygna<6E> zezwalaj<61>cy na
|
iDrivigFlags &=
|
||||||
|
~moveVisibility; // sygna<6E> zezwalaj<61>cy na
|
||||||
// jazd<7A> wy<77><79>cza jazd<7A> na
|
// jazd<7A> wy<77><79>cza jazd<7A> na
|
||||||
// widoczno<6E><6F> (S1 na SBL)
|
// widoczno<6E><6F> (S1 na SBL)
|
||||||
|
|
||||||
@@ -1288,12 +1336,15 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
eSignNext = sSpeedTable[i].evEvent; // dla informacji
|
eSignNext = sSpeedTable[i].evEvent; // dla informacji
|
||||||
if (iDrivigFlags &
|
if (iDrivigFlags &
|
||||||
moveStopHere) // je<6A>li ma sta<74>, dostaje komend<6E> od razu
|
moveStopHere) // je<6A>li ma sta<74>, dostaje komend<6E> od razu
|
||||||
go = cm_Command; // komenda z kom<6F>rki, do wykonania po zatrzymaniu
|
go = cm_Command; // komenda z kom<6F>rki, do wykonania po
|
||||||
else if (sSpeedTable[i].fDist <= 20.0) // je<6A>li ma doci<63>gn<67><6E>, to niech
|
// zatrzymaniu
|
||||||
|
else if (sSpeedTable[i].fDist <=
|
||||||
|
20.0) // je<6A>li ma doci<63>gn<67><6E>, to niech
|
||||||
// doci<63>ga (moveStopCloser
|
// doci<63>ga (moveStopCloser
|
||||||
// dotyczy doci<63>gania do W4, nie
|
// dotyczy doci<63>gania do W4, nie
|
||||||
// semafora)
|
// semafora)
|
||||||
go = cm_Command; // komenda z kom<6F>rki, do wykonania po zatrzymaniu
|
go = cm_Command; // komenda z kom<6F>rki, do wykonania po
|
||||||
|
// zatrzymaniu
|
||||||
}
|
}
|
||||||
} // je<6A>li nie ma zawalidrogi
|
} // je<6A>li nie ma zawalidrogi
|
||||||
} // je<6A>li event
|
} // je<6A>li event
|
||||||
@@ -1501,7 +1552,8 @@ TController::TController(bool AI, TDynamicObject *NewControll, bool InitPsyche,
|
|||||||
"Coupler.Force[N] TractionForce [kN] FrictionForce [kN] "
|
"Coupler.Force[N] TractionForce [kN] FrictionForce [kN] "
|
||||||
"BrakeForce [kN] BrakePress [MPa] PipePress [MPa] "
|
"BrakeForce [kN] BrakePress [MPa] PipePress [MPa] "
|
||||||
"MotorCurrent [A] MCP SCP BCP LBP DmgFlag Command CVal1 CVal2")
|
"MotorCurrent [A] MCP SCP BCP LBP DmgFlag Command CVal1 CVal2")
|
||||||
.c_str() << "\r\n";
|
.c_str()
|
||||||
|
<< "\r\n";
|
||||||
#endif
|
#endif
|
||||||
#if LOGPRESS == 1
|
#if LOGPRESS == 1
|
||||||
LogFile << string("t\tVel\tAcc\tPP\tVVP\tBP\tBVP\tCVP").c_str() << "\n";
|
LogFile << string("t\tVel\tAcc\tPP\tVVP\tBP\tBVP\tCVP").c_str() << "\n";
|
||||||
@@ -1909,7 +1961,8 @@ bool TController::CheckVehicles(TOrders user)
|
|||||||
}
|
}
|
||||||
else if (OrderCurrentGet() & (Shunt | Connect))
|
else if (OrderCurrentGet() & (Shunt | Connect))
|
||||||
{
|
{
|
||||||
Lights(16, (pVehicles[1]->MoverParameters->CabNo) ?
|
Lights(16,
|
||||||
|
(pVehicles[1]->MoverParameters->CabNo) ?
|
||||||
1 :
|
1 :
|
||||||
0); //<2F>wiat<61>a manewrowe (Tb1) na poje<6A>dzie z nap<61>dem
|
0); //<2F>wiat<61>a manewrowe (Tb1) na poje<6A>dzie z nap<61>dem
|
||||||
if (OrderCurrentGet() & Connect) // je<6A>li <20><>czenie, skanowa<77> dalej
|
if (OrderCurrentGet() & Connect) // je<6A>li <20><>czenie, skanowa<77> dalej
|
||||||
@@ -2173,9 +2226,7 @@ void TController::SetDriverPsyche()
|
|||||||
|
|
||||||
bool TController::PrepareEngine()
|
bool TController::PrepareEngine()
|
||||||
{ // odpalanie silnika
|
{ // odpalanie silnika
|
||||||
bool OK = false,
|
bool OK = false, voltfront = false, voltrear = false;
|
||||||
voltfront = false,
|
|
||||||
voltrear = false;
|
|
||||||
LastReactionTime = 0.0;
|
LastReactionTime = 0.0;
|
||||||
ReactionTime = PrepareTime;
|
ReactionTime = PrepareTime;
|
||||||
iDrivigFlags |= moveActive; // mo<6D>e skanowa<77> sygna<6E>y i reagowa<77> na komendy
|
iDrivigFlags |= moveActive; // mo<6D>e skanowa<77> sygna<6E>y i reagowa<77> na komendy
|
||||||
@@ -2596,7 +2647,8 @@ bool TController::IncSpeed()
|
|||||||
break;
|
break;
|
||||||
case ElectricInductionMotor:
|
case ElectricInductionMotor:
|
||||||
if (!mvControlling->FuseFlag)
|
if (!mvControlling->FuseFlag)
|
||||||
if (Ready || (iDrivigFlags & movePress) || (mvOccupied->ShuntMode)) //{(BrakePress<=0.01*MaxBrakePress)}
|
if (Ready || (iDrivigFlags & movePress) ||
|
||||||
|
(mvOccupied->ShuntMode)) //{(BrakePress<=0.01*MaxBrakePress)}
|
||||||
{
|
{
|
||||||
OK = mvControlling->IncMainCtrl(1);
|
OK = mvControlling->IncMainCtrl(1);
|
||||||
}
|
}
|
||||||
@@ -2953,7 +3005,8 @@ bool TController::PutCommand(std::string NewCommand, double NewValue1, double Ne
|
|||||||
if (ConversionError == -8)
|
if (ConversionError == -8)
|
||||||
ErrorLog("Missed timetable: " + NewCommand);
|
ErrorLog("Missed timetable: " + NewCommand);
|
||||||
WriteLog("Cannot load timetable file " + NewCommand + "\r\nError " +
|
WriteLog("Cannot load timetable file " + NewCommand + "\r\nError " +
|
||||||
std::to_string(ConversionError) + " in position " + std::to_string(TrainParams->StationCount));
|
std::to_string(ConversionError) + " in position " +
|
||||||
|
std::to_string(TrainParams->StationCount));
|
||||||
NewCommand = ""; // puste, dla wymiennej tekstury
|
NewCommand = ""; // puste, dla wymiennej tekstury
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2967,20 +3020,21 @@ bool TController::PutCommand(std::string NewCommand, double NewValue1, double Ne
|
|||||||
NewCommand = Global::asCurrentSceneryPath + NewCommand + ".wav"; // na razie jeden
|
NewCommand = Global::asCurrentSceneryPath + NewCommand + ".wav"; // na razie jeden
|
||||||
if (FileExists(NewCommand))
|
if (FileExists(NewCommand))
|
||||||
{ // wczytanie d<>wi<77>ku odjazdu podawanego bezpo<70>renido
|
{ // wczytanie d<>wi<77>ku odjazdu podawanego bezpo<70>renido
|
||||||
tsGuardSignal = new TTextSound(NewCommand.c_str(), 30, pVehicle->GetPosition().x,
|
tsGuardSignal =
|
||||||
pVehicle->GetPosition().y, pVehicle->GetPosition().z,
|
new TTextSound(NewCommand.c_str(), 30, pVehicle->GetPosition().x,
|
||||||
false);
|
pVehicle->GetPosition().y, pVehicle->GetPosition().z, false);
|
||||||
// rsGuardSignal->Stop();
|
// rsGuardSignal->Stop();
|
||||||
iGuardRadio = 0; // nie przez radio
|
iGuardRadio = 0; // nie przez radio
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
NewCommand = NewCommand.insert(NewCommand.find_last_of("."),"radio"); // wstawienie przed kropk<70>
|
NewCommand = NewCommand.insert(NewCommand.find_last_of("."),
|
||||||
|
"radio"); // wstawienie przed kropk<70>
|
||||||
if (FileExists(NewCommand))
|
if (FileExists(NewCommand))
|
||||||
{ // wczytanie d<>wi<77>ku odjazdu w wersji radiowej (s<>ycha<68> tylko w kabinie)
|
{ // wczytanie d<>wi<77>ku odjazdu w wersji radiowej (s<>ycha<68> tylko w kabinie)
|
||||||
tsGuardSignal = new TTextSound(NewCommand.c_str(), -1, pVehicle->GetPosition().x,
|
tsGuardSignal = new TTextSound(
|
||||||
pVehicle->GetPosition().y, pVehicle->GetPosition().z,
|
NewCommand.c_str(), -1, pVehicle->GetPosition().x,
|
||||||
false);
|
pVehicle->GetPosition().y, pVehicle->GetPosition().z, false);
|
||||||
iGuardRadio = iRadioChannel;
|
iGuardRadio = iRadioChannel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3884,7 +3938,8 @@ bool TController::UpdateSituation(double dt)
|
|||||||
case Change_direction | Connect: // zmiana kierunku podczas pod<6F><64>czania
|
case Change_direction | Connect: // zmiana kierunku podczas pod<6F><64>czania
|
||||||
if (OrderList[OrderPos] != Obey_train) // spokojne manewry
|
if (OrderList[OrderPos] != Obey_train) // spokojne manewry
|
||||||
{
|
{
|
||||||
VelSignal = Global::Min0RSpeed(VelSignal, 40); // je<6A>li manewry, to ograniczamy pr<70>dko<6B><6F>
|
VelSignal =
|
||||||
|
Global::Min0RSpeed(VelSignal, 40); // je<6A>li manewry, to ograniczamy pr<70>dko<6B><6F>
|
||||||
if (AIControllFlag)
|
if (AIControllFlag)
|
||||||
{ // to poni<6E>ej tylko dla AI
|
{ // to poni<6E>ej tylko dla AI
|
||||||
if (iVehicleCount >= 0) // je<6A>li jest co odczepi<70>
|
if (iVehicleCount >= 0) // je<6A>li jest co odczepi<70>
|
||||||
@@ -4018,7 +4073,8 @@ bool TController::UpdateSituation(double dt)
|
|||||||
// nast<73>pnie ograniczana
|
// nast<73>pnie ograniczana
|
||||||
if (TrainParams) // je<6A>li ma rozk<7A>ad
|
if (TrainParams) // je<6A>li ma rozk<7A>ad
|
||||||
if (TrainParams->TTVmax > 0.0) // i ograniczenie w rozk<7A>adzie
|
if (TrainParams->TTVmax > 0.0) // i ograniczenie w rozk<7A>adzie
|
||||||
VelDesired = Global::Min0RSpeed(VelDesired,
|
VelDesired = Global::Min0RSpeed(
|
||||||
|
VelDesired,
|
||||||
TrainParams->TTVmax); // to nie przekracza<7A> rozkladowej
|
TrainParams->TTVmax); // to nie przekracza<7A> rozkladowej
|
||||||
SetDriverPsyche(); // ustawia AccPreferred (potrzebne tu?)
|
SetDriverPsyche(); // ustawia AccPreferred (potrzebne tu?)
|
||||||
// Ra: odczyt (ActualProximityDist), (VelNext) i (AccPreferred) z tabelki pr<70>dkosci
|
// Ra: odczyt (ActualProximityDist), (VelNext) i (AccPreferred) z tabelki pr<70>dkosci
|
||||||
@@ -4086,7 +4142,9 @@ bool TController::UpdateSituation(double dt)
|
|||||||
// ma taboru do pod<6F><64>czenia
|
// ma taboru do pod<6F><64>czenia
|
||||||
// Ra 2F1H: z tym (fTrackBlock) to nie jest najlepszy pomys<79>, bo lepiej by
|
// Ra 2F1H: z tym (fTrackBlock) to nie jest najlepszy pomys<79>, bo lepiej by
|
||||||
// by<62>o por<6F>wna<6E> z odleg<65>o<EFBFBD>ci<63> od sygnalizatora z przodu
|
// by<62>o por<6F>wna<6E> z odleg<65>o<EFBFBD>ci<63> od sygnalizatora z przodu
|
||||||
if ((OrderList[OrderPos] & Connect) ? (pVehicles[0]->fTrackBlock > 2000 || pVehicles[0]->fTrackBlock > FirstSemaphorDist) :
|
if ((OrderList[OrderPos] & Connect) ?
|
||||||
|
(pVehicles[0]->fTrackBlock > 2000 ||
|
||||||
|
pVehicles[0]->fTrackBlock > FirstSemaphorDist) :
|
||||||
true)
|
true)
|
||||||
if ((comm = BackwardScan()) != cm_Unknown) // je<6A>li w drug<75> mo<6D>na jecha<68>
|
if ((comm = BackwardScan()) != cm_Unknown) // je<6A>li w drug<75> mo<6D>na jecha<68>
|
||||||
{ // nale<6C>y sprawdza<7A> odleg<65>o<EFBFBD><6F> od znalezionego sygnalizatora,
|
{ // nale<6C>y sprawdza<7A> odleg<65>o<EFBFBD><6F> od znalezionego sygnalizatora,
|
||||||
@@ -4226,16 +4284,18 @@ bool TController::UpdateSituation(double dt)
|
|||||||
VelDesired = 0.0; // jak ma czeka<6B>, to nie ma jazdy
|
VelDesired = 0.0; // jak ma czeka<6B>, to nie ma jazdy
|
||||||
// else if (VelSignal<0)
|
// else if (VelSignal<0)
|
||||||
// VelDesired=fVelMax; //ile fabryka dala (Ra: uwzgl<67>dione wagony)
|
// VelDesired=fVelMax; //ile fabryka dala (Ra: uwzgl<67>dione wagony)
|
||||||
else if (VelSignal >= 0) // je<6A>li sk<73>ad by<62> zatrzymany na pocz<63>tku i teraz ju<6A> mo<6D>e jecha<68>
|
else if (VelSignal >=
|
||||||
|
0) // je<6A>li sk<73>ad by<62> zatrzymany na pocz<63>tku i teraz ju<6A> mo<6D>e jecha<68>
|
||||||
VelDesired = Global::Min0RSpeed(VelDesired, VelSignal);
|
VelDesired = Global::Min0RSpeed(VelDesired, VelSignal);
|
||||||
|
|
||||||
if (mvOccupied->RunningTrack.Velmax >=
|
if (mvOccupied->RunningTrack.Velmax >=
|
||||||
0) // ograniczenie pr<70>dko<6B>ci z trajektorii ruchu
|
0) // ograniczenie pr<70>dko<6B>ci z trajektorii ruchu
|
||||||
VelDesired =
|
VelDesired = Global::Min0RSpeed(
|
||||||
Global::Min0RSpeed(VelDesired,
|
VelDesired,
|
||||||
mvOccupied->RunningTrack.Velmax); // uwaga na ograniczenia szlakowej!
|
mvOccupied->RunningTrack.Velmax); // uwaga na ograniczenia szlakowej!
|
||||||
if (VelforDriver >= 0) // tu jest zero przy zmianie kierunku jazdy
|
if (VelforDriver >= 0) // tu jest zero przy zmianie kierunku jazdy
|
||||||
VelDesired = Global::Min0RSpeed(VelDesired, VelforDriver); // Ra: tu mo<6D>e by<62> 40, je<6A>li
|
VelDesired =
|
||||||
|
Global::Min0RSpeed(VelDesired, VelforDriver); // Ra: tu mo<6D>e by<62> 40, je<6A>li
|
||||||
// mechanik nie ma znajomo<6D>ci
|
// mechanik nie ma znajomo<6D>ci
|
||||||
// szlaaku, albo kierowca je<6A>dzi
|
// szlaaku, albo kierowca je<6A>dzi
|
||||||
// 70
|
// 70
|
||||||
@@ -4247,7 +4307,8 @@ bool TController::UpdateSituation(double dt)
|
|||||||
TrainParams
|
TrainParams
|
||||||
->TTVmax); // jesli nie spozniony to nie przekracza<7A> rozkladowej
|
->TTVmax); // jesli nie spozniony to nie przekracza<7A> rozkladowej
|
||||||
if (VelDesired > 0.0)
|
if (VelDesired > 0.0)
|
||||||
if ((sSemNext && sSemNext->fVelNext != 0.0) || (iDrivigFlags & moveStopHere)==0)
|
if ((sSemNext && sSemNext->fVelNext != 0.0) ||
|
||||||
|
(iDrivigFlags & moveStopHere) == 0)
|
||||||
{ // je<6A>li mo<6D>na jecha<68>, to odpali<6C> d<>wi<77>k kierownika oraz zamkn<6B><6E> drzwi w
|
{ // je<6A>li mo<6D>na jecha<68>, to odpali<6C> d<>wi<77>k kierownika oraz zamkn<6B><6E> drzwi w
|
||||||
// sk<73>adzie, je<6A>li nie mamy czeka<6B> na sygna<6E> te<74> trzeba odpali<6C>
|
// sk<73>adzie, je<6A>li nie mamy czeka<6B> na sygna<6E> te<74> trzeba odpali<6C>
|
||||||
|
|
||||||
@@ -4536,8 +4597,8 @@ bool TController::UpdateSituation(double dt)
|
|||||||
WriteLog("Dist=" + FloatToStrF(ActualProximityDist, ffFixed, 7, 1) +
|
WriteLog("Dist=" + FloatToStrF(ActualProximityDist, ffFixed, 7, 1) +
|
||||||
", VelDesired=" + FloatToStrF(VelDesired, ffFixed, 7, 1) +
|
", VelDesired=" + FloatToStrF(VelDesired, ffFixed, 7, 1) +
|
||||||
", AccDesired=" + FloatToStrF(AccDesired, ffFixed, 7, 3) +
|
", AccDesired=" + FloatToStrF(AccDesired, ffFixed, 7, 3) +
|
||||||
", VelSignal=" + AnsiString(VelSignal) + ", VelNext=" +
|
", VelSignal=" + AnsiString(VelSignal) +
|
||||||
AnsiString(VelNext));
|
", VelNext=" + AnsiString(VelNext));
|
||||||
#endif
|
#endif
|
||||||
if (AccDesired > 0.1)
|
if (AccDesired > 0.1)
|
||||||
if (vel < 10.0) // Ra 2F1H: je<6A>li pr<70>dko<6B><6F> jest ma<6D>a, a mo<6D>na przyspiesza<7A>,
|
if (vel < 10.0) // Ra 2F1H: je<6A>li pr<70>dko<6B><6F> jest ma<6D>a, a mo<6D>na przyspiesza<7A>,
|
||||||
@@ -4648,7 +4709,8 @@ bool TController::UpdateSituation(double dt)
|
|||||||
(AbsAccS >
|
(AbsAccS >
|
||||||
AccDesired + 0.05))) // u g<>ry ustawia si<73> hamowanie na fAccThreshold
|
AccDesired + 0.05))) // u g<>ry ustawia si<73> hamowanie na fAccThreshold
|
||||||
// if not MinVelFlag)
|
// if not MinVelFlag)
|
||||||
if (fBrakeTime < 0 ? true : (AccDesired < fAccGravity - 0.3) ||
|
if (fBrakeTime < 0 ? true :
|
||||||
|
(AccDesired < fAccGravity - 0.3) ||
|
||||||
(mvOccupied->BrakeCtrlPos <= 0))
|
(mvOccupied->BrakeCtrlPos <= 0))
|
||||||
if (!IncBrake()) // je<6A>li up<75>yn<79><6E> czas reakcji hamulca, chyba <20>e
|
if (!IncBrake()) // je<6A>li up<75>yn<79><6E> czas reakcji hamulca, chyba <20>e
|
||||||
// nag<61>e albo luzowa<77>
|
// nag<61>e albo luzowa<77>
|
||||||
@@ -4683,8 +4745,8 @@ bool TController::UpdateSituation(double dt)
|
|||||||
// Mietek-end1
|
// Mietek-end1
|
||||||
SpeedSet(); // ci<63>gla regulacja pr<70>dko<6B>ci
|
SpeedSet(); // ci<63>gla regulacja pr<70>dko<6B>ci
|
||||||
#if LOGVELOCITY
|
#if LOGVELOCITY
|
||||||
WriteLog("BrakePos=" + AnsiString(mvOccupied->BrakeCtrlPos) + ", MainCtrl=" +
|
WriteLog("BrakePos=" + AnsiString(mvOccupied->BrakeCtrlPos) +
|
||||||
AnsiString(mvControlling->MainCtrlPos));
|
", MainCtrl=" + AnsiString(mvControlling->MainCtrlPos));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* //Ra: mamy teraz wska<6B>nik na cz<63>on silnikowy, gorzej jak s<> dwa w
|
/* //Ra: mamy teraz wska<6B>nik na cz<63>on silnikowy, gorzej jak s<> dwa w
|
||||||
@@ -5036,8 +5098,8 @@ TEvent * TController::CheckTrackEventBackward(double fDirection, TTrack *Track)
|
|||||||
return NULL;
|
return NULL;
|
||||||
};
|
};
|
||||||
|
|
||||||
TTrack * TController::BackwardTraceRoute(double &fDistance, double &fDirection,
|
TTrack *TController::BackwardTraceRoute(double &fDistance, double &fDirection, TTrack *Track,
|
||||||
TTrack *Track, TEvent *&Event)
|
TEvent *&Event)
|
||||||
{ // szukanie sygnalizatora w kierunku przeciwnym jazdy (eventu odczytu kom<6F>rki pami<6D>ci)
|
{ // szukanie sygnalizatora w kierunku przeciwnym jazdy (eventu odczytu kom<6F>rki pami<6D>ci)
|
||||||
TTrack *pTrackChVel = Track; // tor ze zmian<61> pr<70>dko<6B>ci
|
TTrack *pTrackChVel = Track; // tor ze zmian<61> pr<70>dko<6B>ci
|
||||||
TTrack *pTrackFrom; // odcinek poprzedni, do znajdywania ko<6B>ca dr<64>g
|
TTrack *pTrackFrom; // odcinek poprzedni, do znajdywania ko<6B>ca dr<64>g
|
||||||
|
|||||||
12
Driver.h
12
Driver.h
@@ -10,10 +10,10 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
//#include <fstream>
|
//#include <fstream>
|
||||||
#include <string>
|
|
||||||
#include "Classes.h"
|
#include "Classes.h"
|
||||||
#include "dumb3d.h"
|
#include "dumb3d.h"
|
||||||
#include "mczapkie/mover.h"
|
#include "mczapkie/mover.h"
|
||||||
|
#include <string>
|
||||||
using namespace Math3D;
|
using namespace Math3D;
|
||||||
using namespace Mtable;
|
using namespace Mtable;
|
||||||
|
|
||||||
@@ -52,10 +52,12 @@ enum TMovementStatus
|
|||||||
moveGuardSignal = 0x8000, // sygnał od kierownika (minął czas postoju)
|
moveGuardSignal = 0x8000, // sygnał od kierownika (minął czas postoju)
|
||||||
moveVisibility = 0x10000, // jazda na widoczność po przejechaniu S1 na SBL
|
moveVisibility = 0x10000, // jazda na widoczność po przejechaniu S1 na SBL
|
||||||
moveDoorOpened = 0x20000, // drzwi zostały otwarte - doliczyć czas na zamknięcie
|
moveDoorOpened = 0x20000, // drzwi zostały otwarte - doliczyć czas na zamknięcie
|
||||||
movePushPull = 0x40000, // zmiana czoła przez zmianę kabiny - nie odczepiać przy zmianie kierunku
|
movePushPull =
|
||||||
|
0x40000, // zmiana czoła przez zmianę kabiny - nie odczepiać przy zmianie kierunku
|
||||||
moveSemaphorFound = 0x80000, // na drodze skanowania został znaleziony semafor
|
moveSemaphorFound = 0x80000, // na drodze skanowania został znaleziony semafor
|
||||||
moveSemaphorWasElapsed = 0x100000, // minięty został semafor
|
moveSemaphorWasElapsed = 0x100000, // minięty został semafor
|
||||||
moveTrainInsideStation = 0x200000, // pociąg między semaforem a rozjazdami lub następnym semaforem
|
moveTrainInsideStation =
|
||||||
|
0x200000, // pociąg między semaforem a rozjazdami lub następnym semaforem
|
||||||
moveSpeedLimitFound = 0x400000 // pociąg w ograniczeniu z podaną jego długością
|
moveSpeedLimitFound = 0x400000 // pociąg w ograniczeniu z podaną jego długością
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -219,8 +221,8 @@ class TController
|
|||||||
// migacz lub czeka na stan zwrotnicy
|
// migacz lub czeka na stan zwrotnicy
|
||||||
private:
|
private:
|
||||||
TDynamicObject *pVehicle; // pojazd w którym siedzi sterujący
|
TDynamicObject *pVehicle; // pojazd w którym siedzi sterujący
|
||||||
TDynamicObject *
|
TDynamicObject
|
||||||
pVehicles[2]; // skrajne pojazdy w składzie (niekoniecznie bezpośrednio sterowane)
|
*pVehicles[2]; // skrajne pojazdy w składzie (niekoniecznie bezpośrednio sterowane)
|
||||||
TMoverParameters *mvControlling; // jakim pojazdem steruje (może silnikowym w EZT)
|
TMoverParameters *mvControlling; // jakim pojazdem steruje (może silnikowym w EZT)
|
||||||
TMoverParameters *mvOccupied; // jakim pojazdem hamuje
|
TMoverParameters *mvOccupied; // jakim pojazdem hamuje
|
||||||
TTrainParameters *TrainParams; // rozkład jazdy zawsze jest, nawet jeśli pusty
|
TTrainParameters *TrainParams; // rozkład jazdy zawsze jest, nawet jeśli pusty
|
||||||
|
|||||||
624
Globals.cpp
624
Globals.cpp
@@ -11,17 +11,17 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
Copyright (C) 2001-2004 Marcin Wozniak, Maciej Czapkiewicz and others
|
Copyright (C) 2001-2004 Marcin Wozniak, Maciej Czapkiewicz and others
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
|
|
||||||
#include "Globals.h"
|
#include "Globals.h"
|
||||||
#include "usefull.h"
|
#include "usefull.h"
|
||||||
//#include "Mover.h"
|
//#include "Mover.h"
|
||||||
#include "Driver.h"
|
|
||||||
#include "Console.h"
|
#include "Console.h"
|
||||||
#include "World.h"
|
#include "Driver.h"
|
||||||
#include "parser.h"
|
|
||||||
#include "Logs.h"
|
#include "Logs.h"
|
||||||
#include "PyInt.h"
|
#include "PyInt.h"
|
||||||
|
#include "World.h"
|
||||||
|
#include "parser.h"
|
||||||
|
|
||||||
// namespace Global {
|
// namespace Global {
|
||||||
|
|
||||||
@@ -160,18 +160,10 @@ bool Global::bDecompressDDS = false; // czy programowa dekompresja DDS
|
|||||||
|
|
||||||
// parametry do kalibracji
|
// parametry do kalibracji
|
||||||
// kolejno wsp<73><70>czynniki dla pot<6F>g 0, 1, 2, 3 warto<74>ci odczytanej z urz<72>dzenia
|
// kolejno wsp<73><70>czynniki dla pot<6F>g 0, 1, 2, 3 warto<74>ci odczytanej z urz<72>dzenia
|
||||||
double Global::fCalibrateIn[6][6] = {{0, 1, 0, 0, 0, 0},
|
double Global::fCalibrateIn[6][6] = {{0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0},
|
||||||
{0, 1, 0, 0, 0, 0},
|
{0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}};
|
||||||
{0, 1, 0, 0, 0, 0},
|
double Global::fCalibrateOut[7][6] = {{0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0},
|
||||||
{0, 1, 0, 0, 0, 0},
|
{0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0},
|
||||||
{0, 1, 0, 0, 0, 0},
|
|
||||||
{0, 1, 0, 0, 0, 0}};
|
|
||||||
double Global::fCalibrateOut[7][6] = {{0, 1, 0, 0, 0, 0},
|
|
||||||
{0, 1, 0, 0, 0, 0},
|
|
||||||
{0, 1, 0, 0, 0, 0},
|
|
||||||
{0, 1, 0, 0, 0, 0},
|
|
||||||
{0, 1, 0, 0, 0, 0},
|
|
||||||
{0, 1, 0, 0, 0, 0},
|
|
||||||
{0, 1, 0, 0, 0, 0}};
|
{0, 1, 0, 0, 0, 0}};
|
||||||
double Global::fCalibrateOutMax[7] = {0, 0, 0, 0, 0, 0, 0};
|
double Global::fCalibrateOutMax[7] = {0, 0, 0, 0, 0, 0, 0};
|
||||||
int Global::iCalibrateOutDebugInfo = -1;
|
int Global::iCalibrateOutDebugInfo = -1;
|
||||||
@@ -186,10 +178,18 @@ bool Global::bHideConsole = false; // hunter-271211: ukrywanie konsoli
|
|||||||
int Global::iBpp = 32; // chyba ju<6A> nie u<>ywa si<73> kart, na kt<6B>rych 16bpp co<63> poprawi
|
int Global::iBpp = 32; // chyba ju<6A> nie u<>ywa si<73> kart, na kt<6B>rych 16bpp co<63> poprawi
|
||||||
// maciek001: konfiguracja wst<73>pna portu COM
|
// maciek001: konfiguracja wst<73>pna portu COM
|
||||||
bool Global::bMWDdebugEnable = false;
|
bool Global::bMWDdebugEnable = false;
|
||||||
unsigned long int Global::iMWDBaudrate = 500000;
|
bool Global::bMWDInputDataEnable = false;
|
||||||
AnsiString Global::sMWDPortId = "COM1"; // nazwa portu z kt<6B>rego korzystamy - na razie nie dzia<69>a
|
unsigned int Global::iMWDBaudrate = 500000;
|
||||||
bool Global::bMWDBreakEnable = false; // zmieni<EFBFBD> na FALSE!!! jak ju<6A> b<>dzie dzia<69>a<EFBFBD> wczytywanie z *.ini
|
std::string Global::sMWDPortId = "COM1"; // nazwa portu z kt<6B>rego korzystamy - na razie nie dzia<69>a
|
||||||
double Global::fMWDAnalogCalib[4][3] = {{1023, 0, 1023},{1023, 0, 1023},{1023, 0, 1023},{1023, 0, 1023}}; // warto<74><6F> max potencjometru, warto<74><6F> min potencjometru, rozdzielczo<7A><6F> (max. warto<74><6F> jaka mo<6D>e by<62> -1)
|
bool Global::bMWDBreakEnable =
|
||||||
|
false; // zmieni<6E> na FALSE!!! jak ju<6A> b<>dzie dzia<69>a<EFBFBD> wczytywanie z *.ini
|
||||||
|
double Global::fMWDAnalogCalib[4][3] = {
|
||||||
|
{1023, 0, 1023}, {1023, 0, 1023}, {1023, 0, 1023}, {1023, 0, 1023}}; // warto<74><6F> max
|
||||||
|
// potencjometru, warto<74><6F>
|
||||||
|
// min potencjometru,
|
||||||
|
// rozdzielczo<7A><6F> (max.
|
||||||
|
// warto<74><6F> jaka mo<6D>e by<62>
|
||||||
|
// -1)
|
||||||
double Global::fMWDzg[2] = {0.9, 1023};
|
double Global::fMWDzg[2] = {0.9, 1023};
|
||||||
double Global::fMWDpg[2] = {0.8, 1023};
|
double Global::fMWDpg[2] = {0.8, 1023};
|
||||||
double Global::fMWDph[2] = {0.6, 1023};
|
double Global::fMWDph[2] = {0.6, 1023};
|
||||||
@@ -204,7 +204,8 @@ std::string Global::GetNextSymbol()
|
|||||||
{ // pobranie tokenu z aktualnego parsera
|
{ // pobranie tokenu z aktualnego parsera
|
||||||
|
|
||||||
std::string token;
|
std::string token;
|
||||||
if( pParser != nullptr ) {
|
if (pParser != nullptr)
|
||||||
|
{
|
||||||
|
|
||||||
pParser->getTokens();
|
pParser->getTokens();
|
||||||
*pParser >> token;
|
*pParser >> token;
|
||||||
@@ -223,214 +224,313 @@ void Global::LoadIniFile(std::string asFileName)
|
|||||||
ConfigParse(parser);
|
ConfigParse(parser);
|
||||||
};
|
};
|
||||||
|
|
||||||
void Global::ConfigParse(cParser &Parser) {
|
void Global::ConfigParse(cParser &Parser)
|
||||||
|
{
|
||||||
|
|
||||||
std::string token;
|
std::string token;
|
||||||
do {
|
do
|
||||||
|
{
|
||||||
|
|
||||||
token = "";
|
token = "";
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
|
|
||||||
if( token == "sceneryfile" ) {
|
if (token == "sceneryfile")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(); Parser >> Global::SceneryFile;
|
Parser.getTokens();
|
||||||
|
Parser >> Global::SceneryFile;
|
||||||
}
|
}
|
||||||
else if( token == "humanctrlvehicle" ) {
|
else if (token == "humanctrlvehicle")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(); Parser >> Global::asHumanCtrlVehicle;
|
Parser.getTokens();
|
||||||
|
Parser >> Global::asHumanCtrlVehicle;
|
||||||
}
|
}
|
||||||
else if( token == "width" ) {
|
else if (token == "width")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens( 1, false ); Parser >> Global::iWindowWidth;
|
Parser.getTokens(1, false);
|
||||||
|
Parser >> Global::iWindowWidth;
|
||||||
}
|
}
|
||||||
else if( token == "height" ) {
|
else if (token == "height")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens( 1, false ); Parser >> Global::iWindowHeight;
|
Parser.getTokens(1, false);
|
||||||
|
Parser >> Global::iWindowHeight;
|
||||||
}
|
}
|
||||||
else if( token == "heightbase" ) {
|
else if (token == "heightbase")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens( 1, false ); Parser >> Global::fDistanceFactor;
|
Parser.getTokens(1, false);
|
||||||
|
Parser >> Global::fDistanceFactor;
|
||||||
}
|
}
|
||||||
else if( token == "bpp" ) {
|
else if (token == "bpp")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::iBpp = (token == "32" ? 32 : 16);
|
Global::iBpp = (token == "32" ? 32 : 16);
|
||||||
}
|
}
|
||||||
else if( token == "fullscreen" ) {
|
else if (token == "fullscreen")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bFullScreen = (token == "yes");
|
Global::bFullScreen = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "freefly" ) { // Mczapkie-130302
|
else if (token == "freefly")
|
||||||
|
{ // Mczapkie-130302
|
||||||
|
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bFreeFly = (token == "yes");
|
Global::bFreeFly = (token == "yes");
|
||||||
Parser.getTokens(3, false);
|
Parser.getTokens(3, false);
|
||||||
Parser >>
|
Parser >> Global::pFreeCameraInit[0].x, Global::pFreeCameraInit[0].y,
|
||||||
Global::pFreeCameraInit[ 0 ].x,
|
|
||||||
Global::pFreeCameraInit[ 0 ].y,
|
|
||||||
Global::pFreeCameraInit[0].z;
|
Global::pFreeCameraInit[0].z;
|
||||||
}
|
}
|
||||||
else if( token == "wireframe" ) {
|
else if (token == "wireframe")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bWireFrame = (token == "yes");
|
Global::bWireFrame = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "debugmode" ) { // McZapkie! - DebugModeFlag uzywana w mover.pas,
|
else if (token == "debugmode")
|
||||||
|
{ // McZapkie! - DebugModeFlag uzywana w mover.pas,
|
||||||
// warto tez blokowac cheaty gdy false
|
// warto tez blokowac cheaty gdy false
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
DebugModeFlag = (token == "yes");
|
DebugModeFlag = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "soundenabled" ) { // McZapkie-040302 - blokada dzwieku - przyda
|
else if (token == "soundenabled")
|
||||||
|
{ // McZapkie-040302 - blokada dzwieku - przyda
|
||||||
// sie do debugowania oraz na komp. bez karty
|
// sie do debugowania oraz na komp. bez karty
|
||||||
// dzw.
|
// dzw.
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bSoundEnabled = (token == "yes");
|
Global::bSoundEnabled = (token == "yes");
|
||||||
}
|
}
|
||||||
// else if (str==AnsiString("renderalpha")) //McZapkie-1312302 - dwuprzebiegowe renderowanie
|
// else if (str==AnsiString("renderalpha")) //McZapkie-1312302 - dwuprzebiegowe renderowanie
|
||||||
// bRenderAlpha=(GetNextSymbol().LowerCase()==AnsiString("yes"));
|
// bRenderAlpha=(GetNextSymbol().LowerCase()==AnsiString("yes"));
|
||||||
else if( token == "physicslog" ) { // McZapkie-030402 - logowanie parametrow
|
else if (token == "physicslog")
|
||||||
|
{ // McZapkie-030402 - logowanie parametrow
|
||||||
// fizycznych dla kazdego pojazdu z maszynista
|
// fizycznych dla kazdego pojazdu z maszynista
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
WriteLogFlag = (token == "yes");
|
WriteLogFlag = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "physicsdeactivation" ) { // McZapkie-291103 - usypianie fizyki
|
else if (token == "physicsdeactivation")
|
||||||
|
{ // McZapkie-291103 - usypianie fizyki
|
||||||
|
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
PhysicActivationFlag = (token == "yes");
|
PhysicActivationFlag = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "debuglog" ) {
|
else if (token == "debuglog")
|
||||||
|
{
|
||||||
// McZapkie-300402 - wylaczanie log.txt
|
// McZapkie-300402 - wylaczanie log.txt
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
if( token == "yes" ) { Global::iWriteLogEnabled = 3; }
|
Parser >> token;
|
||||||
else if( token == "no" ) { Global::iWriteLogEnabled = 0; }
|
if (token == "yes")
|
||||||
else { Global::iWriteLogEnabled = std::atoi( token.c_str() ); }
|
{
|
||||||
|
Global::iWriteLogEnabled = 3;
|
||||||
}
|
}
|
||||||
else if( token == "adjustscreenfreq" ) {
|
else if (token == "no")
|
||||||
|
{
|
||||||
|
Global::iWriteLogEnabled = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Global::iWriteLogEnabled = std::atoi(token.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (token == "adjustscreenfreq")
|
||||||
|
{
|
||||||
// McZapkie-240403 - czestotliwosc odswiezania ekranu
|
// McZapkie-240403 - czestotliwosc odswiezania ekranu
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bAdjustScreenFreq = (token == "yes");
|
Global::bAdjustScreenFreq = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "mousescale" ) {
|
else if (token == "mousescale")
|
||||||
|
{
|
||||||
// McZapkie-060503 - czulosc ruchu myszy (krecenia glowa)
|
// McZapkie-060503 - czulosc ruchu myszy (krecenia glowa)
|
||||||
Parser.getTokens(2, false);
|
Parser.getTokens(2, false);
|
||||||
Parser
|
Parser >> Global::fMouseXScale >> Global::fMouseYScale;
|
||||||
>> Global::fMouseXScale
|
|
||||||
>> Global::fMouseYScale;
|
|
||||||
}
|
}
|
||||||
else if( token == "enabletraction" ) {
|
else if (token == "enabletraction")
|
||||||
|
{
|
||||||
// Winger 040204 - 'zywe' patyki dostosowujace sie do trakcji; Ra 2014-03: teraz <20>amanie
|
// Winger 040204 - 'zywe' patyki dostosowujace sie do trakcji; Ra 2014-03: teraz <20>amanie
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bEnableTraction = (token == "yes");
|
Global::bEnableTraction = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "loadtraction" ) {
|
else if (token == "loadtraction")
|
||||||
|
{
|
||||||
// Winger 140404 - ladowanie sie trakcji
|
// Winger 140404 - ladowanie sie trakcji
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bLoadTraction = (token == "yes");
|
Global::bLoadTraction = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "friction" ) { // mno<6E>nik tarcia - KURS90
|
else if (token == "friction")
|
||||||
|
{ // mno<6E>nik tarcia - KURS90
|
||||||
|
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::fFriction;
|
Parser >> Global::fFriction;
|
||||||
}
|
}
|
||||||
else if( token == "livetraction" ) {
|
else if (token == "livetraction")
|
||||||
|
{
|
||||||
// Winger 160404 - zaleznosc napiecia loka od trakcji;
|
// Winger 160404 - zaleznosc napiecia loka od trakcji;
|
||||||
// Ra 2014-03: teraz pr<70>d przy braku sieci
|
// Ra 2014-03: teraz pr<70>d przy braku sieci
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bLiveTraction = (token == "yes");
|
Global::bLiveTraction = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "skyenabled" ) {
|
else if (token == "skyenabled")
|
||||||
|
{
|
||||||
// youBy - niebo
|
// youBy - niebo
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::asSky = (token == "yes" ? "1" : "0");
|
Global::asSky = (token == "yes" ? "1" : "0");
|
||||||
}
|
}
|
||||||
else if( token == "managenodes" ) {
|
else if (token == "managenodes")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bManageNodes = (token == "yes");
|
Global::bManageNodes = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "decompressdds" ) {
|
else if (token == "decompressdds")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bDecompressDDS = (token == "yes");
|
Global::bDecompressDDS = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "defaultext" ) {
|
else if (token == "defaultext")
|
||||||
|
{
|
||||||
// ShaXbee - domyslne rozszerzenie tekstur
|
// ShaXbee - domyslne rozszerzenie tekstur
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
if( token == "tga" ) {
|
Parser >> token;
|
||||||
|
if (token == "tga")
|
||||||
|
{
|
||||||
// domy<6D>lnie od TGA
|
// domy<6D>lnie od TGA
|
||||||
Global::szDefaultExt = Global::szTexturesTGA;
|
Global::szDefaultExt = Global::szTexturesTGA;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( token == "newaircouplers" ) {
|
else if (token == "newaircouplers")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bnewAirCouplers = (token == "yes");
|
Global::bnewAirCouplers = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "defaultfiltering" ) {
|
else if (token == "defaultfiltering")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::iDefaultFiltering;
|
Parser >> Global::iDefaultFiltering;
|
||||||
}
|
}
|
||||||
else if( token == "ballastfiltering" ) {
|
else if (token == "ballastfiltering")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::iBallastFiltering;
|
Parser >> Global::iBallastFiltering;
|
||||||
}
|
}
|
||||||
else if( token == "railprofiltering" ) {
|
else if (token == "railprofiltering")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::iRailProFiltering;
|
Parser >> Global::iRailProFiltering;
|
||||||
}
|
}
|
||||||
else if( token == "dynamicfiltering" ) {
|
else if (token == "dynamicfiltering")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::iDynamicFiltering;
|
Parser >> Global::iDynamicFiltering;
|
||||||
}
|
}
|
||||||
else if( token == "usevbo" ) {
|
else if (token == "usevbo")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bUseVBO = (token == "yes");
|
Global::bUseVBO = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "feedbackmode" ) {
|
else if (token == "feedbackmode")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::iFeedbackMode;
|
Parser >> Global::iFeedbackMode;
|
||||||
}
|
}
|
||||||
else if( token == "feedbackport" ) {
|
else if (token == "feedbackport")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::iFeedbackPort;
|
Parser >> Global::iFeedbackPort;
|
||||||
}
|
}
|
||||||
else if( token == "multiplayer" ) {
|
else if (token == "multiplayer")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::iMultiplayer;
|
Parser >> Global::iMultiplayer;
|
||||||
}
|
}
|
||||||
else if( token == "maxtexturesize" ) {
|
else if (token == "maxtexturesize")
|
||||||
|
{
|
||||||
// wymuszenie przeskalowania tekstur
|
// wymuszenie przeskalowania tekstur
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
int size; Parser >> size;
|
int size;
|
||||||
if( size <= 64 ) { Global::iMaxTextureSize = 64; }
|
Parser >> size;
|
||||||
else if( size <= 128 ) { Global::iMaxTextureSize = 128; }
|
if (size <= 64)
|
||||||
else if( size <= 256 ) { Global::iMaxTextureSize = 256; }
|
{
|
||||||
else if( size <= 512 ) { Global::iMaxTextureSize = 512; }
|
Global::iMaxTextureSize = 64;
|
||||||
else if( size <= 1024 ) { Global::iMaxTextureSize = 1024; }
|
|
||||||
else if( size <= 2048 ) { Global::iMaxTextureSize = 2048; }
|
|
||||||
else if( size <= 4096 ) { Global::iMaxTextureSize = 4096; }
|
|
||||||
else if( size <= 8192 ) { Global::iMaxTextureSize = 8192; }
|
|
||||||
else { Global::iMaxTextureSize = 16384; }
|
|
||||||
}
|
}
|
||||||
else if( token == "doubleambient" ) {
|
else if (size <= 128)
|
||||||
|
{
|
||||||
|
Global::iMaxTextureSize = 128;
|
||||||
|
}
|
||||||
|
else if (size <= 256)
|
||||||
|
{
|
||||||
|
Global::iMaxTextureSize = 256;
|
||||||
|
}
|
||||||
|
else if (size <= 512)
|
||||||
|
{
|
||||||
|
Global::iMaxTextureSize = 512;
|
||||||
|
}
|
||||||
|
else if (size <= 1024)
|
||||||
|
{
|
||||||
|
Global::iMaxTextureSize = 1024;
|
||||||
|
}
|
||||||
|
else if (size <= 2048)
|
||||||
|
{
|
||||||
|
Global::iMaxTextureSize = 2048;
|
||||||
|
}
|
||||||
|
else if (size <= 4096)
|
||||||
|
{
|
||||||
|
Global::iMaxTextureSize = 4096;
|
||||||
|
}
|
||||||
|
else if (size <= 8192)
|
||||||
|
{
|
||||||
|
Global::iMaxTextureSize = 8192;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Global::iMaxTextureSize = 16384;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (token == "doubleambient")
|
||||||
|
{
|
||||||
// podw<64>jna jasno<6E><6F> ambient
|
// podw<64>jna jasno<6E><6F> ambient
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bDoubleAmbient = (token == "yes");
|
Global::bDoubleAmbient = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "movelight" ) {
|
else if (token == "movelight")
|
||||||
|
{
|
||||||
// numer dnia w roku albo -1
|
// numer dnia w roku albo -1
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::fMoveLight;
|
Parser >> Global::fMoveLight;
|
||||||
if( Global::fMoveLight == 0.f ) { // pobranie daty z systemu
|
if (Global::fMoveLight == 0.f)
|
||||||
|
{ // pobranie daty z systemu
|
||||||
std::time_t timenow = std::time(0);
|
std::time_t timenow = std::time(0);
|
||||||
std::tm *localtime = std::localtime(&timenow);
|
std::tm *localtime = std::localtime(&timenow);
|
||||||
Global::fMoveLight = localtime->tm_yday + 1; // numer bie<69><65>cego dnia w roku
|
Global::fMoveLight = localtime->tm_yday + 1; // numer bie<69><65>cego dnia w roku
|
||||||
@@ -440,273 +540,347 @@ void Global::ConfigParse(cParser &Parser) {
|
|||||||
// http://naturalfrequency.com/Tregenza_Sharples/Daylight_Algorithms/algorithm_1_11.htm
|
// http://naturalfrequency.com/Tregenza_Sharples/Daylight_Algorithms/algorithm_1_11.htm
|
||||||
// Spencer J W Fourier series representation of the position of the sun Search 2 (5)
|
// Spencer J W Fourier series representation of the position of the sun Search 2 (5)
|
||||||
// 172 (1971)
|
// 172 (1971)
|
||||||
Global::fMoveLight = M_PI / 182.5 * ( Global::fMoveLight - 1.0 ); // numer dnia w postaci k<>ta
|
Global::fMoveLight =
|
||||||
fSunDeclination = 0.006918 - 0.3999120 * std::cos( fMoveLight ) +
|
M_PI / 182.5 * (Global::fMoveLight - 1.0); // numer dnia w postaci k<>ta
|
||||||
0.0702570 * std::sin( fMoveLight ) - 0.0067580 * std::cos( 2 * fMoveLight ) +
|
fSunDeclination =
|
||||||
0.0009070 * std::sin( 2 * fMoveLight ) -
|
0.006918 - 0.3999120 * std::cos(fMoveLight) + 0.0702570 * std::sin(fMoveLight) -
|
||||||
|
0.0067580 * std::cos(2 * fMoveLight) + 0.0009070 * std::sin(2 * fMoveLight) -
|
||||||
0.0026970 * std::cos(3 * fMoveLight) + 0.0014800 * std::sin(3 * fMoveLight);
|
0.0026970 * std::cos(3 * fMoveLight) + 0.0014800 * std::sin(3 * fMoveLight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( token == "smoothtraction" ) {
|
else if (token == "smoothtraction")
|
||||||
|
{
|
||||||
// podw<64>jna jasno<6E><6F> ambient
|
// podw<64>jna jasno<6E><6F> ambient
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bSmoothTraction = (token == "yes");
|
Global::bSmoothTraction = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "timespeed" ) {
|
else if (token == "timespeed")
|
||||||
|
{
|
||||||
// przyspieszenie czasu, zmienna do test<73>w
|
// przyspieszenie czasu, zmienna do test<73>w
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::fTimeSpeed;
|
Parser >> Global::fTimeSpeed;
|
||||||
}
|
}
|
||||||
else if( token == "multisampling" ) {
|
else if (token == "multisampling")
|
||||||
|
{
|
||||||
// tryb antyaliasingu: 0=brak,1=2px,2=4px
|
// tryb antyaliasingu: 0=brak,1=2px,2=4px
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::iMultisampling;
|
Parser >> Global::iMultisampling;
|
||||||
}
|
}
|
||||||
else if( token == "glutfont" ) {
|
else if (token == "glutfont")
|
||||||
|
{
|
||||||
// tekst generowany przez GLUT
|
// tekst generowany przez GLUT
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bGlutFont = (token == "yes");
|
Global::bGlutFont = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "latitude" ) {
|
else if (token == "latitude")
|
||||||
|
{
|
||||||
// szeroko<6B><6F> geograficzna
|
// szeroko<6B><6F> geograficzna
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::fLatitudeDeg;
|
Parser >> Global::fLatitudeDeg;
|
||||||
}
|
}
|
||||||
else if( token == "convertmodels" ) {
|
else if (token == "convertmodels")
|
||||||
|
{
|
||||||
// tworzenie plik<69>w binarnych
|
// tworzenie plik<69>w binarnych
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::iConvertModels;
|
Parser >> Global::iConvertModels;
|
||||||
}
|
}
|
||||||
else if( token == "inactivepause" ) {
|
else if (token == "inactivepause")
|
||||||
|
{
|
||||||
// automatyczna pauza, gdy okno nieaktywne
|
// automatyczna pauza, gdy okno nieaktywne
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bInactivePause = (token == "yes");
|
Global::bInactivePause = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "slowmotion" ) {
|
else if (token == "slowmotion")
|
||||||
|
{
|
||||||
// tworzenie plik<69>w binarnych
|
// tworzenie plik<69>w binarnych
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::iSlowMotionMask;
|
Parser >> Global::iSlowMotionMask;
|
||||||
}
|
}
|
||||||
else if( token == "modifytga" ) {
|
else if (token == "modifytga")
|
||||||
|
{
|
||||||
// czy korygowa<77> pliki TGA dla szybszego wczytywania
|
// czy korygowa<77> pliki TGA dla szybszego wczytywania
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::iModifyTGA;
|
Parser >> Global::iModifyTGA;
|
||||||
}
|
}
|
||||||
else if( token == "hideconsole" ) {
|
else if (token == "hideconsole")
|
||||||
|
{
|
||||||
// hunter-271211: ukrywanie konsoli
|
// hunter-271211: ukrywanie konsoli
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bHideConsole = (token == "yes");
|
Global::bHideConsole = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "oldsmudge" ) {
|
else if (token == "oldsmudge")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bOldSmudge = (token == "yes");
|
Global::bOldSmudge = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "rollfix" ) {
|
else if (token == "rollfix")
|
||||||
|
{
|
||||||
// Ra: poprawianie przechy<68>ki, aby wewn<77>trzna szyna by<62>a "pozioma"
|
// Ra: poprawianie przechy<68>ki, aby wewn<77>trzna szyna by<62>a "pozioma"
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bRollFix = (token == "yes");
|
Global::bRollFix = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "fpsaverage" ) {
|
else if (token == "fpsaverage")
|
||||||
|
{
|
||||||
// oczekiwana wartos<6F> FPS
|
// oczekiwana wartos<6F> FPS
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::fFpsAverage;
|
Parser >> Global::fFpsAverage;
|
||||||
}
|
}
|
||||||
else if( token == "fpsdeviation" ) {
|
else if (token == "fpsdeviation")
|
||||||
|
{
|
||||||
// odchylenie standardowe FPS
|
// odchylenie standardowe FPS
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::fFpsDeviation;
|
Parser >> Global::fFpsDeviation;
|
||||||
}
|
}
|
||||||
else if( token == "fpsradiusmax" ) {
|
else if (token == "fpsradiusmax")
|
||||||
|
{
|
||||||
// maksymalny promie<69> renderowania
|
// maksymalny promie<69> renderowania
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::fFpsRadiusMax;
|
Parser >> Global::fFpsRadiusMax;
|
||||||
}
|
}
|
||||||
else if(token == "calibratein"){
|
else if (token == "calibratein")
|
||||||
|
{
|
||||||
// parametry kalibracji wej<65><6A>
|
// parametry kalibracji wej<65><6A>
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
int in; Parser >> in;
|
int in;
|
||||||
if( ( in < 0 ) || ( in > 5 ) ) {
|
Parser >> in;
|
||||||
|
if ((in < 0) || (in > 5))
|
||||||
|
{
|
||||||
in = 5; // na ostatni, bo i tak trzeba pomin<69><6E> warto<74>ci
|
in = 5; // na ostatni, bo i tak trzeba pomin<69><6E> warto<74>ci
|
||||||
}
|
}
|
||||||
Parser.getTokens(4, false);
|
Parser.getTokens(4, false);
|
||||||
Parser
|
Parser >> Global::fCalibrateIn[in][0] // wyraz wolny
|
||||||
>> Global::fCalibrateIn[ in ][ 0 ] // wyraz wolny
|
|
||||||
>> Global::fCalibrateIn[in][1] // mno<6E>nik
|
>> Global::fCalibrateIn[in][1] // mno<6E>nik
|
||||||
>> Global::fCalibrateIn[in][2] // mno<6E>nik dla kwadratu
|
>> Global::fCalibrateIn[in][2] // mno<6E>nik dla kwadratu
|
||||||
>> Global::fCalibrateIn[in][3]; // mno<6E>nik dla sze<7A>cianu
|
>> Global::fCalibrateIn[in][3]; // mno<6E>nik dla sze<7A>cianu
|
||||||
Global::fCalibrateIn[in][4] = 0.0; // mno<6E>nik 4 pot<6F>gi
|
Global::fCalibrateIn[in][4] = 0.0; // mno<6E>nik 4 pot<6F>gi
|
||||||
Global::fCalibrateIn[in][5] = 0.0; // mno<6E>nik 5 pot<6F>gi
|
Global::fCalibrateIn[in][5] = 0.0; // mno<6E>nik 5 pot<6F>gi
|
||||||
}
|
}
|
||||||
else if(token == "calibrate5din"){
|
else if (token == "calibrate5din")
|
||||||
|
{
|
||||||
// parametry kalibracji wej<65><6A>
|
// parametry kalibracji wej<65><6A>
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
int in; Parser >> in;
|
int in;
|
||||||
if( ( in < 0 ) || ( in > 5 ) ) {
|
Parser >> in;
|
||||||
|
if ((in < 0) || (in > 5))
|
||||||
|
{
|
||||||
in = 5; // na ostatni, bo i tak trzeba pomin<69><6E> warto<74>ci
|
in = 5; // na ostatni, bo i tak trzeba pomin<69><6E> warto<74>ci
|
||||||
}
|
}
|
||||||
Parser.getTokens(6, false);
|
Parser.getTokens(6, false);
|
||||||
Parser
|
Parser >> Global::fCalibrateIn[in][0] // wyraz wolny
|
||||||
>> Global::fCalibrateIn[ in ][ 0 ] // wyraz wolny
|
|
||||||
>> Global::fCalibrateIn[in][1] // mno<6E>nik
|
>> Global::fCalibrateIn[in][1] // mno<6E>nik
|
||||||
>> Global::fCalibrateIn[in][2] // mno<6E>nik dla kwadratu
|
>> Global::fCalibrateIn[in][2] // mno<6E>nik dla kwadratu
|
||||||
>> Global::fCalibrateIn[in][3] // mno<6E>nik dla sze<7A>cianu
|
>> Global::fCalibrateIn[in][3] // mno<6E>nik dla sze<7A>cianu
|
||||||
>> Global::fCalibrateIn[in][4] // mno<6E>nik 4 pot<6F>gi
|
>> Global::fCalibrateIn[in][4] // mno<6E>nik 4 pot<6F>gi
|
||||||
>> Global::fCalibrateIn[in][5]; // mno<6E>nik 5 pot<6F>gi
|
>> Global::fCalibrateIn[in][5]; // mno<6E>nik 5 pot<6F>gi
|
||||||
}
|
}
|
||||||
else if(token == "calibrateout"){
|
else if (token == "calibrateout")
|
||||||
|
{
|
||||||
// parametry kalibracji wyj<79><6A>
|
// parametry kalibracji wyj<79><6A>
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
int out; Parser >> out;
|
int out;
|
||||||
if( ( out < 0 ) || ( out > 6 ) ) {
|
Parser >> out;
|
||||||
|
if ((out < 0) || (out > 6))
|
||||||
|
{
|
||||||
out = 6; // na ostatni, bo i tak trzeba pomin<69><6E> warto<74>ci
|
out = 6; // na ostatni, bo i tak trzeba pomin<69><6E> warto<74>ci
|
||||||
}
|
}
|
||||||
Parser.getTokens(4, false);
|
Parser.getTokens(4, false);
|
||||||
Parser
|
Parser >> Global::fCalibrateOut[out][0] // wyraz wolny
|
||||||
>> Global::fCalibrateOut[ out ][ 0 ] // wyraz wolny
|
|
||||||
>> Global::fCalibrateOut[out][1] // mno<6E>nik liniowy
|
>> Global::fCalibrateOut[out][1] // mno<6E>nik liniowy
|
||||||
>> Global::fCalibrateOut[out][2] // mno<6E>nik dla kwadratu
|
>> Global::fCalibrateOut[out][2] // mno<6E>nik dla kwadratu
|
||||||
>> Global::fCalibrateOut[out][3]; // mno<6E>nik dla sze<7A>cianu
|
>> Global::fCalibrateOut[out][3]; // mno<6E>nik dla sze<7A>cianu
|
||||||
Global::fCalibrateOut[out][4] = 0.0; // mno<6E>nik dla 4 pot<6F>gi
|
Global::fCalibrateOut[out][4] = 0.0; // mno<6E>nik dla 4 pot<6F>gi
|
||||||
Global::fCalibrateOut[out][5] = 0.0; // mno<6E>nik dla 5 pot<6F>gi
|
Global::fCalibrateOut[out][5] = 0.0; // mno<6E>nik dla 5 pot<6F>gi
|
||||||
}
|
}
|
||||||
else if(token == "calibrate5dout"){
|
else if (token == "calibrate5dout")
|
||||||
|
{
|
||||||
// parametry kalibracji wyj<79><6A>
|
// parametry kalibracji wyj<79><6A>
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
int out; Parser >> out;
|
int out;
|
||||||
if( ( out < 0 ) || ( out > 6 ) ) {
|
Parser >> out;
|
||||||
|
if ((out < 0) || (out > 6))
|
||||||
|
{
|
||||||
out = 6; // na ostatni, bo i tak trzeba pomin<69><6E> warto<74>ci
|
out = 6; // na ostatni, bo i tak trzeba pomin<69><6E> warto<74>ci
|
||||||
}
|
}
|
||||||
Parser.getTokens(6, false);
|
Parser.getTokens(6, false);
|
||||||
Parser
|
Parser >> Global::fCalibrateOut[out][0] // wyraz wolny
|
||||||
>> Global::fCalibrateOut[ out ][ 0 ] // wyraz wolny
|
|
||||||
>> Global::fCalibrateOut[out][1] // mno<6E>nik liniowy
|
>> Global::fCalibrateOut[out][1] // mno<6E>nik liniowy
|
||||||
>> Global::fCalibrateOut[out][2] // mno<6E>nik dla kwadratu
|
>> Global::fCalibrateOut[out][2] // mno<6E>nik dla kwadratu
|
||||||
>> Global::fCalibrateOut[out][3] // mno<6E>nik dla sze<7A>cianu
|
>> Global::fCalibrateOut[out][3] // mno<6E>nik dla sze<7A>cianu
|
||||||
>> Global::fCalibrateOut[out][4] // mno<6E>nik dla 4 pot<6F>gi
|
>> Global::fCalibrateOut[out][4] // mno<6E>nik dla 4 pot<6F>gi
|
||||||
>> Global::fCalibrateOut[out][5]; // mno<6E>nik dla 5 pot<6F>gi
|
>> Global::fCalibrateOut[out][5]; // mno<6E>nik dla 5 pot<6F>gi
|
||||||
}
|
}
|
||||||
else if(token == "calibrateoutmaxvalues"){
|
else if (token == "calibrateoutmaxvalues")
|
||||||
|
{
|
||||||
// maksymalne warto<74>ci jakie mo<6D>na wy<77>wietli<6C> na mierniku
|
// maksymalne warto<74>ci jakie mo<6D>na wy<77>wietli<6C> na mierniku
|
||||||
Parser.getTokens(7, false);
|
Parser.getTokens(7, false);
|
||||||
Parser
|
Parser >> Global::fCalibrateOutMax[0] >> Global::fCalibrateOutMax[1] >>
|
||||||
>> Global::fCalibrateOutMax[ 0 ]
|
Global::fCalibrateOutMax[2] >> Global::fCalibrateOutMax[3] >>
|
||||||
>> Global::fCalibrateOutMax[ 1 ]
|
Global::fCalibrateOutMax[4] >> Global::fCalibrateOutMax[5] >>
|
||||||
>> Global::fCalibrateOutMax[ 2 ]
|
Global::fCalibrateOutMax[6];
|
||||||
>> Global::fCalibrateOutMax[ 3 ]
|
|
||||||
>> Global::fCalibrateOutMax[ 4 ]
|
|
||||||
>> Global::fCalibrateOutMax[ 5 ]
|
|
||||||
>> Global::fCalibrateOutMax[ 6 ];
|
|
||||||
}
|
}
|
||||||
else if( token == "calibrateoutdebuginfo" ) {
|
else if (token == "calibrateoutdebuginfo")
|
||||||
|
{
|
||||||
// wyj<79>cie z info o przebiegu kalibracji
|
// wyj<79>cie z info o przebiegu kalibracji
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::iCalibrateOutDebugInfo;
|
Parser >> Global::iCalibrateOutDebugInfo;
|
||||||
}
|
}
|
||||||
else if( token == "pwm" ) {
|
else if (token == "pwm")
|
||||||
|
{
|
||||||
// zmiana numer<65>w wyj<79><6A> PWM
|
// zmiana numer<65>w wyj<79><6A> PWM
|
||||||
Parser.getTokens(2, false);
|
Parser.getTokens(2, false);
|
||||||
int pwm_out, pwm_no;
|
int pwm_out, pwm_no;
|
||||||
Parser
|
Parser >> pwm_out >> pwm_no;
|
||||||
>> pwm_out
|
|
||||||
>> pwm_no;
|
|
||||||
Global::iPoKeysPWM[pwm_out] = pwm_no;
|
Global::iPoKeysPWM[pwm_out] = pwm_no;
|
||||||
}
|
}
|
||||||
else if( token == "brakestep" ) {
|
else if (token == "brakestep")
|
||||||
|
{
|
||||||
// krok zmiany hamulca dla klawiszy [Num3] i [Num9]
|
// krok zmiany hamulca dla klawiszy [Num3] i [Num9]
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::fBrakeStep;
|
Parser >> Global::fBrakeStep;
|
||||||
}
|
}
|
||||||
else if( token == "joinduplicatedevents" ) {
|
else if (token == "joinduplicatedevents")
|
||||||
|
{
|
||||||
// czy grupowa<77> eventy o tych samych nazwach
|
// czy grupowa<77> eventy o tych samych nazwach
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
Global::bJoinEvents = (token == "yes");
|
Global::bJoinEvents = (token == "yes");
|
||||||
}
|
}
|
||||||
else if( token == "hiddenevents" ) {
|
else if (token == "hiddenevents")
|
||||||
|
{
|
||||||
// czy <20><>czy<7A> eventy z torami poprzez nazw<7A> toru
|
// czy <20><>czy<7A> eventy z torami poprzez nazw<7A> toru
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::iHiddenEvents;
|
Parser >> Global::iHiddenEvents;
|
||||||
}
|
}
|
||||||
else if( token == "pause" ) {
|
else if (token == "pause")
|
||||||
|
{
|
||||||
// czy po wczytaniu ma by<62> pauza?
|
// czy po wczytaniu ma by<62> pauza?
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
iPause |= (token == "yes" ? 1 : 0);
|
iPause |= (token == "yes" ? 1 : 0);
|
||||||
}
|
}
|
||||||
else if( token == "lang" ) {
|
else if (token == "lang")
|
||||||
|
{
|
||||||
// domy<6D>lny j<>zyk - http://tools.ietf.org/html/bcp47
|
// domy<6D>lny j<>zyk - http://tools.ietf.org/html/bcp47
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::asLang;
|
Parser >> Global::asLang;
|
||||||
}
|
}
|
||||||
else if( token == "opengl" ) {
|
else if (token == "opengl")
|
||||||
|
{
|
||||||
// deklarowana wersja OpenGL, <20>eby powstrzyma<6D> b<><62>dy
|
// deklarowana wersja OpenGL, <20>eby powstrzyma<6D> b<><62>dy
|
||||||
Parser.getTokens(1, false);
|
Parser.getTokens(1, false);
|
||||||
Parser >> Global::fOpenGL;
|
Parser >> Global::fOpenGL;
|
||||||
}
|
}
|
||||||
else if( token == "pyscreenrendererpriority" ) {
|
else if (token == "pyscreenrendererpriority")
|
||||||
|
{
|
||||||
// priority of python screen renderer
|
// priority of python screen renderer
|
||||||
Parser.getTokens(); Parser >> token;
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
TPythonInterpreter::getInstance()->setScreenRendererPriority(token.c_str());
|
TPythonInterpreter::getInstance()->setScreenRendererPriority(token.c_str());
|
||||||
}
|
}
|
||||||
else if( token == "background" ) {
|
else if (token == "background")
|
||||||
|
{
|
||||||
|
|
||||||
Parser.getTokens(3, false);
|
Parser.getTokens(3, false);
|
||||||
Parser
|
Parser >> Global::Background[0] // r
|
||||||
>> Global::Background[ 0 ] // r
|
|
||||||
>> Global::Background[1] // g
|
>> Global::Background[1] // g
|
||||||
>> Global::Background[2]; // b
|
>> Global::Background[2]; // b
|
||||||
}
|
}
|
||||||
// maciek001: ustawienia MWD
|
// maciek001: ustawienia MWD
|
||||||
else if (str == AnsiString("mwddebug")){ // czy w<><77>czy<7A> obs<62>ug<75> hamulc<6C>w
|
else if (token == "mwddebug")
|
||||||
bMWDdebugEnable = (GetNextSymbol().LowerCase() == AnsiString("yes"));
|
{ // czy w<><77>czy<7A> obs<62>ug<75> hamulc<6C>w
|
||||||
}else if (str == AnsiString("comportname"))
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
|
bMWDdebugEnable = (token == "yes");
|
||||||
|
}
|
||||||
|
else if (token == "comportname")
|
||||||
{
|
{
|
||||||
sMWDPortId = GetNextSymbol().LowerCase();
|
Parser.getTokens();
|
||||||
if (bMWDdebugEnable) WriteLog("PortName " + AnsiString(sMWDPortId));
|
Parser >> sMWDPortId;
|
||||||
}else if (str == AnsiString("mwdbaudrate")){ // pobierz pr<70>dko<6B><6F> transmisji danych
|
if (bMWDdebugEnable)
|
||||||
iMWDBaudrate = GetNextSymbol().ToInt();
|
WriteLog("PortName " + sMWDPortId);
|
||||||
if (bMWDdebugEnable) WriteLog("PortName " + AnsiString(iMWDBaudrate));
|
}
|
||||||
}else if (str == AnsiString("mwdbreakenable")){ // czy w<><77>czy<7A> obs<62>ug<75> hamulc<6C>w
|
else if (token == "mwdbaudrate")
|
||||||
bMWDBreakEnable = (GetNextSymbol().LowerCase() == AnsiString("yes"));
|
{ // pobierz pr<70>dko<6B><6F> transmisji danych
|
||||||
}else if (str == AnsiString("mwdinputenable")){
|
Parser.getTokens(1, false);
|
||||||
bMWDInputDataEnable = (GetNextSymbol().LowerCase() == AnsiString("yes"));
|
Parser >> iMWDBaudrate;
|
||||||
}else if(str == AnsiString("mwdbreak")) // warto<74><6F> max dla potencjometru hamulca zasadniczego
|
if (bMWDdebugEnable)
|
||||||
|
WriteLog("PortName " + to_string(iMWDBaudrate));
|
||||||
|
}
|
||||||
|
else if (token == "mwdbreakenable")
|
||||||
|
{ // czy w<><77>czy<7A> obs<62>ug<75> hamulc<6C>w
|
||||||
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
|
bMWDBreakEnable = (token == "yes");
|
||||||
|
}
|
||||||
|
else if (token == "mwdinputenable")
|
||||||
{
|
{
|
||||||
i = GetNextSymbol().ToIntDef(-1); // numer wej<65>cia
|
Parser.getTokens();
|
||||||
if ((i >= 0) || (i <= 1)){
|
Parser >> token;
|
||||||
fMWDAnalogCalib[i][0] = GetNextSymbol().ToDouble(); // max -> 2^16 -1
|
bMWDInputDataEnable = (token == "yes");
|
||||||
fMWDAnalogCalib[i][1] = GetNextSymbol().ToDouble(); // min -> 0
|
}
|
||||||
fMWDAnalogCalib[i][2] = GetNextSymbol().ToDouble(); // rozdzielczo<7A><6F> -> 255 maksymalna mo<6D>liwa warto<74><6F> z ADC
|
else if (token == "mwdbreak") // warto<74><6F> max dla potencjometru hamulca zasadniczego
|
||||||
if (bMWDdebugEnable) WriteLog("Break settings " + AnsiString(i) + AnsiString(": ") + AnsiString(fMWDAnalogCalib[i][0]) + AnsiString(" ") + AnsiString(fMWDAnalogCalib[i][1]) + AnsiString(" ") + AnsiString(fMWDAnalogCalib[i][2]));
|
{
|
||||||
|
Parser.getTokens();
|
||||||
|
Parser >> token;
|
||||||
|
int i = stol_def(token, -1); // numer wej<65>cia
|
||||||
|
if ((i >= 0) || (i <= 1))
|
||||||
|
{
|
||||||
|
Parser.getTokens(3, false);
|
||||||
|
Parser >> fMWDAnalogCalib[i][0] // max -> 2^16 -1
|
||||||
|
>> fMWDAnalogCalib[i][1] // min -> 0
|
||||||
|
>>
|
||||||
|
fMWDAnalogCalib[i][2]; // rozdzielczo<7A><6F> -> 255 maksymalna mo<6D>liwa warto<74><6F> z ADC
|
||||||
|
if (bMWDdebugEnable)
|
||||||
|
WriteLog("Break settings " + to_string(i) + ": " +
|
||||||
|
to_string(fMWDAnalogCalib[i][0]) + " " +
|
||||||
|
to_string(fMWDAnalogCalib[i][1]) + " " +
|
||||||
|
to_string(fMWDAnalogCalib[i][2]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(str == AnsiString("mwdzbiornikglowny")){
|
else if (token == "mwdzbiornikglowny")
|
||||||
fMWDzg[0] = GetNextSymbol().ToDouble();
|
{
|
||||||
fMWDzg[1] = GetNextSymbol().ToDouble();
|
Parser.getTokens(2, false);
|
||||||
if (bMWDdebugEnable) WriteLog("AirTank settings: " + AnsiString(fMWDzg[0]) + AnsiString(" ") + AnsiString(fMWDzg[1]));
|
Parser >> fMWDzg[0] >> fMWDzg[1];
|
||||||
|
if (bMWDdebugEnable)
|
||||||
|
WriteLog("AirTank settings: " + to_string(fMWDzg[0]) + " " + to_string(fMWDzg[1]));
|
||||||
}
|
}
|
||||||
else if(str == AnsiString("mwdprzewodglowny")){
|
else if (token == "mwdprzewodglowny")
|
||||||
fMWDpg[0] = GetNextSymbol().ToDouble();
|
{
|
||||||
fMWDpg[1] = GetNextSymbol().ToDouble();
|
Parser.getTokens(2, false);
|
||||||
if (bMWDdebugEnable) WriteLog("MainAirPipe settings: " + AnsiString(fMWDpg[0]) + AnsiString(" ") + AnsiString(fMWDpg[1]));
|
Parser >> fMWDpg[0] >> fMWDpg[1];
|
||||||
|
if (bMWDdebugEnable)
|
||||||
|
WriteLog("MainAirPipe settings: " + to_string(fMWDpg[0]) + " " +
|
||||||
|
to_string(fMWDpg[1]));
|
||||||
}
|
}
|
||||||
else if(str == AnsiString("mwdcylinderhamulcowy")){
|
else if (token == "mwdcylinderhamulcowy")
|
||||||
fMWDph[0] = GetNextSymbol().ToDouble();
|
{
|
||||||
fMWDph[1] = GetNextSymbol().ToDouble();
|
Parser.getTokens(2, false);
|
||||||
if (bMWDdebugEnable) WriteLog("AirPipe settings: " + AnsiString(fMWDph[0]) + AnsiString(" ") + AnsiString(fMWDph[1]));
|
Parser >> fMWDph[0] >> fMWDph[1];
|
||||||
|
if (bMWDdebugEnable)
|
||||||
|
WriteLog("AirPipe settings: " + to_string(fMWDph[0]) + " " + to_string(fMWDph[1]));
|
||||||
}
|
}
|
||||||
else if(str == AnsiString("mwdwoltomierzwn")){
|
else if (token == "mwdwoltomierzwn")
|
||||||
fMWDvolt[0] = GetNextSymbol().ToDouble();
|
{
|
||||||
fMWDvolt[1] = GetNextSymbol().ToDouble();
|
Parser.getTokens(2, false);
|
||||||
if (bMWDdebugEnable) WriteLog("Volt settings: " + AnsiString(fMWDvolt[0]) + AnsiString(" ") + AnsiString(fMWDvolt[1]));
|
Parser >> fMWDvolt[0] >> fMWDvolt[1];
|
||||||
|
if (bMWDdebugEnable)
|
||||||
|
WriteLog("Volt settings: " + to_string(fMWDvolt[0]) + " " + to_string(fMWDvolt[1]));
|
||||||
}
|
}
|
||||||
else if(str == AnsiString("mwdamperomierzwn")){
|
else if (token == "mwdamperomierzwn")
|
||||||
fMWDamp[0] = GetNextSymbol().ToDouble();
|
{
|
||||||
fMWDamp[1] = GetNextSymbol().ToDouble();
|
Parser.getTokens(2, false);
|
||||||
if (bMWDdebugEnable) WriteLog("Amp settings: " + AnsiString(fMWDamp[0]) + AnsiString(" ") + AnsiString(fMWDamp[1]));
|
Parser >> fMWDamp[0] >> fMWDamp[1];
|
||||||
|
if (bMWDdebugEnable)
|
||||||
|
WriteLog("Amp settings: " + to_string(fMWDamp[0]) + " " + to_string(fMWDamp[1]));
|
||||||
}
|
}
|
||||||
}
|
} while ((token != "") && (token != "endconfig")); //(!Parser->EndOfFile)
|
||||||
while( ( token != "" )
|
|
||||||
&& ( token != "endconfig" ) ); //(!Parser->EndOfFile)
|
|
||||||
// na koniec troch<63> zale<6C>no<6E>ci
|
// na koniec troch<63> zale<6C>no<6E>ci
|
||||||
if (!bLoadTraction) // wczytywanie drut<75>w i s<>up<75>w
|
if (!bLoadTraction) // wczytywanie drut<75>w i s<>up<75>w
|
||||||
{ // tutaj wy<77><79>czenie, bo mog<6F> nie by<62> zdefiniowane w INI
|
{ // tutaj wy<77><79>czenie, bo mog<6F> nie by<62> zdefiniowane w INI
|
||||||
@@ -1085,8 +1259,14 @@ std::string Global::Bezogonkow(std::string str, bool _)
|
|||||||
|
|
||||||
double Global::Min0RSpeed(double vel1, double vel2)
|
double Global::Min0RSpeed(double vel1, double vel2)
|
||||||
{ // rozszerzenie funkcji Min0R o warto<74>ci -1.0
|
{ // rozszerzenie funkcji Min0R o warto<74>ci -1.0
|
||||||
if( vel1 == -1.0 ) { vel1 = std::numeric_limits<double>::max(); }
|
if (vel1 == -1.0)
|
||||||
if( vel2 == -1.0 ) { vel2 = std::numeric_limits<double>::max(); }
|
{
|
||||||
|
vel1 = std::numeric_limits<double>::max();
|
||||||
|
}
|
||||||
|
if (vel2 == -1.0)
|
||||||
|
{
|
||||||
|
vel2 = std::numeric_limits<double>::max();
|
||||||
|
}
|
||||||
return Min0R(vel1, vel2);
|
return Min0R(vel1, vel2);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -317,8 +317,8 @@ class Global
|
|||||||
|
|
||||||
// maciek001: zmienne dla MWD
|
// maciek001: zmienne dla MWD
|
||||||
static bool bMWDdebugEnable;
|
static bool bMWDdebugEnable;
|
||||||
static unsigned long int iMWDBaudrate;
|
static unsigned int iMWDBaudrate;
|
||||||
static AnsiString sMWDPortId;
|
static std::string sMWDPortId;
|
||||||
static bool bMWDBreakEnable;
|
static bool bMWDBreakEnable;
|
||||||
static bool bMWDInputDataEnable;
|
static bool bMWDInputDataEnable;
|
||||||
static double fMWDAnalogCalib[4][3];
|
static double fMWDAnalogCalib[4][3];
|
||||||
|
|||||||
28
Train.h
28
Train.h
@@ -12,18 +12,18 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
|
|
||||||
//#include "Track.h"
|
//#include "Track.h"
|
||||||
//#include "TrkFoll.h"
|
//#include "TrkFoll.h"
|
||||||
#include "Model3d.h"
|
|
||||||
#include "Spring.h"
|
|
||||||
#include "Gauge.h"
|
|
||||||
#include "Button.h"
|
#include "Button.h"
|
||||||
#include "DynObj.h"
|
#include "DynObj.h"
|
||||||
|
#include "Gauge.h"
|
||||||
|
#include "Model3d.h"
|
||||||
|
#include "Spring.h"
|
||||||
#include "mtable.h"
|
#include "mtable.h"
|
||||||
|
|
||||||
#include "Sound.h"
|
|
||||||
#include "AdvSound.h"
|
#include "AdvSound.h"
|
||||||
#include "RealSound.h"
|
|
||||||
#include "FadeSound.h"
|
#include "FadeSound.h"
|
||||||
#include "PyInt.h"
|
#include "PyInt.h"
|
||||||
|
#include "RealSound.h"
|
||||||
|
#include "Sound.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
// typedef enum {st_Off, st_Starting, st_On, st_ShuttingDown} T4State;
|
// typedef enum {st_Off, st_Starting, st_On, st_ShuttingDown} T4State;
|
||||||
@@ -104,14 +104,13 @@ class TTrain
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
// clears state of all cabin controls
|
// clears state of all cabin controls
|
||||||
void
|
void clear_cab_controls();
|
||||||
clear_cab_controls();
|
// initializes a gauge matching provided label. returns: true if the label was found, false
|
||||||
// initializes a gauge matching provided label. returns: true if the label was found, false otherwise
|
// otherwise
|
||||||
bool
|
bool initialize_gauge(cParser &Parser, std::string const &Label, int const Cabindex);
|
||||||
initialize_gauge( cParser &Parser, std::string const &Label, int const Cabindex );
|
// initializes a button matching provided label. returns: true if the label was found, false
|
||||||
// initializes a button matching provided label. returns: true if the label was found, false otherwise
|
// otherwise
|
||||||
bool
|
bool initialize_button(cParser &Parser, std::string const &Label, int const Cabindex);
|
||||||
initialize_button( cParser &Parser, std::string const &Label, int const Cabindex );
|
|
||||||
|
|
||||||
private: //瞠by go nic z zewn靖rz nie przestawia這
|
private: //瞠by go nic z zewn靖rz nie przestawia這
|
||||||
TDynamicObject *DynamicObject; // przestawia zmiana pojazdu [F5]
|
TDynamicObject *DynamicObject; // przestawia zmiana pojazdu [F5]
|
||||||
@@ -396,7 +395,8 @@ private:
|
|||||||
float fHVoltage; // napi?cie dla dynamicznych ga?ek
|
float fHVoltage; // napi?cie dla dynamicznych ga?ek
|
||||||
float fHCurrent[4]; // pr?dy: suma i amperomierze 1,2,3
|
float fHCurrent[4]; // pr?dy: suma i amperomierze 1,2,3
|
||||||
float fEngine[4]; // obroty te? trzeba pobra?
|
float fEngine[4]; // obroty te? trzeba pobra?
|
||||||
int iCarNo, iPowerNo, iUnitNo; //liczba pojazdow, czlonow napednych i jednostek spi皻ych ze sob<6F>
|
int iCarNo, iPowerNo, iUnitNo; // liczba pojazdow, czlonow napednych i jednostek spi皻ych ze
|
||||||
|
// sob<6F>
|
||||||
bool bDoors[20][3]; // drzwi dla wszystkich czlonow
|
bool bDoors[20][3]; // drzwi dla wszystkich czlonow
|
||||||
int iUnits[20]; // numer jednostki
|
int iUnits[20]; // numer jednostki
|
||||||
int iDoorNo[20]; // liczba drzwi
|
int iDoorNo[20]; // liczba drzwi
|
||||||
|
|||||||
Reference in New Issue
Block a user