diff --git a/js/spniCore.js b/js/spniCore.js index 0dc389a35db9b04613a7a928bbddb082d07ebffd..493c3cf3f8c1156e8eb2750bc2d324b7f38957db 100644 --- a/js/spniCore.js +++ b/js/spniCore.js @@ -108,18 +108,6 @@ $previousScreen = null; * xml (jQuery object), the player's loaded XML file. ************************************************************/ function createNewPlayer (id, first, last, labels, gender, size, intelligence, timer, tags, xml) { - var player_imgs = []; - if(xml) { - xml.find("state").each(function () { - var img = 'opponents/'+id+'/'+$(this).attr('img'); - if($.inArray(img, player_imgs) === -1) { - player_imgs.push(img); - } - }); - - console.log("Found "+player_imgs.length.toString()+" unique image files for "+id+"..."); - } - var newPlayerObject = {id:id, folder:'opponents/'+id+'/', first:first, @@ -131,8 +119,17 @@ function createNewPlayer (id, first, last, labels, gender, size, intelligence, t timer:timer, tags:tags, xml:xml, - image_set: player_imgs, - + + getImagesForStage: function(stage) { + if(!this.xml) return []; + + var imageSet = {}; + var folder = this.folder; + this.xml.find('stage[id="'+stage+'"] state').each(function () { + imageSet[folder+$(this).attr('img')] = true; + }); + return Object.keys(imageSet); + }, getByStage: function (arr) { if (typeof(arr) === "string") { return arr; diff --git a/js/spniGame.js b/js/spniGame.js index 0a6d9c013ecdb47ef5bb6b57b6d80df2d70e692b..b7bdd507f5613f9bf7362f78ac17ad5f593b3ae0 100644 --- a/js/spniGame.js +++ b/js/spniGame.js @@ -553,6 +553,15 @@ function completeRevealPhase () { $gameLabels[i].css({"background-color" : clearColour}); } } + + if(sw_is_available() && recentLoser != HUMAN_PLAYER) { + /* Begin preloading images used by the loser for the stage after next. */ + var loadStage = players[recentLoser].stage+2; + var images = players[recentLoser].getImagesForStage(loadStage); + console.log("Preloading "+images.length.toString()+" image files from "+players[recentLoser].folder+" for stage "+loadStage.toString()+"..."); + + request_url_caching(images); + } /* set up the main button */ if (recentLoser != HUMAN_PLAYER && clothes > 0) { diff --git a/js/spniSelect.js b/js/spniSelect.js index 36516759554793953b6172e5f704931eedf6500b..eebba9d296a9251a296c943491470f48d95faad7 100644 --- a/js/spniSelect.js +++ b/js/spniSelect.js @@ -916,21 +916,18 @@ function advanceSelectScreen () { console.log("Starting game..."); if(sw_is_available()) { - /* Ask SW to preload all unique image files for all characters in the game. */ - var player_imgs = []; - + /* Ask SW to preload stage 0 and stage 1 images for all characters in the game. */ for(var i=0;i<players.length;i++) { if(!players[i]) { continue; } - if (players[i].image_set.length <= 0) { - continue; - } + var images = players[i].getImagesForStage(0); + images.concat(players[i].getImagesForStage(1)); - console.log("Preloading "+players[i].image_set.length.toString()+" image files from "+players[i].folder+" ..."); + console.log("Preloading "+images.length.toString()+" image files from "+players[i].folder+" stages 0 and 1..."); - request_url_caching(players[i].image_set); + request_url_caching(images); } }