the cutting room mirror

pl

Wersja Pasjansa z 2007 dołączona do systemów Windows Vista i 7 jest przerobioną wersją oryginału z lepszą grafiką i kilkoma nowymi funkcjami. Jednakże, oprócz tego, gra się dokładnie tak samo.

Tryb debugowania#

Ustawiając wartość wewnętrznej zmiennej g_bDebugEnabled na niezerową, różne pomoce do debugu zostają włączone. Ta wartość nie jest zapisywana przez grę, zatem trzeba ją ustawić ręcznie.

SolVistaDbgMenu.png

Zamiast normalnego menu (zasób 102), gra ładuje to alternatywne (zasób 103) z Solitaire.exe.mui. Większość z nich jest oczywista, ale "Toggle Deck Lock" wydaje się nie mieć żadnego efektu.

Kod#

Kliknięcie na talię trzymając Ctrl, Alt, i Shift powoduje wylosowanie tylko jednej karty, niezależnie od opcji Draw Three. Umożliwia również przeniesienie dowolnej karty lub wiązki na dowolny inny stos, niezależnie od koloru lub numeru karty.

Tryb Blokowy#

SolVistaBlockMode.png

Przytrzymanie F6 powoduje, że pole gry jest renderowane na szaro, a karty są coraz bardziej szare.

Tryb Pauzy#

Naciśnięcie przycisku Home powoduje zawieszenie się wyświetlacza. Nic więcej się nie zatrzymuje, więc czas płynie dalej w grach na czas, a efekty dźwiękowe są nadal odtwarzane, ale bez wizualnej informacji zwrotnej. Naciśnięcie End wznawia wyświetlanie. Klawisz Insert może być używany do włączania i wyłączania tego.

Logowanie#

Podobnie jak w przypadku debugowania, istnieją dwie wewnętrzne zmienne, które kontrolują logowanie UTF-16 do pliku log.txt w bieżącym katalogu (g_uiFileMask) lub przekierowanego standardowego wyjścia (g_uiConsoleMask). Podobnie jak debugowanie, nie są one zapisywane przez grę, więc muszą być włączone ręcznie.

Przykładowy dziennik:

SolLogGeneral: (673) SolitaireGame::FindHigherCardToPutOnStack() - Not a main stack, don't bother checking.
CardLibLogGeneral: (674) CardStack::SetHighlight()::bHighlight == false
CardLibLogGeneral: (675) Card::SetHighlight()::bHighlight == false
0x00002000: (676) Hide tip
Rendering: (884) SetState: 260
Rendering: (885) (RenderManager.cpp:2156) Present Failed: 88760868(D3DERR_DEVICELOST)
Rendering: (886) (RenderManager.cpp:1704) Resuming after lost device
Rendering: (887) (Font.cpp:691) Invalidating a font cache
Rendering: (888) (Font.cpp:691) Invalidating a font cache
Rendering: (889) (RenderManager.cpp:2253) Reset: 800 x 496 format 22
Rendering: (890) (RenderManager.cpp:1465) RecreateDefaultResources()
UI: (891) Recreating font: Segoe UI
UI: (892) Recreating font: Segoe UI
Rendering: (893) (RenderManager.cpp:150) CreateCachedBackBuffer()
Rendering: (894) SetState: 4096
Core: (909) Engine_GotFocus()
Timekeeping: (910) Reset timers
Core: (911) Engine_LostFocus()
Core: (912) Engine_GotFocus()
Timekeeping: (913) Reset timers
Rendering: (914) (RenderManager.cpp:2369) Saved the back buffer for cached presentation
CardLibLogGeneral: (915) CardStack::SetEnabled()::bAccess == true
Core: (916) Engine_LostFocus()

Gdy tryb rejestrowania i debugowania jest włączony, naciśnięcie klawisza F11 powoduje zrzucenie używanych obrazów i dźwięków do dziennika.

Wejścia XInput#

Ciekawą funkcją, która nie jest nigdzie udokumentowana (w menu pomocy) jest wsparcie XInput (gamepad) – jeśli gra wykryje kontroler Xbox 360 podłączony do portu USB, róg P1 na kontrolerze zaświeci się, co oznacza, że można użyć kontrolera. Prawdopodobnie nie jest to udokumentowane, ponieważ Microsoft uważał, że ludzie są zbyt przyzwyczajeni do tradycyjnych elementów sterujących, a gamepad nie będzie dobrze działał w grze karcianej. Jest to jednak zgrabna, mała funkcja.

Sterowanie#

Przycisk

Efekt

Lewy Analog/D-pad/Spusty

Przesuwają kursor. Co dziwne, można ich również używać do poruszania się po pasku menu.

B/Back

Cofa poprzedni ruch.

A/X

Wybiera kartę, na której znajduje się kursor. Przesunięcie kursora na inną kartę i ponowne naciśnięcie A lub X przenosi poprzednią kartę na stos. Dwukrotne dotknięcie dowolnego przycisku przenosi kartę na stos macierzysty.

Y/Start

Otwiera menu gry.