//----------------------------------------------------------------------------- // SokoSave OPENSTEP HISTORY // $Id: OPENSTEP-HISTORY.txt,v 1.1 97/12/10 07:19:56 sunshine Exp $ //----------------------------------------------------------------------------- Release: 1.1, v10.1, next-ftp.peak.org, 12/10/1997 (including 1.1 for NextStep) *** RELEASE 1.1 *** v10.1 12/10/1997 06:40 EST sunshine Ported SokoSave v10 for NEXTSTEP 3.3 to OPENSTEP 4.1 & 4.2 for Mach, OPENSTEP 4.2 for NT, and Rhapsody Developer Release (RDR) for Mach and NT. Fixed wording in info panel: "brings up panel" --> "brings up a panel". Added "Feedback" section to info panel. Fixed wording on main menu: "Games" --> "Game". Fixed bug: "Save As..." menu item was malformatted as "SaveAs...". Fixed bug: +[SokoBoard nextMaze] was neglecting to call -makeKeyWindow: after opening the maze on behalf of SokoApp. Fixed bug: "New Score" panel allowed resizing in both dimensions even though it only makes sense to resize horizontally. Fixed bug: When opening a saved game with a deferred game window, the NSSlider didn't get drawn. SokoBoard was incorrectly & unnecessarily calling -sizeToFit on the slider. For some reason on deferred windows this has the side-effect of setting the slider's frame size to (0,0). Fixed bug: New and Open panels failed to restrict allowed types to .sokomaze and .sokosave, respectively. The problem was that they were using the inherited -setRequiredFileType: method which seems to be ineffectual in NSOpenPanel. They now specify the types explicitly via -runModalForDirectory:file:types:. Fixed bug: Opening a saved game with no history resulted in a "corrupt moves/pushes" error message. The problem was that an earlier fscanf() format string was eating the blank line which represented the empty history in the save-file. Fixed bug: When opening a saved game with no history, was calling malloc(0). Fixed bug: Opening a saved game could report "corrupt recorded values" in the following case: 1) solve and save game, 2) undo two or more times, 3) make a move which is *not* in the history, 4) save game, 5) close game, 6) re-open game. The problem was that at step 3, the history was truncated. Yet the load function was asserting that the "recorded" moves & pushes were less than the history-length, and after the truncation, this assertion was no longer valid. Added a Rhapsody-specific main menu. Added a Windows-specific main menu. Under Windows, the automatic launching of the "default" maze is no longer deferred. This was incompatible with the Windows UI where an application must have at least one window on-screen on account of the fact that the main menu is attached to the window rather than stand- alone. The automatic launch is still deferred on the other platforms. Under Windows, had to account for failure to load the "default" maze since this would leave the application dangling without a window on-screen. Now, if the "default" maze fails to load, then it tries loading maze #1. If that fails, then it presents the user with an open panel from which they can choose a new game or a saved game. If the user aborts the open panel, or if the chosen game fails to load, then the application terminates. Under Windows, PSadjustcursor() had no effect. This is used by the click-crate-to-move feature to move the mouse pointer along with the crate. Apparently PSadjustcursor() is a no-op under Windows. Ended up having to make native Windows calls in order to emulate this behavior. Unfortunately the Objective-C++ compiler can *not* import Windows header files without barfing up hundreds of errors, so I had to move the mouse-positioning code into its own Objective-C file, SokoMouse.m. Under Windows, the Scores panel incorrectly contained an application menu. Under Windows, the information panel was not displaying the application icon. I fixed this by explicitly using the name "SokoSave" for the image rather than "NSApplicationIcon". Under Windows, SokoFile's mkdirs() couldn't properly handle Universal Naming Convention (UNC) paths (of the form \\wowbagger\sunshine). Had to rewrite it to visit the directories bottom-up rather than top-down. SokoBoard now implements -validateMenuItem: to properly enable and disable the Undo, Redo, and Save menu items. SokoApp now implements -validateMenuItem: to properly enable and disable the Save All menu item. The preference panel now has a field to allow resetting the Level. The Cancel button on the preference panel now reverts the fields to their saved values. The Okay button on the preference panel now dismisses the panel. The preference panel now gets marked dirty when edits are made and prompts the user if dirty and the window's close button is pressed. Added option to preference panel to allow user to toggle automatic saving of game when it's solved. Preference panel now saves its position. Worked around OPENSTEP 4.1 & 4.2 makefile bugs. SRCFILES didn't include any of the C++ sources. OFILES didn't include any of the C++ object files. Unified the color depth of all the LargeArrow tiffs. Gave them all transparency rather than having opaque light-gray backgrounds so that they look correct on all platforms. (Not all platforms use light-gray as the background for the button.) Also they look better this way when disabled. Removed an unnecesary #include from SokoEncode.cc. The README files are now included in the application wrapper. Changed Files: - Help * LargeArrow{Down|Left|Right|Up}.tiff * LargeArrowDown{Left|Right}.tiff * LargeArrowUp{Left|Right}.tiff * Makefile * Makefile.{preamble|postamble} * pack.sh - PB.gdbinit * PB.project - README + README_{OPENSTEP|RHAPSODY} * README_ABOUT_SOURCE_CODE * SokoApp.{h|M} * SokoBoard.{h|M|nib} * SokoDefs.h * SokoEncode.cc * SokoFiles.{h|M} * SokoInfo.{h|M|nib} * SokoMatrix.{h|M} + SokoMouse.{h|m} (yes 'm', not 'M') * SokoPref.{h|M|nib} + SokoSave.ico * SokoSave.iconheader * SokoSave.nib + SokoSave-{macintosh|windows}.nib > SokoSave_main.M --> SokoSave_main.m * SokoSave_main.m * SokoScore.{h|M|nib} - SokoUtil.{h|cc}