Zacząłem robić testy komunikacji z serwerem plików dla mojego programu. W prostych przypadkach braku plików w scenerii będą one pobierane z serwera. (Wyszukiwanie w innych katalogach będzie dla zaawansowanych.)
I tu mnie naszedł taki pomysł, że na serwerze można by zamieszczać pliki poprawek do scenerii. W swojej krótkiej karierze MaSzynowej sam opracowałem już kilka poprawek. Problem z tymi poprawkami jest taki, że teraz każdy musiałby ode mnie ściągnąć całe poprawione pliki. Wprowadzenie ręcznie tych poprawek fragmentami jest uciążliwe i może prowadzić do powstania błędów. A jeśli jeszcze ktoś inny wymyśli inne poprawki, to robi się coraz więcej plików, i coraz mniej wiadomo, co jest w których zmienione.
Moja propozycja jest taka, żeby opracować format pliku z poprawkami, i aby były one dostępne wraz z programem do poprawiania scenerii. Pozwoliło by to różnym ludziom opracowywać poprawki, niezależnie od autorów scenerii i wprowadzać je na różnych wersjach scenerii (np. Quark-Testowo, Quark_MCE, Quark2007, QuarkPlus2007). Z mojej strony była by już następująca lista:
- Poprawka toru przy machajce w Quarku,
- Poprawka torów w Linia546 (misja SM42).
- Poprawka zdublowanych jezdni w Manewrowie.
- Poprawka zdublowanej rzeki i usunięcie zerowego toru w Quarku.
- Usunięcie "undefined" z toru w Krzyżowej.
- Uruchomienie linii wąskotorowej w Całkowie.
I każdy, kto by chciał, mógłby sobie te poprawki ściągnąć i zainstalować w prosty sposób. W podobny sposób można by wypuścić np. poprawki przechyłek, dodanie trakcji elektrycznej lub jej korektę, zmiany eventów (np. dodanie zatrzymywania na przystankach osobowych dla AI).
Kwestią do ustalenia jest format pliku korygującego. Na pierwszy ogień sprawdziłem
.diff. Po wielu trudach z instalacją na Windows doszedłem do wniosku, że się to nie nadaje. Opiera się na numerach zmienianych linii w pliku, a te się mogą być różne, jeśli instaluje się kilka łatek niezależnie.
Innym formatem jaki znam, jest instalacja modyfikacji do
phpBB. W tym przypadku jest to jeden plik tekstowy, w którym jest opis modyfikowania innych plików, w sposób czytelny dla człowieka i dla maszyny. Wygląda to mniej więcej tak (przykład pierwszy lepszy):
#
#-----[ OPEN ]-----
#
admin/admin_users.php
#
#-----[ FIND ]------------------------------------------
#
$user_allowavatar = ( !empty($HTTP_POST_VARS['user_allowavatar']) ) ? intval( $HTTP_POST_VARS['user_allowavatar'] ) : 0;
#
#-----[ AFTER, ADD ]-----
#
//MOD-BEGIN: Remove Users Signature ----------------------------------------
$user_allowsig = ( !empty($HTTP_POST_VARS['user_allowsig']) ) ? intval( $HTTP_POST_VARS['user_allowsig'] ) : 0;
//MOD-END: Remove Users Signature ------------------------------------------
#
#-----[ FIND ]------------------------------------------
#
$sql = "UPDATE " . USERS_TABLE . "
#
#-----[ BEFORE, ADD ]-----
#
//MOD-REPLACE: Remove Users Signature --------------------------------------
//added: , user_allowsig = $user_allowsig
#
#-----[ FIND ]------------------------------------------
#
#Note: full line longer
SET " . $username_sql . $passwd_sql . "user_email
#
#-----[ IN-LINE FIND ]----------------------------------
#
. $avatar_sql . "
#
#-----[ IN-LINE AFTER, ADD ]-----
#
, user_allowsig = $user_allowsig
Jest to zorientowane na wprowadzanie poprawek do programu, gdzie bardzo ważne jest miejsce wprowadzenia poprawki. W przypadku scenerii miejsce jest na ogół nieistotne, więc można by to zrobić prościej. Potrzebne byłyby komendy typu "otwórz plik", "znajdź wpis", "zastąp go następującym", "usuń znaleziony", "dodaj na końcu pliku". Idealnie by było, gdyby taki opis poprawki pozwalał na przywrócenie stanu poprzedniego. (Nie mówiąc o rozpoznaniu innej wykluczającej poprawki, np. gdyby powstały 2 wersje wąskotorówki do Całkowa: jedna powracająca pod gruntem, a druga ze zwrotnicami i pętlami na końcach).
Piszę "Na warsztacie", ponieważ tak czy inaczej będę usiłował to uruchomić. Kolejna wersja mojego programu będzie już łączyć się z serwerem, ale na razie jeszcze nie umie ściągać.