diff --git a/.clang-format b/.clang-format index 88f88f48..9c9c0863 100644 --- a/.clang-format +++ b/.clang-format @@ -11,4 +11,5 @@ AllowShortBlocksOnASingleLine: false AllowShortIfStatementsOnASingleLine: false AllowShortFunctionsOnASingleLine: Empty ColumnLimit: 100 +SortIncludes: false --- diff --git a/Console/LPT.cpp b/Console/LPT.cpp index 202e480e..2c22fa7c 100644 --- a/Console/LPT.cpp +++ b/Console/LPT.cpp @@ -32,14 +32,14 @@ bool TLPT::Connect(int port) OutPort = (OutPortType)GetProcAddress(hDLL, "Out32"); } else - return false; // MessageBox(NULL,"ERROR","Bd przy adowaniu pliku",MB_OK); + return false; // MessageBox(NULL,"ERROR","Błąd przy ładowaniu pliku",MB_OK); address = - port; //&0xFFFFFC; //ostatnie 2 bity maj by zerowe -> a niech sobie OUT-uj, gdzie chc + port; //&0xFFFFFC; //ostatnie 2 bity mają być zerowe -> a niech sobie OUT-ują, gdzie chcą switch (address) // nie dotyczy 0x3BC { case 0x0378: case 0x0278: - OutPort(address + 0x402, 0); // SPP, czyli jednokierunkowe wyjcie + OutPort(address + 0x402, 0); // SPP, czyli jednokierunkowe wyjście break; case 0xBC00: case 0xBD00: @@ -49,6 +49,6 @@ bool TLPT::Connect(int port) }; void TLPT::Out(int x) -{ // wysanie bajtu do portu +{ // wysłanie bajtu do portu OutPort(address, x); }; diff --git a/Console/MWD.cpp b/Console/MWD.cpp index 44f1cc6e..48b32441 100644 --- a/Console/MWD.cpp +++ b/Console/MWD.cpp @@ -8,11 +8,11 @@ http://mozilla.org/MPL/2.0/. */ /* - Program obsugi portu COM i innych na potrzeby sterownika MWDevice - (oraz innych wykorzystujcych komunikacj przez port COM) - dla Symulatora Pojazdw Szynowych MaSzyna + Program obsługi portu COM i innych na potrzeby sterownika MWDevice + (oraz innych wykorzystujących komunikację przez port COM) + dla Symulatora Pojazdów Szynowych MaSzyna author: Maciej Witek 2016 - Autor nie ponosi odpowiedzialnoci za niewaciwe uywanie lub dziaanie programu! + Autor nie ponosi odpowiedzialności za niewłaciwe używanie lub działanie programu! */ #include "stdafx.h" #include "MWD.h" @@ -22,8 +22,8 @@ http://mozilla.org/MPL/2.0/. #include -#define BYTETOWRITE 31 /* ilo bajtw przesyanych z MaSzyny*/ -#define BYTETOREAD 16 /* ilo bajtw przesyanych do MaSzyny*/ +#define BYTETOWRITE 31 /* ilość bajtów przesyłanych z MaSzyny*/ +#define BYTETOREAD 16 /* ilość bajtów przesyłanych do MaSzyny*/ HANDLE hComm; @@ -32,7 +32,7 @@ MWDComm::MWDComm() // konstruktor MWDTime = 0; bSHPstate = false; bPrzejazdSHP = false; - bKabina1 = true; // pasuje wycign dane na temat kabiny i ustawia te dwa parametry! + bKabina1 = true; // pasuje wyciągnąć dane na temat kabiny i ustawiać te dwa parametry! bKabina2 = false; bHamowanie = false; bCzuwak = false; @@ -134,7 +134,7 @@ bool MWDComm::Close() // zamykanie portu COM i++; } Sleep(100); - SendData(); // wysyanie do pulpitu: zatrzymanie haslera i zgaszenie lampek + SendData(); // wysyłanie do pulpitu: zatrzymanie haslera i zgaszenie lampek Sleep(700); CloseHandle(hComm); WriteLog("COM is close!"); @@ -156,7 +156,7 @@ bool MWDComm::ReadData() // odbieranie danych + odczyta danych analogowych i zap fAnalog[0] = (float)((ReadDataBuff[9] << 8) + ReadDataBuff[8]) / - Global::fMWDAnalogCalib[0][3]; // 4095.0f; //max wartosc wynikajca z rozdzielczoci + Global::fMWDAnalogCalib[0][3]; // 4095.0f; //max wartosc wynikająca z rozdzielczości fAnalog[1] = (float)((ReadDataBuff[11] << 8) + ReadDataBuff[10]) / Global::fMWDAnalogCalib[1][3]; fAnalog[2] = @@ -168,7 +168,7 @@ bool MWDComm::ReadData() // odbieranie danych + odczyta danych analogowych i zap return TRUE; } -bool MWDComm::SendData() // wysyanie danych +bool MWDComm::SendData() // wysyłanie danych { DWORD bytes_write; DWORD fdwEvtMask; @@ -178,7 +178,7 @@ bool MWDComm::SendData() // wysy return TRUE; } -bool MWDComm::Run() // wywoywanie obsugi MWD + generacja wikszego opnienia +bool MWDComm::Run() // wywoływanie obsługi MWD + generacja większego opóźnienia { MWDTime++; if (!(MWDTime % 5)) @@ -193,14 +193,14 @@ bool MWDComm::Run() // wywo else { WriteLog("Port COM: connection ERROR!"); - // moe sprbowa si poczy znowu? + // może spróbować się połączyć znowu? return 0; } MWDTime = 0; } } -void MWDComm::CheckData() // sprawdzanie wej cyfrowych i odpowiednie sterowanie maszyn +void MWDComm::CheckData() // sprawdzanie wejść cyfrowych i odpowiednie sterowanie maszyną { int i = 0; while (i < 6) @@ -210,23 +210,23 @@ void MWDComm::CheckData() // sprawdzanie wej i++; } /* - Rozpiska portw! - Port0: 0 NC odblok. przek. sprarki i wentyl. oporw - 1 M wycznik wy. szybkiego - 2 Shift+M impuls zaczajcy wy. szybki - 3 N odblok. przekanikw nadmiarowych - i rnicowego obwodu gwnego + Rozpiska portów! + Port0: 0 NC odblok. przek. sprężarki i wentyl. oporów + 1 M wyłącznik wył. szybkiego + 2 Shift+M impuls załączający wył. szybki + 3 N odblok. przekaźników nadmiarowych + i różnicowego obwodu głównego 4 NC rezerwa 5 Ctrl+N odblok. przek. nadmiarowych - przetwornicy, ogrzewania pocigu i rnicowych obw. pomocniczych - 6 L wy. stycznikw liniowych + przetwornicy, ogrzewania pociągu i różnicowych obw. pomocniczych + 6 L wył. styczników liniowych 7 SPACE kasowanie czuwaka Port1: 0 NC 1 (Shift) X przetwornica - 2 (Shift) C sprarka + 2 (Shift) C sprężarka 3 S piasecznice - 4 (Shift) H ogrzewanie skadu + 4 (Shift) H ogrzewanie składu 5 przel. hamowania Shift+B pspbpwy Ctrl+B pospieszny B towarowy 6 przel. hamowania @@ -234,10 +234,10 @@ void MWDComm::CheckData() // sprawdzanie wej Port2: 0 (Shift) P pantograf przedni 1 (Shift) O pantograf tylni - 2 ENTER przyhamowanie przy polizgu - 3 () przyciemnienie wiate - 4 () przyciemnienie wiate - 5 NUM6 odluniacz + 2 ENTER przyhamowanie przy poślizgu + 3 () przyciemnienie świateł + 4 () przyciemnienie świateł + 5 NUM6 odluźniacz 6 a syrena lok W 7 A syrena lok N @@ -251,18 +251,18 @@ void MWDComm::CheckData() // sprawdzanie wej 7 */ - /* po przeczeniu bistabilnego najpierw wciskamy klawisz i przy nastpnym - wejciu w ptl MWD puszczamy bo inaczej nie dziaa + /* po przełączeniu bistabilnego najpierw wciskamy klawisz i przy następnym + wejściu w pętlę MWD puszczamy bo inaczej nie działa */ - // wciskanie przyciskw klawiatury + // wciskanie przycisków klawiatury /*PORT0*/ if (maskData[0] & 0x02 && lastStateData[0] & 0x02) - KeyBoard('M', 1); // wyczenie wycznika szybkiego + KeyBoard('M', 1); // wyłączenie wyłącznika szybkiego else KeyBoard('M', 0); // monostabilny if (maskData[0] & 0x04 && lastStateData[0] & 0x04) - { // impuls zaczajcy wycznik szybki + { // impuls załączający wyłącznik szybki KeyBoard(0x10, 1); // monostabilny KeyBoard('M', 1); } @@ -272,12 +272,12 @@ void MWDComm::CheckData() // sprawdzanie wej KeyBoard(0x10, 0); } if (maskData[0] & 0x08 && lastStateData[0] & 0x08) - KeyBoard('N', 1); // odblok nadmiarowego silnikw trakcyjnych + KeyBoard('N', 1); // odblok nadmiarowego silników trakcyjnych else KeyBoard('N', 0); // monostabilny if (maskData[0] & 0x20 && lastStateData[0] & 0x20) { // odblok nadmiarowego przetwornicy, ogrzewania poc. - KeyBoard(0x11, 1); // rnicowego obwodw pomocniczych + KeyBoard(0x11, 1); // różnicowego obwodów pomocniczych KeyBoard('N', 1); // monostabilny } else @@ -286,7 +286,7 @@ void MWDComm::CheckData() // sprawdzanie wej KeyBoard(0x11, 0); } if (maskData[0] & 0x40 && lastStateData[0] & 0x40) - KeyBoard('L', 1); // wy. stycznikw liniowych + KeyBoard('L', 1); // wył. styczników liniowych else KeyBoard('L', 0); // monostabilny if (maskData[0] & 0x80 && lastStateData[0] & 0x80) @@ -365,7 +365,7 @@ void MWDComm::CheckData() // sprawdzanie wej KeyBoard('X', 1); } if (maskData[1] & 0x04 && lastStateData[1] & 0x04) - { // sprarka + { // sprężarka KeyBoard(0x10, 1); // bistabilny KeyBoard('C', 1); maskSwitch[1] |= 0x04; @@ -382,7 +382,7 @@ void MWDComm::CheckData() // sprawdzanie wej else KeyBoard('S', 0); // monostabilny if (maskData[1] & 0x10 && lastStateData[1] & 0x10) - { // ogrzewanie skadu + { // ogrzewanie składu KeyBoard(0x11, 1); // bistabilny KeyBoard('H', 1); maskSwitch[1] |= 0x10; @@ -395,7 +395,7 @@ void MWDComm::CheckData() // sprawdzanie wej KeyBoard('H', 1); } if (maskData[1] & 0x20 || maskData[1] & 0x40) - { // przecznik hamowania + { // przełącznik hamowania if (lastStateData[1] & 0x20) { // Shift+B KeyBoard(0x10, 1); @@ -475,7 +475,7 @@ void MWDComm::CheckData() // sprawdzanie wej KeyBoard('O', 1); } if (maskData[2] & 0x04 && lastStateData[2] & 0x04) - { // przyhamowanie przy polizgu + { // przyhamowanie przy poślizgu KeyBoard(0x10, 1); // monostabilny KeyBoard(0x0D, 1); } @@ -485,7 +485,7 @@ void MWDComm::CheckData() // sprawdzanie wej KeyBoard(0x0D, 0); KeyBoard(0x10, 0); } - /*if(maskData[2] & 0x08 && lastStateData[2] & 0x08){ // przyciemnienie wiate + /*if(maskData[2] & 0x08 && lastStateData[2] & 0x08){ // przyciemnienie świateł KeyBoard(' ',0); // bistabilny KeyBoard(0x10,1); KeyBoard(' ',1); @@ -494,7 +494,7 @@ void MWDComm::CheckData() // sprawdzanie wej KeyBoard(0x10,0); KeyBoard(' ',1); } - if(maskData[2] & 0x10 && lastStateData[2] & 0x10) { // przyciemnienie wiate + if(maskData[2] & 0x10 && lastStateData[2] & 0x10) { // przyciemnienie świateł KeyBoard(' ',0); // bistabilny KeyBoard(0x11,1); KeyBoard(' ',1); @@ -504,7 +504,7 @@ void MWDComm::CheckData() // sprawdzanie wej KeyBoard(' ',1); }*/ if (maskData[2] & 0x20 && lastStateData[2] & 0x20) - KeyBoard(0x66, 1); // odluniacz + KeyBoard(0x66, 1); // odluźniacz else KeyBoard(0x66, 0); // monostabilny if (maskData[2] & 0x40 && lastStateData[2] & 0x40) @@ -713,28 +713,28 @@ void MWDComm::CheckData() // sprawdzanie wej { bnkMask |= 1; nastawnik++; - KeyBoard(0x6B, 1); // wcinij + i dodaj 1 do nastawnika + KeyBoard(0x6B, 1); // wciśnij + i dodaj 1 do nastawnika } if (nastawnik > ReadDataBuff[6]) { bnkMask |= 2; nastawnik--; - KeyBoard(0x6D, 1); // wcinij - i odejmij 1 do nastawnika + KeyBoard(0x6D, 1); // wciśnij - i odejmij 1 do nastawnika } if (bocznik < ReadDataBuff[7]) { bnkMask |= 4; bocznik++; - KeyBoard(0x6F, 1); // wcinij / i dodaj 1 do bocznika + KeyBoard(0x6F, 1); // wciśnij / i dodaj 1 do bocznika } if (bocznik > ReadDataBuff[7]) { bnkMask |= 8; bocznik--; - KeyBoard(0x6A, 1); // wcinij * i odejmij 1 do bocznika + KeyBoard(0x6A, 1); // wciśnij * i odejmij 1 do bocznika } - /* Obsuga HASLERA */ + /* Obsługa HASLERA */ if (ReadDataBuff[0] & 0x80) bCzuwak = true; diff --git a/Console/MWD.h b/Console/MWD.h index d2852f7c..5963c08b 100644 --- a/Console/MWD.h +++ b/Console/MWD.h @@ -8,11 +8,11 @@ http://mozilla.org/MPL/2.0/. */ /* - Program obsugi portu COM i innych na potrzeby sterownika MWDevice - (oraz innych wykorzystujcych komunikacj przez port COM) - dla Symulatora Pojazdw Szynowych MaSzyna + Program obsługi portu COM i innych na potrzeby sterownika MWDevice + (oraz innych wykorzystujących komunikację przez port COM) + dla Symulatora Pojazdów Szynowych MaSzyna author: Maciej Witek 2016 - Autor nie ponosi odpowiedzialnoci za niewaciwe uywanie lub dziaanie programu! + Autor nie ponosi odpowiedzialności za niewłaciwe używanie lub działanie programu! */ #ifndef MWDH @@ -32,7 +32,7 @@ class MWDComm bool ReadData(); // BYTE *pReadDataBuff); bool SendData(); // BYTE *pWriteDataBuff); - void CheckData(); // sprawdzanie zmian wej i kontrola mazakw HASLERA + void CheckData(); // sprawdzanie zmian wejść i kontrola mazaków HASLERA void KeyBoard(int key, bool s); bool bRysik1H; @@ -42,11 +42,11 @@ class MWDComm public: bool Open(); // Otwarcie portu - bool Close(); // Zamknicie portu - bool Run(); // Obsuga portu - bool GetMWDState(); // sprawd czy port jest otwarty, 0 zamknity, 1 otwarty + bool Close(); // Zamknięcie portu + bool Run(); // Obsługa portu + bool GetMWDState(); // sprawdź czy port jest otwarty, 0 zamknięty, 1 otwarty - // zmienne do rysikw HASLERA + // zmienne do rysików HASLERA bool bSHPstate; bool bPrzejazdSHP; bool bKabina1; @@ -54,7 +54,7 @@ class MWDComm bool bHamowanie; bool bCzuwak; - float fAnalog[4]; // trzymanie danych z wej analogowych + float fAnalog[4]; // trzymanie danych z wejść analogowych BYTE ReadDataBuff[17]; // bufory danych BYTE WriteDataBuff[31]; @@ -65,37 +65,37 @@ class MWDComm #endif /* - INFO - zmiany dokonane w innych plikach niezbdne do prawidowego dziaania: + INFO - zmiany dokonane w innych plikach niezbędne do prawidłowego działania: Console.cpp: - Console::AnalogCalibrateGet - obsuga kranw hamulcw - Console::Update - wywoywanie obsugi MWD - Console::ValueSet - obsuga manometrw, miernikw WN (PWM-y) + Console::AnalogCalibrateGet - obsługa kranów hamulców + Console::Update - wywoływanie obsługi MWD + Console::ValueSet - obsługa manometrów, mierników WN (PWM-y) Console::BitsUpdate - ustawiania lampek Console::Off - zamykanie portu COM Console::On - otwieranie portu COM - Console::~Console - usuwanie MWD (jest te w Console OFF) + Console::~Console - usuwanie MWD (jest też w Console OFF) - MWDComm * Console::MWD = NULL; - luzem, obiekt i wskanik(?) - dodatkowo zmieniem int na long int dla BitSet i BitClear oraz iBits + MWDComm * Console::MWD = NULL; - luzem, obiekt i wskaźnik(?) + dodatkowo zmieniłem int na long int dla BitSet i BitClear oraz iBits Train.cpp: - if (Global::iFeedbackMode == 5) - pobieranie prdkoci, manometrw i miernikw WN - if (ggBrakeCtrl.SubModel) - moliwo sterowania hamulcem zespolonym - if (ggLocalBrake.SubModel) - moliwo sterowania hamulcem lokomotywy + if (Global::iFeedbackMode == 5) - pobieranie prędkości, manometrów i mierników WN + if (ggBrakeCtrl.SubModel) - możliwość sterowania hamulcem zespolonym + if (ggLocalBrake.SubModel) - możliwość sterowania hamulcem lokomotywy Globals.h: dodano zmienne dla MWD Globals.cpp: - dodano inicjalizaj zmiennych i odczyt z ini ustawie + dodano inicjalizaję zmiennych i odczyt z ini ustawień Wpisy do pliku eu07.ini //maciek001 MWD - comportname COM3 // wybr portu COM + comportname COM3 // wybór portu COM mwdbaudrate 500000 - mwdbreakenable yes // czy zaczy sterowanie hamulcami? blokuje klawiature + mwdbreakenable yes // czy załączyć sterowanie hamulcami? blokuje klawiature mwdbreak 1 255 0 255 // hamulec zespolony mwdbreak 2 255 0 255 // hamulec lokomotywy diff --git a/Console/PoKeys55.cpp b/Console/PoKeys55.cpp index 309ba615..d642b3fb 100644 --- a/Console/PoKeys55.cpp +++ b/Console/PoKeys55.cpp @@ -32,7 +32,7 @@ TPoKeys55::TPoKeys55() fAnalog[0] = fAnalog[1] = fAnalog[2] = fAnalog[3] = fAnalog[4] = fAnalog[5] = fAnalog[6] = -1.0; iPWM[0] = iPWM[1] = iPWM[2] = iPWM[3] = iPWM[4] = iPWM[5] = iPWM[6] = 0; iPWM[7] = 4096; - iInputs[0] = 0; // czy normalnie s w stanie wysokim? + iInputs[0] = 0; // czy normalnie są w stanie wysokim? iRepeats = 0; bNoError = true; }; @@ -43,7 +43,7 @@ TPoKeys55::~TPoKeys55() }; //--------------------------------------------------------------------------- void TPoKeys55::Close() -{ // rozczenie komunikacji +{ // rozłączenie komunikacji if (WriteHandle != INVALID_HANDLE_VALUE) CloseHandle(WriteHandle); WriteHandle = INVALID_HANDLE_VALUE; @@ -53,10 +53,10 @@ void TPoKeys55::Close() }; //--------------------------------------------------------------------------- bool TPoKeys55::Connect() -{ // Ra: to jest do wyczyszcznia z niepotrzebnych zmiennych i komunikatw +{ // Ra: to jest do wyczyszcznia z niepotrzebnych zmiennych i komunikatów Close(); GUID InterfaceClassGuid = {0x4d1e55b2, 0xf16f, 0x11cf, 0x88, 0xcb, 0x00, - 0x11, 0x11, 0x00, 0x00, 0x30}; // wszystkie HID tak maj + 0x11, 0x11, 0x00, 0x00, 0x30}; // wszystkie HID tak mają HDEVINFO DeviceInfoTable; PSP_DEVICE_INTERFACE_DATA InterfaceDataStructure = new SP_DEVICE_INTERFACE_DATA; PSP_DEVICE_INTERFACE_DETAIL_DATA DetailedInterfaceDataStructure = @@ -192,7 +192,7 @@ bool TPoKeys55::Connect() } SetupDiDestroyDeviceInfoList( DeviceInfoTable); // Clean up the old structure we no longer need. - iRepeats = 0; // nowe szanse na podczenie + iRepeats = 0; // nowe szanse na podłączenie return true; } InterfaceIndex++; @@ -209,15 +209,15 @@ bool TPoKeys55::Write(unsigned char c, unsigned char b3, unsigned char b4, unsig OutputBuffer[0] = 0; // The first byte is the "Report ID" and does not get transmitted over the // USB bus. Always set=0. OutputBuffer[1] = 0xBB; // 0xBB - bajt rozpoznawczy dla PoKeys55 - OutputBuffer[2] = iLastCommand = c; // operacja: 0x31: blokowy odczyt wej - OutputBuffer[3] = b3; // np. numer pinu (o 1 mniej ni numer na pytce) + OutputBuffer[2] = iLastCommand = c; // operacja: 0x31: blokowy odczyt wejść + OutputBuffer[3] = b3; // np. numer pinu (o 1 mniej niż numer na płytce) OutputBuffer[4] = b4; OutputBuffer[5] = b5; OutputBuffer[6] = 0; - OutputBuffer[7] = ++cRequest; // numer dania + OutputBuffer[7] = ++cRequest; // numer żądania OutputBuffer[8] = 0; for (int i = 0; i < 8; ++i) - OutputBuffer[8] += OutputBuffer[i]; // czy sumowa te od 9 do 64? + OutputBuffer[8] += OutputBuffer[i]; // czy sumować też od 9 do 64? // The basic Windows I/O functions WriteFile() and ReadFile() can be used to read and write to // HID class USB devices //(once we have the read and write handles to the device, which are obtained with CreateFile()). @@ -225,7 +225,7 @@ bool TPoKeys55::Write(unsigned char c, unsigned char b3, unsigned char b4, unsig WriteFile(WriteHandle, &OutputBuffer, 65, &BytesWritten, 0); // Blocking function, unless an "overlapped" structure is used return (BytesWritten == 65); - // Read(); //odczyt trzeba zrobi inaczej - w tym miejscu bdzie za szybko i nic si nie odczyta + // Read(); //odczyt trzeba zrobić inaczej - w tym miejscu będzie za szybko i nic się nie odczyta } //--------------------------------------------------------------------------- @@ -246,18 +246,18 @@ bool TPoKeys55::Read() } //--------------------------------------------------------------------------- bool TPoKeys55::ReadLoop(int i) -{ // prbuje odczyta (i) razy +{ // próbuje odczytać (i) razy do { if (Read()) return true; - Sleep(1); // troch poczeka, a odpowie + Sleep(1); // trochę poczekać, aż odpowie } while (--i); return false; } //--------------------------------------------------------------------------- std::string TPoKeys55::Version() -{ // zwraca numer wersji, funkcja nieoptymalna czasowo (czeka na odpowied) +{ // zwraca numer wersji, funkcja nieoptymalna czasowo (czeka na odpowiedź) if (!WriteHandle) return ""; Write(0x00, 0); // 0x00 - Read serial number, version @@ -266,17 +266,17 @@ std::string TPoKeys55::Version() std::string s = "PoKeys55 #" + std::to_string((InputBuffer[3] << 8) + InputBuffer[4]); s += " v" + std::to_string(1 + (InputBuffer[5] >> 4)) + "." + std::to_string(InputBuffer[5] & 15) + "." + std::to_string(InputBuffer[6]); - /* //Ra: pozyskiwanie daty mona sobie darowa, jest poniekd bez sensu - Write(0x04,0); //0x04 - Read build date: drugi argument zmienia od 0 do 2, uzyskujc + /* //Ra: pozyskiwanie daty można sobie darować, jest poniekąd bez sensu + Write(0x04,0); //0x04 - Read build date: drugi argument zmieniać od 0 do 2, uzyskując kolejno po 4 znaki if (ReadLoop(5)) {//2: 0x04; 3-6: char 1-4, 5-8, 9-11; (83-65-112-32-32-49-32-50-48-49-49-0=="Sep 1 2011") s+=" ("+AnsiString((char*)InputBuffer+3,4); - Write(0x04,1); //0x04 - Read build date: drugi argument zmienia od 0 do 2, uzyskujc + Write(0x04,1); //0x04 - Read build date: drugi argument zmieniać od 0 do 2, uzyskując kolejno po 4 znaki if (ReadLoop(5)) {s+=AnsiString((char*)InputBuffer+3,4); - Write(0x04,2); //0x04 - Read build date: drugi argument zmienia od 0 do 2, uzyskujc + Write(0x04,2); //0x04 - Read build date: drugi argument zmieniać od 0 do 2, uzyskując kolejno po 4 znaki if (ReadLoop(5)) s+=AnsiString((char*)InputBuffer+3,3); @@ -297,16 +297,16 @@ bool TPoKeys55::PWM(int x, float y) } bool TPoKeys55::Update(bool pause) -{ // funkcja powinna by wywoywana regularnie, np. raz w kadej ramce ekranowej +{ // funkcja powinna być wywoływana regularnie, np. raz w każdej ramce ekranowej if (pause) - { // specjalna procedura, jeli utracone poczenie spowodowao pauz - iLastCommand = 0; // poczenie zostao na nowo otwarte - // iFaza=0; //jeden bd i podtrzymanie pauzy jest kontynuowane + { // specjalna procedura, jeśli utracone połączenie spowodowało pauzę + iLastCommand = 0; // połączenie zostało na nowo otwarte + // iFaza=0; //jeden błąd i podtrzymanie pauzy jest kontynuowane } switch (iFaza) { - case 0: // uaktualnienie PWM raz na jaki czas - OutputBuffer[9] = 0x3F; // maska uytych PWM + case 0: // uaktualnienie PWM raz na jakiś czas + OutputBuffer[9] = 0x3F; // maska użytych PWM *((int *)(OutputBuffer + 10)) = iPWM[0]; // PWM1 (pin 22) *((int *)(OutputBuffer + 14)) = iPWM[1]; // PWM2 (pin 21) *((int *)(OutputBuffer + 18)) = iPWM[2]; // PWM3 (pin 20) @@ -314,16 +314,16 @@ bool TPoKeys55::Update(bool pause) *((int *)(OutputBuffer + 26)) = iPWM[4]; // PWM5 (pin 18) *((int *)(OutputBuffer + 30)) = iPWM[5]; // PWM6 (pin 17) *((int *)(OutputBuffer + 34)) = iPWM[7]; // PWM period - if (Write(0xCB, 1)) // wysanie ustawie (1-ustaw, 0-odczyt) - iRepeats = 0; // informacja, e poszo dobrze - ++iFaza; // ta faza zostaa zakoczona + if (Write(0xCB, 1)) // wysłanie ustawień (1-ustaw, 0-odczyt) + iRepeats = 0; // informacja, że poszło dobrze + ++iFaza; // ta faza została zakończona // iRepeats=0; break; - case 1: // odczyt wej analogowych - komenda i przetwarzanie - if (iLastCommand != 0x3A) // asynchroniczne ustawienie kontrolki moe namiesza - Write(0x3A, 0); // 0x3A - Analog inputs reading all analog inputs in one command + case 1: // odczyt wejść analogowych - komenda i przetwarzanie + if (iLastCommand != 0x3A) // asynchroniczne ustawienie kontrolki może namieszać + Write(0x3A, 0); // 0x3A - Analog inputs reading – all analog inputs in one command else if (Read()) - { // jest odebrana ramka i zgodno numeru dania + { // jest odebrana ramka i zgodność numeru żądania fAnalog[0] = ((InputBuffer[21] << 8) + InputBuffer[22]) / 4095.0f; // pin 47 fAnalog[1] = ((InputBuffer[19] << 8) + InputBuffer[20]) / 4095.0f; // pin 46 fAnalog[2] = ((InputBuffer[17] << 8) + InputBuffer[18]) / 4095.0f; // pin 45 @@ -331,44 +331,44 @@ bool TPoKeys55::Update(bool pause) fAnalog[4] = ((InputBuffer[13] << 8) + InputBuffer[14]) / 4095.0f; // pin 43 fAnalog[5] = ((InputBuffer[11] << 8) + InputBuffer[12]) / 4095.0f; // pin 42 fAnalog[6] = ((InputBuffer[9] << 8) + InputBuffer[10]) / 4095.0f; // pin 41 - ++iFaza; // skoro odczytano, mona przej do kolejnej fazy - iRepeats = 0; // zerowanie licznika prb + ++iFaza; // skoro odczytano, można przejść do kolejnej fazy + iRepeats = 0; // zerowanie licznika prób } else - ++iRepeats; // licznik nieudanych prb + ++iRepeats; // licznik nieudanych prób break; - case 2: // odczyt wej cyfrowych - komenda i przetwarzanie - if (iLastCommand != 0x31) // asynchroniczne ustawienie kontrolki moe namiesza - Write(0x31, 0); // 0x31: blokowy odczyt wej + case 2: // odczyt wejść cyfrowych - komenda i przetwarzanie + if (iLastCommand != 0x31) // asynchroniczne ustawienie kontrolki może namieszać + Write(0x31, 0); // 0x31: blokowy odczyt wejść else if (Read()) - { // jest odebrana ramka i zgodno numeru dania - iInputs[0] = *((int *)(InputBuffer + 3)); // odczyt 32 bitw - iFaza = 3; // skoro odczytano, mona kolejny cykl - iRepeats = 0; // zerowanie licznika prb + { // jest odebrana ramka i zgodność numeru żądania + iInputs[0] = *((int *)(InputBuffer + 3)); // odczyt 32 bitów + iFaza = 3; // skoro odczytano, można kolejny cykl + iRepeats = 0; // zerowanie licznika prób } else - ++iRepeats; // licznik nieudanych prb + ++iRepeats; // licznik nieudanych prób break; - case 3: // ustawienie wyj analogowych, 0..4095 mapowa na 0..65520 (<<4) - if (Write(0x41, 43 - 1, (iPWM[6] >> 4), (iPWM[6] << 4))) // wysanie ustawie - iRepeats = 0; // informacja, e poszo dobrze - iFaza = 0; //++iFaza; //ta faza zostaa zakoczona - // powinno jeszcze przyj potwierdzenie o kodzie 0x41 + case 3: // ustawienie wyjść analogowych, 0..4095 mapować na 0..65520 (<<4) + if (Write(0x41, 43 - 1, (iPWM[6] >> 4), (iPWM[6] << 4))) // wysłanie ustawień + iRepeats = 0; // informacja, że poszło dobrze + iFaza = 0; //++iFaza; //ta faza została zakończona + // powinno jeszcze przyjść potwierdzenie o kodzie 0x41 break; default: - iFaza = 0; // na wypadek, gdyby zbdzio po jakich zmianach w kodzie + iFaza = 0; // na wypadek, gdyby zbłądziło po jakichś zmianach w kodzie // iRepeats=0; } if (!iRepeats) bNoError = true; // jest OK - else if (iRepeats >= 10) // youBy 2014-07: przy 5 powtrzeniach sieje mi pauz po 2 razy na - // sekund, a przy 10 jest ok - { // przekroczenie liczby prb wymusza kolejn faz + else if (iRepeats >= 10) // youBy 2014-07: przy 5 powtórzeniach sieje mi pauzą po 2 razy na + // sekundę, a przy 10 jest ok + { // przekroczenie liczby prób wymusza kolejną fazę ++iFaza; iRepeats = 1; // w nowej fazie nowe szanse, ale nie od 0! - bNoError = false; // zgosi bd + bNoError = false; // zgłosić błąd } - return (bNoError); // true oznacza prawidowe dziaanie - // czy w przypadku bdu komunikacji z PoKeys wcza pauz? - // dopiero poprawne podczenie zeruje licznik prb + return (bNoError); // true oznacza prawidłowe działanie + // czy w przypadku błędu komunikacji z PoKeys włączać pauzę? + // dopiero poprawne podłączenie zeruje licznik prób }; diff --git a/Console/PoKeys55.h b/Console/PoKeys55.h index 4025e62d..a32cf529 100644 --- a/Console/PoKeys55.h +++ b/Console/PoKeys55.h @@ -11,18 +11,18 @@ http://mozilla.org/MPL/2.0/. #include //--------------------------------------------------------------------------- class TPoKeys55 -{ // komunikacja z PoKeys bez okrelania przeznaczenia pinw - unsigned char cRequest; // numer dania do sprawdzania odpowiedzi +{ // komunikacja z PoKeys bez określania przeznaczenia pinów + unsigned char cRequest; // numer żądania do sprawdzania odpowiedzi unsigned char OutputBuffer[65]; // Allocate a memory buffer equal to our endpoint size + 1 unsigned char InputBuffer[65]; // Allocate a memory buffer equal to our endpoint size + 1 - int iPWM[8]; // 0-5:wyjcia PWM,6:analogowe,7:czstotliwoc PWM + int iPWM[8]; // 0-5:wyjścia PWM,6:analogowe,7:częstotliwośc PWM int iPWMbits; int iLastCommand; int iFaza; - int iRepeats; // liczba powtrze - bool bNoError; // zerowany po przepenieniu licznika powtrze, ustawiany po udanej operacji + int iRepeats; // liczba powtórzeń + bool bNoError; // zerowany po przepełnieniu licznika powtórzeń, ustawiany po udanej operacji public: - float fAnalog[7]; // wejcia analogowe, stan <0.0,1.0> + float fAnalog[7]; // wejścia analogowe, stan <0.0,1.0> int iInputs[8]; TPoKeys55(); ~TPoKeys55(); diff --git a/DynObj.cpp b/DynObj.cpp index 2799e1d6..0d509f7f 100644 --- a/DynObj.cpp +++ b/DynObj.cpp @@ -1,4 +1,4 @@ -/* +/* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not @@ -28,45 +28,45 @@ http://mozilla.org/MPL/2.0/. #include "Ground.h" //bo Global::pGround->bDynamicRemove #include "Event.h" #include "Driver.h" -#include "Camera.h" //bo likwidujemy trzsienie +#include "Camera.h" //bo likwidujemy trzęsienie #include "Console.h" #include "Traction.h" -// Ra: taki zapis funkcjonuje lepiej, ale moe nie jest optymalny +// Ra: taki zapis funkcjonuje lepiej, ale może nie jest optymalny #define vWorldFront Math3D::vector3(0, 0, 1) #define vWorldUp Math3D::vector3(0, 1, 0) #define vWorldLeft CrossProduct(vWorldUp, vWorldFront) -// Ra: bo te poniej to si powielay w kadym module odobno +// Ra: bo te poniżej to się powielały w każdym module odobno // vector3 vWorldFront=vector3(0,0,1); // vector3 vWorldUp=vector3(0,1,0); // vector3 vWorldLeft=CrossProduct(vWorldUp,vWorldFront); #define M_2PI 6.283185307179586476925286766559; -const float maxrot = (M_PI / 3.0); // 60 +const float maxrot = (M_PI / 3.0); // 60° //--------------------------------------------------------------------------- void TAnimPant::AKP_4E() -{ // ustawienie wymiarw dla pantografu AKP-4E - vPos = vector3(0, 0, 0); // przypisanie domynych wspczynnikw do pantografw +{ // ustawienie wymiarów dla pantografu AKP-4E + vPos = vector3(0, 0, 0); // przypisanie domyśnych współczynników do pantografów fLenL1 = 1.22; // 1.176289 w modelach fLenU1 = 1.755; // 1.724482197 w modelach - fHoriz = 0.535; // 0.54555075 przesunicie lizgu w dugoci pojazdu wzgldem + fHoriz = 0.535; // 0.54555075 przesunięcie ślizgu w długości pojazdu względem // osi obrotu dolnego // ramienia - fHeight = 0.07; // wysoko lizgu ponad o obrotu - fWidth = 0.635; // poowa szerokoci lizgu, 0.635 dla AKP-1 i AKP-4E + fHeight = 0.07; // wysokość ślizgu ponad oś obrotu + fWidth = 0.635; // połowa szerokości ślizgu, 0.635 dla AKP-1 i AKP-4E fAngleL0 = DegToRad(2.8547285515689267247882521833308); - fAngleL = fAngleL0; // pocztkowy kt dolnego ramienia - // fAngleU0=acos((1.22*cos(fAngleL)+0.535)/1.755); //grne rami - fAngleU0 = acos((fLenL1 * cos(fAngleL) + fHoriz) / fLenU1); // grne rami - fAngleU = fAngleU0; // pocztkowy kt - // PantWys=1.22*sin(fAngleL)+1.755*sin(fAngleU); //wysoko pocztkowa - PantWys = fLenL1 * sin(fAngleL) + fLenU1 * sin(fAngleU) + fHeight; // wysoko pocztkowa + fAngleL = fAngleL0; // początkowy kąt dolnego ramienia + // fAngleU0=acos((1.22*cos(fAngleL)+0.535)/1.755); //górne ramię + fAngleU0 = acos((fLenL1 * cos(fAngleL) + fHoriz) / fLenU1); // górne ramię + fAngleU = fAngleU0; // początkowy kąt + // PantWys=1.22*sin(fAngleL)+1.755*sin(fAngleU); //wysokość początkowa + PantWys = fLenL1 * sin(fAngleL) + fLenU1 * sin(fAngleU) + fHeight; // wysokość początkowa PantTraction = PantWys; hvPowerWire = NULL; fWidthExtra = 0.381; //(2.032m-1.027)/2 - // poza obszarem roboczym jest aproksymacja aman o 5 odcinkach + // poza obszarem roboczym jest aproksymacja łamaną o 5 odcinkach fHeightExtra[0] = 0.0; //+0.0762 fHeightExtra[1] = -0.01; //+0.1524 fHeightExtra[2] = -0.03; //+0.2286 @@ -75,18 +75,18 @@ void TAnimPant::AKP_4E() }; //--------------------------------------------------------------------------- int TAnim::TypeSet(int i, int fl) -{ // ustawienie typu animacji i zalenej od - // niego iloci animowanych submodeli - fMaxDist = -1.0; // normalnie nie pokazywa +{ // ustawienie typu animacji i zależnej od + // niego ilości animowanych submodeli + fMaxDist = -1.0; // normalnie nie pokazywać switch (i) - { // maska 0x000F: ile uywa wskanikw na submodele (0 gdy jeden, + { // maska 0x000F: ile używa wskaźników na submodele (0 gdy jeden, // wtedy bez tablicy) // maska 0x00F0: - // 0-osie,1-drzwi,2-obracane,3-zderzaki,4-wzki,5-pantografy,6-toki - // maska 0xFF00: ile uywa liczb float dla wspczynnikw i stanu + // 0-osie,1-drzwi,2-obracane,3-zderzaki,4-wózki,5-pantografy,6-tłoki + // maska 0xFF00: ile używa liczb float dla współczynników i stanu case 0: iFlags = 0x000; - break; // 0-o + break; // 0-oś case 1: iFlags = 0x010; break; // 1-drzwi @@ -94,13 +94,13 @@ int TAnim::TypeSet(int i, int fl) iFlags = 0x020; fParam = fl ? new float[fl] : NULL; iFlags += fl << 8; - break; // 2-wahacz, dwignia itp. + break; // 2-wahacz, dźwignia itp. case 3: iFlags = 0x030; break; // 3-zderzak case 4: iFlags = 0x040; - break; // 4-wzek + break; // 4-wózek case 5: // 5-pantograf - 5 submodeli iFlags = 0x055; fParamPants = new TAnimPant(); @@ -108,143 +108,143 @@ int TAnim::TypeSet(int i, int fl) break; case 6: iFlags = 0x068; - break; // 6-tok i rozrzd - 8 submodeli + break; // 6-tłok i rozrząd - 8 submodeli default: iFlags = 0; } yUpdate = nullptr; - return iFlags & 15; // ile wskanikw rezerwowa dla danego typu animacji + return iFlags & 15; // ile wskaźników rezerwować dla danego typu animacji }; TAnim::TAnim() -{ // potrzebne to w ogle? +{ // potrzebne to w ogóle? iFlags = -1; // nieznany typ - destruktor nic nie usuwa }; TAnim::~TAnim() { // usuwanie animacji switch (iFlags & 0xF0) - { // usuwanie struktur, zalenie ile zostao stworzonych - case 0x20: // 2-wahacz, dwignia itp. + { // usuwanie struktur, zależnie ile zostało stworzonych + case 0x20: // 2-wahacz, dźwignia itp. delete fParam; break; case 0x50: // 5-pantograf delete fParamPants; break; - case 0x60: // 6-tok i rozrzd + case 0x60: // 6-tłok i rozrząd break; } }; void TAnim::Parovoz(){ - // animowanie toka i rozrzdu parowozu + // animowanie tłoka i rozrządu parowozu }; //--------------------------------------------------------------------------- TDynamicObject * TDynamicObject::FirstFind(int &coupler_nr, int cf) -{ // szukanie skrajnego poczonego pojazdu w pociagu +{ // szukanie skrajnego połączonego pojazdu w pociagu // od strony sprzegu (coupler_nr) obiektu (start) TDynamicObject *temp = this; - for (int i = 0; i < 300; i++) // ograniczenie do 300 na wypadek zaptlenia skadu + for (int i = 0; i < 300; i++) // ograniczenie do 300 na wypadek zapętlenia składu { if (!temp) - return NULL; // Ra: zabezpieczenie przed ewentaulnymi bdami sprzgw + return NULL; // Ra: zabezpieczenie przed ewentaulnymi błędami sprzęgów if ((temp->MoverParameters->Couplers[coupler_nr].CouplingFlag & cf) != cf) - return temp; // nic nie ma ju dalej podczone sprzgiem cf + return temp; // nic nie ma już dalej podłączone sprzęgiem cf if (coupler_nr == 0) - { // jeeli szukamy od sprzgu 0 - if (temp->PrevConnected) // jeli mamy co z przodu + { // jeżeli szukamy od sprzęgu 0 + if (temp->PrevConnected) // jeśli mamy coś z przodu { - if (temp->PrevConnectedNo == 0) // jeli pojazd od strony sprzgu 0 jest odwrcony - coupler_nr = 1 - coupler_nr; // to zmieniamy kierunek sprzgu + if (temp->PrevConnectedNo == 0) // jeśli pojazd od strony sprzęgu 0 jest odwrócony + coupler_nr = 1 - coupler_nr; // to zmieniamy kierunek sprzęgu temp = temp->PrevConnected; // ten jest od strony 0 } else - return temp; // jeli jednak z przodu nic nie ma + return temp; // jeśli jednak z przodu nic nie ma } else { if (temp->NextConnected) { - if (temp->NextConnectedNo == 1) // jeli pojazd od strony sprzgu 1 jest odwrcony - coupler_nr = 1 - coupler_nr; // to zmieniamy kierunek sprzgu + if (temp->NextConnectedNo == 1) // jeśli pojazd od strony sprzęgu 1 jest odwrócony + coupler_nr = 1 - coupler_nr; // to zmieniamy kierunek sprzęgu temp = temp->NextConnected; // ten pojazd jest od strony 1 } else - return temp; // jeli jednak z tyu nic nie ma + return temp; // jeśli jednak z tyłu nic nie ma } } - return NULL; // to tylko po wyczerpaniu ptli + return NULL; // to tylko po wyczerpaniu pętli }; //--------------------------------------------------------------------------- float TDynamicObject::GetEPP() -{ // szukanie skrajnego poczonego pojazdu w +{ // szukanie skrajnego połączonego pojazdu w // pociagu // od strony sprzegu (coupler_nr) obiektu (start) TDynamicObject *temp = this; int coupler_nr = 0; float eq = 0, am = 0; - for (int i = 0; i < 300; i++) // ograniczenie do 300 na wypadek zaptlenia skadu + for (int i = 0; i < 300; i++) // ograniczenie do 300 na wypadek zapętlenia składu { if (!temp) - break; // Ra: zabezpieczenie przed ewentaulnymi bdami sprzgw + break; // Ra: zabezpieczenie przed ewentaulnymi błędami sprzęgów eq += temp->MoverParameters->PipePress * temp->MoverParameters->Dim.L; am += temp->MoverParameters->Dim.L; if ((temp->MoverParameters->Couplers[coupler_nr].CouplingFlag & 2) != 2) - break; // nic nie ma ju dalej podczone + break; // nic nie ma już dalej podłączone if (coupler_nr == 0) - { // jeeli szukamy od sprzgu 0 - if (temp->PrevConnected) // jeli mamy co z przodu + { // jeżeli szukamy od sprzęgu 0 + if (temp->PrevConnected) // jeśli mamy coś z przodu { - if (temp->PrevConnectedNo == 0) // jeli pojazd od strony sprzgu 0 jest odwrcony - coupler_nr = 1 - coupler_nr; // to zmieniamy kierunek sprzgu + if (temp->PrevConnectedNo == 0) // jeśli pojazd od strony sprzęgu 0 jest odwrócony + coupler_nr = 1 - coupler_nr; // to zmieniamy kierunek sprzęgu temp = temp->PrevConnected; // ten jest od strony 0 } else - break; // jeli jednak z przodu nic nie ma + break; // jeśli jednak z przodu nic nie ma } else { if (temp->NextConnected) { - if (temp->NextConnectedNo == 1) // jeli pojazd od strony sprzgu 1 jest odwrcony - coupler_nr = 1 - coupler_nr; // to zmieniamy kierunek sprzgu + if (temp->NextConnectedNo == 1) // jeśli pojazd od strony sprzęgu 1 jest odwrócony + coupler_nr = 1 - coupler_nr; // to zmieniamy kierunek sprzęgu temp = temp->NextConnected; // ten pojazd jest od strony 1 } else - break; // jeli jednak z tyu nic nie ma + break; // jeśli jednak z tyłu nic nie ma } } temp = this; coupler_nr = 1; - for (int i = 0; i < 300; i++) // ograniczenie do 300 na wypadek zaptlenia skadu + for (int i = 0; i < 300; i++) // ograniczenie do 300 na wypadek zapętlenia składu { if (!temp) - break; // Ra: zabezpieczenie przed ewentaulnymi bdami sprzgw + break; // Ra: zabezpieczenie przed ewentaulnymi błędami sprzęgów eq += temp->MoverParameters->PipePress * temp->MoverParameters->Dim.L; am += temp->MoverParameters->Dim.L; if ((temp->MoverParameters->Couplers[coupler_nr].CouplingFlag & 2) != 2) - break; // nic nie ma ju dalej podczone + break; // nic nie ma już dalej podłączone if (coupler_nr == 0) - { // jeeli szukamy od sprzgu 0 - if (temp->PrevConnected) // jeli mamy co z przodu + { // jeżeli szukamy od sprzęgu 0 + if (temp->PrevConnected) // jeśli mamy coś z przodu { - if (temp->PrevConnectedNo == 0) // jeli pojazd od strony sprzgu 0 jest odwrcony - coupler_nr = 1 - coupler_nr; // to zmieniamy kierunek sprzgu + if (temp->PrevConnectedNo == 0) // jeśli pojazd od strony sprzęgu 0 jest odwrócony + coupler_nr = 1 - coupler_nr; // to zmieniamy kierunek sprzęgu temp = temp->PrevConnected; // ten jest od strony 0 } else - break; // jeli jednak z przodu nic nie ma + break; // jeśli jednak z przodu nic nie ma } else { if (temp->NextConnected) { - if (temp->NextConnectedNo == 1) // jeli pojazd od strony sprzgu 1 jest odwrcony - coupler_nr = 1 - coupler_nr; // to zmieniamy kierunek sprzgu + if (temp->NextConnectedNo == 1) // jeśli pojazd od strony sprzęgu 1 jest odwrócony + coupler_nr = 1 - coupler_nr; // to zmieniamy kierunek sprzęgu temp = temp->NextConnected; // ten pojazd jest od strony 1 } else - break; // jeli jednak z tyu nic nie ma + break; // jeśli jednak z tyłu nic nie ma } } eq -= MoverParameters->PipePress * MoverParameters->Dim.L; @@ -254,43 +254,43 @@ float TDynamicObject::GetEPP() //--------------------------------------------------------------------------- TDynamicObject * TDynamicObject::GetFirstDynamic(int cpl_type, int cf) -{ // Szukanie skrajnego poczonego pojazdu w pociagu +{ // Szukanie skrajnego połączonego pojazdu w pociagu // od strony sprzegu (cpl_type) obiektu szukajacego // Ra: wystarczy jedna funkcja do szukania w obu kierunkach - return FirstFind(cpl_type, cf); // uywa referencji + return FirstFind(cpl_type, cf); // używa referencji }; /* TDynamicObject* TDynamicObject::GetFirstCabDynamic(int cpl_type) -{//ZiomalCl: szukanie skrajnego obiektu z kabin +{//ZiomalCl: szukanie skrajnego obiektu z kabiną TDynamicObject* temp=this; int coupler_nr=cpl_type; - for (int i=0;i<300;i++) //ograniczenie do 300 na wypadek zaptlenia skadu + for (int i=0;i<300;i++) //ograniczenie do 300 na wypadek zapętlenia składu { if (!temp) - return NULL; //Ra: zabezpieczenie przed ewentaulnymi bdami sprzgw + return NULL; //Ra: zabezpieczenie przed ewentaulnymi błędami sprzęgów if (temp->MoverParameters->CabNo!=0&&temp->MoverParameters->SandCapacity!=0) - return temp; //nic nie ma ju dalej podczone + return temp; //nic nie ma już dalej podłączone if (temp->MoverParameters->Couplers[coupler_nr].CouplingFlag==0) return NULL; if (coupler_nr==0) - {//jeeli szukamy od sprzgu 0 - if (temp->PrevConnectedNo==0) //jeli pojazd od strony sprzgu 0 jest -odwrcony - coupler_nr=1-coupler_nr; //to zmieniamy kierunek sprzgu + {//jeżeli szukamy od sprzęgu 0 + if (temp->PrevConnectedNo==0) //jeśli pojazd od strony sprzęgu 0 jest +odwrócony + coupler_nr=1-coupler_nr; //to zmieniamy kierunek sprzęgu if (temp->PrevConnected) temp=temp->PrevConnected; //ten jest od strony 0 } else { - if (temp->NextConnectedNo==1) //jeli pojazd od strony sprzgu 1 jest -odwrcony - coupler_nr=1-coupler_nr; //to zmieniamy kierunek sprzgu + if (temp->NextConnectedNo==1) //jeśli pojazd od strony sprzęgu 1 jest +odwrócony + coupler_nr=1-coupler_nr; //to zmieniamy kierunek sprzęgu if (temp->NextConnected) temp=temp->NextConnected; //ten pojazd jest od strony 1 } } - return NULL; //to tylko po wyczerpaniu ptli + return NULL; //to tylko po wyczerpaniu pętli }; */ @@ -301,7 +301,7 @@ void TDynamicObject::ABuSetModelShake(vector3 mShake) int TDynamicObject::GetPneumatic(bool front, bool red) { - int x, y, z; // 1=prosty, 2=skony + int x, y, z; // 1=prosty, 2=skośny if (red) { if (front) @@ -325,13 +325,13 @@ int TDynamicObject::GetPneumatic(bool front, bool red) x = btPneumatic2.GetStatus(); y = btPneumatic2r.GetStatus(); } - z = 0; // brak wy? + z = 0; // brak węży? if ((x == 1) && (y == 1)) z = 3; // dwa proste if ((x == 2) && (y == 0)) - z = 1; // lewy skony, brak prawego + z = 1; // lewy skośny, brak prawego if ((x == 0) && (y == 2)) - z = 2; // brak lewego, prawy skony + z = 2; // brak lewego, prawy skośny return z; } @@ -343,20 +343,20 @@ void TDynamicObject::SetPneumatic(bool front, bool red) tamten = 0; ten = GetPneumatic(front, red); // 1=lewy skos,2=prawy skos,3=dwa proste if (front) - if (PrevConnected) // pojazd od strony sprzgu 0 + if (PrevConnected) // pojazd od strony sprzęgu 0 tamten = PrevConnected->GetPneumatic((PrevConnectedNo == 0 ? true : false), red); if (!front) - if (NextConnected) // pojazd od strony sprzgu 1 + if (NextConnected) // pojazd od strony sprzęgu 1 tamten = NextConnected->GetPneumatic((NextConnectedNo == 0 ? true : false), red); - if (ten == tamten) // jeli ukad jest symetryczny + if (ten == tamten) // jeśli układ jest symetryczny switch (ten) { case 1: x = 2; - break; // mamy lewy skos, da lewe skosy + break; // mamy lewy skos, dać lewe skosy case 2: x = 3; - break; // mamy prawy skos, da prawe skosy + break; // mamy prawy skos, dać prawe skosy case 3: // wszystkie cztery na prosto if (MoverParameters->Couplers[front ? 0 : 1].Render) x = 1; @@ -382,14 +382,14 @@ void TDynamicObject::SetPneumatic(bool front, bool red) cp1 = x; else sp1 = x; - } // ktry pokazywa z przodu + } // który pokazywać z przodu else { if (red) cp2 = x; else sp2 = x; - } // ktry pokazywa z tyu + } // który pokazywać z tyłu } void TDynamicObject::UpdateAxle(TAnim *pAnim) @@ -398,7 +398,7 @@ void TDynamicObject::UpdateAxle(TAnim *pAnim) }; void TDynamicObject::UpdateBoogie(TAnim *pAnim) -{ // animacja wzka +{ // animacja wózka pAnim->smAnimated->SetRotate(float3(1, 0, 0), *pAnim->dWheelAngle); }; @@ -406,9 +406,9 @@ void TDynamicObject::UpdateDoorTranslate(TAnim *pAnim) { // animacja drzwi - przesuw // WriteLog("Dla drzwi nr:", i); // WriteLog("Wspolczynnik", DoorSpeedFactor[i]); - // Ra: te wspczynniki s bez sensu, bo modyfikuj wektor przesunicia - // w efekcie drzwi otwierane na zewntrz bd odlatywac dowolnie daleko :) - // ograniczyem zakres ruchu funkcj max + // Ra: te współczynniki są bez sensu, bo modyfikują wektor przesunięcia + // w efekcie drzwi otwierane na zewnątrz będą odlatywac dowolnie daleko :) + // ograniczyłem zakres ruchu funkcją max if (pAnim->smAnimated) { if (pAnim->iNumber & 1) @@ -421,10 +421,10 @@ void TDynamicObject::UpdateDoorTranslate(TAnim *pAnim) }; void TDynamicObject::UpdateDoorRotate(TAnim *pAnim) -{ // animacja drzwi - obrt +{ // animacja drzwi - obrót if (pAnim->smAnimated) { // if (MoverParameters->DoorOpenMethod==2) //obrotowe - // albo dwjomne (trzeba kombinowac + // albo dwójłomne (trzeba kombinowac // submodelami i ShiftL=90,R=180) if (pAnim->iNumber & 1) pAnim->smAnimated->SetRotate(float3(1, 0, 0), dDoorMoveR); @@ -434,55 +434,55 @@ void TDynamicObject::UpdateDoorRotate(TAnim *pAnim) }; void TDynamicObject::UpdateDoorFold(TAnim *pAnim) -{ // animacja drzwi - obrt +{ // animacja drzwi - obrót if (pAnim->smAnimated) { // if (MoverParameters->DoorOpenMethod==2) //obrotowe - // albo dwjomne (trzeba kombinowac + // albo dwójłomne (trzeba kombinowac // submodelami i ShiftL=90,R=180) if (pAnim->iNumber & 1) { pAnim->smAnimated->SetRotate(float3(0, 0, 1), dDoorMoveR); - TSubModel *sm = pAnim->smAnimated->ChildGet(); // skrzydo mniejsze + TSubModel *sm = pAnim->smAnimated->ChildGet(); // skrzydło mniejsze if (sm) { - sm->SetRotate(float3(0, 0, 1), -dDoorMoveR - dDoorMoveR); // skrzydo wiksze + sm->SetRotate(float3(0, 0, 1), -dDoorMoveR - dDoorMoveR); // skrzydło większe sm = sm->ChildGet(); if (sm) - sm->SetRotate(float3(0, 1, 0), dDoorMoveR); // podnek? + sm->SetRotate(float3(0, 1, 0), dDoorMoveR); // podnóżek? } } else { pAnim->smAnimated->SetRotate(float3(0, 0, 1), dDoorMoveL); // SubModel->SetRotate(float3(0,1,0),fValue*360.0); - TSubModel *sm = pAnim->smAnimated->ChildGet(); // skrzydo mniejsze + TSubModel *sm = pAnim->smAnimated->ChildGet(); // skrzydło mniejsze if (sm) { - sm->SetRotate(float3(0, 0, 1), -dDoorMoveL - dDoorMoveL); // skrzydo wiksze + sm->SetRotate(float3(0, 0, 1), -dDoorMoveL - dDoorMoveL); // skrzydło większe sm = sm->ChildGet(); if (sm) - sm->SetRotate(float3(0, 1, 0), dDoorMoveL); // podnek? + sm->SetRotate(float3(0, 1, 0), dDoorMoveL); // podnóżek? } } } }; void TDynamicObject::UpdatePant(TAnim *pAnim) -{ // animacja pantografu - 4 obracane ramiona, lizg pity +{ // animacja pantografu - 4 obracane ramiona, ślizg piąty float a, b, c; a = RadToDeg(pAnim->fParamPants->fAngleL - pAnim->fParamPants->fAngleL0); b = RadToDeg(pAnim->fParamPants->fAngleU - pAnim->fParamPants->fAngleU0); c = a + b; if (pAnim->smElement[0]) - pAnim->smElement[0]->SetRotate(float3(-1, 0, 0), a); // dolne rami + pAnim->smElement[0]->SetRotate(float3(-1, 0, 0), a); // dolne ramię if (pAnim->smElement[1]) pAnim->smElement[1]->SetRotate(float3(1, 0, 0), a); if (pAnim->smElement[2]) - pAnim->smElement[2]->SetRotate(float3(1, 0, 0), c); // grne rami + pAnim->smElement[2]->SetRotate(float3(1, 0, 0), c); // górne ramię if (pAnim->smElement[3]) pAnim->smElement[3]->SetRotate(float3(-1, 0, 0), c); if (pAnim->smElement[4]) - pAnim->smElement[4]->SetRotate(float3(-1, 0, 0), b); //lizg + pAnim->smElement[4]->SetRotate(float3(-1, 0, 0), b); //ślizg }; void TDynamicObject::UpdateDoorPlug(TAnim *pAnim) @@ -503,22 +503,22 @@ void TDynamicObject::UpdateDoorPlug(TAnim *pAnim) }; void TDynamicObject::UpdateLeverDouble(TAnim *pAnim) -{ // animacja gaki zalena od double +{ // animacja gałki zależna od double pAnim->smAnimated->SetRotate(float3(1, 0, 0), pAnim->fSpeed * *pAnim->fDoubleBase); }; void TDynamicObject::UpdateLeverFloat(TAnim *pAnim) -{ // animacja gaki zalena od float +{ // animacja gałki zależna od float pAnim->smAnimated->SetRotate(float3(1, 0, 0), pAnim->fSpeed * *pAnim->fFloatBase); }; void TDynamicObject::UpdateLeverInt(TAnim *pAnim) -{ // animacja gaki zalena od int +{ // animacja gałki zależna od int pAnim->smAnimated->SetRotate(float3(1, 0, 0), pAnim->fSpeed * *pAnim->iIntBase); }; void TDynamicObject::UpdateLeverEnum(TAnim *pAnim) -{ // ustawienie kta na - // warto wskazan przez +{ // ustawienie kąta na + // wartość wskazaną przez // int z tablicy fParam - // pAnim->fParam[0]; - doda lepko + // pAnim->fParam[0]; - dodać lepkość pAnim->smAnimated->SetRotate(float3(1, 0, 0), pAnim->fParam[*pAnim->iIntBase]); }; @@ -530,23 +530,23 @@ void __inline TDynamicObject::ABuLittleUpdate(double ObjSqrDist) // obiektach, // ktorych i tak nie widac // NBMX wrzesien, MC listopad: zuniwersalnione - btnOn = false; // czy przywrci stan domylny po renderowaniu + btnOn = false; // czy przywrócić stan domyślny po renderowaniu - if (mdLoad) // tymczasowo adunek na poziom podogi + if (mdLoad) // tymczasowo ładunek na poziom podłogi if (vFloor.z > 0.0) mdLoad->GetSMRoot()->SetTranslate(modelShake + vFloor); - if (ObjSqrDist < 160000) // gdy bliej ni 400m + if (ObjSqrDist < 160000) // gdy bliżej niż 400m { for (int i = 0; i < iAnimations; ++i) // wykonanie kolejnych animacji if (ObjSqrDist < pAnimations[i].fMaxDist) - if (pAnimations[i].yUpdate) // jeli zdefiniowana funkcja + if (pAnimations[i].yUpdate) // jeśli zdefiniowana funkcja pAnimations[i].yUpdate(pAnimations + - i); // aktualizacja animacji (pooenia submodeli - if (ObjSqrDist < 2500) // gdy bliej ni 50m + i); // aktualizacja animacji (położenia submodeli + if (ObjSqrDist < 2500) // gdy bliżej niż 50m { // ABu290105: rzucanie pudlem - // te animacje wymagaj bananw w modelach! + // te animacje wymagają bananów w modelach! mdModel->GetSMRoot()->SetTranslate(modelShake); if (mdKabina) mdKabina->GetSMRoot()->SetTranslate(modelShake); @@ -871,7 +871,7 @@ void __inline TDynamicObject::ABuLittleUpdate(double ObjSqrDist) if (Mechanik) { // rysowanie figurki mechanika /* - if (smMechanik0) // mechanik od strony sprzgu 0 + if (smMechanik0) // mechanik od strony sprzęgu 0 if (smMechanik1) // jak jest drugi, to pierwszego jedynie pokazujemy smMechanik0->iVisible = MoverParameters->ActiveCab > 0; else @@ -879,9 +879,9 @@ void __inline TDynamicObject::ABuLittleUpdate(double ObjSqrDist) smMechanik0->iVisible = (MoverParameters->ActiveCab != 0); smMechanik0->SetRotate( float3(0, 0, 1), - MoverParameters->ActiveCab >= 0 ? 0 : 180); // obrt wzgldem osi Z + MoverParameters->ActiveCab >= 0 ? 0 : 180); // obrót względem osi Z } - if (smMechanik1) // mechanik od strony sprzgu 1 + if (smMechanik1) // mechanik od strony sprzęgu 1 smMechanik1->iVisible = MoverParameters->ActiveCab < 0; */ if (MoverParameters->ActiveCab > 0) @@ -896,12 +896,12 @@ void __inline TDynamicObject::ABuLittleUpdate(double ObjSqrDist) } } // ABu: Przechyly na zakretach - // Ra: przechyk zaatwiamy na etapie przesuwania modelu - // if (ObjSqrDist<80000) ABuModelRoll(); //przechyki od 400m + // Ra: przechyłkę załatwiamy na etapie przesuwania modelu + // if (ObjSqrDist<80000) ABuModelRoll(); //przechyłki od 400m } if (MoverParameters->Battery) - { // sygnay czoa pociagu //Ra: wywietlamy bez - // ogranicze odlegoci, by byy widoczne z + { // sygnały czoła pociagu //Ra: wyświetlamy bez + // ograniczeń odległości, by były widoczne z // daleka if (TestFlag(iLights[0], 1)) { @@ -946,62 +946,62 @@ void __inline TDynamicObject::ABuLittleUpdate(double ObjSqrDist) double ABuAcos(const vector3 &calc_temp) { // Odpowiednik funkcji Arccos, bo cos // mi tam nie dzialalo. - return atan2(-calc_temp.x, calc_temp.z); // Ra: tak prociej + return atan2(-calc_temp.x, calc_temp.z); // Ra: tak prościej } TDynamicObject * TDynamicObject::ABuFindNearestObject(TTrack *Track, TDynamicObject *MyPointer, int &CouplNr) { // zwraca wskaznik do obiektu znajdujacego sie na torze - // (Track), ktrego sprzg jest najblizszy + // (Track), którego sprzęg jest najblizszy // kamerze - // suy np. do czenia i rozpinania sprzgw + // służy np. do łączenia i rozpinania sprzęgów // WE: Track - tor, na ktorym odbywa sie poszukiwanie // MyPointer - wskaznik do obiektu szukajacego - // WY: CouplNr - ktry sprzg znalezionego obiektu jest bliszy kamerze + // WY: CouplNr - który sprzęg znalezionego obiektu jest bliższy kamerze // Uwaga! Jesli CouplNr==-2 to szukamy njblizszego obiektu, a nie sprzegu!!! if ((Track->iNumDynamics) > 0) - { // o ile w ogle jest co przeglda na tym torze + { // o ile w ogóle jest co przeglądać na tym torze // vector3 poz; //pozycja pojazdu XYZ w scenerii - // vector3 kon; //wektor czoa wzgldem rodka pojazdu wzglem pocztku toru - vector3 tmp; // wektor pomidzy kamer i sprzgiem - double dist; // odlego + // vector3 kon; //wektor czoła względem środka pojazdu wzglęem początku toru + vector3 tmp; // wektor pomiędzy kamerą i sprzęgiem + double dist; // odległość for (int i = 0; i < Track->iNumDynamics; i++) { if (CouplNr == -2) { // wektor [kamera-obiekt] - poszukiwanie obiektu tmp = Global::GetCameraPosition() - Track->Dynamics[i]->vPosition; - dist = tmp.x * tmp.x + tmp.y * tmp.y + tmp.z * tmp.z; // odlego do kwadratu - if (dist < 100.0) // 10 metrw + dist = tmp.x * tmp.x + tmp.y * tmp.y + tmp.z * tmp.z; // odległość do kwadratu + if (dist < 100.0) // 10 metrów return Track->Dynamics[i]; } - else // jeli (CouplNr) inne niz -2, szukamy sprzgu + else // jeśli (CouplNr) inne niz -2, szukamy sprzęgu { // wektor [kamera-sprzeg0], potem [kamera-sprzeg1] // Powinno byc wyliczone, ale nie zaszkodzi drugi raz: - //(bo co, jesli nie wykonuje sie obrotow wozkow?) - Ra: ale zawsze s + //(bo co, jesli nie wykonuje sie obrotow wozkow?) - Ra: ale zawsze są // liczone - // wsprzdne sprzgw + // współrzędne sprzęgów // Track->Dynamics[i]->modelRot.z=ABuAcos(Track->Dynamics[i]->Axle0.pPosition-Track->Dynamics[i]->Axle1.pPosition); - // poz=Track->Dynamics[i]->vPosition; //pozycja rodka pojazdu - // kon=vector3( //pooenie przodu wzgldem rodka + // poz=Track->Dynamics[i]->vPosition; //pozycja środka pojazdu + // kon=vector3( //położenie przodu względem środka // -((0.5*Track->Dynamics[i]->MoverParameters->Dim.L)*sin(Track->Dynamics[i]->modelRot.z)), - // 0, //yyy... jeli due pochylenie i dugi pojazd, to moe by problem + // 0, //yyy... jeśli duże pochylenie i długi pojazd, to może być problem // +((0.5*Track->Dynamics[i]->MoverParameters->Dim.L)*cos(Track->Dynamics[i]->modelRot.z)) //); tmp = Global::GetCameraPosition() - - Track->Dynamics[i]->vCoulpler[0]; // Ra: pozycje sprzgw te s zawsze liczone - dist = tmp.x * tmp.x + tmp.y * tmp.y + tmp.z * tmp.z; // odlego do kwadratu - if (dist < 25.0) // 5 metrw + Track->Dynamics[i]->vCoulpler[0]; // Ra: pozycje sprzęgów też są zawsze liczone + dist = tmp.x * tmp.x + tmp.y * tmp.y + tmp.z * tmp.z; // odległość do kwadratu + if (dist < 25.0) // 5 metrów { CouplNr = 0; return Track->Dynamics[i]; } tmp = Global::GetCameraPosition() - Track->Dynamics[i]->vCoulpler[1]; - dist = tmp.x * tmp.x + tmp.y * tmp.y + tmp.z * tmp.z; // odlego do kwadratu - if (dist < 25.0) // 5 metrw + dist = tmp.x * tmp.x + tmp.y * tmp.y + tmp.z * tmp.z; // odległość do kwadratu + if (dist < 25.0) // 5 metrów { CouplNr = 1; return Track->Dynamics[i]; @@ -1017,21 +1017,21 @@ TDynamicObject * TDynamicObject::ABuScanNearestObject(TTrack *Track, double Scan double ScanDist, int &CouplNr) { // skanowanie toru w poszukiwaniu obiektu najblizszego // kamerze - // double MyScanDir=ScanDir; //Moja orientacja na torze. //Ra: nie uywane + // double MyScanDir=ScanDir; //Moja orientacja na torze. //Ra: nie używane if (ABuGetDirection() < 0) ScanDir = -ScanDir; TDynamicObject *FoundedObj; FoundedObj = - ABuFindNearestObject(Track, this, CouplNr); // zwraca numer sprzgu znalezionego pojazdu + ABuFindNearestObject(Track, this, CouplNr); // zwraca numer sprzęgu znalezionego pojazdu if (FoundedObj == NULL) { double ActDist; // Przeskanowana odleglosc. double CurrDist = 0; // Aktualna dlugosc toru. if (ScanDir >= 0) ActDist = - Track->Length() - RaTranslationGet(); //???-przesunicie wzka wzgldem Point1 toru + Track->Length() - RaTranslationGet(); //???-przesunięcie wózka względem Point1 toru else - ActDist = RaTranslationGet(); // przesunicie wzka wzgldem Point1 toru + ActDist = RaTranslationGet(); // przesunięcie wózka względem Point1 toru while (ActDist < ScanDist) { ActDist += CurrDist; @@ -1045,7 +1045,7 @@ TDynamicObject * TDynamicObject::ABuScanNearestObject(TTrack *Track, double Scan else Track = Track->CurrentNext(); } - else // do tyu + else // do tyłu { if (Track->iPrevDirection) Track = Track->CurrentPrev(); @@ -1071,24 +1071,24 @@ TDynamicObject * TDynamicObject::ABuScanNearestObject(TTrack *Track, double Scan // ABu 01.11.04 poczatek wyliczania przechylow pudla ********************** void TDynamicObject::ABuModelRoll() -{ // ustawienie przechyki pojazdu i jego - // zawartoci - // Ra: przechyk zaatwiamy na etapie przesuwania modelu +{ // ustawienie przechyłki pojazdu i jego + // zawartości + // Ra: przechyłkę załatwiamy na etapie przesuwania modelu } // ABu 06.05.04 poczatek wyliczania obrotow wozkow ********************** void TDynamicObject::ABuBogies() { // Obracanie wozkow na zakretach. Na razie - // uwzgldnia tylko zakrty, + // uwzględnia tylko zakręty, // bez zadnych gorek i innych przeszkod. if ((smBogie[0] != NULL) && (smBogie[1] != NULL)) { - // modelRot.z=ABuAcos(Axle0.pPosition-Axle1.pPosition); //kt obrotu pojazdu + // modelRot.z=ABuAcos(Axle0.pPosition-Axle1.pPosition); //kąt obrotu pojazdu // [rad] // bogieRot[0].z=ABuAcos(Axle0.pPosition-Axle3.pPosition); bogieRot[0].z = Axle0.vAngles.z; - bogieRot[0] = RadToDeg(modelRot - bogieRot[0]); // mnoenie wektora przez sta + bogieRot[0] = RadToDeg(modelRot - bogieRot[0]); // mnożenie wektora przez stałą smBogie[0]->SetRotateXYZ(bogieRot[0]); // bogieRot[1].z=ABuAcos(Axle2.pPosition-Axle1.pPosition); bogieRot[1].z = Axle1.vAngles.z; @@ -1112,19 +1112,19 @@ void TDynamicObject::ABuCheckMyTrack() OldTrack->RemoveDynamicObject(this); NewTrack->AddDynamicObject(this); } - iAxleFirst = 0; // pojazd powizany z przedni osi - Axle0 + iAxleFirst = 0; // pojazd powiązany z przednią osią - Axle0 } -// Ra: w poniszej funkcji jest problem ze sprzgami +// Ra: w poniższej funkcji jest problem ze sprzęgami TDynamicObject * TDynamicObject::ABuFindObject(TTrack *Track, int ScanDir, BYTE &CouplFound, double &dist) -{ // Zwraca wskanik najbliszego obiektu znajdujcego si - // na torze w okrelonym kierunku, ale tylko wtedy, kiedy - // obiekty mog si zderzy, tzn. nie mijaj si. +{ // Zwraca wskaźnik najbliższego obiektu znajdującego się + // na torze w określonym kierunku, ale tylko wtedy, kiedy + // obiekty mogą się zderzyć, tzn. nie mijają się. // WE: Track - tor, na ktorym odbywa sie poszukiwanie, - // MyPointer - wskaznik do obiektu szukajacego. //Ra: zamieniem na "this" - // ScanDir - kierunek szukania na torze (+1:w stron Point2, -1:w stron + // MyPointer - wskaznik do obiektu szukajacego. //Ra: zamieniłem na "this" + // ScanDir - kierunek szukania na torze (+1:w stronę Point2, -1:w stronę // Point1) // MyScanDir - kierunek szukania obiektu szukajacego (na jego torze); Ra: // nie potrzebne @@ -1133,67 +1133,67 @@ TDynamicObject * TDynamicObject::ABuFindObject(TTrack *Track, int ScanDir, // WY: wskaznik do znalezionego obiektu. // CouplFound - nr sprzegu znalezionego obiektu if (Track->iNumDynamics > 0) - { // sens szukania na tym torze jest tylko, gdy s na nim pojazdy + { // sens szukania na tym torze jest tylko, gdy są na nim pojazdy double ObjTranslation; // pozycja najblizszego obiektu na torze - double MyTranslation; // pozycja szukajcego na torze - double MinDist = Track->Length(); // najmniejsza znaleziona odleglo - // (zaczynamy od dugoci toru) - double TestDist; // robocza odlego od kolejnych pojazdw na danym odcinku + double MyTranslation; // pozycja szukającego na torze + double MinDist = Track->Length(); // najmniejsza znaleziona odleglość + // (zaczynamy od długości toru) + double TestDist; // robocza odległość od kolejnych pojazdów na danym odcinku int iMinDist = -1; // indeks wykrytego obiektu // if (Track->iNumDynamics>1) - // iMinDist+=0; //tymczasowo puapka + // iMinDist+=0; //tymczasowo pułapka if (MyTrack == Track) // gdy szukanie na tym samym torze - MyTranslation = RaTranslationGet(); // pooenie wzka wzgldem Point1 toru + MyTranslation = RaTranslationGet(); // położenie wózka względem Point1 toru else // gdy szukanie na innym torze if (ScanDir > 0) - MyTranslation = 0; // szukanie w kierunku Point2 (od zera) - jestemy w Point1 + MyTranslation = 0; // szukanie w kierunku Point2 (od zera) - jesteśmy w Point1 else - MyTranslation = MinDist; // szukanie w kierunku Point1 (do zera) - jestemy w Point2 + MyTranslation = MinDist; // szukanie w kierunku Point1 (do zera) - jesteśmy w Point2 if (ScanDir >= 0) - { // jeli szukanie w kierunku Point2 + { // jeśli szukanie w kierunku Point2 for (int i = 0; i < Track->iNumDynamics; i++) - { // ptla po pojazdach - if (Track->Dynamics[i] != this) // szukajcy si nie liczy + { // pętla po pojazdach + if (Track->Dynamics[i] != this) // szukający się nie liczy { TestDist = (Track->Dynamics[i]->RaTranslationGet()) - - MyTranslation; // odlegogo tamtego od szukajcego + MyTranslation; // odległogłość tamtego od szukającego if ((TestDist > 0) && (TestDist <= MinDist)) - { // gdy jest po waciwej stronie i bliej - // ni jaki wczeniejszy + { // gdy jest po właściwej stronie i bliżej + // niż jakiś wcześniejszy CouplFound = (Track->Dynamics[i]->RaDirectionGet() > 0) ? 1 : 0; // to, bo (ScanDir>=0) - if (Track->iCategoryFlag & 254) // trajektoria innego typu ni tor kolejowy - { // dla torw nie ma sensu tego sprawdza, rzadko co jedzie po + if (Track->iCategoryFlag & 254) // trajektoria innego typu niż tor kolejowy + { // dla torów nie ma sensu tego sprawdzać, rzadko co jedzie po // jednej - // szynie i si mija - // Ra: mijanie samochodw wcale nie jest proste + // szynie i się mija + // Ra: mijanie samochodów wcale nie jest proste // Przesuniecie wzgledne pojazdow. Wyznaczane, zeby sprawdzic, // czy pojazdy faktycznie sie zderzaja (moga byc przesuniete // w/m siebie tak, ze nie zachodza na siebie i wtedy sie mijaja). - double RelOffsetH; // wzajemna odlego poprzeczna - if (CouplFound) // my na tym torze bymy byli w kierunku Point2 - // dla CouplFound=1 s zwroty zgodne - istotna rnica - // przesuni + double RelOffsetH; // wzajemna odległość poprzeczna + if (CouplFound) // my na tym torze byśmy byli w kierunku Point2 + // dla CouplFound=1 są zwroty zgodne - istotna różnica + // przesunięć RelOffsetH = (MoverParameters->OffsetTrackH - Track->Dynamics[i]->MoverParameters->OffsetTrackH); else - // dla CouplFound=0 s zwroty przeciwne - przesunicia sumuj - // si + // dla CouplFound=0 są zwroty przeciwne - przesunięcia sumują + // się RelOffsetH = (MoverParameters->OffsetTrackH + Track->Dynamics[i]->MoverParameters->OffsetTrackH); if (RelOffsetH < 0) RelOffsetH = -RelOffsetH; if (RelOffsetH + RelOffsetH > MoverParameters->Dim.W + Track->Dynamics[i]->MoverParameters->Dim.W) - continue; // odlego wiksza od poowy sumy szerokoci - + continue; // odległość większa od połowy sumy szerokości - // kolizji - // nie bdzie - // jeli zahaczenie jest niewielkie, a jest miejsce na poboczu, to - // zjecha na pobocze + // nie będzie + // jeśli zahaczenie jest niewielkie, a jest miejsce na poboczu, to + // zjechać na pobocze } iMinDist = i; // potencjalna kolizja - MinDist = TestDist; // odleglo pomidzy aktywnymi osiami pojazdw + MinDist = TestDist; // odleglość pomiędzy aktywnymi osiami pojazdów } } } @@ -1205,153 +1205,153 @@ TDynamicObject * TDynamicObject::ABuFindObject(TTrack *Track, int ScanDir, if (Track->Dynamics[i] != this) { TestDist = MyTranslation - - (Track->Dynamics[i]->RaTranslationGet()); //???-przesunicie wzka - // wzgldem Point1 toru + (Track->Dynamics[i]->RaTranslationGet()); //???-przesunięcie wózka + // względem Point1 toru if ((TestDist > 0) && (TestDist < MinDist)) { CouplFound = (Track->Dynamics[i]->RaDirectionGet() > 0) ? 0 : 1; // odwrotnie, bo (ScanDir<0) - if (Track->iCategoryFlag & 254) // trajektoria innego typu ni tor kolejowy - { // dla torw nie ma sensu tego sprawdza, rzadko co jedzie po + if (Track->iCategoryFlag & 254) // trajektoria innego typu niż tor kolejowy + { // dla torów nie ma sensu tego sprawdzać, rzadko co jedzie po // jednej - // szynie i si mija - // Ra: mijanie samochodw wcale nie jest proste - // Przesunicie wzgldne pojazdw. Wyznaczane, eby sprawdzi, - // czy pojazdy faktycznie si zderzaj (mog by przesunite - // w/m siebie tak, e nie zachodz na siebie i wtedy sie mijaj). - double RelOffsetH; // wzajemna odlego poprzeczna - if (CouplFound) // my na tym torze bymy byli w kierunku Point1 - // dla CouplFound=1 s zwroty zgodne - istotna rnica - // przesuni + // szynie i się mija + // Ra: mijanie samochodów wcale nie jest proste + // Przesunięcie względne pojazdów. Wyznaczane, żeby sprawdzić, + // czy pojazdy faktycznie się zderzają (mogą być przesunięte + // w/m siebie tak, że nie zachodzą na siebie i wtedy sie mijają). + double RelOffsetH; // wzajemna odległość poprzeczna + if (CouplFound) // my na tym torze byśmy byli w kierunku Point1 + // dla CouplFound=1 są zwroty zgodne - istotna różnica + // przesunięć RelOffsetH = (MoverParameters->OffsetTrackH - Track->Dynamics[i]->MoverParameters->OffsetTrackH); else - // dla CouplFound=0 s zwroty przeciwne - przesunicia sumuj - // si + // dla CouplFound=0 są zwroty przeciwne - przesunięcia sumują + // się RelOffsetH = (MoverParameters->OffsetTrackH + Track->Dynamics[i]->MoverParameters->OffsetTrackH); if (RelOffsetH < 0) RelOffsetH = -RelOffsetH; if (RelOffsetH + RelOffsetH > MoverParameters->Dim.W + Track->Dynamics[i]->MoverParameters->Dim.W) - continue; // odlego wiksza od poowy sumy szerokoci - + continue; // odległość większa od połowy sumy szerokości - // kolizji - // nie bdzie + // nie będzie } iMinDist = i; // potencjalna kolizja - MinDist = TestDist; // odleglo pomidzy aktywnymi osiami pojazdw + MinDist = TestDist; // odleglość pomiędzy aktywnymi osiami pojazdów } } } } - dist += MinDist; // doliczenie odlegoci przeszkody albo dugoci odcinka + dist += MinDist; // doliczenie odległości przeszkody albo długości odcinka // do przeskanowanej - // odlegoci + // odległości return (iMinDist >= 0) ? Track->Dynamics[iMinDist] : NULL; } - dist += Track->Length(); // doliczenie dugoci odcinka do przeskanowanej - // odlegoci - return NULL; // nie ma pojazdw na torze, to jest NULL + dist += Track->Length(); // doliczenie długości odcinka do przeskanowanej + // odległości + return NULL; // nie ma pojazdów na torze, to jest NULL } int TDynamicObject::DettachStatus(int dir) -{ // sprawdzenie odlegoci sprzgw +{ // sprawdzenie odległości sprzęgów // rzeczywistych od strony (dir): - // 0=przd,1=ty - // Ra: dziwne, e ta funkcja nie jest uywana + // 0=przód,1=tył + // Ra: dziwne, że ta funkcja nie jest używana if (!MoverParameters->Couplers[dir].CouplingFlag) - return 0; // jeli nic nie podczone, to jest OK - return (MoverParameters->DettachStatus(dir)); // czy jest w odpowiedniej odlegoci? + return 0; // jeśli nic nie podłączone, to jest OK + return (MoverParameters->DettachStatus(dir)); // czy jest w odpowiedniej odległości? } int TDynamicObject::Dettach(int dir) -{ // rozczenie sprzgw rzeczywistych od - // strony (dir): 0=przd,1=ty - // zwraca mask bitow aktualnych sprzegw (0 jeli rozczony) +{ // rozłączenie sprzęgów rzeczywistych od + // strony (dir): 0=przód,1=tył + // zwraca maskę bitową aktualnych sprzegów (0 jeśli rozłączony) if (ctOwner) - { // jeli pojazd ma przypisany obiekt nadzorujcy skad, to pki - // s wskaniki + { // jeśli pojazd ma przypisany obiekt nadzorujący skład, to póki + // są wskaźniki TDynamicObject *d = this; while (d) { - d->ctOwner = NULL; // usuwanie waciciela + d->ctOwner = NULL; // usuwanie właściciela d = d->Prev(); } d = Next(); while (d) { - d->ctOwner = NULL; // usuwanie waciciela - d = d->Next(); // i w drug stron + d->ctOwner = NULL; // usuwanie właściciela + d = d->Next(); // i w drugą stronę } } - if (MoverParameters->Couplers[dir].CouplingFlag) // odczepianie, o ile co podczone + if (MoverParameters->Couplers[dir].CouplingFlag) // odczepianie, o ile coś podłączone MoverParameters->Dettach(dir); return MoverParameters->Couplers[dir] - .CouplingFlag; // sprzg po rozczaniu (czego si nie da odpi + .CouplingFlag; // sprzęg po rozłączaniu (czego się nie da odpiąć } void TDynamicObject::CouplersDettach(double MinDist, int MyScanDir) -{ // funkcja rozczajaca podczone sprzgi, - // jeli odlego przekracza (MinDist) - // MinDist - dystans minimalny, dla ktorego mozna rozcza +{ // funkcja rozłączajaca podłączone sprzęgi, + // jeśli odległość przekracza (MinDist) + // MinDist - dystans minimalny, dla ktorego mozna rozłączać if (MyScanDir > 0) { - if (PrevConnected) // pojazd od strony sprzgu 0 + if (PrevConnected) // pojazd od strony sprzęgu 0 { if (MoverParameters->Couplers[0].CoupleDist > - MinDist) // sprzgi wirtualne zawsze przekraczaj + MinDist) // sprzęgi wirtualne zawsze przekraczają { if ((PrevConnectedNo ? PrevConnected->NextConnected : PrevConnected->PrevConnected) == this) - { // Ra: nie rozczamy znalezionego, jeeli nie do nas - // podczony (moe jecha w + { // Ra: nie rozłączamy znalezionego, jeżeli nie do nas + // podłączony (może jechać w // innym kierunku) PrevConnected->MoverParameters->Couplers[PrevConnectedNo].Connected = NULL; if (PrevConnectedNo == 0) { - PrevConnected->PrevConnectedNo = 2; // sprzg 0 nie podczony + PrevConnected->PrevConnectedNo = 2; // sprzęg 0 nie podłączony PrevConnected->PrevConnected = NULL; } else if (PrevConnectedNo == 1) { - PrevConnected->NextConnectedNo = 2; // sprzg 1 nie podczony + PrevConnected->NextConnectedNo = 2; // sprzęg 1 nie podłączony PrevConnected->NextConnected = NULL; } } - // za to zawsze odczamy siebie + // za to zawsze odłączamy siebie PrevConnected = NULL; - PrevConnectedNo = 2; // sprzg 0 nie podczony + PrevConnectedNo = 2; // sprzęg 0 nie podłączony MoverParameters->Couplers[0].Connected = NULL; } } } else { - if (NextConnected) // pojazd od strony sprzgu 1 + if (NextConnected) // pojazd od strony sprzęgu 1 { if (MoverParameters->Couplers[1].CoupleDist > - MinDist) // sprzgi wirtualne zawsze przekraczaj + MinDist) // sprzęgi wirtualne zawsze przekraczają { if ((NextConnectedNo ? NextConnected->NextConnected : NextConnected->PrevConnected) == this) - { // Ra: nie rozczamy znalezionego, jeeli nie do nas - // podczony (moe jecha w + { // Ra: nie rozłączamy znalezionego, jeżeli nie do nas + // podłączony (może jechać w // innym kierunku) NextConnected->MoverParameters->Couplers[NextConnectedNo].Connected = NULL; if (NextConnectedNo == 0) { - NextConnected->PrevConnectedNo = 2; // sprzg 0 nie podczony + NextConnected->PrevConnectedNo = 2; // sprzęg 0 nie podłączony NextConnected->PrevConnected = NULL; } else if (NextConnectedNo == 1) { - NextConnected->NextConnectedNo = 2; // sprzg 1 nie podczony + NextConnected->NextConnectedNo = 2; // sprzęg 1 nie podłączony NextConnected->NextConnected = NULL; } } NextConnected = NULL; - NextConnectedNo = 2; // sprzg 1 nie podczony + NextConnectedNo = 2; // sprzęg 1 nie podłączony MoverParameters->Couplers[1].Connected = NULL; } } @@ -1359,41 +1359,41 @@ void TDynamicObject::CouplersDettach(double MinDist, int MyScanDir) } void TDynamicObject::ABuScanObjects(int ScanDir, double ScanDist) -{ // skanowanie toru w poszukiwaniu kolidujcych pojazdw - // ScanDir - okrela kierunek poszukiwania zalenie od zwrotu prdkoci +{ // skanowanie toru w poszukiwaniu kolidujących pojazdów + // ScanDir - określa kierunek poszukiwania zależnie od zwrotu prędkości // pojazdu // ScanDir=1 - od strony Coupler0, ScanDir=-1 - od strony Coupler1 - int MyScanDir = ScanDir; // zapamitanie kierunku poszukiwa na torze - // pocztkowym, wzgldem sprzgw - TTrackFollower *FirstAxle = (MyScanDir > 0 ? &Axle0 : &Axle1); // mona by to trzyma w trainset - TTrack *Track = FirstAxle->GetTrack(); // tor na ktrym "stoi" skrajny wzek - // (moe by inny ni tor pojazdu) - if (FirstAxle->GetDirection() < 0) // czy o jest ustawiona w stron Point1? - ScanDir = -ScanDir; // jeli tak, to kierunek szukania bdzie przeciwny - // (teraz wzgldem + int MyScanDir = ScanDir; // zapamiętanie kierunku poszukiwań na torze + // początkowym, względem sprzęgów + TTrackFollower *FirstAxle = (MyScanDir > 0 ? &Axle0 : &Axle1); // można by to trzymać w trainset + TTrack *Track = FirstAxle->GetTrack(); // tor na którym "stoi" skrajny wózek + // (może być inny niż tor pojazdu) + if (FirstAxle->GetDirection() < 0) // czy oś jest ustawiona w stronę Point1? + ScanDir = -ScanDir; // jeśli tak, to kierunek szukania będzie przeciwny + // (teraz względem // toru) - BYTE MyCouplFound; // numer sprzgu do podczenia w obiekcie szukajacym + BYTE MyCouplFound; // numer sprzęgu do podłączenia w obiekcie szukajacym MyCouplFound = (MyScanDir < 0) ? 1 : 0; - BYTE CouplFound; // numer sprzgu w znalezionym obiekcie (znaleziony wypeni) + BYTE CouplFound; // numer sprzęgu w znalezionym obiekcie (znaleziony wypełni) TDynamicObject *FoundedObj; // znaleziony obiekt - double ActDist = 0; // przeskanowana odleglo; odlego do zawalidrogi + double ActDist = 0; // przeskanowana odleglość; odległość do zawalidrogi FoundedObj = ABuFindObject(Track, ScanDir, CouplFound, - ActDist); // zaczynamy szuka na tym samym torze + ActDist); // zaczynamy szukać na tym samym torze /* - if (FoundedObj) //jak co znajdzie, to ledzimy - {//powtrzenie wyszukiwania tylko do zastawiania puepek podczas testw - if (ABuGetDirection()<0) ScanDir=ScanDir; //ustalenie kierunku wzgldem toru + if (FoundedObj) //jak coś znajdzie, to śledzimy + {//powtórzenie wyszukiwania tylko do zastawiania pułepek podczas testów + if (ABuGetDirection()<0) ScanDir=ScanDir; //ustalenie kierunku względem toru FoundedObj=ABuFindObject(Track,this,ScanDir,CouplFound); } */ if (DebugModeFlag) - if (FoundedObj) // kod sucy do logowania bdw + if (FoundedObj) // kod służący do logowania błędów if (CouplFound == 0) { if (FoundedObj->PrevConnected) - if (FoundedObj->PrevConnected != this) // odwieenie tego samego si nie liczy + if (FoundedObj->PrevConnected != this) // odświeżenie tego samego się nie liczy WriteLog("0! Coupler warning on " + asName + ":" + to_string(MyCouplFound) + " - " + FoundedObj->asName + ":0 connected to " + FoundedObj->PrevConnected->asName + ":" + @@ -1402,64 +1402,64 @@ void TDynamicObject::ABuScanObjects(int ScanDir, double ScanDist) else { if (FoundedObj->NextConnected) - if (FoundedObj->NextConnected != this) // odwieenie tego samego si nie liczy + if (FoundedObj->NextConnected != this) // odświeżenie tego samego się nie liczy WriteLog("0! Coupler warning on " + asName + ":" + to_string(MyCouplFound) + " - " + FoundedObj->asName + ":1 connected to " + FoundedObj->NextConnected->asName + ":" + to_string(FoundedObj->NextConnectedNo)); } - if (FoundedObj == NULL) // jeli nie ma na tym samym, szukamy po okolicy + if (FoundedObj == NULL) // jeśli nie ma na tym samym, szukamy po okolicy { // szukanie najblizszego toru z jakims obiektem // praktycznie przeklejone z TraceRoute()... // double CurrDist=0; //aktualna dlugosc toru - if (ScanDir >= 0) // uwzgldniamy kawalek przeanalizowanego wczeniej toru - ActDist = Track->Length() - FirstAxle->GetTranslation(); // odlego osi od Point2 toru + if (ScanDir >= 0) // uwzględniamy kawalek przeanalizowanego wcześniej toru + ActDist = Track->Length() - FirstAxle->GetTranslation(); // odległość osi od Point2 toru else - ActDist = FirstAxle->GetTranslation(); // odlego osi od Point1 toru + ActDist = FirstAxle->GetTranslation(); // odległość osi od Point1 toru while (ActDist < ScanDist) { - // ActDist+=CurrDist; //odlego ju przeanalizowana + // ActDist+=CurrDist; //odległość już przeanalizowana if (ScanDir > 0) // w kierunku Point2 toru { if (Track ? Track->iNextDirection : - false) // jeli nastpny tor jest podpity od Point2 + false) // jeśli następny tor jest podpięty od Point2 ScanDir = -ScanDir; // to zmieniamy kierunek szukania na tym torze - Track = Track->CurrentNext(); // potem dopiero zmieniamy wskanik + Track = Track->CurrentNext(); // potem dopiero zmieniamy wskaźnik } else // w kierunku Point1 { if (Track ? !Track->iPrevDirection : - true) // jeli poprzedni tor nie jest podpity od Point2 + true) // jeśli poprzedni tor nie jest podpięty od Point2 ScanDir = -ScanDir; // to zmieniamy kierunek szukania na tym torze - Track = Track->CurrentPrev(); // potem dopiero zmieniamy wskanik + Track = Track->CurrentPrev(); // potem dopiero zmieniamy wskaźnik } if (Track) { // jesli jest kolejny odcinek toru // CurrDist=Track->Length(); //doliczenie tego toru do przejrzanego // dystandu FoundedObj = ABuFindObject(Track, ScanDir, CouplFound, - ActDist); // przejrzenie pojazdw tego toru + ActDist); // przejrzenie pojazdów tego toru if (FoundedObj) { - // ActDist=ScanDist; //wyjcie z ptli poszukiwania + // ActDist=ScanDist; //wyjście z pętli poszukiwania break; } } - else // jeli toru nie ma, to wychodzimy + else // jeśli toru nie ma, to wychodzimy { - ActDist = ScanDist + 1.0; // koniec przegldania torw + ActDist = ScanDist + 1.0; // koniec przeglądania torów break; } } - } // Koniec szukania najbliszego toru z jakim obiektem. - // teraz odczepianie i jeli co si znalazo, doczepianie. + } // Koniec szukania najbliższego toru z jakimś obiektem. + // teraz odczepianie i jeśli coś się znalazło, doczepianie. if (MyScanDir > 0 ? PrevConnected : NextConnected) if ((MyScanDir > 0 ? PrevConnected : NextConnected) != FoundedObj) - CouplersDettach(1.0, MyScanDir); // odczamy, jeli dalej ni metr - // i czenie sprzgiem wirtualnym + CouplersDettach(1.0, MyScanDir); // odłączamy, jeśli dalej niż metr + // i łączenie sprzęgiem wirtualnym if (FoundedObj) - { // siebie mona bezpiecznie podczy jednostronnie do + { // siebie można bezpiecznie podłączyć jednostronnie do // znalezionego MoverParameters->Attach(MyCouplFound, CouplFound, FoundedObj->MoverParameters, ctrain_virtual); @@ -1467,20 +1467,20 @@ void TDynamicObject::ABuScanObjects(int ScanDir, double ScanDist) // renderujemy if (MyCouplFound == 0) { - PrevConnected = FoundedObj; // pojazd od strony sprzgu 0 + PrevConnected = FoundedObj; // pojazd od strony sprzęgu 0 PrevConnectedNo = CouplFound; } else { - NextConnected = FoundedObj; // pojazd od strony sprzgu 1 + NextConnected = FoundedObj; // pojazd od strony sprzęgu 1 NextConnectedNo = CouplFound; } if (FoundedObj->MoverParameters->Couplers[CouplFound].CouplingFlag == ctrain_virtual) - { // Ra: wpinamy si wirtualnym tylko jeli znaleziony - // ma wirtualny sprzg + { // Ra: wpinamy się wirtualnym tylko jeśli znaleziony + // ma wirtualny sprzęg FoundedObj->MoverParameters->Attach(CouplFound, MyCouplFound, this->MoverParameters, ctrain_virtual); - if (CouplFound == 0) // jeli widoczny sprzg 0 znalezionego + if (CouplFound == 0) // jeśli widoczny sprzęg 0 znalezionego { if (DebugModeFlag) if (FoundedObj->PrevConnected) @@ -1492,7 +1492,7 @@ void TDynamicObject::ABuScanObjects(int ScanDir, double ScanDist) FoundedObj->PrevConnected = this; FoundedObj->PrevConnectedNo = MyCouplFound; } - else // jeli widoczny sprzg 1 znalezionego + else // jeśli widoczny sprzęg 1 znalezionego { if (DebugModeFlag) if (FoundedObj->NextConnected) @@ -1505,24 +1505,24 @@ void TDynamicObject::ABuScanObjects(int ScanDir, double ScanDist) FoundedObj->NextConnectedNo = MyCouplFound; } } - // Ra: jeli dwa samochody si mijaj na odcinku przed zawrotk, to - // odlego midzy nimi - // nie moe by liczona w linii prostej! + // Ra: jeśli dwa samochody się mijają na odcinku przed zawrotką, to + // odległość między nimi + // nie może być liczona w linii prostej! fTrackBlock = MoverParameters->Couplers[MyCouplFound] - .CoupleDist; // odlego do najbliszego pojazdu w linii prostej - if (Track->iCategoryFlag > 1) // jeli samochd + .CoupleDist; // odległość do najbliższego pojazdu w linii prostej + if (Track->iCategoryFlag > 1) // jeśli samochód if (ActDist > MoverParameters->Dim.L + FoundedObj->MoverParameters->Dim - .L) // przeskanowana odlego wiksza od dugoci pojazdw - // else if (ActDistasName); } - else // nic nie znalezione, to nie ma przeszkd + else // nic nie znalezione, to nie ma przeszkód fTrackBlock = 10000.0; } //----------ABu: koniec skanowania pojazdow @@ -1544,8 +1544,8 @@ TDynamicObject::TDynamicObject() bDisplayCab = false; // 030303 bBrakeAcc = false; NextConnected = PrevConnected = NULL; - NextConnectedNo = PrevConnectedNo = 2; // ABu: Numery sprzegow. 2=nie podczony - CouplCounter = 50; // bdzie sprawdza na pocztku + NextConnectedNo = PrevConnectedNo = 2; // ABu: Numery sprzegow. 2=nie podłączony + CouplCounter = 50; // będzie sprawdzać na początku asName = ""; bEnabled = true; MyTrack = NULL; @@ -1554,7 +1554,7 @@ TDynamicObject::TDynamicObject() for (int i = 0; i < MaxAxles; i++) dRailPosition[i] = 0.0; for (int i = 0; i < MaxAxles; i++) - dWheelsPosition[i] = 0.0; // bdzie wczytane z MMD + dWheelsPosition[i] = 0.0; // będzie wczytane z MMD iAxles = 0; dWheelAngle[0] = 0.0; dWheelAngle[1] = 0.0; @@ -1576,7 +1576,7 @@ TDynamicObject::TDynamicObject() ReplacableSkinID[2] = 0; ReplacableSkinID[3] = 0; ReplacableSkinID[4] = 0; - iAlpha = 0x30300030; // tak gdy tekstury wymienne nie maj przezroczystoci + iAlpha = 0x30300030; // tak gdy tekstury wymienne nie mają przezroczystości // smWiazary[0]=smWiazary[1]=NULL; smWahacze[0] = smWahacze[1] = smWahacze[2] = smWahacze[3] = NULL; fWahaczeAmp = 0; @@ -1597,44 +1597,44 @@ TDynamicObject::TDynamicObject() eng_frq_act = 1; eng_turbo = 0; cp1 = cp2 = sp1 = sp2 = 0; - iDirection = 1; // stoi w kierunku tradycyjnym (0, gdy jest odwrcony) - iAxleFirst = 0; // numer pierwszej osi w kierunku ruchu (przeczenie - // nastpuje, gdy osie sa na + iDirection = 1; // stoi w kierunku tradycyjnym (0, gdy jest odwrócony) + iAxleFirst = 0; // numer pierwszej osi w kierunku ruchu (przełączenie + // następuje, gdy osie sa na // tym samym torze) - iInventory = 0; // flagi bitowe posiadanych submodeli (zaktualizuje si po + iInventory = 0; // flagi bitowe posiadanych submodeli (zaktualizuje się po // wczytaniu MMD) - RaLightsSet(0, 0); // pocztkowe zerowanie stanu wiate - // Ra: domylne iloci animacji dla zgodnoci wstecz (gdy brak iloci podanych + RaLightsSet(0, 0); // początkowe zerowanie stanu świateł + // Ra: domyślne ilości animacji dla zgodności wstecz (gdy brak ilości podanych // w MMD) // ustawienie liczby modeli animowanych podczas konstruowania obiektu a nie na 0 - // prowadzi prosto do wysypw jeli le zdefiniowane mmd + // prowadzi prosto do wysypów jeśli źle zdefiniowane mmd iAnimType[ANIM_WHEELS] = 0; // 0-osie (8) iAnimType[ANIM_DOORS] = 0; // 1-drzwi (8) iAnimType[ANIM_LEVERS] = 0; // 2-wahacze (4) - np. nogi konia iAnimType[ANIM_BUFFERS] = 0; // 3-zderzaki (4) - iAnimType[ANIM_BOOGIES] = 0; // 4-wzki (2) + iAnimType[ANIM_BOOGIES] = 0; // 4-wózki (2) iAnimType[ANIM_PANTS] = 0; // 5-pantografy (2) - iAnimType[ANIM_STEAMS] = 0; // 6-toki (napd parowozu) - iAnimations = 0; // na razie nie ma adnego + iAnimType[ANIM_STEAMS] = 0; // 6-tłoki (napęd parowozu) + iAnimations = 0; // na razie nie ma żadnego pAnimations = NULL; pAnimated = NULL; - fShade = 0.0; // standardowe owietlenie na starcie - iHornWarning = 1; // numer syreny do uycia po otrzymaniu sygnau do jazdy - asDestination = "none"; // stojcy nigdzie nie jedzie + fShade = 0.0; // standardowe oświetlenie na starcie + iHornWarning = 1; // numer syreny do użycia po otrzymaniu sygnału do jazdy + asDestination = "none"; // stojący nigdzie nie jedzie pValveGear = NULL; // Ra: tymczasowo iCabs = 0; // maski bitowe modeli kabin smBrakeSet = NULL; // nastawa hamulca (wajcha) - smLoadSet = NULL; // nastawa adunku (wajcha) - smWiper = NULL; // wycieraczka (poniekd te wajcha) - fScanDist = 300.0; // odlego skanowania, zwikszana w trybie czenia - ctOwner = NULL; // na pocztek niczyj - iOverheadMask = 0; // maska przydzielana przez AI pojazdom posiadajcym - // pantograf, aby wymuszay - // jazd bezprdow - tmpTraction.TractionVoltage = 0; // Ra 2F1H: prowizorka, trzeba przechowa - // napicie, eby nie wywalao WS pod + smLoadSet = NULL; // nastawa ładunku (wajcha) + smWiper = NULL; // wycieraczka (poniekąd też wajcha) + fScanDist = 300.0; // odległość skanowania, zwiększana w trybie łączenia + ctOwner = NULL; // na początek niczyj + iOverheadMask = 0; // maska przydzielana przez AI pojazdom posiadającym + // pantograf, aby wymuszały + // jazdę bezprądową + tmpTraction.TractionVoltage = 0; // Ra 2F1H: prowizorka, trzeba przechować + // napięcie, żeby nie wywalało WS pod // izolatorem - fAdjustment = 0.0; // korekcja odlegoci pomidzy wzkami (np. na ukach) + fAdjustment = 0.0; // korekcja odległości pomiędzy wózkami (np. na łukach) } TDynamicObject::~TDynamicObject() @@ -1642,9 +1642,9 @@ TDynamicObject::~TDynamicObject() // parametrow fizycznych SafeDelete(Mechanik); SafeDelete(MoverParameters); - // Ra: wyczanie dwikw powinno by dodane w ich destruktorach, ale si + // Ra: wyłączanie dźwięków powinno być dodane w ich destruktorach, ale się // sypie - /* to te si sypie + /* to też się sypie for (int i=0;iiLights; // wskanik na stan wasnych wiate - // (zmienimy dla rozrzdczych EZT) - // McZapkie: TypeName musi byc nazw CHK/MMD pojazdu + iLights = MoverParameters->iLights; // wskaźnik na stan własnych świateł + // (zmienimy dla rozrządczych EZT) + // McZapkie: TypeName musi byc nazwą CHK/MMD pojazdu if (!MoverParameters->LoadFIZ(asBaseDir)) - { // jak wczytanie CHK si nie uda, to bd + { // jak wczytanie CHK się nie uda, to błąd if (ConversionError == -8) ErrorLog("Missed file: " + BaseDir + "\\" + Type_Name + ".fiz"); Error("Cannot load dynamic object " + asName + " from:\r\n" + BaseDir + "\\" + Type_Name + ".fiz\r\nError " + to_string(ConversionError) + " in line " + to_string(LineCount)); - return 0.0; // zerowa dugo to brak pojazdu + return 0.0; // zerowa długość to brak pojazdu } - bool driveractive = (fVel != 0.0); // jeli prdko niezerowa, to aktywujemy ruch + bool driveractive = (fVel != 0.0); // jeśli prędkość niezerowa, to aktywujemy ruch if (!MoverParameters->CheckLocomotiveParameters( driveractive, (fVel > 0 ? 1 : -1) * Cab * @@ -1737,7 +1737,7 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424" { Error("Parameters mismatch: dynamic object " + asName + " from\n" + BaseDir + "\\" + Type_Name); - return 0.0; // zerowa dugo to brak pojazdu + return 0.0; // zerowa długość to brak pojazdu } // ustawienie pozycji hamulca MoverParameters->LocalBrakePos = 0; @@ -1758,9 +1758,9 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424" // przestawieniu przez Pascal // dodatkowe parametry yB - MoreParams += "."; // wykonuje o jedn iteracj za mao, wic trzeba mu doda - // kropk na koniec - int kropka = MoreParams.find("."); // znajd kropke + MoreParams += "."; // wykonuje o jedną iterację za mało, więc trzeba mu dodać + // kropkę na koniec + int kropka = MoreParams.find("."); // znajdź kropke std::string ActPar; // na parametry while (kropka != std::string::npos) // jesli sa kropki jeszcze { @@ -1871,7 +1871,7 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424" MoverParameters->DecBrakeMult(); MoverParameters->DecBrakeMult(); } // dwa razy w dol - if (ActPar.find('H') != std::string::npos) // ladowny I (dla P- dalej prozny) + if (ActPar.find('H') != std::string::npos) // ladowny I (dla P-Ł dalej prozny) { MoverParameters->IncBrakeMult(); MoverParameters->IncBrakeMult(); @@ -1893,71 +1893,71 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424" */ } // koniec while kropka - if (MoverParameters->CategoryFlag & 2) // jeli samochd - { // ustawianie samochodow na poboczu albo na rodku drogi - if (Track->fTrackWidth < 3.5) // jeli droga wska - MoverParameters->OffsetTrackH = 0.0; // to stawiamy na rodku, niezalenie od stanu + if (MoverParameters->CategoryFlag & 2) // jeśli samochód + { // ustawianie samochodow na poboczu albo na środku drogi + if (Track->fTrackWidth < 3.5) // jeśli droga wąska + MoverParameters->OffsetTrackH = 0.0; // to stawiamy na środku, niezależnie od stanu // ruchu - else if (driveractive) // od 3.5m do 8.0m jedzie po rodku pasa, dla - // szerszych w odlegoci + else if (driveractive) // od 3.5m do 8.0m jedzie po środku pasa, dla + // szerszych w odległości // 1.5m MoverParameters->OffsetTrackH = Track->fTrackWidth <= 8.0 ? -Track->fTrackWidth * 0.25 : -1.5; - else // jak stoi, to koem na poboczu i pobieramy szeroko razem z + else // jak stoi, to kołem na poboczu i pobieramy szerokość razem z // poboczem, ale nie z // chodnikiem MoverParameters->OffsetTrackH = -0.5 * (Track->WidthTotal() - MoverParameters->Dim.W) + 0.05; - iHornWarning = 0; // nie bdzie trbienia po podaniu zezwolenia na jazd - if (fDist < 0.0) //-0.5*MoverParameters->Dim.L) //jeli jest przesunicie do tyu - if (!Track->CurrentPrev()) // a nie ma tam odcinka i trzeba by co - // wygenerowa - fDist = -fDist; // to traktujemy, jakby przesunicie byo w drug stron + iHornWarning = 0; // nie będzie trąbienia po podaniu zezwolenia na jazdę + if (fDist < 0.0) //-0.5*MoverParameters->Dim.L) //jeśli jest przesunięcie do tyłu + if (!Track->CurrentPrev()) // a nie ma tam odcinka i trzeba by coś + // wygenerować + fDist = -fDist; // to traktujemy, jakby przesunięcie było w drugą stronę } // w wagonie tez niech jedzie // if (MoverParameters->MainCtrlPosNo>0 && // if (MoverParameters->CabNo!=0) if (DriverType != "") - { // McZapkie-040602: jeli co siedzi w pojedzie - if (Name == Global::asHumanCtrlVehicle) // jeli pojazd wybrany do prowadzenia + { // McZapkie-040602: jeśli coś siedzi w pojeździe + if (Name == Global::asHumanCtrlVehicle) // jeśli pojazd wybrany do prowadzenia { if (DebugModeFlag ? false : MoverParameters->EngineType != Dumb) // jak nie Debugmode i nie jest dumbem - Controller = Humandriver; // wsadzamy tam sterujcego - else // w przeciwnym razie trzeba wczy pokazywanie kabiny + Controller = Humandriver; // wsadzamy tam sterującego + else // w przeciwnym razie trzeba włączyć pokazywanie kabiny bDisplayCab = true; } - // McZapkie-151102: rozkad jazdy czytany z pliku *.txt z katalogu w ktrym + // McZapkie-151102: rozkład jazdy czytany z pliku *.txt z katalogu w którym // jest sceneria if (DriverType == "1" || DriverType == "2") { // McZapkie-110303: mechanik i rozklad tylko gdy jest obsada // MoverParameters->ActiveCab=MoverParameters->CabNo; //ustalenie aktywnej // kabiny - // (rozrzd) + // (rozrząd) Mechanik = new TController(Controller, this, Aggressive); - if (TrainName.empty()) // jeli nie w skadzie + if (TrainName.empty()) // jeśli nie w składzie { - Mechanik->DirectionInitial(); // zaczenie rozrzdu (wirtualne kabiny) itd. + Mechanik->DirectionInitial(); // załączenie rozrządu (wirtualne kabiny) itd. Mechanik->PutCommand( "Timetable:", iDirection ? -fVel : fVel, 0, - NULL); // tryb pocigowy z ustalon prdkoci (wzgldem sprzgw) + NULL); // tryb pociągowy z ustaloną prędkością (względem sprzęgów) } // if (TrainName!="none") // Mechanik->PutCommand("Timetable:"+TrainName,fVel,0,NULL); } else if (DriverType == "p") - { // obserwator w charakterze pasaera - // Ra: to jest niebezpieczne, bo w razie co bdzie pomaga hamulcem - // bezpieczestwa + { // obserwator w charakterze pasażera + // Ra: to jest niebezpieczne, bo w razie co będzie pomagał hamulcem + // bezpieczeństwa Mechanik = new TController(Controller, this, Easyman, false); } } // McZapkie-250202 - iAxles = (MaxAxles < MoverParameters->NAxles) ? MaxAxles : MoverParameters->NAxles; // ilo osi + iAxles = (MaxAxles < MoverParameters->NAxles) ? MaxAxles : MoverParameters->NAxles; // ilość osi // wczytywanie z pliku nazwatypu.mmd, w tym model LoadMMediaFile(asBaseDir, Type_Name, asReplacableSkin); - // McZapkie-100402: wyszukiwanie submodeli sprzegw - btCoupler1.Init("coupler1", mdModel, false); // false - ma by wyczony + // McZapkie-100402: wyszukiwanie submodeli sprzegów + btCoupler1.Init("coupler1", mdModel, false); // false - ma być wyłączony btCoupler2.Init("coupler2", mdModel, false); btCPneumatic1.Init("cpneumatic1", mdModel); btCPneumatic2.Init("cpneumatic2", mdModel); @@ -1977,7 +1977,7 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424" btEndSignals21.Init("endsignal23", mdModel, false); btEndSignals13.Init("endsignal12", mdModel, false); btEndSignals23.Init("endsignal22", mdModel, false); - iInventory |= btEndSignals11.Active() ? 0x01 : 0; // informacja, czy ma poszczeglne wiata + iInventory |= btEndSignals11.Active() ? 0x01 : 0; // informacja, czy ma poszczególne światła iInventory |= btEndSignals21.Active() ? 0x02 : 0; iInventory |= btEndSignals13.Active() ? 0x04 : 0; iInventory |= btEndSignals23.Active() ? 0x08 : 0; @@ -1992,7 +1992,7 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424" iInventory |= btEndSignalsTab2.Active() ? 0x80 : 0; // ABu Uwaga! tu zmienic w modelu! btHeadSignals11.Init("headlamp13", mdModel, false); // lewe - btHeadSignals12.Init("headlamp11", mdModel, false); // grne + btHeadSignals12.Init("headlamp11", mdModel, false); // górne btHeadSignals13.Init("headlamp12", mdModel, false); // prawe btHeadSignals21.Init("headlamp23", mdModel, false); btHeadSignals22.Init("headlamp21", mdModel, false); @@ -2001,7 +2001,7 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424" btMechanik2.Init("mechanik2", mdLowPolyInt, false); TurnOff(); // resetowanie zmiennych submodeli // wyszukiwanie zderzakow - if (mdModel) // jeli ma w czym szuka + if (mdModel) // jeśli ma w czym szukać for (int i = 0; i < 2; i++) { asAnimName = std::string("buffer_left0") + to_string(i + 1); @@ -2013,45 +2013,45 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424" if (smBuforPrawy[i]) smBuforPrawy[i]->WillBeAnimated(); } - for (int i = 0; i < iAxles; i++) // wyszukiwanie osi (0 jest na kocu, dlatego dodajemy - // dugo?) + for (int i = 0; i < iAxles; i++) // wyszukiwanie osi (0 jest na końcu, dlatego dodajemy + // długość?) dRailPosition[i] = (Reversed ? -dWheelsPosition[i] : (dWheelsPosition[i] + MoverParameters->Dim.L)) + fDist; // McZapkie-250202 end. - Track->AddDynamicObject(this); // wstawiamy do toru na pozycj 0, a potem przesuniemy + Track->AddDynamicObject(this); // wstawiamy do toru na pozycję 0, a potem przesuniemy // McZapkie: zmieniono na ilosc osi brane z chk // iNumAxles=(MoverParameters->NAxles>3 ? 4 : 2 ); iNumAxles = 2; // McZapkie-090402: odleglosc miedzy czopami skretu lub osiami fAxleDist = Max0R(MoverParameters->BDist, MoverParameters->ADist); if (fAxleDist < 0.2) - fAxleDist = 0.2; //eby si dao wektory policzy - if (fAxleDist > MoverParameters->Dim.L - 0.2) // nie mog by za daleko - fAxleDist = MoverParameters->Dim.L - 0.2; // bo bdzie "walenie w mur" + fAxleDist = 0.2; //żeby się dało wektory policzyć + if (fAxleDist > MoverParameters->Dim.L - 0.2) // nie mogą być za daleko + fAxleDist = MoverParameters->Dim.L - 0.2; // bo będzie "walenie w mur" double fAxleDistHalf = fAxleDist * 0.5; // WriteLog("Dynamic "+Type_Name+" of length "+MoverParameters->Dim.L+" at // "+AnsiString(fDist)); - // if (Cab) //jeli ma obsad - zgodno wstecz, jeli tor startowy ma Event0 - // if (Track->Event0) //jeli tor ma Event0 - // if (fDist>=0.0) //jeli jeli w starych sceneriach pocztek skadu byby - // wysunity na ten + // if (Cab) //jeśli ma obsadę - zgodność wstecz, jeśli tor startowy ma Event0 + // if (Track->Event0) //jeśli tor ma Event0 + // if (fDist>=0.0) //jeśli jeśli w starych sceneriach początek składu byłby + // wysunięty na ten // tor - // if (fDist<=0.5*MoverParameters->Dim.L+0.2) //ale nie jest wysunity - // fDist+=0.5*MoverParameters->Dim.L+0.2; //wysun go na ten tor - // przesuwanie pojazdu tak, aby jego pocztek by we wskazanym miejcu - fDist -= 0.5 * MoverParameters->Dim.L; // dodajemy p dugoci pojazdu, bo - // ustawiamy jego rodek (zliczanie na + // if (fDist<=0.5*MoverParameters->Dim.L+0.2) //ale nie jest wysunięty + // fDist+=0.5*MoverParameters->Dim.L+0.2; //wysunąć go na ten tor + // przesuwanie pojazdu tak, aby jego początek był we wskazanym miejcu + fDist -= 0.5 * MoverParameters->Dim.L; // dodajemy pół długości pojazdu, bo + // ustawiamy jego środek (zliczanie na // minus) switch (iNumAxles) - { // Ra: pojazdy wstawiane s na tor pocztkowy, a potem + { // Ra: pojazdy wstawiane są na tor początkowy, a potem // przesuwane case 2: // ustawianie osi na torze Axle0.Init(Track, this, iDirection ? 1 : -1); Axle0.Move((iDirection ? fDist : -fDist) + fAxleDistHalf, false); Axle1.Init(Track, this, iDirection ? 1 : -1); Axle1.Move((iDirection ? fDist : -fDist) - fAxleDistHalf, - false); // false, eby nie generowa eventw + false); // false, żeby nie generować eventów // Axle2.Init(Track,this,iDirection?1:-1); // Axle2.Move((iDirection?fDist:-fDist)-fAxleDistHalft+0.01),false); // Axle3.Init(Track,this,iDirection?1:-1); @@ -2070,25 +2070,25 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424" // Axle3.Move((iDirection?fDist:-fDist)+(fAxleDistHalf-MoverParameters->ADist*0.5),false); break; } - Move(0.0001); // potrzebne do wyliczenia aktualnej pozycji; nie moe by zero, + Move(0.0001); // potrzebne do wyliczenia aktualnej pozycji; nie może być zero, // bo nie przeliczy // pozycji - // teraz jeszcze trzeba przypisa pojazdy do nowego toru, bo przesuwanie - // pocztkowe osi nie - // zrobio tego - ABuCheckMyTrack(); // zmiana toru na ten, co o Axle0 (o z przodu) - TLocation loc; // Ra: ustawienie pozycji do obliczania sprzgw + // teraz jeszcze trzeba przypisać pojazdy do nowego toru, bo przesuwanie + // początkowe osi nie + // zrobiło tego + ABuCheckMyTrack(); // zmiana toru na ten, co oś Axle0 (oś z przodu) + TLocation loc; // Ra: ustawienie pozycji do obliczania sprzęgów loc.X = -vPosition.x; loc.Y = vPosition.z; loc.Z = vPosition.y; MoverParameters->Loc = loc; // normalnie przesuwa ComputeMovement() w Update() - // pOldPos4=Axle1.pPosition; //Ra: nie uywane + // pOldPos4=Axle1.pPosition; //Ra: nie używane // pOldPos1=Axle0.pPosition; // ActualTrack= GetTrack(); //McZapkie-030303 // ABuWozki 060504 - if (mdModel) // jeli ma w czym szuka + if (mdModel) // jeśli ma w czym szukać { - smBogie[0] = mdModel->GetFromName("bogie1"); // Ra: bo nazwy s maymi + smBogie[0] = mdModel->GetFromName("bogie1"); // Ra: bo nazwy są małymi smBogie[1] = mdModel->GetFromName("bogie2"); if (!smBogie[0]) smBogie[0] = mdModel->GetFromName("boogie01"); // Ra: alternatywna nazwa @@ -2102,14 +2102,14 @@ TDynamicObject::Init(std::string Name, // nazwa pojazdu, np. "EU07-424" // ABu: zainicjowanie zmiennej, zeby nic sie nie ruszylo // w pierwszej klatce, potem juz liczona prawidlowa wartosc masy MoverParameters->ComputeConstans(); - /*Ra: to nie dziaa - Event0 musi by wykonywany cigle - if (fVel==0.0) //jeli stoi - if (MoverParameters->CabNo!=0) //i ma kogo w kabinie + /*Ra: to nie działa - Event0 musi być wykonywany ciągle + if (fVel==0.0) //jeśli stoi + if (MoverParameters->CabNo!=0) //i ma kogoś w kabinie if (Track->Event0) //a jest w tym torze event od stania RaAxleEvent(Track->Event0); //dodanie eventu stania do kolejki */ - vFloor = vector3(0, 0, MoverParameters->Floor); // wektor podogi dla wagonw, przesuwa adunek - return MoverParameters->Dim.L; // dugo wiksza od zera oznacza OK; 2mm docisku? + vFloor = vector3(0, 0, MoverParameters->Floor); // wektor podłogi dla wagonów, przesuwa ładunek + return MoverParameters->Dim.L; // długość większa od zera oznacza OK; 2mm docisku? } void TDynamicObject::FastMove(double fDistance) @@ -2120,49 +2120,49 @@ void TDynamicObject::FastMove(double fDistance) void TDynamicObject::Move(double fDistance) { // przesuwanie pojazdu po // trajektorii polega na - // przesuwaniu poszczeglnych osi - // Ra: warto prdkoci 2km/h ma ograniczy aktywacj eventw w przypadku - // drga - if (Axle0.GetTrack() == Axle1.GetTrack()) // przed przesuniciem - { // powizanie pojazdu z osi mona zmieni tylko wtedy, gdy skrajne osie s + // przesuwaniu poszczególnych osi + // Ra: wartość prędkości 2km/h ma ograniczyć aktywację eventów w przypadku + // drgań + if (Axle0.GetTrack() == Axle1.GetTrack()) // przed przesunięciem + { // powiązanie pojazdu z osią można zmienić tylko wtedy, gdy skrajne osie są // na tym samym torze if (MoverParameters->Vel > 2) //|[km/h]| nie ma sensu zmiana osi, jesli pojazd drga na postoju iAxleFirst = (MoverParameters->V >= 0.0) ? 1 : - 0; //[m/s] ?1:0 - aktywna druga o w kierunku jazdy - // aktualnie eventy aktywuje druga o, eby AI nie wyczao sobie semafora + 0; //[m/s] ?1:0 - aktywna druga oś w kierunku jazdy + // aktualnie eventy aktywuje druga oś, żeby AI nie wyłączało sobie semafora // za szybko } if (fDistance > 0.0) - { // gdy ruch w stron sprzgu 0, doliczy korekt do osi 1 - bEnabled &= Axle0.Move(fDistance, !iAxleFirst); // o z przodu pojazdu - bEnabled &= Axle1.Move(fDistance /*-fAdjustment*/, iAxleFirst); // o z tyu pojazdu + { // gdy ruch w stronę sprzęgu 0, doliczyć korektę do osi 1 + bEnabled &= Axle0.Move(fDistance, !iAxleFirst); // oś z przodu pojazdu + bEnabled &= Axle1.Move(fDistance /*-fAdjustment*/, iAxleFirst); // oś z tyłu pojazdu } else if (fDistance < 0.0) - { // gdy ruch w stron sprzgu 1, doliczy korekt do osi 0 - bEnabled &= Axle1.Move(fDistance, iAxleFirst); // o z tyu pojazdu prusza si pierwsza - bEnabled &= Axle0.Move(fDistance /*-fAdjustment*/, !iAxleFirst); // o z przodu pojazdu + { // gdy ruch w stronę sprzęgu 1, doliczyć korektę do osi 0 + bEnabled &= Axle1.Move(fDistance, iAxleFirst); // oś z tyłu pojazdu prusza się pierwsza + bEnabled &= Axle0.Move(fDistance /*-fAdjustment*/, !iAxleFirst); // oś z przodu pojazdu } else // gf: bez wywolania Move na postoju nie ma event0 { - bEnabled &= Axle1.Move(fDistance, iAxleFirst); // o z tyu pojazdu prusza si pierwsza - bEnabled &= Axle0.Move(fDistance, !iAxleFirst); // o z przodu pojazdu + bEnabled &= Axle1.Move(fDistance, iAxleFirst); // oś z tyłu pojazdu prusza się pierwsza + bEnabled &= Axle0.Move(fDistance, !iAxleFirst); // oś z przodu pojazdu } - if (fDistance != 0.0) // nie liczy ponownie, jeli stoi - { // liczenie pozycji pojazdu tutaj, bo jest uywane w wielu miejscach - vPosition = 0.5 * (Axle1.pPosition + Axle0.pPosition); //rodek midzy skrajnymi osiami - vFront = Axle0.pPosition - Axle1.pPosition; // wektor pomidzy skrajnymi osiami + if (fDistance != 0.0) // nie liczyć ponownie, jeśli stoi + { // liczenie pozycji pojazdu tutaj, bo jest używane w wielu miejscach + vPosition = 0.5 * (Axle1.pPosition + Axle0.pPosition); //środek między skrajnymi osiami + vFront = Axle0.pPosition - Axle1.pPosition; // wektor pomiędzy skrajnymi osiami // Ra 2F1J: to nie jest stabilne (powoduje rzucanie taborem) i wymaga // dopracowania - fAdjustment = vFront.Length() - fAxleDist; // na uku bdzie ujemny - // if (fabs(fAdjustment)>0.02) //jeli jest zbyt duo, to rozoy na kilka - // przelicze + fAdjustment = vFront.Length() - fAxleDist; // na łuku będzie ujemny + // if (fabs(fAdjustment)>0.02) //jeśli jest zbyt dużo, to rozłożyć na kilka + // przeliczeń // (wygasza drgania?) - //{//par centymetrw trzeba by ju skorygowa; te bdy mog si te - // generowa na ostrych - //ukach - // fAdjustment*=0.5; //w jednym kroku korygowany jest uamek bdu + //{//parę centymetrów trzeba by już skorygować; te błędy mogą się też + // generować na ostrych + //łukach + // fAdjustment*=0.5; //w jednym kroku korygowany jest ułamek błędu //} // else // fAdjustment=0.0; @@ -2170,60 +2170,60 @@ void TDynamicObject::Move(double fDistance) vLeft = Normalize(CrossProduct(vWorldUp, vFront)); // wektor poziomy w lewo, // normalizacja potrzebna z powodu // pochylenia (vFront) - vUp = CrossProduct(vFront, vLeft); // wektor w gr, bdzie jednostkowy - modelRot.z = atan2(-vFront.x, vFront.z); // kt obrotu pojazdu [rad]; z ABuBogies() - double a = ((Axle1.GetRoll() + Axle0.GetRoll())); // suma przechyek + vUp = CrossProduct(vFront, vLeft); // wektor w górę, będzie jednostkowy + modelRot.z = atan2(-vFront.x, vFront.z); // kąt obrotu pojazdu [rad]; z ABuBogies() + double a = ((Axle1.GetRoll() + Axle0.GetRoll())); // suma przechyłek if (a != 0.0) - { // wyznaczanie przechylenia tylko jeli jest przechyka - // mona by pobra wektory normalne z toru... - mMatrix.Identity(); // ta macierz jest potrzebna gwnie do wywietlania - mMatrix.Rotation(a * 0.5, vFront); // obrt wzdu osi o przechyk - vUp = mMatrix * vUp; // wektor w gr pojazdu (przekrcenie na przechyce) + { // wyznaczanie przechylenia tylko jeśli jest przechyłka + // można by pobrać wektory normalne z toru... + mMatrix.Identity(); // ta macierz jest potrzebna głównie do wyświetlania + mMatrix.Rotation(a * 0.5, vFront); // obrót wzdłuż osi o przechyłkę + vUp = mMatrix * vUp; // wektor w górę pojazdu (przekręcenie na przechyłce) // vLeft=mMatrix*DynamicObject->vLeft; - // vUp=CrossProduct(vFront,vLeft); //wektor w gr + // vUp=CrossProduct(vFront,vLeft); //wektor w górę // vLeft=Normalize(CrossProduct(vWorldUp,vFront)); //wektor w lewo vLeft = Normalize(CrossProduct(vUp, vFront)); // wektor w lewo - // vUp=CrossProduct(vFront,vLeft); //wektor w gr + // vUp=CrossProduct(vFront,vLeft); //wektor w górę } - mMatrix.Identity(); // to te mona by od razu policzy, ale potrzebne jest - // do wywietlania - mMatrix.BasisChange(vLeft, vUp, vFront); // przesuwanie jest jednak rzadziej ni + mMatrix.Identity(); // to też można by od razu policzyć, ale potrzebne jest + // do wyświetlania + mMatrix.BasisChange(vLeft, vUp, vFront); // przesuwanie jest jednak rzadziej niż // renderowanie mMatrix = Inverse(mMatrix); // wyliczenie macierzy dla pojazdu (potrzebna - // tylko do wywietlania?) + // tylko do wyświetlania?) // if (MoverParameters->CategoryFlag&2) - { // przesunicia s uywane po wyrzuceniu pocigu z toru - vPosition.x += MoverParameters->OffsetTrackH * vLeft.x; // dodanie przesunicia w bok + { // przesunięcia są używane po wyrzuceniu pociągu z toru + vPosition.x += MoverParameters->OffsetTrackH * vLeft.x; // dodanie przesunięcia w bok vPosition.z += MoverParameters->OffsetTrackH * vLeft.z; // vLeft jest wektorem poprzecznym - // if () na przechyce bdzie dodatkowo zmiana wysokoci samochodu - vPosition.y += MoverParameters->OffsetTrackV; // te offsety s liczone przez moverparam + // if () na przechyłce będzie dodatkowo zmiana wysokości samochodu + vPosition.y += MoverParameters->OffsetTrackV; // te offsety są liczone przez moverparam } - // Ra: skopiowanie pozycji do fizyki, tam potrzebna do zrywania sprzgw + // Ra: skopiowanie pozycji do fizyki, tam potrzebna do zrywania sprzęgów // MoverParameters->Loc.X=-vPosition.x; //robi to {Fast}ComputeMovement() // MoverParameters->Loc.Y= vPosition.z; // MoverParameters->Loc.Z= vPosition.y; - // obliczanie pozycji sprzgw do liczenia zderze - vector3 dir = (0.5 * MoverParameters->Dim.L) * vFront; // wektor sprzgu - vCoulpler[0] = vPosition + dir; // wsprzdne sprzgu na pocztku - vCoulpler[1] = vPosition - dir; // wsprzdne sprzgu na kocu + // obliczanie pozycji sprzęgów do liczenia zderzeń + vector3 dir = (0.5 * MoverParameters->Dim.L) * vFront; // wektor sprzęgu + vCoulpler[0] = vPosition + dir; // współrzędne sprzęgu na początku + vCoulpler[1] = vPosition - dir; // współrzędne sprzęgu na końcu MoverParameters->vCoulpler[0] = vCoulpler[0]; // tymczasowo kopiowane na inny poziom MoverParameters->vCoulpler[1] = vCoulpler[1]; // bCameraNear= - // if (bCameraNear) //jeli istotne s szczegy (blisko kamery) + // if (bCameraNear) //jeśli istotne są szczegóły (blisko kamery) { // przeliczenie cienia - TTrack *t0 = Axle0.GetTrack(); // ju po przesuniciu + TTrack *t0 = Axle0.GetTrack(); // już po przesunięciu TTrack *t1 = Axle1.GetTrack(); - if ((t0->eEnvironment == e_flat) && (t1->eEnvironment == e_flat)) // moe by + if ((t0->eEnvironment == e_flat) && (t1->eEnvironment == e_flat)) // może być // e_bridge... - fShade = 0.0; // standardowe owietlenie + fShade = 0.0; // standardowe oświetlenie else - { // jeeli te tory maj niestandardowy stopie zacienienia + { // jeżeli te tory mają niestandardowy stopień zacienienia // (e_canyon, e_tunnel) if (t0->eEnvironment == t1->eEnvironment) { switch (t0->eEnvironment) - { // typ zmiany owietlenia + { // typ zmiany oświetlenia case e_canyon: fShade = 0.65; break; // zacienienie w kanionie @@ -2232,14 +2232,14 @@ void TDynamicObject::Move(double fDistance) break; // zacienienie w tunelu } } - else // dwa rne - { // liczymy proporcj - double d = Axle0.GetTranslation(); // aktualne pooenie na torze + else // dwa różne + { // liczymy proporcję + double d = Axle0.GetTranslation(); // aktualne położenie na torze if (Axle0.GetDirection() < 0) - d = t0->fTrackLength - d; // od drugiej strony liczona dugo - d /= fAxleDist; // rozsataw osi procentowe znajdowanie si na torze + d = t0->fTrackLength - d; // od drugiej strony liczona długość + d /= fAxleDist; // rozsataw osi procentowe znajdowanie się na torze switch (t0->eEnvironment) - { // typ zmiany owietlenia - zakadam, e + { // typ zmiany oświetlenia - zakładam, że // drugi tor ma e_flat case e_canyon: fShade = (d * 0.65) + (1.0 - d); @@ -2249,7 +2249,7 @@ void TDynamicObject::Move(double fDistance) break; // zacienienie w tunelu } switch (t1->eEnvironment) - { // typ zmiany owietlenia - zakadam, e + { // typ zmiany oświetlenia - zakładam, że // pierwszy tor ma e_flat case e_canyon: fShade = d + (1.0 - d) * 0.65; @@ -2265,19 +2265,19 @@ void TDynamicObject::Move(double fDistance) }; void TDynamicObject::AttachPrev(TDynamicObject *Object, int iType) -{ // Ra: doczepia Object na kocu - // skadu (nazwa funkcji moe by - // mylca) - // Ra: uywane tylko przy wczytywaniu scenerii +{ // Ra: doczepia Object na końcu + // składu (nazwa funkcji może być + // myląca) + // Ra: używane tylko przy wczytywaniu scenerii /* - //Ra: po wstawieniu pojazdu do scenerii nie mia on ustawionej pozycji, teraz - ju ma + //Ra: po wstawieniu pojazdu do scenerii nie miał on ustawionej pozycji, teraz + już ma TLocation loc; loc.X=-vPosition.x; loc.Y=vPosition.z; loc.Z=vPosition.y; - MoverParameters->Loc=loc; //Ra: do obliczania sprzgw, na starcie nie s - przesunite + MoverParameters->Loc=loc; //Ra: do obliczania sprzęgów, na starcie nie są + przesunięte loc.X=-Object->vPosition.x; loc.Y=Object->vPosition.z; loc.Z=Object->vPosition.y; @@ -2289,42 +2289,42 @@ void TDynamicObject::AttachPrev(TDynamicObject *Object, int iType) Object->MoverParameters->Attach(Object->iDirection ^ 1, iDirection, MoverParameters, iType, true); Object->MoverParameters->Couplers[Object->iDirection ^ 1].Render = - true; // rysowanie sprzgu w doczanym + true; // rysowanie sprzęgu w dołączanym if (iDirection) - { //czenie standardowe - NextConnected = Object; // normalnie doczepiamy go sobie do sprzgu 1 + { //łączenie standardowe + NextConnected = Object; // normalnie doczepiamy go sobie do sprzęgu 1 NextConnectedNo = Object->iDirection ^ 1; } else - { //czenie odwrotne - PrevConnected = Object; // doczepiamy go sobie do sprzgu 0, gdy stoimy odwrotnie + { //łączenie odwrotne + PrevConnected = Object; // doczepiamy go sobie do sprzęgu 0, gdy stoimy odwrotnie PrevConnectedNo = Object->iDirection ^ 1; } if (Object->iDirection) - { // doczany jest normalnie ustawiany + { // dołączany jest normalnie ustawiany Object->PrevConnected = this; // on ma nas z przodu Object->PrevConnectedNo = iDirection; } else - { // doczany jest odwrotnie ustawiany - Object->NextConnected = this; // on ma nas z tyu + { // dołączany jest odwrotnie ustawiany + Object->NextConnected = this; // on ma nas z tyłu Object->NextConnectedNo = iDirection; } - if (MoverParameters->TrainType & dt_EZT) // w przypadku czenia czonw, - // wiata w rozrzdczym zale od + if (MoverParameters->TrainType & dt_EZT) // w przypadku łączenia członów, + // światła w rozrządczym zależą od // stanu w silnikowym if (MoverParameters->Couplers[iDirection].AllowedFlag & - ctrain_depot) // gdy sprzgi czone warsztatowo (powiedzmy) + ctrain_depot) // gdy sprzęgi łączone warsztatowo (powiedzmy) if ((MoverParameters->Power < 1.0) && (Object->MoverParameters->Power > 1.0)) // my nie mamy mocy, ale ten drugi ma - iLights = Object->MoverParameters->iLights; // to w tym z moc bd wiata - // zaczane, a w tym bez tylko widoczne + iLights = Object->MoverParameters->iLights; // to w tym z mocą będą światła + // załączane, a w tym bez tylko widoczne else if ((MoverParameters->Power > 1.0) && (Object->MoverParameters->Power < 1.0)) // my mamy moc, ale ten drugi nie ma - Object->iLights = MoverParameters->iLights; // to w tym z moc bd wiata - // zaczane, a w tym bez tylko widoczne + Object->iLights = MoverParameters->iLights; // to w tym z mocą będą światła + // załączane, a w tym bez tylko widoczne return; - // SetPneumatic(1,1); //Ra: to i tak si nie wykonywao po return + // SetPneumatic(1,1); //Ra: to i tak się nie wykonywało po return // SetPneumatic(1,0); // SetPneumatic(0,1); // SetPneumatic(0,0); @@ -2336,34 +2336,34 @@ bool TDynamicObject::UpdateForce(double dt, double dt1, bool FullVer) return false; if (dt > 0) MoverParameters->ComputeTotalForce(dt, dt1, - FullVer); // wywalenie WS zaley od ustawienia kierunku + FullVer); // wywalenie WS zależy od ustawienia kierunku return true; } void TDynamicObject::LoadUpdate() -{ // przeadowanie modelu adunku - // Ra: nie prbujemy wczytywa modeli miliony razy podczas renderowania!!! +{ // przeładowanie modelu ładunku + // Ra: nie próbujemy wczytywać modeli miliony razy podczas renderowania!!! if ((mdLoad == NULL) && (MoverParameters->Load > 0)) { std::string asLoadName = - asBaseDir + MoverParameters->LoadType + ".t3d"; // zapamitany katalog pojazdu + asBaseDir + MoverParameters->LoadType + ".t3d"; // zapamiętany katalog pojazdu // asLoadName=MoverParameters->LoadType; // if (MoverParameters->LoadType!=AnsiString("passengers")) - Global::asCurrentTexturePath = asBaseDir; // bieca cieka do tekstur to dynamic/... - mdLoad = TModelsManager::GetModel(asLoadName.c_str()); // nowy adunek + Global::asCurrentTexturePath = asBaseDir; // bieżąca ścieżka do tekstur to dynamic/... + mdLoad = TModelsManager::GetModel(asLoadName.c_str()); // nowy ładunek Global::asCurrentTexturePath = std::string(szTexturePath); // z powrotem defaultowa sciezka do tekstur - // Ra: w MMD mona by zapisa pooenie modelu adunku (np. wgiel) w - // zalenoci od - // zaadowania + // Ra: w MMD można by zapisać położenie modelu ładunku (np. węgiel) w + // zależności od + // załadowania } else if (MoverParameters->Load == 0) - mdLoad = NULL; // nie ma adunku + mdLoad = NULL; // nie ma ładunku // if ((mdLoad==NULL)&&(MoverParameters->Load>0)) // { - // mdLoad=NULL; //Ra: to jest tu bez sensu - co autor mia na myli? + // mdLoad=NULL; //Ra: to jest tu bez sensu - co autor miał na myśli? // } - MoverParameters->LoadStatus &= 3; // po zakoczeniu bdzie rwne zero + MoverParameters->LoadStatus &= 3; // po zakończeniu będzie równe zero }; /* @@ -2448,13 +2448,13 @@ void TDynamicObject::UpdatePos() /* Ra: - Powinny by dwie funkcje wykonujce aktualizacj fizyki. Jedna wykonujca -krok oblicze, powtarzana odpowiedni liczb razy, a druga wykonujca zbiorcz -aktualzacj mniej istotnych elementw. - Ponadto naleao by ustali odlego skadw od kamery i jeli przekracza -ona np. 10km, to traktowa skady jako uproszczone, np. bez wnikania w siy -na sprzgach, opnienie dziaania hamulca itp. Oczywicie musi mie to pewn -histerez czasow, aby te tryby pracy nie przeczay si zbyt szybko. + Powinny być dwie funkcje wykonujące aktualizację fizyki. Jedna wykonująca +krok obliczeń, powtarzana odpowiednią liczbę razy, a druga wykonująca zbiorczą +aktualzację mniej istotnych elementów. + Ponadto należało by ustalić odległość składów od kamery i jeśli przekracza +ona np. 10km, to traktować składy jako uproszczone, np. bez wnikania w siły +na sprzęgach, opóźnienie działania hamulca itp. Oczywiście musi mieć to pewną +histerezę czasową, aby te tryby pracy nie przełączały się zbyt szybko. */ bool TDynamicObject::Update(double dt, double dt1) @@ -2462,17 +2462,17 @@ bool TDynamicObject::Update(double dt, double dt1) if (dt == 0) return true; // Ra: pauza if (!MoverParameters->PhysicActivation && - !MechInside) // to drugie, bo bdc w maszynowym blokuje si fizyka + !MechInside) // to drugie, bo będąc w maszynowym blokuje się fizyka return true; // McZapkie: wylaczanie fizyki gdy nie potrzeba if (!MyTrack) - return false; // pojazdy postawione na torach portalowych maj MyTrack==NULL + return false; // pojazdy postawione na torach portalowych mają MyTrack==NULL if (!bEnabled) - return false; // a normalnie powinny mie bEnabled==false + return false; // a normalnie powinny mieć bEnabled==false - // Ra: przeniosem - no ju lepiej tu, ni w wywietlaniu! + // Ra: przeniosłem - no już lepiej tu, niż w wyświetlaniu! // if ((MoverParameters->ConverterFlag==false) && // (MoverParameters->TrainType!=dt_ET22)) - // Ra: to nie moe tu by, bo wycza sprark w rozrzdczym EZT! + // Ra: to nie może tu być, bo wyłącza sprężarkę w rozrządczym EZT! // if // ((MoverParameters->ConverterFlag==false)&&(MoverParameters->CompressorPower!=0)) // MoverParameters->CompressorFlag=false; @@ -2481,7 +2481,7 @@ bool TDynamicObject::Update(double dt, double dt1) // McZapkie-260202 if ((MoverParameters->EnginePowerSource.SourceType == CurrentCollector) && - (MoverParameters->Power > 1.0)) // aby rozrzdczy nie opuszcza silnikowemu + (MoverParameters->Power > 1.0)) // aby rozrządczy nie opuszczał silnikowemu if ((MechInside) || (MoverParameters->TrainType == dt_EZT)) { // if @@ -2490,21 +2490,21 @@ bool TDynamicObject::Update(double dt, double dt1) if (MoverParameters->PantPress < (MoverParameters->TrainType == dt_EZT ? 2.4 : 3.5)) { // 3.5 wg // http://www.transportszynowy.pl/eu06-07pneumat.php - //"Wyczniki cinieniowe odbierakw prdu wyczaj sterowanie - // wycznika szybkiego - // oraz uniemoliwiaj podniesienie odbierakw prdu, gdy w instalacji - // rozrzdu - // cinienie spadnie poniej wartoci 3,5 bara." - // Ra 2013-12: Niebugocaw mwi, e w EZT podnosz si przy 2.5 + //"Wyłączniki ciśnieniowe odbieraków prądu wyłączają sterowanie + // wyłącznika szybkiego + // oraz uniemożliwiają podniesienie odbieraków prądu, gdy w instalacji + // rozrządu + // ciśnienie spadnie poniżej wartości 3,5 bara." + // Ra 2013-12: Niebugocław mówi, że w EZT podnoszą się przy 2.5 // if (!MoverParameters->PantCompFlag) // MoverParameters->PantVolume=MoverParameters->CompressedVolume; - MoverParameters->PantFront(false); // opuszczenie pantografw przy niskim cinieniu + MoverParameters->PantFront(false); // opuszczenie pantografów przy niskim ciśnieniu MoverParameters->PantRear(false); // to idzie w ukrotnieniu, a nie powinno... } // Winger - automatyczne wylaczanie malej sprezarki else if (MoverParameters->PantPress >= 4.8) MoverParameters->PantCompFlag = false; - } // Ra: do Mover to trzeba przenie, eby AI te mogo sobie podpompowa + } // Ra: do Mover to trzeba przenieść, żeby AI też mogło sobie podpompować double dDOMoveLen; @@ -2519,14 +2519,13 @@ bool TDynamicObject::Update(double dt, double dt1) // TTrackShape ts; // ts.R=MyTrack->fRadius; // if (ABuGetDirection()<0) ts.R=-ts.R; - // ts.R=MyTrack->fRadius; //ujemne promienie s ju zamienione przy + // ts.R=MyTrack->fRadius; //ujemne promienie są już zamienione przy // wczytywaniu if (Axle0.vAngles.z != Axle1.vAngles.z) - { // wyliczenie promienia z obrotw - // osi - modyfikacj zgosi youBy - ts.R = Axle0.vAngles.z - Axle1.vAngles.z; // rnica moe dawa sta M_2PI + { // wyliczenie promienia z obrotów osi - modyfikację zgłosił youBy + ts.R = Axle0.vAngles.z - Axle1.vAngles.z; // różnica może dawać stałą ±M_2PI if( ( ts.R > 15000.0 ) || ( ts.R < -15000.0 ) ) { - // szkoda czasu na zbyt due promienie, 4km to promie nie wymagajcy przechyki + // szkoda czasu na zbyt duże promienie, 4km to promień nie wymagający przechyłki ts.R = 0.0; } else { @@ -2536,21 +2535,21 @@ bool TDynamicObject::Update(double dt, double dt1) if( ts.R != 0.0 ) { // sin(0) results in division by zero - // ts.R=fabs(0.5*MoverParameters->BDist/sin(ts.R*0.5)); + // ts.R=fabs(0.5*MoverParameters->BDist/sin(ts.R*0.5)); ts.R = -0.5 * MoverParameters->BDist / sin( ts.R * 0.5 ); - } + } } } else ts.R = 0.0; // ts.R=ComputeRadius(Axle1.pPosition,Axle2.pPosition,Axle3.pPosition,Axle0.pPosition); - // Ra: skadow pochylenia wzdunego mamy policzon w jednostkowym wektorze + // Ra: składową pochylenia wzdłużnego mamy policzoną w jednostkowym wektorze // vFront ts.Len = 1.0; // Max0R(MoverParameters->BDist,MoverParameters->ADist); ts.dHtrack = -vFront.y; // Axle1.pPosition.y-Axle0.pPosition.y; //wektor - // midzy skrajnymi osiami + // między skrajnymi osiami // (!!!odwrotny) - ts.dHrail = (Axle1.GetRoll() + Axle0.GetRoll()) * 0.5; //rednia przechyka puda + ts.dHrail = (Axle1.GetRoll() + Axle0.GetRoll()) * 0.5; //średnia przechyłka pudła // TTrackParam tp; tp.Width = MyTrack->fTrackWidth; // McZapkie-250202 @@ -2568,15 +2567,15 @@ bool TDynamicObject::Update(double dt, double dt1) MoverParameters->InsideConsist = false; } // napiecie sieci trakcyjnej - // Ra 15-01: przeliczenie poboru prdu powinno by robione wczeniej, eby na - // tym etapie byy - // znane napicia + // Ra 15-01: przeliczenie poboru prądu powinno być robione wcześniej, żeby na + // tym etapie były + // znane napięcia // TTractionParam tmpTraction; // tmpTraction.TractionVoltage=0; if (MoverParameters->EnginePowerSource.SourceType == CurrentCollector) { // dla EZT tylko silnikowy // if (Global::bLiveTraction) - { // Ra 2013-12: to niej jest chyba troch bez sensu + { // Ra 2013-12: to niżej jest chyba trochę bez sensu double v = MoverParameters->PantRearVolt; if (v == 0.0) { @@ -2584,28 +2583,28 @@ bool TDynamicObject::Update(double dt, double dt1) if (v == 0.0) if ((MoverParameters->TrainType & (dt_EZT | dt_ET40 | dt_ET41 | dt_ET42)) && MoverParameters->EngineType != - ElectricInductionMotor) // dwuczony mog mie sprzg WN + ElectricInductionMotor) // dwuczłony mogą mieć sprzęg WN v = MoverParameters->GetTrainsetVoltage(); // ostatnia szansa } if (v != 0.0) - { // jeli jest zasilanie + { // jeśli jest zasilanie NoVoltTime = 0; tmpTraction.TractionVoltage = v; } else { /* - if (MoverParameters->Vel>0.1f) //jeli jedzie - if (NoVoltTime==0.0) //tylko przy pierwszym zaniku napicia + if (MoverParameters->Vel>0.1f) //jeśli jedzie + if (NoVoltTime==0.0) //tylko przy pierwszym zaniku napięcia if (MoverParameters->PantFrontUp||MoverParameters->PantRearUp) //if ((pants[0].fParamPants->PantTraction>1.0)||(pants[1].fParamPants->PantTraction>1.0)) - {//wspomagacz usuwania problemw z sieci + {//wspomagacz usuwania problemów z siecią if (!Global::iPause) - {//Ra: tymczasowa teleportacja do miejsca, gdzie brakuje prdu + {//Ra: tymczasowa teleportacja do miejsca, gdzie brakuje prądu Global::SetCameraPosition(vPosition+vector3(0,0,5)); //nowa pozycja dla - generowania obiektw + generowania obiektów Global::pCamera->Init(vPosition+vector3(0,0,5),Global::pFreeCameraInitAngle[0]); //przestawienie } @@ -2613,30 +2612,30 @@ bool TDynamicObject::Update(double dt, double dt1) wszystkiego z poprzedniej pozycji Globa:iPause|=1; //tymczasowe zapauzowanie, gdy problem z - sieci + siecią } */ NoVoltTime = NoVoltTime + dt; - if (NoVoltTime > 0.2) // jeli brak zasilania duej ni 0.2 sekundy (25km/h pod + if (NoVoltTime > 0.2) // jeśli brak zasilania dłużej niż 0.2 sekundy (25km/h pod // izolatorem daje 0.15s) - { // Ra 2F1H: prowizorka, trzeba przechowa napicie, eby nie wywalao + { // Ra 2F1H: prowizorka, trzeba przechować napięcie, żeby nie wywalało // WS pod // izolatorem - if (MoverParameters->Vel > 0.5) // jeli jedzie + if (MoverParameters->Vel > 0.5) // jeśli jedzie if (MoverParameters->PantFrontUp || - MoverParameters->PantRearUp) // Ra 2014-07: dorana blokada logowania - // zimnych lokomotyw - zrobi to trzeba + MoverParameters->PantRearUp) // Ra 2014-07: doraźna blokada logowania + // zimnych lokomotyw - zrobić to trzeba // inaczej - // if (NoVoltTime>0.02) //tu mona ograniczy czas rozczenia + // if (NoVoltTime>0.02) //tu można ograniczyć czas rozłączenia // if (DebugModeFlag) //logowanie nie zawsze if ((MoverParameters->Mains) && ((MoverParameters->EngineType != ElectricInductionMotor) || (MoverParameters->GetTrainsetVoltage() < 0.1f))) - { // Ra 15-01: logowa tylko, jeli WS zaczony + { // Ra 15-01: logować tylko, jeśli WS załączony // yB 16-03: i nie jest to asynchron zasilany z daleka // if (MoverParameters->PantFrontUp&&pants) - // Ra 15-01: bezwzgldne wsprzdne pantografu nie s dostpne, - // wic lepiej si tego nie zaloguje + // Ra 15-01: bezwzględne współrzędne pantografu nie są dostępne, + // więc lepiej się tego nie zaloguje ErrorLog("Voltage loss: by " + MoverParameters->Name + " at " + to_string(vPosition.x, 2, 7) + " " + to_string(vPosition.y, 2, 7) + " " + @@ -2651,23 +2650,23 @@ bool TDynamicObject::Update(double dt, double dt1) // "+FloatToStrF(vPosition.z,ffFixed,7,2)+", time // "+FloatToStrF(NoVoltTime,ffFixed,7,2)); } - // Ra 2F1H: nie byo sensu wpisywa tu zera po upywie czasu, bo - // zmienna bya - // tymczasowa, a napicie zerowane od razu + // Ra 2F1H: nie było sensu wpisywać tu zera po upływie czasu, bo + // zmienna była + // tymczasowa, a napięcie zerowane od razu tmpTraction.TractionVoltage = 0; // Ra 2013-12: po co tak? - // pControlled->MainSwitch(false); //moe tak? + // pControlled->MainSwitch(false); //może tak? } } } - // else //Ra: nie no, trzeba podnie pantografy, jak nie bdzie drutu, to - // bd miay prd - // po osigniciu 1.4m + // else //Ra: nie no, trzeba podnieść pantografy, jak nie będzie drutu, to + // będą miały prąd + // po osiągnięciu 1.4m // tmpTraction.TractionVoltage=0.95*MoverParameters->EnginePowerSource.MaxVoltage; } else tmpTraction.TractionVoltage = 0.95 * MoverParameters->EnginePowerSource.MaxVoltage; tmpTraction.TractionFreq = 0; - tmpTraction.TractionMaxCurrent = 7500; // Ra: chyba za duo? powinno wywala przy 1500 + tmpTraction.TractionMaxCurrent = 7500; // Ra: chyba za dużo? powinno wywalać przy 1500 tmpTraction.TractionResistivity = 0.3; // McZapkie: predkosc w torze przekazac do TrackParam @@ -2676,7 +2675,7 @@ bool TDynamicObject::Update(double dt, double dt1) tp.Velmax = MyTrack->VelocityGet(); if (Mechanik) - { // Ra 2F3F: do Driver.cpp to przenie? + { // Ra 2F3F: do Driver.cpp to przenieść? MoverParameters->EqvtPipePress = GetEPP(); // srednie cisnienie w PG if ((Mechanik->Primary()) && (MoverParameters->EngineType == ElectricInductionMotor)) // jesli glowny i z @@ -2733,7 +2732,7 @@ bool TDynamicObject::Update(double dt, double dt1) FrED -= Min0R(p->MoverParameters->eimv[eimv_Fr], 0) * 1000; // chwilowo realizowane ED -> do pneumatyki Frj += Max0R(p->MoverParameters->eimv[eimv_Fr], 0) * - 1000;// chwilowo realizowany napd -> do utrzymujcego + 1000;// chwilowo realizowany napęd -> do utrzymującego masa += p->MoverParameters->TotalMass; osie += p->MoverParameters->NAxles; } @@ -2933,30 +2932,30 @@ bool TDynamicObject::Update(double dt, double dt1) // Mechanik->LastReactionTime=0; // } - Mechanik->UpdateSituation(dt1); // przebyski wiadomoci AI + Mechanik->UpdateSituation(dt1); // przebłyski świadomości AI } // fragment "z EXE Kursa" - if (MoverParameters->Mains) // nie wchodzi w funkcj bez potrzeby + if (MoverParameters->Mains) // nie wchodzić w funkcję bez potrzeby if ((!MoverParameters->Battery) && (Controller == Humandriver) && (MoverParameters->EngineType != DieselEngine) && (MoverParameters->EngineType != WheelsDriven)) - { // jeli bateria wyczona, a nie diesel ani drezyna + { // jeśli bateria wyłączona, a nie diesel ani drezyna // reczna - if (MoverParameters->MainSwitch(false)) // wyczy zasilanie + if (MoverParameters->MainSwitch(false)) // wyłączyć zasilanie MoverParameters->EventFlag = true; } if (MoverParameters->TrainType == dt_ET42) - { // powinny by wszystkie dwuczony oraz EZT + { // powinny być wszystkie dwuczłony oraz EZT /* - //Ra: to jest bez sensu, bo wycza WS przy przechodzeniu przez - "wewntrzne" kabiny (z + //Ra: to jest bez sensu, bo wyłącza WS przy przechodzeniu przez + "wewnętrzne" kabiny (z powodu ActiveCab) - //trzeba to zrobi inaczej, np. dla czonu A sprawdza, czy jest B - //albo sprawdza w momencie zaczania WS i zmiany w sprzgach + //trzeba to zrobić inaczej, np. dla członu A sprawdzać, czy jest B + //albo sprawdzać w momencie załączania WS i zmiany w sprzęgach if (((TestFlag(MoverParameters->Couplers[1].CouplingFlag,ctrain_controll))&&(MoverParameters->ActiveCab>0)&&(NextConnected->MoverParameters->TrainType!=dt_ET42))||((TestFlag(MoverParameters->Couplers[0].CouplingFlag,ctrain_controll))&&(MoverParameters->ActiveCab<0)&&(PrevConnected->MoverParameters->TrainType!=dt_ET42))) - {//sprawdzenie, czy z tyu kabiny mamy drugi czon + {//sprawdzenie, czy z tyłu kabiny mamy drugi człon if (MoverParameters->MainSwitch(false)) MoverParameters->EventFlag=true; } @@ -2974,11 +2973,11 @@ bool TDynamicObject::Update(double dt, double dt1) GetdMoveLen() + MoverParameters->ComputeMovement(dt, dt1, ts, tp, tmpTraction, l, r); // yB: zeby zawsze wrzucalo w jedna strone zakretu MoverParameters->AccN *= -ABuGetDirection(); - // if (dDOMoveLen!=0.0) //Ra: nie moe by, bo blokuje Event0 + // if (dDOMoveLen!=0.0) //Ra: nie może być, bo blokuje Event0 Move(dDOMoveLen); - if (!bEnabled) // usuwane pojazdy nie maj toru - { // pojazd do usunicia - Global::pGround->bDynamicRemove = true; // sprawdzi + if (!bEnabled) // usuwane pojazdy nie mają toru + { // pojazd do usunięcia + Global::pGround->bDynamicRemove = true; // sprawdzić return false; } Global::ABuDebug = dDOMoveLen / dt1; @@ -2989,7 +2988,7 @@ bool TDynamicObject::Update(double dt, double dt1) // taka prowizorka zeby sciszyc stukot dalekiej lokomotywy double ObjectDist; double vol = 0; - // double freq; //Ra: nie uywane + // double freq; //Ra: nie używane ObjectDist = SquareMagnitude(Global::pCameraPosition - vPosition); // McZapkie-270202 if (MyTrack->fSoundDistance != -1) @@ -3097,7 +3096,7 @@ bool TDynamicObject::Update(double dt, double dt1) } */ if ((MoverParameters->TrainType == dt_ET40) || (MoverParameters->TrainType == dt_EP05)) { // dla ET40 i EU05 automatyczne cofanie nastawnika - i tak - // nie bdzie to dziaa dobrze... + // nie będzie to działać dobrze... /* if ((MoverParameters->MainCtrlPos>MoverParameters->MainCtrlActualPos)&&(abs(MoverParameters->Im)>MoverParameters->IminHi)) { @@ -3111,61 +3110,61 @@ bool TDynamicObject::Update(double dt, double dt1) if ((!Console::Pressed(Global::Keys[k_DecMainCtrl])) && (MoverParameters->MainCtrlPos < MoverParameters->MainCtrlActualPos)) { - MoverParameters->IncMainCtrl(1); // Ra 15-01: a to nie miao by tylko cofanie? + MoverParameters->IncMainCtrl(1); // Ra 15-01: a to nie miało być tylko cofanie? } } if (MoverParameters->Vel != 0) { // McZapkie-050402: krecenie kolami: - assert( MoverParameters->WheelDiameterL != 0.0 ); - assert( MoverParameters->WheelDiameterT != 0.0 ); - dWheelAngle[ 0 ] += 114.59155902616464175359630962821 * MoverParameters->V * dt1 / MoverParameters->WheelDiameterL; // przednie toczne - dWheelAngle[1] += MoverParameters->nrot * dt1 * 360.0; // napdne - dWheelAngle[2] += 114.59155902616464175359630962821 * MoverParameters->V * dt1 / MoverParameters->WheelDiameterT; // tylne toczne + dWheelAngle[0] += 114.59155902616464175359630962821 * MoverParameters->V * dt1 / + MoverParameters->WheelDiameterL; // przednie toczne + dWheelAngle[1] += MoverParameters->nrot * dt1 * 360.0; // napędne + dWheelAngle[2] += 114.59155902616464175359630962821 * MoverParameters->V * dt1 / + MoverParameters->WheelDiameterT; // tylne toczne if (dWheelAngle[0] > 360.0) - dWheelAngle[0] -= 360.0; // a w drug stron jak si krc? + dWheelAngle[0] -= 360.0; // a w drugą stronę jak się kręcą? if (dWheelAngle[1] > 360.0) dWheelAngle[1] -= 360.0; if (dWheelAngle[2] > 360.0) dWheelAngle[2] -= 360.0; } - if (pants) // pantograf moe by w wagonie kuchennym albo pojedzie rewizyjnym + if (pants) // pantograf może być w wagonie kuchennym albo pojeździe rewizyjnym // (np. SR61) - { // przeliczanie ktw dla pantografw - double k; // tymczasowy kt + { // przeliczanie kątów dla pantografów + double k; // tymczasowy kąt double PantDiff; - TAnimPant *p; // wskanik do obiektu danych pantografu + TAnimPant *p; // wskaźnik do obiektu danych pantografu double fCurrent = (MoverParameters->DynamicBrakeFlag && MoverParameters->ResistorsFlag ? 0 : MoverParameters->Itot) + - MoverParameters->TotalCurrent; // prd pobierany przez pojazd - bez + MoverParameters->TotalCurrent; // prąd pobierany przez pojazd - bez // sensu z tym (TotalCurrent) // TotalCurrent to bedzie prad nietrakcyjny (niezwiazany z napedem) - // fCurrent+=fabs(MoverParameters->Voltage)*1e-6; //prd pyncy przez + // fCurrent+=fabs(MoverParameters->Voltage)*1e-6; //prąd płynący przez // woltomierz, - // rozadowuje kondensator orgromowy 4F - double fPantCurrent = fCurrent; // normalnie cay prd przez jeden pantograf + // rozładowuje kondensator orgromowy 4µF + double fPantCurrent = fCurrent; // normalnie cały prąd przez jeden pantograf if (pants) - if (iAnimType[ANIM_PANTS] > 1) // a jeli s dwa pantografy //Ra 1014-11: - // proteza, trzeba zrobi sensowniej + if (iAnimType[ANIM_PANTS] > 1) // a jeśli są dwa pantografy //Ra 1014-11: + // proteza, trzeba zrobić sensowniej if (pants[0].fParamPants->hvPowerWire && - pants[1].fParamPants->hvPowerWire) // i oba podczone do drutw - fPantCurrent = fCurrent * 0.5; // to dzielimy prd rwno na oba (troch bez - // sensu, ale lepiej tak ni podwoi prd) + pants[1].fParamPants->hvPowerWire) // i oba podłączone do drutów + fPantCurrent = fCurrent * 0.5; // to dzielimy prąd równo na oba (trochę bez + // sensu, ale lepiej tak niż podwoić prąd) for (int i = 0; i < iAnimType[ANIM_PANTS]; ++i) - { // ptla po wszystkich pantografach + { // pętla po wszystkich pantografach p = pants[i].fParamPants; if (p->PantWys < 0) - { // patograf zosta poamany, liczony nie bdzie + { // patograf został połamany, liczony nie będzie if (p->fAngleL > p->fAngleL0) - p->fAngleL -= 0.2 * dt1; // nieco szybciej ni jak dla opuszczania + p->fAngleL -= 0.2 * dt1; // nieco szybciej niż jak dla opuszczania if (p->fAngleL < p->fAngleL0) - p->fAngleL = p->fAngleL0; // kt graniczny + p->fAngleL = p->fAngleL0; // kąt graniczny if (p->fAngleU < M_PI) - p->fAngleU += 0.5 * dt1; // grne si musi rusza szybciej. + p->fAngleU += 0.5 * dt1; // górne się musi ruszać szybciej. if (p->fAngleU > M_PI) p->fAngleU = M_PI; - if (i & 1) // zgoszono, e po poamaniu potrafi zosta zasilanie + if (i & 1) // zgłoszono, że po połamaniu potrafi zostać zasilanie MoverParameters->PantRearVolt = 0.0; else MoverParameters->PantFrontVolt = 0.0; @@ -3173,10 +3172,10 @@ bool TDynamicObject::Update(double dt, double dt1) } PantDiff = p->PantTraction - p->PantWys; // docelowy-aktualny switch (i) // numer pantografu - { // trzeba usun to rozrnienie + { // trzeba usunąć to rozróżnienie case 0: if (Global::bLiveTraction ? false : - !p->hvPowerWire) // jeli nie ma drutu, moe pooszukiwa + !p->hvPowerWire) // jeśli nie ma drutu, może pooszukiwać MoverParameters->PantFrontVolt = (p->PantWys >= 1.2) ? 0.95 * MoverParameters->EnginePowerSource.MaxVoltage : 0.0; @@ -3186,13 +3185,13 @@ bool TDynamicObject::Update(double dt, double dt1) if ((MoverParameters->PantFrontVolt == 0.0) && (MoverParameters->PantRearVolt == 0.0)) sPantUp.Play(vol, 0, MechInside, vPosition); - if (p->hvPowerWire) // TODO: wyliczy trzeba prd przypadajcy na + if (p->hvPowerWire) // TODO: wyliczyć trzeba prąd przypadający na // pantograf i - // wstawi do GetVoltage() + // wstawić do GetVoltage() { MoverParameters->PantFrontVolt = p->hvPowerWire->VoltageGet(MoverParameters->Voltage, fPantCurrent); - fCurrent -= fPantCurrent; // taki prd pynie przez powyszy pantograf + fCurrent -= fPantCurrent; // taki prąd płynie przez powyższy pantograf } else MoverParameters->PantFrontVolt = 0.0; @@ -3202,7 +3201,7 @@ bool TDynamicObject::Update(double dt, double dt1) break; case 1: if (Global::bLiveTraction ? false : - !p->hvPowerWire) // jeli nie ma drutu, moe pooszukiwa + !p->hvPowerWire) // jeśli nie ma drutu, może pooszukiwać MoverParameters->PantRearVolt = (p->PantWys >= 1.2) ? 0.95 * MoverParameters->EnginePowerSource.MaxVoltage : 0.0; @@ -3211,13 +3210,13 @@ bool TDynamicObject::Update(double dt, double dt1) if ((MoverParameters->PantRearVolt == 0.0) && (MoverParameters->PantFrontVolt == 0.0)) sPantUp.Play(vol, 0, MechInside, vPosition); - if (p->hvPowerWire) // TODO: wyliczy trzeba prd przypadajcy na + if (p->hvPowerWire) // TODO: wyliczyć trzeba prąd przypadający na // pantograf i - // wstawi do GetVoltage() + // wstawić do GetVoltage() { MoverParameters->PantRearVolt = p->hvPowerWire->VoltageGet(MoverParameters->Voltage, fPantCurrent); - fCurrent -= fPantCurrent; // taki prd pynie przez powyszy pantograf + fCurrent -= fPantCurrent; // taki prąd płynie przez powyższy pantograf } else MoverParameters->PantRearVolt = 0.0; @@ -3225,70 +3224,70 @@ bool TDynamicObject::Update(double dt, double dt1) else MoverParameters->PantRearVolt = 0.0; break; - } // pozostae na razie nie obsugiwane + } // pozostałe na razie nie obsługiwane if (MoverParameters->PantPress > (MoverParameters->TrainType == dt_EZT ? 2.5 : 3.3)) // Ra 2013-12: - // Niebugocaw - // mwi, e w EZT - // podnosz si + // Niebugocław + // mówi, że w EZT + // podnoszą się // przy 2.5 pantspeedfactor = 0.015 * (MoverParameters->PantPress) * - dt1; // z EXE Kursa //Ra: wysoko zaley od cinienia !!! + dt1; // z EXE Kursa //Ra: wysokość zależy od ciśnienia !!! else pantspeedfactor = 0.0; if (pantspeedfactor < 0) pantspeedfactor = 0; k = p->fAngleL; if (i ? MoverParameters->PantRearUp : - MoverParameters->PantFrontUp) // jeli ma by podniesiony + MoverParameters->PantFrontUp) // jeśli ma być podniesiony { - if (PantDiff > 0.001) // jeli nie dolega do drutu - { // jeli poprzednia wysoko jest mniejsza ni podana, zwikszy kt + if (PantDiff > 0.001) // jeśli nie dolega do drutu + { // jeśli poprzednia wysokość jest mniejsza niż pożądana, zwiększyć kąt // dolnego - // ramienia zgodnie z cinieniem + // ramienia zgodnie z ciśnieniem if (pantspeedfactor > - 0.55 * PantDiff) // 0.55 to okoo pochodna kta po wysokoci + 0.55 * PantDiff) // 0.55 to około pochodna kąta po wysokości k += 0.55 * PantDiff; // ograniczenie "skoku" w danej klatce else - k += pantspeedfactor; // dolne rami - // jeli przekroczono kt graniczny, zablokowa pantograf (wymaga + k += pantspeedfactor; // dolne ramię + // jeśli przekroczono kąt graniczny, zablokować pantograf (wymaga // interwencji - // pocigu sieciowego) + // pociągu sieciowego) } else if (PantDiff < -0.001) - { // drut si obniy albo pantograf + { // drut się obniżył albo pantograf // podniesiony za wysoko - // jeli wysoko jest zbyt dua, wyznaczy zmniejszenie kta - // jeli zmniejszenie kta jest zbyt due, przej do trybu amania + // jeśli wysokość jest zbyt duża, wyznaczyć zmniejszenie kąta + // jeśli zmniejszenie kąta jest zbyt duże, przejść do trybu łamania // pantografu - // if (PantFrontDiff<-0.05) //skok w d o 5cm daje zmanie + // if (PantFrontDiff<-0.05) //skok w dół o 5cm daje złąmanie // pantografu - k += 0.4 * PantDiff; // mniej ni pochodna kta po wysokoci - } // jeli wysoko jest dobra, nic wicej nie liczy + k += 0.4 * PantDiff; // mniej niż pochodna kąta po wysokości + } // jeśli wysokość jest dobra, nic więcej nie liczyć } else - { // jeli ma by na dole - if (k > p->fAngleL0) // jeli wyej ni pooenie wyjciowe - k -= 0.15 * dt1; // ruch w d + { // jeśli ma być na dole + if (k > p->fAngleL0) // jeśli wyżej niż położenie wyjściowe + k -= 0.15 * dt1; // ruch w dół if (k < p->fAngleL0) - k = p->fAngleL0; // pooenie minimalne + k = p->fAngleL0; // położenie minimalne } if (k != p->fAngleL) - { //eby nie liczy w kilku miejscach ani gdy nie potrzeba + { //żeby nie liczyć w kilku miejscach ani gdy nie potrzeba if (k + p->fAngleU < M_PI) - { // o ile nie zosta osignity kt maksymalny - p->fAngleL = k; // zmieniony kt - // wyliczy kt grnego ramienia z wzoru (a)cosinusowego + { // o ile nie został osiągnięty kąt maksymalny + p->fAngleL = k; // zmieniony kąt + // wyliczyć kąt górnego ramienia z wzoru (a)cosinusowego //=acos((b*cos()+c)/a) - // p->dPantAngleT=acos((1.22*cos(k)+0.535)/1.755); //grne rami - p->fAngleU = acos((p->fLenL1 * cos(k) + p->fHoriz) / p->fLenU1); // grne rami - // wyliczy aktualn wysoko z wzoru sinusowego + // p->dPantAngleT=acos((1.22*cos(k)+0.535)/1.755); //górne ramię + p->fAngleU = acos((p->fLenL1 * cos(k) + p->fHoriz) / p->fLenU1); // górne ramię + // wyliczyć aktualną wysokość z wzoru sinusowego // h=a*sin()+b*sin() p->PantWys = p->fLenL1 * sin(k) + p->fLenU1 * sin(p->fAngleU) + - p->fHeight; // wysoko caoci + p->fHeight; // wysokość całości } } - } // koniec ptli po pantografach + } // koniec pętli po pantografach if ((MoverParameters->PantFrontSP == false) && (MoverParameters->PantFrontUp == false)) { sPantDown.Play(vol, 0, MechInside, vPosition); @@ -3303,19 +3302,19 @@ bool TDynamicObject::Update(double dt, double dt1) { // Winger 240404 - wylaczanie sprezarki i // przetwornicy przy braku napiecia if (tmpTraction.TractionVoltage == 0) - { // to co wyczao dwik silnika w ST43! + { // to coś wyłączało dźwięk silnika w ST43! MoverParameters->ConverterFlag = false; - MoverParameters->CompressorFlag = false; // Ra: to jest wtpliwe - wyczenie - // sprarki powinno by w jednym miejscu! + MoverParameters->CompressorFlag = false; // Ra: to jest wątpliwe - wyłączenie + // sprężarki powinno być w jednym miejscu! } } } else if (MoverParameters->EnginePowerSource.SourceType == InternalSource) if (MoverParameters->EnginePowerSource.PowerType == SteamPower) // if (smPatykird1[0]) - { // Ra: animacja rozrzdu parowozu, na razie nieoptymalizowane - /* //Ra: tymczasowo wyczone ze wzgldu na porzdkowanie animacji - pantografw + { // Ra: animacja rozrządu parowozu, na razie nieoptymalizowane + /* //Ra: tymczasowo wyłączone ze względu na porządkowanie animacji + pantografów double fi,dx,c2,ka,kc; double sin_fi,cos_fi; double L1=1.6688888888888889; @@ -3324,11 +3323,11 @@ bool TDynamicObject::Update(double dt, double dt1) double L=5.686422222; //2558.89/450 double G1,G2,G3,ksi,sin_ksi,gam; double G1_2,G2_2,G3_2; //kwadraty - //ruch tokw oraz korbowodw + //ruch tłoków oraz korbowodów for (int i=0;i<=1;++i) - {//obie strony w ten sam sposb - fi=DegToRad(dWheelAngle[1]+(i?pant2x:pant1x)); //kt obrotu koa dla - toka 1 + {//obie strony w ten sam sposób + fi=DegToRad(dWheelAngle[1]+(i?pant2x:pant1x)); //kąt obrotu koła dla + tłoka 1 sin_fi=sin(fi); cos_fi=cos(fi); dx=panty*cos_fi+sqrt(panth*panth-panty*panty*sin_fi*sin_fi)-panth; @@ -3339,30 +3338,30 @@ bool TDynamicObject::Update(double dt, double dt1) if (smPatykirg1[i]) //na razie zabezpieczenie smPatykirg1[i]->SetRotateXYZ(vector3(RadToDeg(ka),0,0)); //smPatykirg1[0]->SetRotate(float3(0,1,0),RadToDeg(fi)); //obracamy - //ruch drka mimorodkowego oraz jarzma - //korzystaem z pliku PDF "mm.pdf" (opis czworoboku + //ruch drążka mimośrodkowego oraz jarzma + //korzystałem z pliku PDF "mm.pdf" (opis czworoboku korbowo-wahaczowego): - //"MECHANIKA MASZYN. Szkic wykadu i laboratorium komputerowego." - //Prof. dr hab. in. Jerzy Zajczkowski, 2007, Politechnika dzka - //L1 - wysoko (w pionie) osi jarzma ponad osi koa - //L2 - odlego w poziomie osi jarzma od osi koa - //Lc - dugo korby mimorodu na kole - //Lr - promie jarzma =1.0 (pozostae przeliczone proporcjonalnie) - //L - dugo drka mimorodowego - //fi - kt obrotu koa - //ksi - kt obrotu jarzma (od pionu) - //gam - odchylenie drka mimorodowego od poziomu + //"MECHANIKA MASZYN. Szkic wykładu i laboratorium komputerowego." + //Prof. dr hab. inż. Jerzy Zajączkowski, 2007, Politechnika Łódzka + //L1 - wysokość (w pionie) osi jarzma ponad osią koła + //L2 - odległość w poziomie osi jarzma od osi koła + //Lc - długość korby mimośrodu na kole + //Lr - promień jarzma =1.0 (pozostałe przeliczone proporcjonalnie) + //L - długość drążka mimośrodowego + //fi - kąt obrotu koła + //ksi - kąt obrotu jarzma (od pionu) + //gam - odchylenie drążka mimośrodowego od poziomu //G1=(Lr*Lr+L1*L1+L2*L2+Kc*Lc-L*L-2.0*Lc*L2*cos(fi)+2.0*Lc*L1*sin(fi))/(Lr*Lr); //G2=2.0*(L2-Lc*cos(fi))/Lr; //G3=2.0*(L1-Lc*sin(fi))/Lr; - fi=DegToRad(dWheelAngle[1]+(i?pant2x:pant1x)-96.77416667); //kt - obrotu koa dla - toka 1 - //1) dla dWheelAngle[1]=0 korba jest w d, a mimord w stron + fi=DegToRad(dWheelAngle[1]+(i?pant2x:pant1x)-96.77416667); //kąt + obrotu koła dla + tłoka 1 + //1) dla dWheelAngle[1]=0° korba jest w dół, a mimośród w stronę jarzma, czyli - fi=-7 - //2) dla dWheelAngle[1]=90 korba jest do tyu, a mimord w d, - czyli fi=83 + fi=-7° + //2) dla dWheelAngle[1]=90° korba jest do tyłu, a mimośród w dół, + czyli fi=83° sin_fi=sin(fi); cos_fi=cos(fi); G1=(1.0+L1*L1+L2*L2+Lc*Lc-L*L-2.0*Lc*L2*cos_fi+2.0*Lc*L1*sin_fi); @@ -3373,22 +3372,22 @@ bool TDynamicObject::Update(double dt, double dt1) G3_2=G3*G3; sin_ksi=(G1*G2-G3*_fm_sqrt(G2_2+G3_2-G1_2))/(G2_2+G3_2); //x1 (minus delta) - ksi=asin(sin_ksi); //kt jarzma + ksi=asin(sin_ksi); //kąt jarzma if (smPatykirg2[i]) - smPatykirg2[i]->SetRotateXYZ(vector3(RadToDeg(ksi),0,0)); //obrcenie + smPatykirg2[i]->SetRotateXYZ(vector3(RadToDeg(ksi),0,0)); //obrócenie jarzma - //1) ksi=-23, gam= - //2) ksi=10, gam= - //gam=acos((L2-sin_ksi-Lc*cos_fi)/L); //kt od poziomu, liczony - wzgldem poziomu - //gam=asin((L1-cos_ksi-Lc*sin_fi)/L); //kt od poziomu, liczony - wzgldem pionu - gam=atan2((L1-cos(ksi)+Lc*sin_fi),(L2-sin_ksi+Lc*cos_fi)); //kt od + //1) ksi=-23°, gam= + //2) ksi=10°, gam= + //gam=acos((L2-sin_ksi-Lc*cos_fi)/L); //kąt od poziomu, liczony + względem poziomu + //gam=asin((L1-cos_ksi-Lc*sin_fi)/L); //kąt od poziomu, liczony + względem pionu + gam=atan2((L1-cos(ksi)+Lc*sin_fi),(L2-sin_ksi+Lc*cos_fi)); //kąt od poziomu if (smPatykird2[i]) //na razie zabezpieczenie smPatykird2[i]->SetRotateXYZ(vector3(RadToDeg(-gam-ksi),0,0)); - //obrcenie drka - mimorodowego + //obrócenie drążka + mimośrodowego } */ } @@ -3420,30 +3419,30 @@ bool TDynamicObject::Update(double dt, double dt1) } // ABu-160303 sledzenie toru przed obiektem: ******************************* - // Z obserwacji: v>0 -> Coupler 0; v<0 ->coupler1 (Ra: prdko jest zwizana + // Z obserwacji: v>0 -> Coupler 0; v<0 ->coupler1 (Ra: prędkość jest związana // z pojazdem) // Rozroznienie jest tutaj, zeby niepotrzebnie nie skakac do funkcji. Nie jest // uzaleznione // od obecnosci AI, zeby uwzglednic np. jadace bez lokomotywy wagony. - // Ra: mona by przenie na poziom obiektu reprezentujcego skad, aby nie - // sprawdza rodkowych - if (CouplCounter > 25) // licznik, aby nie robi za kadym razem - { // poszukiwanie czego do zderzenia si - fTrackBlock = 10000.0; // na razie nie ma przeszkd (na wypadek nie + // Ra: można by przenieść na poziom obiektu reprezentującego skład, aby nie + // sprawdzać środkowych + if (CouplCounter > 25) // licznik, aby nie robić za każdym razem + { // poszukiwanie czegoś do zderzenia się + fTrackBlock = 10000.0; // na razie nie ma przeszkód (na wypadek nie // uruchomienia skanowania) - // jeli nie ma zwrotnicy po drodze, to tylko przeliczy odlego? - if (MoverParameters->V > 0.03) //[m/s] jeli jedzie do przodu (w kierunku Coupler 0) + // jeśli nie ma zwrotnicy po drodze, to tylko przeliczyć odległość? + if (MoverParameters->V > 0.03) //[m/s] jeśli jedzie do przodu (w kierunku Coupler 0) { if (MoverParameters->Couplers[0].CouplingFlag == - ctrain_virtual) // brak pojazdu podpitego? + ctrain_virtual) // brak pojazdu podpiętego? { - ABuScanObjects(1, fScanDist); // szukanie czego do podczenia + ABuScanObjects(1, fScanDist); // szukanie czegoś do podłączenia // WriteLog(asName+" - block 0: "+AnsiString(fTrackBlock)); } } - else if (MoverParameters->V < -0.03) //[m/s] jeli jedzie do tyu (w kierunku Coupler 1) + else if (MoverParameters->V < -0.03) //[m/s] jeśli jedzie do tyłu (w kierunku Coupler 1) if (MoverParameters->Couplers[1].CouplingFlag == - ctrain_virtual) // brak pojazdu podpitego? + ctrain_virtual) // brak pojazdu podpiętego? { ABuScanObjects(-1, fScanDist); // WriteLog(asName+" - block 1: "+AnsiString(fTrackBlock)); @@ -3451,12 +3450,12 @@ bool TDynamicObject::Update(double dt, double dt1) CouplCounter = Random(20); // ponowne sprawdzenie po losowym czasie } if (MoverParameters->Vel > 0.1) //[km/h] - ++CouplCounter; // jazda sprzyja poszukiwaniu poczenia + ++CouplCounter; // jazda sprzyja poszukiwaniu połączenia else { - CouplCounter = 25; // a bezruch nie, ale trzeba zaktualizowa odlego, bo - // zawalidroga moe - // sobie pojecha + CouplCounter = 25; // a bezruch nie, ale trzeba zaktualizować odległość, bo + // zawalidroga może + // sobie pojechać } if (MoverParameters->DerailReason > 0) { @@ -3470,15 +3469,15 @@ bool TDynamicObject::Update(double dt, double dt1) break; case 3: ErrorLog("Bad dynamic: " + asName + " derailed due to track width"); - break; // bd w scenerii + break; // błąd w scenerii case 4: ErrorLog("Bad dynamic: " + asName + " derailed due to wrong track type"); - break; // bd w scenerii + break; // błąd w scenerii } - MoverParameters->DerailReason = 0; //eby tylko raz + MoverParameters->DerailReason = 0; //żeby tylko raz } if (MoverParameters->LoadStatus) - LoadUpdate(); // zmiana modelu adunku + LoadUpdate(); // zmiana modelu ładunku return true; // Ra: chyba tak? } @@ -3518,18 +3517,18 @@ bool TDynamicObject::FastUpdate(double dt) FastMove(dDOMoveLen); if (MoverParameters->LoadStatus) - LoadUpdate(); // zmiana modelu adunku + LoadUpdate(); // zmiana modelu ładunku return true; // Ra: chyba tak? } // McZapkie-040402: liczenie pozycji uwzgledniajac wysokosc szyn itp. // vector3 TDynamicObject::GetPosition() -//{//Ra: pozycja pojazdu jest liczona zaraz po przesuniciu +//{//Ra: pozycja pojazdu jest liczona zaraz po przesunięciu // return vPosition; //}; void TDynamicObject::TurnOff() -{ // wyczenie rysowania submodeli zmiennych dla +{ // wyłączenie rysowania submodeli zmiennych dla // egemplarza pojazdu btnOn = false; btCoupler1.TurnOff(); @@ -3565,7 +3564,7 @@ void TDynamicObject::TurnOff() }; void TDynamicObject::Render() -{ // rysowanie elementw nieprzezroczystych +{ // rysowanie elementów nieprzezroczystych // youBy - sprawdzamy, czy jest sens renderowac double modelrotate; vector3 tempangle; @@ -3575,12 +3574,12 @@ void TDynamicObject::Render() double ObjSqrDist = SquareMagnitude(Global::pCameraPosition - vPosition); // koniec przeklejki if (ObjSqrDist < 500) // jak jest blisko - do 70m - modelrotate = 0.01; // may kt, eby nie znikao + modelrotate = 0.01; // mały kąt, żeby nie znikało else - { // Global::pCameraRotation to kt bewzgldny w wiecie (zero - na - // pnoc) + { // Global::pCameraRotation to kąt bewzględny w świecie (zero - na + // północ) tempangle = (vPosition - Global::pCameraPosition); // wektor od kamery - modelrotate = ABuAcos(tempangle); // okrelenie kta + modelrotate = ABuAcos(tempangle); // określenie kąta // if (modelrotate>M_PI) modelrotate-=(2*M_PI); modelrotate += Global::pCameraRotation; } @@ -3597,10 +3596,10 @@ void TDynamicObject::Render() if (renderme) { - TSubModel::iInstance = (int)this; //eby nie robi cudzych animacji + TSubModel::iInstance = (int)this; //żeby nie robić cudzych animacji // AnsiString asLoadName=""; double ObjSqrDist = SquareMagnitude(Global::pCameraPosition - vPosition); - ABuLittleUpdate(ObjSqrDist); // ustawianie zmiennych submodeli dla wsplnego modelu + ABuLittleUpdate(ObjSqrDist); // ustawianie zmiennych submodeli dla wspólnego modelu // Cone(vCoulpler[0],modelRot.z,0); // Cone(vCoulpler[1],modelRot.z,1); @@ -3608,12 +3607,12 @@ void TDynamicObject::Render() // ActualTrack= GetTrack(); //McZapkie-240702 #if RENDER_CONE - { // Ra: testowe renderowanie pozycji wzkw w postaci ostrosupw, wymaga + { // Ra: testowe renderowanie pozycji wózków w postaci ostrosłupów, wymaga // GLUT32.DLL double dir = RadToDeg(atan2(vLeft.z, vLeft.x)); Axle0.Render(0); Axle1.Render(1); // bogieRot[0] - // if (PrevConnected) //renderowanie poczenia + // if (PrevConnected) //renderowanie połączenia } #endif @@ -3621,28 +3620,28 @@ void TDynamicObject::Render() // vector3 pos= vPosition; // double ObjDist= SquareMagnitude(Global::pCameraPosition-pos); if (this == Global::pUserDynamic) - { // specjalne ustawienie, aby nie trzso + { // specjalne ustawienie, aby nie trzęsło if (Global::bSmudge) - { // jak jest widoczna smuga, to pojazd renderowa po + { // jak jest widoczna smuga, to pojazd renderować po // wyrenderowaniu smugi - glPopMatrix(); // a to trzeba zebra przed wyjciem + glPopMatrix(); // a to trzeba zebrać przed wyjściem return; } - // if (Global::pWorld->) //tu trzeba by ustawi animacje na modelu - // zewntrznym - glLoadIdentity(); // zacz od macierzy jedynkowej + // if (Global::pWorld->) //tu trzeba by ustawić animacje na modelu + // zewnętrznym + glLoadIdentity(); // zacząć od macierzy jedynkowej Global::pCamera->SetCabMatrix(vPosition); // specjalne ustawienie kamery } else glTranslated(vPosition.x, vPosition.y, - vPosition.z); // standardowe przesunicie wzgldem pocztku scenerii + vPosition.z); // standardowe przesunięcie względem początku scenerii glMultMatrixd(mMatrix.getArray()); if (fShade > 0.0) { // Ra: zmiana oswietlenia w tunelu, wykopie GLfloat ambientLight[4] = {0.5f, 0.5f, 0.5f, 1.0f}; GLfloat diffuseLight[4] = {0.5f, 0.5f, 0.5f, 1.0f}; GLfloat specularLight[4] = {0.5f, 0.5f, 0.5f, 1.0f}; - // troch problem z ambientem w wykopie... + // trochę problem z ambientem w wykopie... for (int li = 0; li < 3; li++) { ambientLight[li] = Global::ambientDayLight[li] * fShade; @@ -3659,7 +3658,7 @@ void TDynamicObject::Render() if (FreeFlyModeFlag ? true : !mdKabina || !bDisplayCab) mdLowPolyInt->RaRender(ObjSqrDist, ReplacableSkinID, iAlpha); mdModel->RaRender(ObjSqrDist, ReplacableSkinID, iAlpha); - if (mdLoad) // renderowanie nieprzezroczystego adunku + if (mdLoad) // renderowanie nieprzezroczystego ładunku mdLoad->RaRender(ObjSqrDist, ReplacableSkinID, iAlpha); if (mdPrzedsionek) mdPrzedsionek->RaRender(ObjSqrDist, ReplacableSkinID, iAlpha); @@ -3670,21 +3669,21 @@ void TDynamicObject::Render() if (FreeFlyModeFlag ? true : !mdKabina || !bDisplayCab) mdLowPolyInt->Render(ObjSqrDist, ReplacableSkinID, iAlpha); mdModel->Render(ObjSqrDist, ReplacableSkinID, iAlpha); - if (mdLoad) // renderowanie nieprzezroczystego adunku + if (mdLoad) // renderowanie nieprzezroczystego ładunku mdLoad->Render(ObjSqrDist, ReplacableSkinID, iAlpha); if (mdPrzedsionek) mdPrzedsionek->Render(ObjSqrDist, ReplacableSkinID, iAlpha); } // Ra: czy ta kabina tu ma sens? - // Ra: czy nie renderuje si dwukrotnie? + // Ra: czy nie renderuje się dwukrotnie? // Ra: dlaczego jest zablokowana w przezroczystych? - if (mdKabina) // jeli ma model kabiny + if (mdKabina) // jeśli ma model kabiny if ((mdKabina != mdModel) && bDisplayCab && FreeFlyModeFlag) { // rendering kabiny gdy jest oddzielnym modelem i // ma byc wyswietlana // ABu: tylko w trybie FreeFly, zwykly tryb w world.cpp - // Ra: wieta s ustawione dla zewntrza danego pojazdu + // Ra: świetła są ustawione dla zewnętrza danego pojazdu // oswietlenie kabiny GLfloat ambientCabLight[4] = {0.5f, 0.5f, 0.5f, 1.0f}; GLfloat diffuseCabLight[4] = {0.5f, 0.5f, 0.5f, 1.0f}; @@ -3728,21 +3727,21 @@ void TDynamicObject::Render() glLightfv(GL_LIGHT0, GL_DIFFUSE, Global::diffuseDayLight); glLightfv(GL_LIGHT0, GL_SPECULAR, Global::specularDayLight); } - if (fShade != 0.0) // tylko jeli byo zmieniane - { // przywrcenie standardowego owietlenia + if (fShade != 0.0) // tylko jeśli było zmieniane + { // przywrócenie standardowego oświetlenia glLightfv(GL_LIGHT0, GL_AMBIENT, Global::ambientDayLight); glLightfv(GL_LIGHT0, GL_DIFFUSE, Global::diffuseDayLight); glLightfv(GL_LIGHT0, GL_SPECULAR, Global::specularDayLight); } glPopMatrix(); if (btnOn) - TurnOff(); // przywrcenie domylnych pozycji submodeli + TurnOff(); // przywrócenie domyślnych pozycji submodeli } // yB - koniec mieszania z grafika }; void TDynamicObject::RenderSounds() -{ // przeliczanie dwikw, bo bdzie - // sycha bez wywietlania sektora z +{ // przeliczanie dźwięków, bo będzie + // słychać bez wyświetlania sektora z // pojazdem // McZapkie-010302: ulepszony dzwiek silnika double freq; @@ -3820,9 +3819,9 @@ void TDynamicObject::RenderSounds() } if ((MoverParameters->DynamicBrakeFlag) && (MoverParameters->EnginePower > 0.1) && (MoverParameters->EngineType == - ElectricSeriesMotor)) // Szociu - 29012012 - jeeli uruchomiony + ElectricSeriesMotor)) // Szociu - 29012012 - jeżeli uruchomiony // jest hamulec - // elektrodynamiczny, odtwarzany jest dwik silnika + // elektrodynamiczny, odtwarzany jest dźwięk silnika vol += 0.8; if (enginevolume > 0.0001) @@ -3934,9 +3933,9 @@ void TDynamicObject::RenderSounds() // (MoverParameters->TrainType!=dt_ET22)) // if // ((MoverParameters->ConverterFlag==false)&&(MoverParameters->CompressorPower!=0)) - // MoverParameters->CompressorFlag=false; //Ra: wywali to std, tu tylko dla - // wywietlanych! - // Ra: no to ju wiemy, dlaczego pocigi jed lepiej, gdy si na nie patrzy! + // MoverParameters->CompressorFlag=false; //Ra: wywalić to stąd, tu tylko dla + // wyświetlanych! + // Ra: no to już wiemy, dlaczego pociągi jeżdżą lepiej, gdy się na nie patrzy! // if (MoverParameters->CompressorPower==2) // MoverParameters->CompressorAllow=MoverParameters->ConverterFlag; @@ -3958,7 +3957,7 @@ void TDynamicObject::RenderSounds() // youBy - przenioslem, bo diesel tez moze miec turbo if ((MoverParameters->MainCtrlPos) >= (MoverParameters->TurboTest)) // hunter-250312: dlaczego zakomentowane? - // Ra: bo nie dziaao dobrze + // Ra: bo nie działało dobrze { // udawanie turbo: (6.66*(eng_vol-0.85)) if (eng_turbo > 6.66 * (enginevolume - 0.8) + 0.2 * dt) @@ -4103,33 +4102,33 @@ void TDynamicObject::RenderSounds() }; void TDynamicObject::RenderAlpha() -{ // rysowanie elementw pprzezroczystych +{ // rysowanie elementów półprzezroczystych if (renderme) { - TSubModel::iInstance = (int)this; //eby nie robi cudzych animacji + TSubModel::iInstance = (int)this; //żeby nie robić cudzych animacji double ObjSqrDist = SquareMagnitude(Global::pCameraPosition - vPosition); - ABuLittleUpdate(ObjSqrDist); // ustawianie zmiennych submodeli dla wsplnego modelu + ABuLittleUpdate(ObjSqrDist); // ustawianie zmiennych submodeli dla wspólnego modelu glPushMatrix(); if (this == Global::pUserDynamic) - { // specjalne ustawienie, aby nie trzso + { // specjalne ustawienie, aby nie trzęsło if (Global::bSmudge) - { // jak smuga, to rysowa po smudze - glPopMatrix(); // to trzeba zebra przed wyciem + { // jak smuga, to rysować po smudze + glPopMatrix(); // to trzeba zebrać przed wyściem return; } - glLoadIdentity(); // zacz od macierzy jedynkowej + glLoadIdentity(); // zacząć od macierzy jedynkowej Global::pCamera->SetCabMatrix(vPosition); // specjalne ustawienie kamery } else glTranslated(vPosition.x, vPosition.y, - vPosition.z); // standardowe przesunicie wzgldem pocztku scenerii + vPosition.z); // standardowe przesunięcie względem początku scenerii glMultMatrixd(mMatrix.getArray()); if (fShade > 0.0) { // Ra: zmiana oswietlenia w tunelu, wykopie GLfloat ambientLight[4] = {0.5f, 0.5f, 0.5f, 1.0f}; GLfloat diffuseLight[4] = {0.5f, 0.5f, 0.5f, 1.0f}; GLfloat specularLight[4] = {0.5f, 0.5f, 0.5f, 1.0f}; - // troch problem z ambientem w wykopie... + // trochę problem z ambientem w wykopie... for (int li = 0; li < 3; li++) { ambientLight[li] = Global::ambientDayLight[li] * fShade; @@ -4148,7 +4147,7 @@ void TDynamicObject::RenderAlpha() mdModel->RaRenderAlpha(ObjSqrDist, ReplacableSkinID, iAlpha); if (mdLoad) mdLoad->RaRenderAlpha(ObjSqrDist, ReplacableSkinID, iAlpha); - // if (mdPrzedsionek) //Ra: przedsionkw tu wczeniej nie byo - wczy? + // if (mdPrzedsionek) //Ra: przedsionków tu wcześniej nie było - włączyć? // mdPrzedsionek->RaRenderAlpha(ObjSqrDist,ReplacableSkinID,iAlpha); } else @@ -4159,10 +4158,10 @@ void TDynamicObject::RenderAlpha() mdModel->RenderAlpha(ObjSqrDist, ReplacableSkinID, iAlpha); if (mdLoad) mdLoad->RenderAlpha(ObjSqrDist, ReplacableSkinID, iAlpha); - // if (mdPrzedsionek) //Ra: przedsionkw tu wczeniej nie byo - wczy? + // if (mdPrzedsionek) //Ra: przedsionków tu wcześniej nie było - włączyć? // mdPrzedsionek->RenderAlpha(ObjSqrDist,ReplacableSkinID,iAlpha); } - /* skoro false to mona wycic + /* skoro false to można wyciąc //ABu: Tylko w trybie freefly if (false)//((mdKabina!=mdModel) && bDisplayCab && FreeFlyModeFlag) { @@ -4213,15 +4212,15 @@ void TDynamicObject::RenderAlpha() glLightfv(GL_LIGHT0,GL_SPECULAR,Global::specularDayLight); } */ - if (fShade != 0.0) // tylko jeli byo zmieniane - { // przywrcenie standardowego owietlenia + if (fShade != 0.0) // tylko jeśli było zmieniane + { // przywrócenie standardowego oświetlenia glLightfv(GL_LIGHT0, GL_AMBIENT, Global::ambientDayLight); glLightfv(GL_LIGHT0, GL_DIFFUSE, Global::diffuseDayLight); glLightfv(GL_LIGHT0, GL_SPECULAR, Global::specularDayLight); } glPopMatrix(); if (btnOn) - TurnOff(); // przywrcenie domylnych pozycji submodeli + TurnOff(); // przywrócenie domyślnych pozycji submodeli } return; } // koniec renderalpha @@ -4239,7 +4238,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, std::string asAnimName; bool Stop_InternalData = false; - pants = NULL; // wskanik pierwszego obiektu animujcego dla pantografw + pants = NULL; // wskaźnik pierwszego obiektu animującego dla pantografów cParser parser( TypeName + ".mmd", cParser::buffer_FILE, BaseDir ); std::string token; int i; @@ -4252,14 +4251,14 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, iMultiTex = 0; // czy jest wiele tekstur wymiennych? parser.getTokens(); parser >> asModel; - if( asModel[asModel.size() - 1] == '#' ) // Ra 2015-01: nie podoba mi si to + if( asModel[asModel.size() - 1] == '#' ) // Ra 2015-01: nie podoba mi siê to { // model wymaga wielu tekstur wymiennych iMultiTex = 1; asModel.erase( asModel.length() - 1 ); } if ((i = asModel.find(',')) != std::string::npos) - { // Ra 2015-01: moe szuka przecinka w - // nazwie modelu, a po przecinku bya by + { // Ra 2015-01: może szukać przecinka w + // nazwie modelu, a po przecinku była by // liczba // tekstur? if (i < asModel.length()) @@ -4288,52 +4287,52 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID( NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(), Global::iDynamicFiltering); - ReplacableSkin.Delete(1, i); // usunicie razem z pionow kresk + ReplacableSkin.Delete(1, i); // usunięcie razem z pionową kreską ReplacableSkin = Global::asCurrentTexturePath + - ReplacableSkin; // odtworzenie pocztku cieki - // sprawdzi, ile jest i ustawi iMultiTex na liczb podanych tekstur + ReplacableSkin; // odtworzenie początku ścieżki + // sprawdzić, ile jest i ustawić iMultiTex na liczbę podanych tekstur if (!ReplacableSkin.IsEmpty()) - { // prba wycicia drugiej nazwy - iMultiTex = -2; // skoro zostao co po kresce, to s co najmniej dwie - if ((i = ReplacableSkin.Pos("|")) == 0) // gdy nie ma ju kreski + { // próba wycięcia drugiej nazwy + iMultiTex = -2; // skoro zostało coś po kresce, to są co najmniej dwie + if ((i = ReplacableSkin.Pos("|")) == 0) // gdy nie ma już kreski ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID( NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(), Global::iDynamicFiltering); else - { // jak jest kreska, to wczyta drug i prbowa trzeci + { // jak jest kreska, to wczytać drugą i próbować trzecią ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID( NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(), Global::iDynamicFiltering); - ReplacableSkin.Delete(1, i); // usunicie razem z pionow kresk + ReplacableSkin.Delete(1, i); // usunięcie razem z pionową kreską ReplacableSkin = Global::asCurrentTexturePath + - ReplacableSkin; // odtworzenie pocztku cieki + ReplacableSkin; // odtworzenie początku ścieżki if (!ReplacableSkin.IsEmpty()) - { // prba wycicia trzeciej nazwy + { // próba wycięcia trzeciej nazwy iMultiTex = - -3; // skoro zostao co po kresce, to s co najmniej trzy - if ((i = ReplacableSkin.Pos("|")) == 0) // gdy nie ma ju kreski + -3; // skoro zostało coś po kresce, to są co najmniej trzy + if ((i = ReplacableSkin.Pos("|")) == 0) // gdy nie ma już kreski ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID( NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(), Global::iDynamicFiltering); else - { // jak jest kreska, to wczyta trzeci i prbowa czwart + { // jak jest kreska, to wczytać trzecią i próbować czwartą ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID( NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(), Global::iDynamicFiltering); - ReplacableSkin.Delete(1, i); // usunicie razem z pionow kresk + ReplacableSkin.Delete(1, i); // usunięcie razem z pionową kreską ReplacableSkin = Global::asCurrentTexturePath + - ReplacableSkin; // odtworzenie pocztku cieki + ReplacableSkin; // odtworzenie początku ścieżki if (!ReplacableSkin.IsEmpty()) - { // prba wycicia trzeciej nazwy - iMultiTex = -4; // skoro zostao co po kresce, to s co + { // próba wycięcia trzeciej nazwy + iMultiTex = -4; // skoro zostało coś po kresce, to są co // najmniej cztery ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID( NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(), Global::iDynamicFiltering); - // wicej na razie nie zadziaa, a u tak trzeba to do modeli - // przenie + // więcej na razie nie zadziała, a u tak trzeba to do modeli + // przenieść } } } @@ -4342,7 +4341,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, } */ if (iMultiTex > 0) - { // jeli model ma 4 tekstury + { // jeśli model ma 4 tekstury ReplacableSkinID[1] = TTexturesManager::GetTextureID( NULL, NULL, ReplacableSkin + ",1", Global::iDynamicFiltering); if (ReplacableSkinID[1]) @@ -4351,7 +4350,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, NULL, NULL, ReplacableSkin + ",2", Global::iDynamicFiltering); if (ReplacableSkinID[2]) { - iMultiTex = 2; // ju s dwie + iMultiTex = 2; // już są dwie ReplacableSkinID[3] = TTexturesManager::GetTextureID( NULL, NULL, ReplacableSkin + ",3", Global::iDynamicFiltering); @@ -4362,13 +4361,13 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, NULL, NULL, ReplacableSkin + ",4", Global::iDynamicFiltering); if (ReplacableSkinID[4]) - iMultiTex = 4; // jak s cztery, to blokujemy podmian tekstury - // rozkadem + iMultiTex = 4; // jak są cztery, to blokujemy podmianę tekstury + // rozkładem } } } else - { // zestaw nie zadziaa, prbujemy normanie + { // zestaw nie zadziałał, próbujemy normanie iMultiTex = 0; ReplacableSkinID[1] = TTexturesManager::GetTextureID( NULL, NULL, ReplacableSkin, Global::iDynamicFiltering); @@ -4379,25 +4378,25 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, ReplacableSkinID[1] = TTexturesManager::GetTextureID( NULL, NULL, ReplacableSkin, Global::iDynamicFiltering); if (TTexturesManager::GetAlpha(ReplacableSkinID[1])) - iAlpha = 0x31310031; // tekstura -1 z kanaem alfa - nie renderowa w cyklu + iAlpha = 0x31310031; // tekstura -1 z kanałem alfa - nie renderować w cyklu // nieprzezroczystych else iAlpha = 0x30300030; // wszystkie tekstury nieprzezroczyste - nie - // renderowa w + // renderować w // cyklu przezroczystych if (ReplacableSkinID[2]) if (TTexturesManager::GetAlpha(ReplacableSkinID[2])) - iAlpha |= 0x02020002; // tekstura -2 z kanaem alfa - nie renderowa + iAlpha |= 0x02020002; // tekstura -2 z kanałem alfa - nie renderować // w cyklu // nieprzezroczystych if (ReplacableSkinID[3]) if (TTexturesManager::GetAlpha(ReplacableSkinID[3])) - iAlpha |= 0x04040004; // tekstura -3 z kanaem alfa - nie renderowa + iAlpha |= 0x04040004; // tekstura -3 z kanałem alfa - nie renderować // w cyklu // nieprzezroczystych if (ReplacableSkinID[4]) if (TTexturesManager::GetAlpha(ReplacableSkinID[4])) - iAlpha |= 0x08080008; // tekstura -4 z kanaem alfa - nie renderowa + iAlpha |= 0x08080008; // tekstura -4 z kanałem alfa - nie renderować // w cyklu // nieprzezroczystych } @@ -4412,8 +4411,8 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, // if (MoverParameters->LoadAccepted!=AnsiString("")); // && // MoverParameters->LoadType!=AnsiString("passengers")) if (MoverParameters->EnginePowerSource.SourceType == CurrentCollector) - { // warto niby "pantstate" - nazwa dla - // formalnoci, wana jest ilo + { // wartość niby "pantstate" - nazwa dla + // formalności, ważna jest ilość if (MoverParameters->Load == 1) MoverParameters->PantFront(true); else if (MoverParameters->Load == 2) @@ -4442,7 +4441,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, MoverParameters->PantRear(true); } } - else // Ra: tu wczytywanie modelu adunku jest w porzdku + else // Ra: tu wczytywanie modelu ładunku jest w porządku mdLoad = TModelsManager::GetModel(asLoadName, true); // ladunek Global::asCurrentTexturePath = szTexturePath; // z powrotem defaultowa sciezka do tekstur do { @@ -4450,34 +4449,34 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, parser.getTokens(); parser >> token; if( token == "animations:" ) { - // Ra: ustawienie iloci poszczeglnych animacji - - // musi by jako pierwsze, inaczej iloci bd domylne + // Ra: ustawienie ilości poszczególnych animacji - + // musi być jako pierwsze, inaczej ilości będą domyślne if( nullptr == pAnimations ) - { // jeli nie ma jeszcze tabeli animacji, mona - // odczyta nowe iloci + { // jeśli nie ma jeszcze tabeli animacji, można + // odczytać nowe ilości int co = 0, ile = -1; iAnimations = 0; do - { // kolejne liczby to ilo animacj, -1 to znacznik koca + { // kolejne liczby to ilość animacj, -1 to znacznik końca parser.getTokens( 1, false ); - parser >> ile; + parser >> ile; // ilość danego typu // animacji // if (co==ANIM_PANTS) // if (!Global::bLoadTraction) - // if (!DebugModeFlag) //w debugmode pantografy maj "niby - // dziaa" - // ile=0; //wyczenie animacji pantografw + // if (!DebugModeFlag) //w debugmode pantografy mają "niby + // działać" + // ile=0; //wyłączenie animacji pantografów if (co < ANIM_TYPES) if (ile >= 0) { - iAnimType[co] = ile; // zapamitanie - iAnimations += ile; // oglna ilo animacji + iAnimType[co] = ile; // zapamiętanie + iAnimations += ile; // ogólna ilość animacji } ++co; - } while (ile >= 0); //-1 to znacznik koca + } while (ile >= 0); //-1 to znacznik końca while( co < ANIM_TYPES ) { - iAnimType[ co++ ] = 0; // zerowanie pozostaych + iAnimType[ co++ ] = 0; // zerowanie pozostałych } parser.getTokens(); parser >> token; // NOTE: should this be here? seems at best superfluous @@ -4485,14 +4484,14 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, // WriteLog("Total animations: "+AnsiString(iAnimations)); } if( nullptr == pAnimations ) - { // Ra: tworzenie tabeli animacji, jeli jeszcze nie - // byo - if (!iAnimations) // jeli nie podano jawnie, ile ma by animacji - iAnimations = 28; // tyle byo kiedy w kadym pojedzie (2 wizary wypady) - /* //pojazd moe mie pantograf do innych celw ni napd + { // Ra: tworzenie tabeli animacji, jeśli jeszcze nie + // było + if (!iAnimations) // jeśli nie podano jawnie, ile ma być animacji + iAnimations = 28; // tyle było kiedyś w każdym pojeździe (2 wiązary wypadły) + /* //pojazd może mieć pantograf do innych celów niż napęd if (MoverParameters->EnginePowerSource.SourceType!=CurrentCollector) - {//nie bdzie pantografw, to si troch uproci - iAnimations-=iAnimType[ANIM_PANTS]; //domylnie byy 2 pantografy + {//nie będzie pantografów, to się trochę uprości + iAnimations-=iAnimType[ANIM_PANTS]; //domyślnie były 2 pantografy iAnimType[ANIM_PANTS]=0; } */ @@ -4503,22 +4502,22 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, { if (j == ANIM_PANTS) // zliczamy poprzednie animacje if (!pants) - if (iAnimType[ANIM_PANTS]) // o ile jakie pantografy s (a - // domylnie s) + if (iAnimType[ANIM_PANTS]) // o ile jakieś pantografy są (a + // domyślnie są) pants = pAnimations + - k; // zapamitanie na potrzeby wyszukania submodeli - pAnimations[k].iShift = sm; // przesunicie do przydzielenia wskanika + k; // zapamiętanie na potrzeby wyszukania submodeli + pAnimations[k].iShift = sm; // przesunięcie do przydzielenia wskaźnika sm += pAnimations[k++].TypeSet(j); // ustawienie typu animacji i // zliczanie tablicowanych // submodeli } - if (sm) // o ile s bardziej zoone animacje + if (sm) // o ile są bardziej złożone animacje { pAnimated = new TSubModel *[sm]; // tabela na animowane submodele for (k = 0; k < iAnimations; ++k) pAnimations[k].smElement = pAnimated + - pAnimations[k].iShift; // przydzielenie wskanika do tabelki + pAnimations[k].iShift; // przydzielenie wskaźnika do tabelki } } @@ -4529,29 +4528,29 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, asModel = BaseDir + asModel; // McZapkie-200702 - dynamics maja swoje modele w dynamic/basedir Global::asCurrentTexturePath = BaseDir; // biezaca sciezka do tekstur to dynamic/... mdLowPolyInt = TModelsManager::GetModel(asModel, true); - // Global::asCurrentTexturePath=AnsiString(szTexturePath); //kiedy + // Global::asCurrentTexturePath=AnsiString(szTexturePath); //kiedyś // uproszczone - // wntrze mieszao tekstury nieba + // wnętrze mieszało tekstury nieba } if( token == "brakemode:" ) { - // Ra 15-01: gaka nastawy hamulca + // Ra 15-01: gałka nastawy hamulca parser.getTokens(); parser >> asAnimName; smBrakeMode = mdModel->GetFromName(asAnimName.c_str()); - // jeszcze wczyta kty obrotu dla poszczeglnych ustawie + // jeszcze wczytać kąty obrotu dla poszczególnych ustawień } if( token == "loadmode:" ) { - // Ra 15-01: gaka nastawy hamulca + // Ra 15-01: gałka nastawy hamulca parser.getTokens(); parser >> asAnimName; smLoadMode = mdModel->GetFromName(asAnimName.c_str()); - // jeszcze wczyta kty obrotu dla poszczeglnych ustawie + // jeszcze wczytać kąty obrotu dla poszczególnych ustawień } else if (token == "animwheelprefix:") { - // prefiks krccych si k + // prefiks kręcących się kół int i, j, k, m; parser.getTokens( 1, false ); parser >> token; for (i = 0; i < iAnimType[ANIM_WHEELS]; ++i) // liczba osi @@ -4561,47 +4560,50 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, mdModel->GetFromName(asAnimName.c_str()); // ustalenie submodelu if (pAnimations[i].smAnimated) { //++iAnimatedAxles; - pAnimations[i].smAnimated->WillBeAnimated(); // wyczenie optymalizacji + pAnimations[i].smAnimated->WillBeAnimated(); // wyłączenie optymalizacji // transformu /* pAnimations[i].yUpdate = UpdateAxle; // animacja osi */ pAnimations[ i ].yUpdate = std::bind( &TDynamicObject::UpdateAxle, this, std::placeholders::_1 ); pAnimations[i].fMaxDist = 50 * - MoverParameters->WheelDiameter; // nie krci w wikszej odlegoci + MoverParameters->WheelDiameter; // nie kręcić w większej odległości pAnimations[i].fMaxDist *= pAnimations[i].fMaxDist * - MoverParameters->WheelDiameter; // 50m do kwadratu, a rednica + MoverParameters->WheelDiameter; // 50m do kwadratu, a średnica // do trzeciej - pAnimations[i].fMaxDist *= Global::fDistanceFactor; // wspczynnik + pAnimations[i].fMaxDist *= Global::fDistanceFactor; // współczynnik // przeliczeniowy - // jakoci ekranu + // jakości ekranu } } - // Ra: ustawianie indeksw osi + // Ra: ustawianie indeksów osi for (i = 0; i < iAnimType[ANIM_WHEELS]; - ++i) // ilo osi (zabezpieczenie przed bdami w CHK) + ++i) // ilość osi (zabezpieczenie przed błędami w CHK) pAnimations[i].dWheelAngle = - dWheelAngle + 1; // domylnie wskanik na napdzajce + dWheelAngle + 1; // domyślnie wskaźnik na napędzające i = 0; j = 1; k = 0; - m = 0; // numer osi; kolejny znak; ile osi danego typu; ktra rednica + m = 0; // numer osi; kolejny znak; ile osi danego typu; która średnica if ((MoverParameters->WheelDiameterL != MoverParameters->WheelDiameter) || (MoverParameters->WheelDiameterT != MoverParameters->WheelDiameter)) - { // obsuga rnych rednic, o ile wystpuj + { // obsługa różnych średnic, o + // ile występują while ((i < iAnimType[ANIM_WHEELS]) && (j <= MoverParameters->AxleArangement.length())) - { // wersja ze wskanikami jest bardziej elastyczna na nietypowe ukady + { // wersja ze wskaźnikami jest + // bardziej elastyczna na nietypowe + // układy if ((k >= 'A') && (k <= 'J')) // 10 chyba maksimum? { - pAnimations[i++].dWheelAngle = dWheelAngle + 1; // obrt osi napdzajcych - --k; // nastpna bdzie albo taka sama, albo bierzemy kolejny znak - m = 2; // nastpujce toczne bd miay inn rednic + pAnimations[i++].dWheelAngle = dWheelAngle + 1; // obrót osi napędzających + --k; // następna będzie albo taka sama, albo bierzemy kolejny znak + m = 2; // następujące toczne będą miały inną średnicę } else if ((k >= '1') && (k <= '9')) { - pAnimations[i++].dWheelAngle = dWheelAngle + m; // obrt osi tocznych - --k; // nastpna bdzie albo taka sama, albo bierzemy kolejny znak + pAnimations[i++].dWheelAngle = dWheelAngle + m; // obrót osi tocznych + --k; // następna będzie albo taka sama, albo bierzemy kolejny znak } else k = MoverParameters->AxleArangement[j++]; // pobranie kolejnego znaku @@ -4621,7 +4623,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, else if( token == "animpantprefix:" ) { // Ra: pantografy po - // nowemu maj literki + // nowemu mają literki // i numerki } // Pantografy - Winger 160204 @@ -4636,71 +4638,71 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, // str* asAnimName = token + std::to_string(i + 1); sm = mdModel->GetFromName(asAnimName.c_str()); - pants[i].smElement[0] = sm; // jak NULL, to nie bdzie animowany + pants[i].smElement[0] = sm; // jak NULL, to nie będzie animowany if (sm) - { // w EP09 wywalao si tu z powodu NULL + { // w EP09 wywalało się tu z powodu NULL sm->WillBeAnimated(); sm->ParentMatrix(&m); // pobranie macierzy transformacji - // m(3)[1]=m[3][1]+0.054; //w gr o wysoko lizgu (na razie + // m(3)[1]=m[3][1]+0.054; //w górę o wysokość ślizgu (na razie // tak) - if ((mdModel->Flags() & 0x8000) == 0) // jeli wczytano z T3D - m.InitialRotate(); // moe by potrzebny dodatkowy obrt, - // jeli + if ((mdModel->Flags() & 0x8000) == 0) // jeśli wczytano z T3D + m.InitialRotate(); // może być potrzebny dodatkowy obrót, + // jeśli // wczytano z T3D, tzn. przed wykonaniem // Init() pants[i].fParamPants->vPos.z = - m[3][0]; // przesunicie w bok (asymetria) + m[3][0]; // przesunięcie w bok (asymetria) pants[i].fParamPants->vPos.y = - m[3][1]; // przesunicie w gr odczytane z modelu + m[3][1]; // przesunięcie w górę odczytane z modelu if ((sm = pants[i].smElement[0]->ChildGet()) != NULL) - { // jeli ma potomny, mona policzy dugo - // (odlego potomnego + { // jeśli ma potomny, można policzyć długość + // (odległość potomnego // od osi obrotu) - m = float4x4(*sm->GetMatrix()); // wystarczyby wskanik, nie - // trzeba kopiowa - // moe trzeba: pobra macierz dolnego ramienia, wyzerowa - // przesunicie, przemnoy przez macierz grnego + m = float4x4(*sm->GetMatrix()); // wystarczyłby wskaźnik, nie + // trzeba kopiować + // może trzeba: pobrać macierz dolnego ramienia, wyzerować + // przesunięcie, przemnożyć przez macierz górnego pants[i].fParamPants->fHoriz = -fabs(m[3][1]); pants[i].fParamPants->fLenL1 = hypot(m[3][1], m[3][2]); // po osi OX nie potrzeba pants[i].fParamPants->fAngleL0 = atan2(fabs(m[3][2]), fabs(m[3][1])); // if (pants[i].fParamPants->fAngleL0fAngleL0+=M_PI; //gdyby w odwrotn - // stron wyszo + // pants[i].fParamPants->fAngleL0+=M_PI; //gdyby w odwrotną + // stronę wyszło // if // ((pants[i].fParamPants->fAngleL0<0.03)||(pants[i].fParamPants->fAngleL0>0.09)) // //normalnie ok. 0.05 // pants[i].fParamPants->fAngleL0=pants[i].fParamPants->fAngleL; pants[i].fParamPants->fAngleL = - pants[i].fParamPants->fAngleL0; // pocztkowy kt dolnego + pants[i].fParamPants->fAngleL0; // początkowy kąt dolnego // ramienia if ((sm = sm->ChildGet()) != NULL) - { // jeli dalej jest - // lizg, mona policzy - // dugo grnego + { // jeśli dalej jest + // ślizg, można policzyć + // długość górnego // ramienia - m = float4x4(*sm->GetMatrix()); // wystarczyby wskanik, - // nie trzeba kopiowa - // trzeba by uwzgldni macierz dolnego ramienia, eby - // uzyska kt do poziomu... + m = float4x4(*sm->GetMatrix()); // wystarczyłby wskaźnik, + // nie trzeba kopiować + // trzeba by uwzględnić macierz dolnego ramienia, żeby + // uzyskać kąt do poziomu... pants[i].fParamPants->fHoriz += - fabs(m(3)[1]); // rnica dugoci rzutw ramion na - // paszczyzn podstawy (jedna dodatnia, + fabs(m(3)[1]); // różnica długości rzutów ramion na + // płaszczyznę podstawy (jedna dodatnia, // druga ujemna) pants[i].fParamPants->fLenU1 = hypot(m[3][1], m[3][2]); // po osi OX nie potrzeba // pants[i].fParamPants->pantu=acos((1.22*cos(pants[i].fParamPants->fAngleL)+0.535)/1.755); - // //grne rami + // //górne ramię // pants[i].fParamPants->fAngleU0=acos((1.176289*cos(pants[i].fParamPants->fAngleL)+0.54555075)/1.724482197); - // //grne rami + // //górne ramię pants[i].fParamPants->fAngleU0 = atan2(fabs(m[3][2]), - fabs(m[3][1])); // pocztkowy kt grnego + fabs(m[3][1])); // początkowy kąt górnego // ramienia, odczytany z modelu // if (pants[i].fParamPants->fAngleU0fAngleU0+=M_PI; //gdyby w odwrotn - // stron wyszo + // pants[i].fParamPants->fAngleU0+=M_PI; //gdyby w odwrotną + // stronę wyszło // if (pants[i].fParamPants->fAngleU0<0) // pants[i].fParamPants->fAngleU0=-pants[i].fParamPants->fAngleU0; // if @@ -4708,38 +4710,38 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, // //normalnie ok. 0.07 // pants[i].fParamPants->fAngleU0=acos((pants[i].fParamPants->fLenL1*cos(pants[i].fParamPants->fAngleL)+pants[i].fParamPants->fHoriz)/pants[i].fParamPants->fLenU1); pants[i].fParamPants->fAngleU = - pants[i].fParamPants->fAngleU0; // pocztkowy kt - // Ra: ze wzgldu na to, e niektre modele pantografw s - // zrbane, ich mierzenie ma obecnie ograniczony sens + pants[i].fParamPants->fAngleU0; // początkowy kąt + // Ra: ze względu na to, że niektóre modele pantografów są + // zrąbane, ich mierzenie ma obecnie ograniczony sens sm->ParentMatrix(&m); // pobranie macierzy transformacji - // pivota lizgu wzgldem wstawienia + // pivota ślizgu względem wstawienia // pojazdu - if ((mdModel->Flags() & 0x8000) == 0) // jeli wczytano z + if ((mdModel->Flags() & 0x8000) == 0) // jeśli wczytano z // T3D - m.InitialRotate(); // moe by potrzebny dodatkowy - // obrt, jeli wczytano z T3D, tzn. + m.InitialRotate(); // może być potrzebny dodatkowy + // obrót, jeśli wczytano z T3D, tzn. // przed wykonaniem Init() float det = Det(m); - if (std::fabs(det - 1.0) < 0.001) // dopuszczamy 1 promil bdu - // na skalowaniu lizgu - { // skalowanie jest w normie, mona pobra wymiary z modelu + if (std::fabs(det - 1.0) < 0.001) // dopuszczamy 1 promil błędu + // na skalowaniu ślizgu + { // skalowanie jest w normie, można pobrać wymiary z modelu pants[i].fParamPants->fHeight = - sm->MaxY(m); // przeliczenie maksimum wysokoci - // wierzchokw wzgldem macierzy + sm->MaxY(m); // przeliczenie maksimum wysokości + // wierzchołków względem macierzy pants[i].fParamPants->fHeight -= - m[3][1]; // odjcie wysokoci pivota lizgu + m[3][1]; // odjęcie wysokości pivota ślizgu pants[i].fParamPants->vPos.x = - m[3][2]; // przy okazji odczyta z modelu pozycj w - // dugoci + m[3][2]; // przy okazji odczytać z modelu pozycję w + // długości // ErrorLog("Model OK: "+asModel+", // height="+pants[i].fParamPants->fHeight); // ErrorLog("Model OK: "+asModel+", // pos.x="+pants[i].fParamPants->vPos.x); } else - { // gdy kto przesadzi ze skalowaniem + { // gdy ktoś przesadził ze skalowaniem pants[i].fParamPants->fHeight = - 0.0; // niech bdzie odczyt z pantfactors: + 0.0; // niech będzie odczyt z pantfactors: ErrorLog("Bad model: " + asModel + ", scale of " + (sm->pName) + " is " + std::to_string(100.0 * det) + "%"); @@ -4763,26 +4765,26 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, // str* asAnimName = token + std::to_string( i + 1 ); sm = mdModel->GetFromName( asAnimName.c_str() ); - pants[ i ].smElement[ 1 ] = sm; // jak NULL, to nie bdzie animowany - if( sm ) { // w EP09 wywalao si tu z powodu NULL + pants[ i ].smElement[ 1 ] = sm; // jak NULL, to nie będzie animowany + if( sm ) { // w EP09 wywalało się tu z powodu NULL sm->WillBeAnimated(); - if( pants[ i ].fParamPants->vPos.y == 0.0 ) { // jeli pierwsze rami nie ustawio tej wartoci, - // prbowa drugim - //!!!! docelowo zrobi niezalen animacj ramion z kadej + if( pants[ i ].fParamPants->vPos.y == 0.0 ) { // jeśli pierwsze ramię nie ustawiło tej wartości, + // próbować drugim + //!!!! docelowo zrobić niezależną animację ramion z każdej // strony m = float4x4( - *sm->GetMatrix() ); // skopiowanie, bo bdziemy mnoy + *sm->GetMatrix()); // skopiowanie, bo będziemy mnożyć m( 3 )[ 1 ] = - m[ 3 ][ 1 ] + 0.054; // w gr o wysoko lizgu (na razie tak) + m[ 3 ][ 1 ] + 0.054; // w górę o wysokość ślizgu (na razie tak) while( sm->Parent ) { if( sm->Parent->GetMatrix() ) m = *sm->Parent->GetMatrix() * m; sm = sm->Parent; } pants[ i ].fParamPants->vPos.z = - m[ 3 ][ 0 ]; // przesunicie w bok (asymetria) + m[3][0]; // przesunięcie w bok (asymetria) pants[ i ].fParamPants->vPos.y = - m[ 3 ][ 1 ]; // przesunicie w gr odczytane z modelu + m[3][1]; // przesunięcie w górę odczytane z modelu } } else @@ -4793,7 +4795,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, } else if( token == "animpantrg1prefix:" ) { - // prefiks ramion grnych 1 + // prefiks ramion górnych 1 parser.getTokens(); parser >> token; if( pants ) { for( int i = 0; i < iAnimType[ ANIM_PANTS ]; i++ ) { // Winger 160204: wyszukiwanie max 2 patykow o nazwie @@ -4806,7 +4808,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, } else if( token == "animpantrg2prefix:" ) { - // prefiks ramion grnych 2 + // prefiks ramion górnych 2 parser.getTokens(); parser >> token; if( pants ) { for( int i = 0; i < iAnimType[ ANIM_PANTS ]; i++ ) { // Winger 160204: wyszukiwanie max 2 patykow o nazwie @@ -4819,7 +4821,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, } else if( token == "animpantslprefix:" ) { - // prefiks lizgaczy + // prefiks ślizgaczy parser.getTokens(); parser >> token; if( pants ) { for( int i = 0; i < iAnimType[ ANIM_PANTS ]; i++ ) { // Winger 160204: wyszukiwanie max 2 patykow o nazwie @@ -4829,7 +4831,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, pants[ i ].smElement[ 4 ]->WillBeAnimated(); /* pants[ i ].yUpdate = UpdatePant; */ pants[ i ].yUpdate = std::bind( &TDynamicObject::UpdatePant, this, std::placeholders::_1 ); - pants[ i ].fMaxDist = 300 * 300; // nie podnosi w wikszej odlegoci + pants[ i ].fMaxDist = 300 * 300; // nie podnosić w większej odległości pants[ i ].iNumber = i; } } @@ -4842,58 +4844,58 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, parser >> pant1x >> pant2x - >> pant1h // wysoko pierwszego lizgu - >> pant2h;// wysoko drugiego lizgu + >> pant1h // wysokość pierwszego ślizgu + >> pant2h;// wysokość drugiego ślizgu if( pant1h > 0.5 ) { - pant1h = pant2h; // tu moe by zbyt dua warto + pant1h = pant2h; // tu może być zbyt duża wartość } if ((pant1x < 0) && - (pant2x > 0)) // pierwsza powinna by dodatnia, a druga ujemna + (pant2x > 0)) // pierwsza powinna być dodatnia, a druga ujemna { pant1x = -pant1x; pant2x = -pant2x; } if( pants ) { - for( int i = 0; i < iAnimType[ ANIM_PANTS ]; ++i ) { // przepisanie wspczynnikw do pantografw (na razie - // nie bdzie lepiej) + for( int i = 0; i < iAnimType[ ANIM_PANTS ]; ++i ) { // przepisanie współczynników do pantografów (na razie + // nie będzie lepiej) pants[ i ].fParamPants->fAngleL = - pants[ i ].fParamPants->fAngleL0; // pocztkowy kt dolnego ramienia + pants[i].fParamPants->fAngleL0; // początkowy kąt dolnego ramienia pants[ i ].fParamPants->fAngleU = - pants[ i ].fParamPants->fAngleU0; // pocztkowy kt + pants[i].fParamPants->fAngleU0; // początkowy kąt // pants[i].fParamPants->PantWys=1.22*sin(pants[i].fParamPants->fAngleL)+1.755*sin(pants[i].fParamPants->fAngleU); - // //wysoko pocztkowa + // //wysokość początkowa // pants[i].fParamPants->PantWys=1.176289*sin(pants[i].fParamPants->fAngleL)+1.724482197*sin(pants[i].fParamPants->fAngleU); - // //wysoko pocztkowa + // //wysokość początkowa if( pants[ i ].fParamPants->fHeight == 0.0 ) // gdy jest // nieprawdopodobna - // warto (np. nie - // znaleziony lizg) - { // gdy pomiary modelu nie uday si, odczyt podanych parametrw + // wartość (np. nie + // znaleziony ślizg) + { // gdy pomiary modelu nie udały się, odczyt podanych parametrów // z MMD pants[ i ].fParamPants->vPos.x = ( i & 1 ) ? pant2x : pant1x; pants[ i ].fParamPants->fHeight = ( i & 1 ) ? pant2h : - pant1h; // wysoko lizgu jest zapisana w MMD + pant1h; // wysokość ślizgu jest zapisana w MMD } pants[ i ].fParamPants->PantWys = pants[ i ].fParamPants->fLenL1 * sin( pants[ i ].fParamPants->fAngleL ) + pants[ i ].fParamPants->fLenU1 * sin( pants[ i ].fParamPants->fAngleU ) + - pants[ i ].fParamPants->fHeight; // wysoko pocztkowa + pants[i].fParamPants->fHeight; // wysokość początkowa // pants[i].fParamPants->vPos.y=panty-panth-pants[i].fParamPants->PantWys; // //np. 4.429-0.097=4.332=~4.335 - // pants[i].fParamPants->vPos.z=0; //niezerowe dla pantografw + // pants[i].fParamPants->vPos.z=0; //niezerowe dla pantografów // asymetrycznych pants[ i ].fParamPants->PantTraction = pants[ i ].fParamPants->PantWys; pants[ i ].fParamPants->fWidth = 0.5 * MoverParameters->EnginePowerSource.CollectorParameters - .CSW; // poowa szerokoci lizgu; jest w "Power: CSW=" + .CSW; // połowa szerokości ślizgu; jest w "Power: CSW=" } } } else if (token == "animpistonprefix:") { - // prefiks toczysk - na razie uywamy modeli pantografw + // prefiks tłoczysk - na razie uzywamy modeli pantografów parser.getTokens(1, false); parser >> token; for( int i = 1; i <= 2; ++i ) { @@ -4904,7 +4906,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, } else if( token == "animconrodprefix:" ) { - // prefiks korbowodw - na razie uywamy modeli pantografw + // prefiks korbowodów - na razie używamy modeli pantografów parser.getTokens(); parser >> token; for( int i = 1; i <= 2; i++ ) { @@ -4917,25 +4919,25 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, else if( token == "pistonfactors:" ) { // Ra: parametry // silnika parowego - // (toka) - /* //Ra: tymczasowo wyczone ze wzgldu na porzdkowanie animacji - pantografw - pant1x=Parser->GetNextSymbol().ToDouble(); //kt przesunicia + // (tłoka) + /* //Ra: tymczasowo wyłączone ze względu na porządkowanie animacji + pantografów + pant1x=Parser->GetNextSymbol().ToDouble(); //kąt przesunięcia dla - pierwszego toka - pant2x=Parser->GetNextSymbol().ToDouble(); //kt przesunicia + pierwszego tłoka + pant2x=Parser->GetNextSymbol().ToDouble(); //kąt przesunięcia dla - drugiego toka - panty=Parser->GetNextSymbol().ToDouble(); //dugo korby (r) - panth=Parser->GetNextSymbol().ToDouble(); //dugo korbowodu + drugiego tłoka + panty=Parser->GetNextSymbol().ToDouble(); //długość korby (r) + panth=Parser->GetNextSymbol().ToDouble(); //długoś korbowodu (k) */ MoverParameters->EnginePowerSource.PowerType = - SteamPower; // Ra: po chamsku, ale z CHK nie dziaa + SteamPower; // Ra: po chamsku, ale z CHK nie działa } else if( token == "animreturnprefix:" ) { - // prefiks drka mimorodowego - na razie uywamy modeli pantografw + // prefiks drążka mimośrodowego - na razie używamy modeli pantografów parser.getTokens(1, false); parser >> token; for( int i = 1; i <= 2; i++ ) { @@ -4946,7 +4948,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, } else if (token == "animexplinkprefix:"){ // animreturnprefix: - // prefiks jarzma - na razie uywamy modeli pantografw + // prefiks jarzma - na razie używamy modeli pantografów parser.getTokens(1, false); parser >> token; for( int i = 1; i <= 2; i++ ) { @@ -4979,15 +4981,15 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, str = Parser->GetNextSymbol(); smMechanik0 = mdModel->GetFromName(str.c_str()); if (!smMechanik0) - { // jak nie ma bez numerka, to moe jest z + { // jak nie ma bez numerka, to może jest z // numerkiem? smMechanik0 = mdModel->GetFromName(AnsiString(str + "1").c_str()); smMechanik1 = mdModel->GetFromName(AnsiString(str + "2").c_str()); } - // aby dao si go obraca, musi mie wczon animacj w T3D! - // if (!smMechanik1) //jeli drugiego nie ma + // aby dało się go obracać, musi mieć włączoną animację w T3D! + // if (!smMechanik1) //jeśli drugiego nie ma // if (smMechanik0) //a jest pierwszy - // smMechanik0->WillBeAnimated(); //to bdziemy go obraca + // smMechanik0->WillBeAnimated(); //to będziemy go obracać } */ @@ -4996,7 +4998,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, int i, j, k, m; parser.getTokens(1, false); parser >> token; for (i = 0, j = 0; i < ANIM_DOORS; ++i) - j += iAnimType[i]; // zliczanie wczeniejszych animacji + j += iAnimType[i]; // zliczanie wcześniejszych animacji for (i = 0; i < iAnimType[ANIM_DOORS]; ++i) // liczba drzwi { // NBMX wrzesien 2003: wyszukiwanie drzwi o nazwie str* asAnimName = token + std::to_string(i + 1); @@ -5004,7 +5006,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, mdModel->GetFromName(asAnimName.c_str()); // ustalenie submodelu if (pAnimations[i + j].smAnimated) { //++iAnimatedDoors; - pAnimations[i + j].smAnimated->WillBeAnimated(); // wyczenie + pAnimations[i + j].smAnimated->WillBeAnimated(); // wyłączenie // optymalizacji // transformu switch (MoverParameters->DoorOpenMethod) @@ -5022,7 +5024,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, case 3: /* pAnimations[i + j].yUpdate = UpdateDoorFold; */ pAnimations[ i + j ].yUpdate = std::bind( &TDynamicObject::UpdateDoorFold, this, std::placeholders::_1 ); - break; // obrt 3 kolejnych submodeli + break; // obrót 3 kolejnych submodeli case 4: /* pAnimations[i + j].yUpdate = UpdateDoorPlug; */ pAnimations[ i + j ].yUpdate = std::bind( &TDynamicObject::UpdateDoorPlug, this, std::placeholders::_1 ); @@ -5030,12 +5032,12 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, default: break; } - pAnimations[i + j].iNumber = i; // parzyste dziaaj inaczej ni nieparzyste - pAnimations[i + j].fMaxDist = 300 * 300; // drzwi to z daleka wida + pAnimations[i + j].iNumber = i; // parzyste działają inaczej niż nieparzyste + pAnimations[i + j].fMaxDist = 300 * 300; // drzwi to z daleka widać pAnimations[i + j].fSpeed = Random(150); // oryginalny koncept z DoorSpeedFactor pAnimations[i + j].fSpeed = (pAnimations[i + j].fSpeed + 100) / 100; - // Ra: te wspczynniki s bez sensu, bo modyfikuj wektor - // przesunicia + // Ra: te współczynniki są bez sensu, bo modyfikują wektor + // przesunięcia } } } @@ -5254,7 +5256,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, // pliki z trabieniem wysokoton. sHorn2.Load( parser, GetPosition() ); if( iHornWarning ) { - iHornWarning = 2; // numer syreny do uycia po otrzymaniu sygnau do jazdy + iHornWarning = 2; // numer syreny do użycia po otrzymaniu sygnału do jazdy } } @@ -5296,7 +5298,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, else if( token == "converter:" ) { // pliki z przetwornica - // if (MoverParameters->EngineType==DieselElectric) //bdzie modulowany? + // if (MoverParameters->EngineType==DieselElectric) //będzie modulowany? sConverter.Load( parser, GetPosition() ); } @@ -5382,7 +5384,7 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, && ( false == Stop_InternalData ) ); if (mdModel) - mdModel->Init(); // obrcenie modelu oraz optymalizacja, rwnie zapisanie + mdModel->Init(); // obrócenie modelu oraz optymalizacja, również zapisanie // binarnego if (mdLoad) mdLoad->Init(); @@ -5390,23 +5392,23 @@ void TDynamicObject::LoadMMediaFile(std::string BaseDir, std::string TypeName, mdPrzedsionek->Init(); if (mdLowPolyInt) mdLowPolyInt->Init(); - // sHorn2.CopyIfEmpty(sHorn1); //eby jednak trbi te drugim - Global::asCurrentTexturePath = szTexturePath; // kiedy uproszczone wntrze mieszao tekstury nieba + // sHorn2.CopyIfEmpty(sHorn1); ///żeby jednak trąbił też drugim + Global::asCurrentTexturePath = szTexturePath; // kiedyś uproszczone wnętrze mieszało tekstury nieba } //--------------------------------------------------------------------------- void TDynamicObject::RadioStop() { // zatrzymanie pojazdu - if (Mechanik) // o ile kto go prowadzi + if (Mechanik) // o ile ktoś go prowadzi if (MoverParameters->SecuritySystem.RadioStop && - MoverParameters->Radio) // jeli pojazd ma RadioStop i jest on aktywny + MoverParameters->Radio) // jeśli pojazd ma RadioStop i jest on aktywny Mechanik->PutCommand("Emergency_brake", 1.0, 1.0, &vPosition, stopRadio); }; //--------------------------------------------------------------------------- void TDynamicObject::Damage(char flag) { - if (flag & 1) //rnicwka nie robi nic + if (flag & 1) //różnicówka nie robi nic { MoverParameters->MainSwitch(false); MoverParameters->FuseOff(); @@ -5450,7 +5452,7 @@ void TDynamicObject::Damage(char flag) MoverParameters->MaxCompressor += 100000001; } - if (flag & 16) //blokada wau + if (flag & 16) //blokada wału { if (MoverParameters->CtrlDelay<100000000) MoverParameters->CtrlDelay += 100000001; @@ -5465,7 +5467,7 @@ void TDynamicObject::Damage(char flag) MoverParameters->CtrlDownDelay -= 100000001; } - if (flag & 32) //hamowanie nage + if (flag & 32) //hamowanie nagŁe { } else @@ -5476,39 +5478,39 @@ void TDynamicObject::Damage(char flag) }; void TDynamicObject::RaLightsSet(int head, int rear) -{ // zapalenie wiate z przodu i z - // tyu, zalene od kierunku +{ // zapalenie świateł z przodu i z + // tyłu, zależne od kierunku // pojazdu if (!MoverParameters) - return; // moe tego nie by na pocztku + return; // może tego nie być na początku if (rear == 2 + 32 + 64) - { // jeli koniec pocigu, to trzeba ustali, czy + { // jeśli koniec pociągu, to trzeba ustalić, czy // jest tam czynna lokomotywa - // EN57 moe nie mie kocwek od rodka czonu - if (MoverParameters->Power > 1.0) // jeli ma moc napdow - if (!MoverParameters->ActiveDir) // jeli nie ma ustawionego kierunku - { // jeli ma zarwno wiata jak i kocwki, ustali, czy jest w stanie + // EN57 może nie mieć końcówek od środka członu + if (MoverParameters->Power > 1.0) // jeśli ma moc napędową + if (!MoverParameters->ActiveDir) // jeśli nie ma ustawionego kierunku + { // jeśli ma zarówno światła jak i końcówki, ustalić, czy jest w stanie // aktywnym - // np. lokomotywa na zimno bdzie mie kocwki a nie wiata + // np. lokomotywa na zimno będzie mieć końcówki a nie światła rear = 64; // tablice blaszane - // trzeba to uzaleni od "zaczenia baterii" w pojedzie + // trzeba to uzależnić od "załączenia baterii" w pojeździe } - if (rear == 2 + 32 + 64) // jeli nadal obydwie moliwoci + if (rear == 2 + 32 + 64) // jeśli nadal obydwie możliwości if (iInventory & - (iDirection ? 0x2A : 0x15)) // czy ma jakie wiata czerowone od danej strony - rear = 2 + 32; // dwa wiata czerwone + (iDirection ? 0x2A : 0x15)) // czy ma jakieś światła czerowone od danej strony + rear = 2 + 32; // dwa światła czerwone else rear = 64; // tablice blaszane } - if (iDirection) // w zalenoci od kierunku pojazdu w skadzie - { // jesli pojazd stoi sprzgiem 0 w stron czoa + if (iDirection) // w zależności od kierunku pojazdu w składzie + { // jesli pojazd stoi sprzęgiem 0 w stronę czoła if (head >= 0) iLights[0] = head; if (rear >= 0) iLights[1] = rear; } else - { // jak jest odwrcony w skadzie (-1), to zapalamy odwrotnie + { // jak jest odwrócony w składzie (-1), to zapalamy odwrotnie if (head >= 0) iLights[1] = head; if (rear >= 0) @@ -5517,29 +5519,29 @@ void TDynamicObject::RaLightsSet(int head, int rear) }; int TDynamicObject::DirectionSet(int d) -{ // ustawienie kierunku w skadzie (wykonuje AI) +{ // ustawienie kierunku w składzie (wykonuje AI) iDirection = d > 0 ? 1 : 0; // d:1=zgodny,-1=przeciwny; iDirection:1=zgodny,0=przeciwny; - CouplCounter = 20; //eby normalnie skanowa kolizje, to musi ruszy z miejsca + CouplCounter = 20; //żeby normalnie skanować kolizje, to musi ruszyć z miejsca if (MyTrack) - { // podczas wczytywania wstawiane jest AI, ale moe jeszcze nie - // by toru + { // podczas wczytywania wstawiane jest AI, ale może jeszcze nie + // być toru // AI ustawi kierunek ponownie po uruchomieniu silnika - if (iDirection) // jeli w kierunku Coupler 0 + if (iDirection) // jeśli w kierunku Coupler 0 { if (MoverParameters->Couplers[0].CouplingFlag == - ctrain_virtual) // brak pojazdu podpitego? - ABuScanObjects(1, 300); // szukanie czego do podczenia + ctrain_virtual) // brak pojazdu podpiętego? + ABuScanObjects(1, 300); // szukanie czegoś do podłączenia } else if (MoverParameters->Couplers[1].CouplingFlag == - ctrain_virtual) // brak pojazdu podpitego? + ctrain_virtual) // brak pojazdu podpiętego? ABuScanObjects(-1, 300); } - return 1 - (iDirection ? NextConnectedNo : PrevConnectedNo); // informacja o pooeniu - // nastpnego + return 1 - (iDirection ? NextConnectedNo : PrevConnectedNo); // informacja o położeniu + // następnego }; TDynamicObject * TDynamicObject::PrevAny() -{ // wskanik na poprzedni, +{ // wskaźnik na poprzedni, // nawet wirtualny return iDirection ? PrevConnected : NextConnected; }; @@ -5547,32 +5549,32 @@ TDynamicObject * TDynamicObject::Prev() { if (MoverParameters->Couplers[iDirection ^ 1].CouplingFlag) return iDirection ? PrevConnected : NextConnected; - return NULL; // gdy sprzg wirtualny, to jakby nic nie byo + return NULL; // gdy sprzęg wirtualny, to jakby nic nie było }; TDynamicObject * TDynamicObject::Next() { if (MoverParameters->Couplers[iDirection].CouplingFlag) return iDirection ? NextConnected : PrevConnected; - return NULL; // gdy sprzg wirtualny, to jakby nic nie byo + return NULL; // gdy sprzęg wirtualny, to jakby nic nie było }; TDynamicObject * TDynamicObject::PrevC(int C) { if (MoverParameters->Couplers[iDirection ^ 1].CouplingFlag & C) return iDirection ? PrevConnected : NextConnected; - return NULL; // gdy sprzg wirtualny, to jakby nic nie byo + return NULL; // gdy sprzęg wirtualny, to jakby nic nie było }; TDynamicObject * TDynamicObject::NextC(int C) { if (MoverParameters->Couplers[iDirection].CouplingFlag & C) return iDirection ? NextConnected : PrevConnected; - return NULL; // gdy sprzg inny, to jakby nic nie byo + return NULL; // gdy sprzęg inny, to jakby nic nie było }; double TDynamicObject::NextDistance(double d) -{ // ustalenie odlegoci do - // nastpnego pojazdu, potrzebne +{ // ustalenie odległości do + // następnego pojazdu, potrzebne // do wstecznego skanowania if (!MoverParameters->Couplers[iDirection].Connected) - return d; // jeli nic nie ma, zwrcenie domylnej wartoci + return d; // jeśli nic nie ma, zwrócenie domyślnej wartości if ((d <= 0.0) || (MoverParameters->Couplers[iDirection].CoupleDist < d)) return MoverParameters->Couplers[iDirection].Dist; else @@ -5580,45 +5582,45 @@ double TDynamicObject::NextDistance(double d) }; TDynamicObject * TDynamicObject::Neightbour(int &dir) -{ // ustalenie nastpnego (1) albo poprzedniego (0) w skadzie bez - // wzgldu na prawidowo +{ // ustalenie następnego (1) albo poprzedniego (0) w składzie bez + // względu na prawidłowość // iDirection - int d = dir; // zapamitanie kierunku - dir = 1 - (dir ? NextConnectedNo : PrevConnectedNo); // nowa warto + int d = dir; // zapamiętanie kierunku + dir = 1 - (dir ? NextConnectedNo : PrevConnectedNo); // nowa wartość return (d ? (MoverParameters->Couplers[1].CouplingFlag ? NextConnected : NULL) : (MoverParameters->Couplers[0].CouplingFlag ? PrevConnected : NULL)); }; void TDynamicObject::CoupleDist() -{ // obliczenie odlegoci sprzgw +{ // obliczenie odległości sprzęgów if (MyTrack ? (MyTrack->iCategoryFlag & 1) : - true) // jeli nie ma przypisanego toru, to liczy jak dla kolei - { // jeli jedzie po szynach (rwnie unimog), liczenie kul wystarczy + true) // jeśli nie ma przypisanego toru, to liczyć jak dla kolei + { // jeśli jedzie po szynach (również unimog), liczenie kul wystarczy MoverParameters->SetCoupleDist(); } else - { // na drodze trzeba uwzgldni wektory ruchu + { // na drodze trzeba uwzględnić wektory ruchu double d0 = MoverParameters->Couplers[0].CoupleDist; - // double d1=MoverParameters->Couplers[1].CoupleDist; //sprzg z tyu - // samochodu mona ola, - // dopki nie jedzi na wstecznym + // double d1=MoverParameters->Couplers[1].CoupleDist; //sprzęg z tyłu + // samochodu można olać, + // dopóki nie jeździ na wstecznym vector3 p1, p2; double d, w; // dopuszczalny dystans w poprzek MoverParameters->SetCoupleDist(); // liczenie standardowe - if (MoverParameters->Couplers[0].Connected) // jeli cokolwiek podczone - if (MoverParameters->Couplers[0].CouplingFlag == 0) // jeli wirtualny - if (MoverParameters->Couplers[0].CoupleDist < 300.0) // i mniej ni 300m - { // przez MoverParameters->Couplers[0].Connected nie da si dosta do - // DynObj, std + if (MoverParameters->Couplers[0].Connected) // jeśli cokolwiek podłączone + if (MoverParameters->Couplers[0].CouplingFlag == 0) // jeśli wirtualny + if (MoverParameters->Couplers[0].CoupleDist < 300.0) // i mniej niż 300m + { // przez MoverParameters->Couplers[0].Connected nie da się dostać do + // DynObj, stąd // prowizorka // WriteLog("Collision of // "+AnsiString(MoverParameters->Couplers[0].CoupleDist)+"m detected // by // "+asName+":0."); w = 0.5 * (MoverParameters->Couplers[0].Connected->Dim.W + - MoverParameters->Dim.W); // minimalna odlego minicia - d = -DotProduct(vLeft, vCoulpler[0]); // odlego prostej ruchu od pocztku - // ukadu wsprzdnych + MoverParameters->Dim.W); // minimalna odległość minięcia + d = -DotProduct(vLeft, vCoulpler[0]); // odległość prostej ruchu od początku + // układu współrzędnych d = fabs( DotProduct(vLeft, ((TMoverParameters *)(MoverParameters->Couplers[0].Connected)) @@ -5627,20 +5629,20 @@ void TDynamicObject::CoupleDist() // WriteLog("Distance "+AnsiString(d)+"m from "+asName+":0."); if (d > w) MoverParameters->Couplers[0].CoupleDist = - (d0 < 10 ? 50 : d0); // przywrcenie poprzedniej + (d0 < 10 ? 50 : d0); // przywrócenie poprzedniej } - if (MoverParameters->Couplers[1].Connected) // jeli cokolwiek podczone - if (MoverParameters->Couplers[1].CouplingFlag == 0) // jeli wirtualny - if (MoverParameters->Couplers[1].CoupleDist < 300.0) // i mniej ni 300m + if (MoverParameters->Couplers[1].Connected) // jeśli cokolwiek podłączone + if (MoverParameters->Couplers[1].CouplingFlag == 0) // jeśli wirtualny + if (MoverParameters->Couplers[1].CoupleDist < 300.0) // i mniej niż 300m { // WriteLog("Collision of // "+AnsiString(MoverParameters->Couplers[1].CoupleDist)+"m detected // by // "+asName+":1."); w = 0.5 * (MoverParameters->Couplers[1].Connected->Dim.W + - MoverParameters->Dim.W); // minimalna odlego minicia - d = -DotProduct(vLeft, vCoulpler[1]); // odlego prostej ruchu od pocztku - // ukadu wsprzdnych + MoverParameters->Dim.W); // minimalna odległość minięcia + d = -DotProduct(vLeft, vCoulpler[1]); // odległość prostej ruchu od początku + // układu współrzędnych d = fabs( DotProduct(vLeft, ((TMoverParameters *)(MoverParameters->Couplers[1].Connected)) @@ -5649,50 +5651,50 @@ void TDynamicObject::CoupleDist() // WriteLog("Distance "+AnsiString(d)+"m from "+asName+":1."); if (d > w) MoverParameters->Couplers[0].CoupleDist = - (d0 < 10 ? 50 : d0); // przywrcenie poprzedniej + (d0 < 10 ? 50 : d0); // przywrócenie poprzedniej } } }; TDynamicObject * TDynamicObject::ControlledFind() { // taka proteza: - // chc podczy - // kabin EN57 - // bezporednio z + // chcę podłączyć + // kabinę EN57 + // bezpośrednio z // silnikowym, aby - // nie robi tego + // nie robić tego // przez // ukrotnienie - // drugi silnikowy i tak musi by ukrotniony, podobnie jak kolejna jednostka - // lepiej by byo przesya komendy sterowania, co jednak wymaga przebudowy + // drugi silnikowy i tak musi być ukrotniony, podobnie jak kolejna jednostka + // lepiej by było przesyłać komendy sterowania, co jednak wymaga przebudowy // transmisji komend // (LD) - // problem si robi ze wiatami, ktre bd zapalane w silnikowym, ale musz - // wieci si w - // rozrzdczych - // dla EZT wiat czoowe bd "zapalane w silnikowym", ale widziane z - // rozrzdczych - // rwnie wczytywanie MMD powinno dotyczy aktualnego czonu - // problematyczna moe by kwestia wybranej kabiny (w silnikowym...) - // jeli silnikowy bdzie zapity odwrotnie (tzn. -1), to i tak powinno - // jedzi dobrze - // rwnie hamowanie wykonuje si zaworem w czonie, a nie w silnikowym... + // problem się robi ze światłami, które będą zapalane w silnikowym, ale muszą + // świecić się w + // rozrządczych + // dla EZT światłą czołowe będą "zapalane w silnikowym", ale widziane z + // rozrządczych + // również wczytywanie MMD powinno dotyczyć aktualnego członu + // problematyczna może być kwestia wybranej kabiny (w silnikowym...) + // jeśli silnikowy będzie zapięty odwrotnie (tzn. -1), to i tak powinno + // jeździć dobrze + // również hamowanie wykonuje się zaworem w członie, a nie w silnikowym... TDynamicObject *d = this; // zaczynamy od aktualnego if (d->MoverParameters->TrainType & dt_EZT) // na razie dotyczy to EZT if (d->NextConnected ? d->MoverParameters->Couplers[1].AllowedFlag & ctrain_depot : false) - { // gdy jest czon od sprzgu 1, a sprzg czony + { // gdy jest człon od sprzęgu 1, a sprzęg łączony // warsztatowo (powiedzmy) if ((d->MoverParameters->Power < 1.0) && (d->NextConnected->MoverParameters->Power > 1.0)) // my nie mamy mocy, ale ten drugi ma - d = d->NextConnected; // bdziemy sterowa tym z moc + d = d->NextConnected; // będziemy sterować tym z mocą } else if (d->PrevConnected ? d->MoverParameters->Couplers[0].AllowedFlag & ctrain_depot : false) - { // gdy jest czon od sprzgu 0, a sprzg czony + { // gdy jest człon od sprzęgu 0, a sprzęg łączony // warsztatowo (powiedzmy) if ((d->MoverParameters->Power < 1.0) && (d->PrevConnected->MoverParameters->Power > 1.0)) // my nie mamy mocy, ale ten drugi ma - d = d->PrevConnected; // bdziemy sterowa tym z moc + d = d->PrevConnected; // będziemy sterować tym z mocą } return d; }; @@ -5702,37 +5704,37 @@ void TDynamicObject::ParamSet(int what, int into) { // ustawienie lokalnego parametru (what) na stan (into) switch (what & 0xFF00) { - case 0x0100: // to np. s drzwi, bity 0..7 okrelaj numer 1..254 albo mask - // dla 8 rnych - if (what & 1) // na razie mamy lewe oraz prawe, czyli uywamy mask 1=lewe, + case 0x0100: // to np. są drzwi, bity 0..7 określają numer 1..254 albo maskę + // dla 8 różnych + if (what & 1) // na razie mamy lewe oraz prawe, czyli używamy maskę 1=lewe, // 2=prawe, 3=wszystkie if (MoverParameters->DoorLeftOpened) - { // s otwarte - if (!into) // jeli zamykanie + { // są otwarte + if (!into) // jeśli zamykanie { - // dwik zamykania + // dźwięk zamykania } } else - { // s zamknite - if (into) // jeli otwieranie + { // są zamknięte + if (into) // jeśli otwieranie { - // dwik otwierania + // dźwięk otwierania } } - if (what & 2) // prawe dziaaj niezalenie od lewych + if (what & 2) // prawe działają niezależnie od lewych if (MoverParameters->DoorRightOpened) - { // s otwarte - if (!into) // jeli zamykanie + { // są otwarte + if (!into) // jeśli zamykanie { - // dwik zamykania + // dźwięk zamykania } } else - { // s zamknite - if (into) // jeli otwieranie + { // są zamknięte + if (into) // jeśli otwieranie { - // dwik otwierania + // dźwięk otwierania } } break; @@ -5740,92 +5742,92 @@ void TDynamicObject::ParamSet(int what, int into) }; int TDynamicObject::RouteWish(TTrack *tr) -{ // zapytanie do AI, po ktrym - // segmencie (-6..6) jecha na - // skrzyowaniu (tr) +{ // zapytanie do AI, po którym + // segmencie (-6..6) jechać na + // skrzyżowaniu (tr) return Mechanik ? Mechanik->CrossRoute(tr) : 0; // wg AI albo prosto }; std::string TDynamicObject::TextureTest(std::string const &name) -{ // Ra 2015-01: sprawdzenie dostpnoci tekstury o podanej nazwie +{ // Ra 2015-01: sprawdzenie dostępności tekstury o podanej nazwie std::vector extensions = { ".dds", ".tga", ".bmp" }; for( auto const &extension : extensions ) { if( true == FileExists( name + extension ) ) { return name + extension; - } - } - return ""; // nie znaleziona + } + } + return ""; // nie znaleziona }; void TDynamicObject::DestinationSet(std::string to, std::string numer) { // ustawienie stacji // docelowej oraz wymiennej - // tekstury 4, jeli + // tekstury 4, jeśli // istnieje plik - // w zasadzie, to kady wagon mgby mie inn stacj docelow - // zwaszcza w towarowych, pod ktem zautomatyzowania maewrw albo pracy grki - // ale to jeszcze potrwa, zanim bdzie moliwe, na razie mona wpisa stacj z - // rozkadu + // w zasadzie, to każdy wagon mógłby mieć inną stację docelową + // zwłaszcza w towarowych, pod kątem zautomatyzowania maewrów albo pracy górki + // ale to jeszcze potrwa, zanim będzie możliwe, na razie można wpisać stację z + // rozkładu if (abs(iMultiTex) >= 4) - return; // jak s 4 tekstury wymienne, to nie zmienia rozkadem + return; // jak są 4 tekstury wymienne, to nie zmieniać rozkładem numer = Global::Bezogonkow(numer); asDestination = to; to = Global::Bezogonkow(to); // do szukania pliku obcinamy ogonki std::string x = TextureTest(asBaseDir + numer + "@" + MoverParameters->TypeName); if (!x.empty()) { - ReplacableSkinID[4] = TTexturesManager::GetTextureID( NULL, NULL, x, 9); // rozmywania 0,1,4,5 nie nadaj si + ReplacableSkinID[4] = TTexturesManager::GetTextureID( NULL, NULL, x, 9); // rozmywania 0,1,4,5 nie nadają się return; } x = TextureTest(asBaseDir + numer ); if (!x.empty()) { - ReplacableSkinID[4] = TTexturesManager::GetTextureID( NULL, NULL, x, 9); // rozmywania 0,1,4,5 nie nadaj si + ReplacableSkinID[4] = TTexturesManager::GetTextureID( NULL, NULL, x, 9); // rozmywania 0,1,4,5 nie nadają się return; } if (to.empty()) to = "nowhere"; - x = TextureTest(asBaseDir + to + "@" + MoverParameters->TypeName); // w pierwszej kolejnoci z nazw FIZ/MMD + x = TextureTest(asBaseDir + to + "@" + MoverParameters->TypeName); // w pierwszej kolejności z nazwą FIZ/MMD if (!x.empty()) { - ReplacableSkinID[4] = TTexturesManager::GetTextureID( NULL, NULL, x, 9); // rozmywania 0,1,4,5 nie nadaj si + ReplacableSkinID[4] = TTexturesManager::GetTextureID( NULL, NULL, x, 9); // rozmywania 0,1,4,5 nie nadają się return; } x = TextureTest(asBaseDir + to); // na razie prymitywnie if (!x.empty()) - ReplacableSkinID[4] = TTexturesManager::GetTextureID( NULL, NULL, x, 9); // rozmywania 0,1,4,5 nie nadaj si + ReplacableSkinID[4] = TTexturesManager::GetTextureID( NULL, NULL, x, 9); // rozmywania 0,1,4,5 nie nadają się else { - x = TextureTest(asBaseDir + "nowhere"); // jak nie znalaz dedykowanej, to niech daje nowhere + x = TextureTest(asBaseDir + "nowhere"); // jak nie znalazł dedykowanej, to niech daje nowhere if (!x.empty()) ReplacableSkinID[4] = TTexturesManager::GetTextureID(NULL, NULL, x, 9); } - // Ra 2015-01: eby zalogowa bd, trzeba by mie pewno, e model uywa + // Ra 2015-01: żeby zalogować błąd, trzeba by mieć pewność, że model używa // tekstury nr 4 }; void TDynamicObject::OverheadTrack(float o) { // ewentualne wymuszanie jazdy - // bezprdowej z powodu informacji + // bezprądowej z powodu informacji // w torze - if (ctOwner) // jeli ma obiekt nadzorujcy - { // trzeba zaktualizowa map flag bitowych jazdy bezprdowej + if (ctOwner) // jeśli ma obiekt nadzorujący + { // trzeba zaktualizować mapę flag bitowych jazdy bezprądowej if (o < 0.0) { // normalna jazda po tym torze - ctOwner->iOverheadZero &= ~iOverheadMask; // zerowanie bitu - moe pobiera prd - ctOwner->iOverheadDown &= ~iOverheadMask; // zerowanie bitu - moe podnie pantograf + ctOwner->iOverheadZero &= ~iOverheadMask; // zerowanie bitu - może pobierać prąd + ctOwner->iOverheadDown &= ~iOverheadMask; // zerowanie bitu - może podnieść pantograf } else if (o > 0.0) - { // opuszczenie pantografw + { // opuszczenie pantografów ctOwner->iOverheadZero |= - iOverheadMask; // ustawienie bitu - ma jecha bez pobierania prdu - ctOwner->iOverheadDown |= iOverheadMask; // ustawienie bitu - ma opuci pantograf + iOverheadMask; // ustawienie bitu - ma jechać bez pobierania prądu + ctOwner->iOverheadDown |= iOverheadMask; // ustawienie bitu - ma opuścić pantograf } else - { // jazda bezprdowa z podniesionym pantografem + { // jazda bezprądowa z podniesionym pantografem ctOwner->iOverheadZero |= - iOverheadMask; // ustawienie bitu - ma jecha bez pobierania prdu - ctOwner->iOverheadDown &= ~iOverheadMask; // zerowanie bitu - moe podnie pantograf + iOverheadMask; // ustawienie bitu - ma jechać bez pobierania prądu + ctOwner->iOverheadDown &= ~iOverheadMask; // zerowanie bitu - może podnieść pantograf } } }; diff --git a/EU07.cpp b/EU07.cpp index 001922af..f46fd78a 100644 --- a/EU07.cpp +++ b/EU07.cpp @@ -70,8 +70,8 @@ int InitGL(GLvoid) // All Setup For OpenGL Goes Here glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); - Global::pWorld = &World; // Ra: wska�nik potrzebny do usuwania pojazd�w - return World.Init(hWnd, hDC); // true je�li wszystko p�jdzie dobrze + Global::pWorld = &World; // Ra: wskaźnik potrzebny do usuwania pojazdów + return World.Init(hWnd, hDC); // true jeśli wszystko pójdzie dobrze } //--------------------------------------------------------------------------- @@ -404,22 +404,22 @@ LRESULT CALLBACK WndProc(HWND hWnd, // handle for this window RECT rect; switch (uMsg) // check for windows messages { - case WM_PASTE: //[Ctrl]+[V] potrzebujemy do innych cel�w + case WM_PASTE: //[Ctrl]+[V] potrzebujemy do innych celów return 0; - case WM_COPYDATA: // obs�uga danych przes�anych przez program steruj�cy + case WM_COPYDATA: // obsługa danych przesłanych przez program sterujący pDane = (PCOPYDATASTRUCT)lParam; if (pDane->dwData == 'EU07') // sygnatura danych World.OnCommandGet((DaneRozkaz *)(pDane->lpData)); break; case WM_ACTIVATE: // watch for window activate message // case WM_ACTIVATEAPP: - { // Ra: uzale�nienie aktywno�ci od bycia na wierzchu + { // Ra: uzależnienie aktywności od bycia na wierzchu Global::bActive = (LOWORD(wParam) != WA_INACTIVE); - if (Global::bInactivePause) // je�li ma by� pauzowanie okna w tle + if (Global::bInactivePause) // jeśli ma być pauzowanie okna w tle if (Global::bActive) Global::iPause &= ~4; // odpauzowanie, gdy jest na pierwszym planie else - Global::iPause |= 4; // w��czenie pauzy, gdy nieaktywy + Global::iPause |= 4; // włączenie pauzy, gdy nieaktywy if (Global::bActive) SetCursorPos(mx, my); ShowCursor(!Global::bActive); @@ -473,8 +473,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, // handle for this window case WM_KEYDOWN: if (Global::bActive) { - if (wParam != 17) // bo naci�ni�cia [Ctrl] nie ma po co przekazywa� - if (wParam != 145) //[Scroll Lock] te� nie + if (wParam != 17) // bo naciśnięcia [Ctrl] nie ma po co przekazywać + if (wParam != 145) //[Scroll Lock] też nie World.OnKeyDown(wParam); switch (wParam) { @@ -482,27 +482,27 @@ LRESULT CALLBACK WndProc(HWND hWnd, // handle for this window if (DebugModeFlag) break; case 19: //[Pause] - if (Global::iPause & 1) // je�li pauza startowa - Global::iPause &= ~1; // odpauzowanie, gdy po wczytaniu mia�o nie startowa� + if (Global::iPause & 1) // jeśli pauza startowa + Global::iPause &= ~1; // odpauzowanie, gdy po wczytaniu miało nie startować else if (!(Global::iMultiplayer & 2)) // w multiplayerze pauza nie ma sensu if (!Console::Pressed(VK_CONTROL)) // z [Ctrl] to radiostop jest - // Ra: poni�sze nie ma sensu, bo brak komunikacji natychmiast zapauzuje + // Ra: poniższe nie ma sensu, bo brak komunikacji natychmiast zapauzuje // ponownie - // if (Global::iPause&8) //je�li pauza zwi�zana z brakiem komunikacji z + // if (Global::iPause&8) //jeśli pauza związana z brakiem komunikacji z // PoKeys // Global::iPause&=~10; //odpauzowanie pauzy PoKeys (chyba nic nie da) i - // ewentualnie klawiszowej r�wnie� + // ewentualnie klawiszowej również // else Global::iPause ^= 2; // zmiana stanu zapauzowania if (Global::iPause) // jak pauza - Global::iTextMode = VK_F1; // to wy�wietli� zegar i informacj� + Global::iTextMode = VK_F1; // to wyświetlić zegar i informację break; case VK_F7: if (DebugModeFlag) - { // siatki wy�wietlane tyko w trybie testowym + { // siatki wyświetlane tyko w trybie testowym Global::bWireFrame = !Global::bWireFrame; - ++Global::iReCompile; // od�wie�y� siatki - // Ra: jeszcze usun�� siatki ze skompilowanych obiekt�w! + ++Global::iReCompile; // odświeżyć siatki + // Ra: jeszcze usunąć siatki ze skompilowanych obiektów! } break; } @@ -585,9 +585,9 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance MSG msg; // windows message structure BOOL done = FALSE; // bool variable to exit loop fullscreen = true; - DeleteFile("errors.txt"); // usuni�cie starego - Global::LoadIniFile("eu07.ini"); // teraz dopiero mo�na przejrze� plik z ustawieniami - Global::InitKeys("keys.ini"); // wczytanie mapowania klawiszy - jest na sta�e + DeleteFile("errors.txt"); // usunięcie starego + Global::LoadIniFile("eu07.ini"); // teraz dopiero można przejrzeć plik z ustawieniami + Global::InitKeys("keys.ini"); // wczytanie mapowania klawiszy - jest na stałe // hunter-271211: ukrywanie konsoli if (Global::iWriteLogEnabled & 2) @@ -597,7 +597,7 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance } std::string commandline( lpCmdLine ); // parametry uruchomienia if( false == commandline.empty() ) - { // analizowanie parametr�w + { // analizowanie parametrďż˝w cParser parser( commandline ); std::string token; do { @@ -616,15 +616,15 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance parser >> Global::asHumanCtrlVehicle; } else if( token == "-modifytga" ) - { // wykonanie modyfikacji wszystkich plik�w TGA + { // wykonanie modyfikacji wszystkich plików TGA Global::iModifyTGA = -1; // specjalny tryb wykonania totalnej modyfikacji } else if( token == "-e3d" ) - { // wygenerowanie wszystkich plik�w E3D + { // wygenerowanie wszystkich plików E3D if (Global::iConvertModels > 0) Global::iConvertModels = -Global::iConvertModels; // specjalny tryb else - Global::iConvertModels = -7; // z optymalizacj�, bananami i prawid�owym Opacity + Global::iConvertModels = -7; // z optymalizacją, bananami i prawidłowym Opacity } else Error( @@ -651,9 +651,9 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance return 0; // quit if window was not created SetForegroundWindow(hWnd); // McZapkie: proba przeplukania klawiatury - Console *pConsole = new Console(); // Ra: nie wiem, czy ma to sens, ale jako� zainicjowac trzeba + Console *pConsole = new Console(); // Ra: nie wiem, czy ma to sens, ale jakoś zainicjowac trzeba while (Console::Pressed(VK_F10)) - Error("Keyboard buffer problem - press F10"); // na Windows 98 lubi si� to pojawia� + Error("Keyboard buffer problem - press F10"); // na Windows 98 lubi się to pojawiać int iOldSpeed, iOldDelay; SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, &iOldSpeed, 0); SystemParametersInfo(SPI_GETKEYBOARDDELAY, 0, &iOldDelay, 0); @@ -663,20 +663,20 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance WriteLog("No joystick"); if (Global::iModifyTGA < 0) { // tylko modyfikacja TGA, bez uruchamiania symulacji - Global::iMaxTextureSize = 64; //�eby nie zamula� pami�ci - World.ModifyTGA(); // rekurencyjne przegl�danie katalog�w + Global::iMaxTextureSize = 64; //żeby nie zamulać pamięci + World.ModifyTGA(); // rekurencyjne przeglądanie katalogów } else { if (Global::iConvertModels < 0) { Global::iConvertModels = -Global::iConvertModels; - World.CreateE3D("models\\"); // rekurencyjne przegl�danie katalog�w + World.CreateE3D("models\\"); // rekurencyjne przeglądanie katalogów World.CreateE3D("dynamic\\", true); - } // po zrobieniu E3D odpalamy normalnie sceneri�, by j� zobaczy� + } // po zrobieniu E3D odpalamy normalnie scenerię, by ją zobaczyć // else - //{//g��wna p�tla programu - Console::On(); // w��czenie konsoli + //{//główna pętla programu + Console::On(); // włączenie konsoli while (!done) // loop that runs while done=FALSE { if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) // is there a message waiting? @@ -696,14 +696,14 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance // draw the scene, watch for quit messages // DrawGLScene() // if (!pause) - // if (Global::bInactivePause?Global::bActive:true) //tak nie, bo spada z g�ry + // if (Global::bInactivePause?Global::bActive:true) //tak nie, bo spada z góry if (World.Update()) // Was There A Quit Received? SwapBuffers(hDC); // Swap Buffers (Double Buffering) else done = true; //[F10] or DrawGLScene signalled a quit } } - Console::Off(); // wy��czenie konsoli (komunikacji zwrotnej) + Console::Off(); // wyłączenie konsoli (komunikacji zwrotnej) } SystemParametersInfo(SPI_SETKEYBOARDSPEED, iOldSpeed, NULL, 0); SystemParametersInfo(SPI_SETKEYBOARDDELAY, iOldDelay, NULL, 0); @@ -714,6 +714,3 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance KillGLWindow(); // kill the window return (msg.wParam); // exit the program } - - -