Skip to content
Snippets Groups Projects
save.js 4.89 KiB
Newer Older
  • Learn to ignore specific revisions
  • 
    //Class for saving user's progress and preferences
    
    function mergeObjects(a, b){
    	if(b===undefined){
    		return a;
    	}
    	else if(a===undefined){
    		return b;
    	}
    	for(var v in b){
    
    		if (typeof a[v] === 'object') {
    			a[v] = mergeObjects(a[v], b[v])
    		} else {
    			a[v] = b[v];
    		}
    
    		'background' : 1,
    
    		'masturbationTimer' : 20,
    		'gender' : "male",
    
    		'autoFade' : 1,
    		'cardSuggest' : 2,
    		'gameDelay' : 3,
    		'dealAnimation' : 3,
    		'autoForfeit' : 4,
    
    		'male' : {
    			'name' : '',
    			'clothing' : [false, false, true, false, true, false,
    				      false, true, true, false, false, true,
    				      false, false, true, true, false, true],
    			'size' : 'medium'
    		},
    		'female' : {
    			'name' : '',
    			'clothing' : [false, false, true, false, true, true,
    				      false, true, true, false, false, true,
    				      false, false, false, true, false, true],
    			'size' : 'medium'
    		},
    
    		'endings' : {}
    	};
    	this.saveCookie = function(){
    		Cookies.set('save', this.data, {expires: 3652});
    	};
    
    	this.loadCookie = function(){
    		var cookie = Cookies.get('save');
    		if(cookie !== undefined){
    			this.data = mergeObjects(this.data, JSON.parse(cookie));
    		}
    
    		// Copy data from older cookie to the gender-specific substructure.
    		if (this.data['name'] !== undefined) {
    			this.data[this.data['gender']]['name'] = this.data['name'];
    			delete this.data['name'];
    		}
    		if (this.data['clothing'] !== undefined) {
    			this.data[this.data['gender']]['clothing'] = this.data['clothing'];
    			delete this.data['clothing'];
    		}
    		if (this.data['size'] !== undefined) {
    			this.data[this.data['gender']]['size'] = this.data['size'];
    			delete this.data['size'];
    		}
    		this.loadOptions();
    		this.loadPlayer();
    
    	this.loadPlayer = function() {
    		$nameField.val(this.data[players[HUMAN_PLAYER].gender]['name']);
    		changePlayerSize(this.data[players[HUMAN_PLAYER].gender]['size']);
    		selectedChoices = this.data[players[HUMAN_PLAYER].gender]['clothing'];
    		updateTitleGender();
    	};
    	this.loadOptions = function(){
    
    		players[HUMAN_PLAYER].timer = this.data['masturbationTimer'];
    
    		players[HUMAN_PLAYER].gender = this.data['gender'];
    
    		setBackground(this.data['background']);
    
    
    		setAutoFade(this.data['autoFade']);
    		setCardSuggest(this.data['cardSuggest']);
    		setAITurnTime(this.data['gameDelay']);
    		setDealSpeed(this.data['dealAnimation']);
    		setAutoForfeit(this.data['autoForfeit']);
    
    	};
    
    	this.saveOptions = function(){
    		this.data['masturbationTimer'] = parseInt($masturbationTimerBox.val());
    		var back = $("body").css('background-image');
    		var ind = back.indexOf('background')+10;
    		back = back.substr(ind);
    		ind = back.indexOf('.');
    		back = parseInt(back.substr(0,ind));
    		this.data['background'] = back;
    
    
    		this.saveCookie();
    	};
    	this.saveIngameOptions = function(){
    		this.data['autoFade'] = AUTO_FADE?1:2;
    		this.data['cardSuggest'] = CARD_SUGGEST?1:2;
    		switch(GAME_DELAY){
    			case 0: this.data['gameDelay'] = 1; break;
    			case 300: this.data['gameDelay'] = 2; break;
    			default:
    			case 600: this.data['gameDelay'] = 3; break;
    			case 800: this.data['gameDelay'] =  4; break;
    			case 1200: this.data['gameDelay'] = 5;
    		}
    		switch(ANIM_DELAY){
    			case 0: this.data['dealAnimation'] = 1; break;
    			case 150: this.data['dealAnimation'] = 2; break;
    			default:
    			case 350: this.data['dealAnimation'] = 3; break;
    			case 800: this.data['dealAnimation'] = 4; break;
    		}
    		if(!AUTO_FORFEIT){
    			this.data['autoForfeit'] = 4;
    		}
    		else{
    			switch(FORFEIT_DELAY){
    				case 4000: this.data['autoForfeit'] = 1; break;
    				default:
    				case 7500: this.data['autoForfeit'] = 2; break;
    				case 10000: this.data['autoForfeit'] = 3; break;
    			}
    		}
    
    		if(!AUTO_ENDING){
    			this.data['autoEnding'] = 4;
    		}
    		else{
    			switch(ENDING_DELAY){
    				case 4000: this.data['autoEnding'] = 1; break;
    				default:
    				case 7500: this.data['autoEnding'] = 2; break;
    				case 10000: this.data['autoEnding'] = 3; break;
    			}
    		}
    
    		this.saveCookie();
    	};
    	this.savePlayer = function(){
    		this.data['gender'] = players[HUMAN_PLAYER].gender;
    
    		this.data[this.data['gender']]['name'] = $nameField.val();
    		this.data[this.data['gender']]['size'] = players[HUMAN_PLAYER].size;
    		this.data[this.data['gender']]['clothing'] = selectedChoices.slice();
    
    		this.saveCookie();
    	};
    
    	this.hasEnding = function(character, title){
    		if(this.data.endings[character] !== undefined){
    			if(this.data.endings[character][title] !== undefined){
    				return this.data.endings[character][title];
    			}
    		}
    		return false;
    	}
    	this.addEnding = function(character, title){
    		if(this.data.endings[character]===undefined){
    			this.data.endings[character] = {};
    		}
    		this.data.endings[character][title] = true;
    		this.saveCookie();
    
    		//Clear table of endings, so they are loaded agin when player visits gallery
    		allEndings = [];
    		anyEndings = [];
    		maleEndings = [];
    		femaleEndings = [];
    
    };
    
    function saveIngameOptions(){
    	save.saveIngameOptions();
    }