mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			142 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/*
 | 
						|
    Originally from /Source/gg2/Objects/Updater.events/Create.xml in Gang Garrison 2
 | 
						|
 | 
						|
    Copyright (C) 2008-2013 Faucet Software
 | 
						|
    http://www.ganggarrison.com
 | 
						|
 | 
						|
    This program is free software; 
 | 
						|
    you can redistribute it and/or modify it under the terms of the GNU General Public License
 | 
						|
    as published by the Free Software Foundation; either version 3 of the License, or (at your option)
 | 
						|
    any later version.
 | 
						|
    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
 | 
						|
    without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 | 
						|
    See the GNU General Public License for more details.
 | 
						|
    You should have received a copy of the GNU General Public License along with this program; if not,
 | 
						|
    see <http://www.gnu.org/licenses>.
 | 
						|
 | 
						|
    Additional permission under GNU GPL version 3 section 7
 | 
						|
    If you modify this Program, or any covered work, by linking or combining it with the Game Maker runtime library, 
 | 
						|
    the 39dll library/extension, Hobbel's Download Manager DLL, or modified versions of these libraries,
 | 
						|
    the licensors of this Program grant you additional permission to convey the resulting work.
 | 
						|
*/
 | 
						|
// Downloading code. 
 | 
						|
 | 
						|
var downloadHandle, url, tmpfile, window_oldshowborder, window_oldfullscreen;
 | 
						|
timeLeft = 0;
 | 
						|
counter = 0;
 | 
						|
AudioControlPlaySong(-1, false);
 | 
						|
window_oldshowborder = window_get_showborder();
 | 
						|
window_oldfullscreen = window_get_fullscreen();
 | 
						|
window_set_fullscreen(false);
 | 
						|
window_set_showborder(false);
 | 
						|
 | 
						|
if(global.updaterBetaChannel)
 | 
						|
    url = UPDATE_SOURCE_BETA;
 | 
						|
else
 | 
						|
    url = UPDATE_SOURCE;
 | 
						|
 | 
						|
tmpfile = temp_directory + "\gg2update.zip";
 | 
						|
    
 | 
						|
downloadHandle = httpGet(url, -1);
 | 
						|
 | 
						|
while(!httpRequestStatus(downloadHandle)) 
 | 
						|
{ // while download isn't finished
 | 
						|
    sleep(floor(1000/30)); // sleep for the equivalent of one frame
 | 
						|
    io_handle(); // this prevents GameMaker from appearing locked-up
 | 
						|
    httpRequestStep(downloadHandle);
 | 
						|
    
 | 
						|
    // check if the user cancelled the download with the esc key
 | 
						|
    if(keyboard_check(vk_escape)) 
 | 
						|
    {
 | 
						|
        httpRequestDestroy(downloadHandle);
 | 
						|
        window_set_showborder(window_oldshowborder);
 | 
						|
        window_set_fullscreen(window_oldfullscreen);
 | 
						|
        room_goto_fix(Menu);
 | 
						|
        exit;
 | 
						|
    }
 | 
						|
     
 | 
						|
    if(counter == 0 || counter mod 60 == 0)
 | 
						|
        timer = random(359)+1;
 | 
						|
    draw_sprite(UpdaterBackgroundS,0,0,0);
 | 
						|
    draw_set_color(c_white);
 | 
						|
    draw_set_halign(fa_left);
 | 
						|
    draw_set_valign(fa_center);
 | 
						|
    minutes=floor(timer/60);
 | 
						|
    seconds=floor(timer-minutes*60);
 | 
						|
    draw_text(x,y-20,string(minutes) + " minutes " + string(seconds) + " seconds Remaining...");
 | 
						|
    counter+=1;
 | 
						|
    var progress, size;
 | 
						|
    progress = httpRequestResponseBodyProgress(downloadHandle);
 | 
						|
    size = httpRequestResponseBodySize(downloadHandle);
 | 
						|
    if (size != -1)
 | 
						|
    {
 | 
						|
        progressBar = floor((progress/size) * 20);
 | 
						|
        offset = 3;
 | 
						|
        for(i=0;i<progressBar;i+=1){
 | 
						|
            draw_sprite(UpdaterProgressS,0,x+offset,y);
 | 
						|
            offset+=12;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    screen_refresh();
 | 
						|
}
 | 
						|
// Errored
 | 
						|
if (httpRequestStatus(downloadHandle) == 2)
 | 
						|
{
 | 
						|
    show_message("Downloading update failed!#" + httpRequestError(downloadHandle));
 | 
						|
    httpRequestDestroy(downloadHandle);
 | 
						|
    window_set_showborder(window_oldshowborder);
 | 
						|
    window_set_fullscreen(window_oldfullscreen);
 | 
						|
    room_goto_fix(Menu);
 | 
						|
    exit;
 | 
						|
}
 | 
						|
// Request failed
 | 
						|
if (httpRequestStatusCode(downloadHandle) != 200)
 | 
						|
{
 | 
						|
    show_message("Downloading update failed!#" + string(httpRequestStatusCode(downloadHandle)) + " " + httpRequestReasonPhrase(downloadHandle));
 | 
						|
    httpRequestDestroy(downloadHandle);
 | 
						|
    window_set_showborder(window_oldshowborder);
 | 
						|
    window_set_fullscreen(window_oldfullscreen);
 | 
						|
    room_goto_fix(Menu);
 | 
						|
    exit;
 | 
						|
}
 | 
						|
 | 
						|
write_buffer_to_file(httpRequestResponseBody(downloadHandle), tmpfile);
 | 
						|
httpRequestDestroy(downloadHandle);
 | 
						|
 | 
						|
if(!file_exists(tmpfile))
 | 
						|
{
 | 
						|
    window_set_showborder(window_oldshowborder);
 | 
						|
    window_set_fullscreen(window_oldfullscreen);
 | 
						|
    show_message("Error updating: Missing gg2update.zip in temp directory, download failed(?)");
 | 
						|
    room_goto_fix(Menu);
 | 
						|
    exit;
 | 
						|
}
 | 
						|
 | 
						|
// rename existing "Gang Garrison 2.exe" to avoid conflict when extracting
 | 
						|
if (file_exists("Gang Garrison 2.exe"))
 | 
						|
{
 | 
						|
    var newName, n;
 | 
						|
    n = 1;
 | 
						|
    
 | 
						|
    // increment until unused name found
 | 
						|
    do
 | 
						|
    {
 | 
						|
        newName = "gg2-old.delete.me." + string(n);
 | 
						|
        n += 1;
 | 
						|
    }
 | 
						|
    until(!file_exists(newName));
 | 
						|
 | 
						|
    file_rename("Gang Garrison 2.exe", newName);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
// let's extract the downloaded file now.
 | 
						|
extractzip(tmpfile, working_directory);
 | 
						|
 | 
						|
// run new version    
 | 
						|
execute_program("Gang Garrison 2.exe", "", false);
 | 
						|
 | 
						|
// exit
 | 
						|
game_end();
 |