2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
3 SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
6 IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
8 FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
11 COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
17 * Saves current mine to disk to prevent loss of work, and support undo.
43 #define AUTOSAVE_PERIOD 5 // Number of minutes for timed autosave
46 int Autosave_numfiles;
51 int Timer_save_flag=0;
55 char undo_status[10][100];
57 void init_autosave(void) {
61 Autosave_numfiles = 0;
64 //MALLOC( undo_status, char *, 10 );
65 //for (i=0; i<10; i++)
66 // MALLOC( undo_status[i], char, 100 );
67 autosave_mine(mine_filename);
70 void close_autosave(void) {
74 for (i=0;i<Autosave_total;i++) {
76 MALLOC(delname, char, PATH_MAX);
78 strcpy ( delname, mine_filename );
80 if ( !strcmp(delname, "*.MIN") ) strcpy(delname, "TEMP.MIN");
82 ext = strstr(delname, ".MIN");
83 sprintf( ext, ".M%d", i );
88 //for (i = 0; i < 10; i++) d_free( undo_status[i] );
89 //d_free( undo_status );
93 void autosave_mine(char *name) {
98 MALLOC(savename, char, PATH_MAX);
101 strcpy ( savename, name );
103 if ( !strcmp(savename, "*.MIN") ) strcpy(savename, "TEMP.MIN");
105 ext = strstr(savename, ".MIN");
106 sprintf( ext, ".M%d", Autosave_count );
108 //mprintf( 0, "Autosave: %s\n", savename );
109 med_save_mine( savename );
111 if (undo_count > 0) undo_count--;
112 if (Autosave_count > 9) Autosave_count -= 10;
113 if (Autosave_numfiles < 10)
115 if (Autosave_total < 10)
125 void print_clock( int seconds, char message[10] ) {
131 if ((p = strchr(message, ':')) != NULL)
134 gr_set_current_canvas( NULL );
135 gr_set_fontcolor( CBLACK, CGREY );
136 gr_get_string_size( message, &w, &h, &aw );
137 gr_setcolor( CGREY );
138 gr_rect( 700, 0, 799, h+1 );
139 gr_string( 700, 0, message );
140 gr_set_fontcolor( CBLACK, CWHITE );
143 static char the_time[14]; // changed from 10, I don't think that was long enough
145 void clock_message( int seconds, char *format, ... ) {
148 va_start(ap, format);
149 vsprintf(the_time, format, ap);
152 print_clock(seconds, the_time);
156 struct tm Editor_time_of_day;
158 void set_editor_time_of_day()
163 Editor_time_of_day = *localtime( <ime );
166 void TimedAutosave(char *name)
168 int month,day,hour,minute,second;
170 month = (Editor_time_of_day.tm_mon) + 1;
171 day = Editor_time_of_day.tm_mday;
172 minute = Editor_time_of_day.tm_min;
173 hour = Editor_time_of_day.tm_hour;
174 second = Editor_time_of_day.tm_sec;
176 if (hour > 12) hour-=12;
178 if (second!=save_second) {
179 save_second = second;
180 clock_message(second, "%d/%d %d:%02d", month, day, hour, minute);
185 if (minute%AUTOSAVE_PERIOD != 0)
188 if ((minute%AUTOSAVE_PERIOD == 0) && (Timer_save_flag)) {
194 diagnostic_message("Mine Autosaved at %s\n", ctime(<ime));
205 //@@ char *loadname, *ext;
206 //@@ if (undo_count == 0) original = Autosave_count;
208 //@@ if (!Autosave_flag)
211 //@@ if (Autosave_numfiles > 1) {
213 //@@ MALLOC(loadname, char, PATH_MAX);
215 //@@ strcpy ( loadname, mine_filename );
216 //@@ strupr( loadname );
217 //@@ if ( !strcmp(loadname, "*.MIN") ) strcpy(loadname, "TEMP.MIN");
220 //@@ Autosave_count = original - undo_count;
221 //@@ if (Autosave_count < 0) Autosave_count = Autosave_count+10;
222 //@@ Autosave_numfiles--;
223 //@@ //mprintf(0, "u=%d a=%d o=%d num=%d\n", undo_count, Autosave_count, original, Autosave_numfiles);
225 //@@ ext = strstr(loadname, ".MIN");
226 //@@ if (Autosave_count == 0) sprintf( ext, ".M9" );
227 //@@ else sprintf( ext, ".M%d", Autosave_count-1 );
228 //@@ //mprintf( 0, "Loading: %s\n", loadname );
229 //@@ med_load_mine( loadname );
231 //@@ d_free(loadname);
235 //@@ //diagnostic_message("Can't undo\n");