Skip to content

Instantly share code, notes, and snippets.

@andymason
Created June 13, 2015 12:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andymason/8f5b4219b71bfaa0f06f to your computer and use it in GitHub Desktop.
Save andymason/8f5b4219b71bfaa0f06f to your computer and use it in GitHub Desktop.
Steam sale game 2015 - mini-game towerattack
// http://steamcommunity-a.akamaihd.net/public/javascript/minigame/towerattack.js
// <script>
"use strict"
window.k_ScreenWidth = 1280;
window.k_ScreenHeight = 720;
var g_JSCacheKey = 'as8wg42t0w';
var g_rgTextureCache = {
// Particles
steam_coin: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/steam_coin.png?v='+g_CacheKey },
pixel3d: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/3d_pixel.png?v='+g_CacheKey },
black_smoke: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/black_smoke.png?v='+g_CacheKey },
large_square_pixel: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/large_square_pixel.png?v='+g_CacheKey },
pixel_bubble: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/pixel_bubble.png?v='+g_CacheKey },
pixel_bubble_large: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/pixel_bubble_large.png?v='+g_CacheKey },
white_smoke_puff: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/white_smoke_puff.png?v='+g_CacheKey },
white_smoke_puff_large: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/white_smoke_puff_large.png?v='+g_CacheKey },
clock: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/clock.png?v='+g_CacheKey },
clover: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/clover.png?v='+g_CacheKey },
faded_triangle: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/faded_triangle.png?v='+g_CacheKey },
happy_little_flame: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/happy_little_flame.png?v='+g_CacheKey },
health_cross: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/health_cross.png?v='+g_CacheKey },
resurrection_spirit: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/resurrection_spirit.png?v='+g_CacheKey },
sparkle: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sparkle.png?v='+g_CacheKey },
streak: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/streak.png?v='+g_CacheKey },
steam_coin_large: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/steam_coin_large.png?v='+g_CacheKey },
//// Backgrounds
clouds: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/clouds_loop.png?v='+g_CacheKey },
// Desert
desert_floor: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/desert_floor.png?v='+g_CacheKey },
desert_clouds: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/desert_clouds.png?v='+g_CacheKey },
desert_dunes: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/desert_dunes.png?v='+g_CacheKey },
desert_sky: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/desert_sky.png?v='+g_CacheKey },
// City
city_floor: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/city_floor.png?v='+g_CacheKey },
city_sky: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/city_sky.png?v='+g_CacheKey },
city_bg_near: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/city_bg_near.png?v='+g_CacheKey },
city_bg_mid: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/city_bg_mid.png?v='+g_CacheKey },
city_bg_far: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/city_bg_far.png?v='+g_CacheKey },
// Ruined city
cityr_floor: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/cityr_floor.png?v='+g_CacheKey },
cityr_sky: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/cityr_sky.png?v='+g_CacheKey },
cityr_bg_near: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/cityr_bg_near.png?v='+g_CacheKey },
cityr_bg_mid: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/cityr_bg_mid.png?v='+g_CacheKey },
cityr_bg_far: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/cityr_bg_far.png?v='+g_CacheKey },
// night
night_floor: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/night_floor.png?v='+g_CacheKey },
night_sky: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/night_sky.png?v='+g_CacheKey },
night_bg_near: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/night_bg_near.png?v='+g_CacheKey },
night_bg_mid: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/night_bg_mid.png?v='+g_CacheKey },
night_bg_far: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/night_bg_far.png?v='+g_CacheKey },
// spaaaaaaaaaaaaaaaaaace
space_floor: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/space_floor.png?v='+g_CacheKey },
space_sky: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/space_sky.png?v='+g_CacheKey },
space_bg_near: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/space_bg_mid.png?v='+g_CacheKey },
space_bg_mid: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/space_bg_near.png?v='+g_CacheKey },
space_bg_far: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/space_bg_far.png?v='+g_CacheKey },
// statium
stadium_floor: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/statium_floor.png?v='+g_CacheKey },
stadium_sky: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/statium_sky.png?v='+g_CacheKey },
stadium_bg_near: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/statium_bg_near.png?v='+g_CacheKey },
stadium_bg_mid: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/statium_bg_mid.png?v='+g_CacheKey },
stadium_bg_far: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/statium_bg_far.png?v='+g_CacheKey },
// island
island_floor: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/island_floor.png?v='+g_CacheKey },
island_sky: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/island_sky.png?v='+g_CacheKey },
island_bg_mid: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/island_bg_mid.png?v='+g_CacheKey },
island_bg_far: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/island_bg_far.png?v='+g_CacheKey },
// volcano
volcano_floor: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/volcano_floor.png?v='+g_CacheKey },
volcano_sky: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/volcano_sky.png?v='+g_CacheKey },
volcano_bg_mid: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/volcano_bg_mid.png?v='+g_CacheKey },
volcano_bg_far: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/volcano_bg_far.png?v='+g_CacheKey },
pointer: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/pointer.png?v='+g_CacheKey },
};
var g_rgEmitterCache = {};
var g_rgSkeletonCache = {
spawner_spaceship: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/skeletons/spawner_spaceship.json?v=2'+g_CacheKey },
boss_space: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/skeletons/boss_space.json?v='+g_CacheKey },
boss_desert: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/skeletons/boss_desert.json?v='+g_CacheKey },
boss_island: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/skeletons/boss_island.json?v='+g_CacheKey },
boss_stadium: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/skeletons/boss_stadium.json?v='+g_CacheKey },
boss_volcano: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/skeletons/boss_volcano.json?v='+g_CacheKey },
boss_city_day: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/skeletons/boss_city_day.json?v='+g_CacheKey },
boss_city_night: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/skeletons/boss_city_night.json?v='+g_CacheKey },
boss_city_destroyed: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/skeletons/boss_city_destroyed.json?v='+g_CacheKey },
creep: { url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/skeletons/creep.json?v='+g_CacheKey }
};
var g_rgIconMap = {
"ability_1": { icon: 'http://steamcommunity-a.akamaihd.net/economy/image/U8721VM9p9C2v1o6cKJ4qEnGqnE7IoTQgZI-VTdwyTBeimAcIoxXpgK8bPeslY9pPJIvB5IWW2-452kaM8heLSRgleGHorVWwb1mbacg0bL6DV136-dDUDPhGBHXgmacLef8nQM0MpF8IBukyM1M7cAXB9aR2qBKFA' },
"ability_2": { icon: 'http://steamcommunity-a.akamaihd.net/economy/image/U8721VM9p9C2v1o6cKJ4qEnGqnE7IoTQgZI-VTdwyTBeimAcIoxXpgK8bPeslY9pPJIvB5IWW2-452kaM8heLSRgleGGo7VWk-kzO_V91empDlVz7ORGAWDqHhbR1TfHLen4wgZiPcIqcBn0kpYb7cAXB9ZJHRPUDQ' },
"ability_3": { icon: 'http://steamcommunity-a.akamaihd.net/economy/image/U8721VM9p9C2v1o6cKJ4qEnGqnE7IoTQgZI-VTdwyTBeimAcIoxXpgK8bPeslY9pPJIvB5IWW2-452kaM8heLSRgleGGo7VWk-kzO_V91empDlVz7ORGAWDqHhbR1TfHLen4wgZiPcIqcBn0kpYb7cAXB9ZJHRPUDQ' },
"ability_4": { icon: 'http://steamcommunity-a.akamaihd.net/economy/image/U8721VM9p9C2v1o6cKJ4qEnGqnE7IoTQgZI-VTdwyTBeimAcIoxXpgK8bPeslY9pPJIvB5IWW2-452kaM8heLSRgleGGo7VWk-kzO_V91empDlVz7ORGAWDqHhbR1TfHLen4wgZiPcIqcBn0kpYb7cAXB9ZJHRPUDQ' },
"ability_5": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:happycyto:' },
"ability_6": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:lucky:' },
"ability_7": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:lunahealthpotion:' },
"ability_8": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:goldstack:' },
"ability_9": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:hourglass:' },
"ability_10": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:abomb:' },
"ability_11": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:gmbomb:' },
"ability_12": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:burned:' },
"ability_13": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:alive:' },
"ability_14": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:logiaim:' },
"ability_15": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:pjkaboom:' },
"ability_16": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:theorb:' },
"ability_17": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:ccgold:' },
"ability_18": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:critical:' },
"ability_19": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:fistpump:' },
"ability_20": { icon: 'http://cdn.steamcommunity.com/economy/emoticon/:VeneticaGoldCoin:' },
"ability_21": { icon: 'http://cdn.steamcommunity.com//economy/emoticon/:swshield:' },
"ability_22": { icon: 'http://cdn.steamcommunity.com//economy/emoticon/:treasurechest:' },
"ability_23": { icon: 'http://cdn.steamcommunity.com//economy/emoticon/:healthvial:' },
"ability_24": { icon: 'http://cdn.steamcommunity.com//economy/emoticon/:sunportal:' },
"element_1": { icon: 'http://cdn.steamcommunity.com//economy/emoticon/:shelterwildfire:' },
"element_2": { icon: 'http://cdn.steamcommunity.com//economy/emoticon/:waterrune:' },
"element_3": { icon: 'http://cdn.steamcommunity.com//economy/emoticon/:Wisp:' },
"element_4": { icon: 'http://cdn.steamcommunity.com//economy/emoticon/:FateTree:' },
"enemy_2": { icon: 'http://cdn.steamcommunity.com//economy/emoticon/:like_king:' },
"enemy_4": { icon: 'http://cdn.steamcommunity.com//economy/emoticon/:goldenmilkminer:' },
};
var g_rgSoundCache = {
loading: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/loadingsound.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/loadingsound.mp3?v='+g_CacheKey },
hurt: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/clickattack2.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/clickattack2.mp3?v='+g_CacheKey },
ability: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/upgradeability.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/upgradeability.mp3?v='+g_CacheKey },
upgrade: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/standardupgrade.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/standardupgrade.mp3?v='+g_CacheKey },
explode: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/enemydied.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/enemydied.mp3?v='+g_CacheKey },
dead: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/youdied.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/youdied.mp3?v='+g_CacheKey },
spawn: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/shipspawn2.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/shipspawn2.mp3?v='+g_CacheKey },
nuke: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/nuke.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/nuke.mp3?v='+g_CacheKey },
goldclick: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/pickupgold.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/pickupgold.mp3?v='+g_CacheKey },
clusterbomb: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/clusterbomb.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/clusterbomb.mp3?v='+g_CacheKey },
napalm: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/napalm.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/napalm.mp3?v='+g_CacheKey },
wrongselection: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/wrongselection.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/wrongselection.mp3?v='+g_CacheKey },
music: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/backgroundtrack.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/backgroundtrack.mp3?v='+g_CacheKey },
music_boss: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/bosslevel.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/bosslevel.mp3?v='+g_CacheKey },
// Creep chatter
creep_1: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep1.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep1.mp3?v='+g_CacheKey },
creep_2: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep2.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep2.mp3?v='+g_CacheKey },
creep_3: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep3.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep3.mp3?v='+g_CacheKey },
creep_4: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep4.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep4.mp3?v='+g_CacheKey },
creep_5: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep5.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep5.mp3?v='+g_CacheKey },
creep_6: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep6.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep6.mp3?v='+g_CacheKey },
creep_7: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep7.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep7.mp3?v='+g_CacheKey },
creep_8: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep8.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep8.mp3?v='+g_CacheKey },
creep_9: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep9.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep9.mp3?v='+g_CacheKey },
creep_10: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep3.1.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep3.1.mp3?v='+g_CacheKey },
creep_11: {urlv: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep8.1.ogg?v='+g_CacheKey, urlm: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/sfx/creep8.1.mp3?v='+g_CacheKey },
};
var g_Server = false;
var g_Minigame = false;
var g_AudioManager = false;
var g_GameID = 0;
var g_TuningData = null;
var g_DebugMode = false;
var g_DebugUpdateStats = false;
function Boot() {
// create an new instance of a pixi stage
PIXI.SCALE_MODES.DEFAULT = PIXI.SCALE_MODES.NEAREST;
// add the renderer view element to the DOM
g_AudioManager = new CAudioManager();
//LoadScene('preload');
g_Minigame = new CMinigameManager;
g_Minigame.gameid = g_GameID;
g_Minigame.rgTuningData = g_TuningData;
g_Minigame.Initialize($J('#gamecontainer')[0]);
var preloadscene = new CScenePreload( g_Minigame );
g_Minigame.EnterScene( preloadscene );
//stage.click = function( mouseData ) { click(mouseData); }
// Add input events
//$('canvas').click(function( event ){ click( event ); });
// turn off image smoothing on the 2d context if we generated one (If the browser doesn't let us use WebGL)
var ctx2d = $J('canvas')[0].getContext('2d');
if( ctx2d )
{
ctx2d.imageSmoothingEnabled = false;
ctx2d.webkitImageSmoothingEnabled = false;
ctx2d.mozImageSmoothingEnabled = false;
}
};
var CScenePreload = function()
{
CSceneMinigame.call(this, arguments[0]);
if( typeof CUI === 'undefined' )
{
this.m_rgScriptsToLoad = [
'http://steamcommunity-a.akamaihd.net/public/javascript/minigame/towerattack/running.js?v=' + g_JSCacheKey,
'http://steamcommunity-a.akamaihd.net/public/javascript/minigame/towerattack/network.js?v=' + g_JSCacheKey,
'http://steamcommunity-a.akamaihd.net/public/javascript/minigame/towerattack/ui.js?v=' + g_JSCacheKey,
'http://steamcommunity-a.akamaihd.net/public/javascript/minigame/towerattack/easing.js?v=' + g_JSCacheKey,
'http://steamcommunity-a.akamaihd.net/public/javascript/minigame/towerattack/enemies.js?v=' + g_JSCacheKey
];
} else {
this.m_rgScriptsToLoad = [];
}
this.m_cScriptsLoaded = 0;
this.m_cAudioLoaded = 0;
this.m_cAudioTriedLoad = 0;
this.m_bImagesLoaded = false;
this.m_bSkeletonsLoaded = false;
this.m_TextLoading = new PIXI.Text("Loading", {font: "50px 'Press Start 2P'", fill: "#fff" });
this.m_TextLoading.x = 470;
this.m_TextLoading.y = 250;
this.m_Container.addChild( this.m_TextLoading );
this.m_TextPercent = new PIXI.Text("0 / 0", {font: "30px 'Press Start 2P'", fill: "#fff" });
this.m_TextPercent.x = 550;
this.m_TextPercent.y = 300;
this.m_Container.addChild( this.m_TextPercent );
this.m_bTriedInitializing=false;
//this.m_Manager.Stage.addChild( this.m_Container );
}
CScenePreload.prototype = Object.create(CSceneMinigame.prototype);
CScenePreload.prototype.Tick = function()
{
CSceneMinigame.prototype.Tick.call(this);
var nTotalRequests = window.g_cPendingRequests + window.g_cActiveRequests + window.g_cCompletedRequests;
var nOutstandingRequests = window.g_cCompletedRequests;
this.m_TextPercent.text = nOutstandingRequests + " / " + nTotalRequests;
if( //this.m_cScriptsLoaded == this.m_rgScriptsToLoad.length &&
//this.m_bSkeletonsLoaded &&
!this.m_bTriedInitializing &&
//&& this.m_cEmittersLoading == this.m_cEmittersLoaded
window.g_cPendingRequests == 0 && window.g_cActiveRequests == 0 && window.g_cCompletedRequests > 0
//&& this.m_cAudioLoaded == this.m_cAudioTriedLoad
)
{
this.m_bTriedInitializing = true;
console.log("Finished preloading.");
var builder = this.ParseProtobufFile();
// DO STUFF
this.m_cScriptsLoaded = 0;
this.m_cEmittersLoaded = 0;
this.m_cEmittersLoading = 0;
g_Server = new CServerInterface( builder );
var gamescene = new CSceneGame( this.m_Manager );
this.m_Manager.EnterScene( gamescene );
}
}
CScenePreload.prototype.ParseProtobufFile = function()
{
// Synchronously request this for now
var ProtoBuf = dcodeIO.ProtoBuf;
return ProtoBuf.loadProtoFile( 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/messages.proto?v='+g_CacheKey );
}
window.g_cPendingRequests = 0;
window.g_cActiveRequests = 0;
window.g_cCompletedRequests = 0;
window.g_cMaxRequests = 3;
function LoadLater(fnLoad)
{
window.g_cPendingRequests++;
DelayedAjaxLoader(fnLoad);
}
function DelayedAjaxLoader(fnLoad)
{
if( window.g_cActiveRequests < window.g_cMaxRequests )
{
//console.log("RUN -> P: %s A: %s C: %s, M: %s", window.g_cPendingRequests, window.g_cActiveRequests, window.g_cCompletedRequests, window.g_cMaxRequests );
window.g_cPendingRequests--;
window.g_cActiveRequests++;
fnLoad();
} else {
var thing = fnLoad;
setTimeout( function(){ DelayedAjaxLoader(thing); }, 10/*00 * Math.random()*/ );
//console.log("Reschedule -> P: %s A: %s C: %s, M: %s", window.g_cPendingRequests, window.g_cActiveRequests, window.g_cCompletedRequests, window.g_cMaxRequests );
}
}
CScenePreload.prototype.Enter = function()
{
CSceneMinigame.prototype.Enter.call(this);
var instance = this;
// Load sound data
var formatTester = new Audio();
var strAudioFormat = false;
if( formatTester.canPlayType( 'audio/ogg' ) == 'probably' )
strAudioFormat = 'urlv'
else if( formatTester.canPlayType( 'audio/mpeg' ) == 'probably' || formatTester.canPlayType( 'audio/mpeg' ) == 'maybe' ) // WHY.
strAudioFormat = 'urlm';
console.log("audio/ogg support is: %s", formatTester.canPlayType( 'audio/ogg' ));
console.log("audio/mpeg support is: %s", formatTester.canPlayType( 'audio/mpeg' ));
//console.log("WELCOME TO WEB DEVELOPMENT");
if( strAudioFormat )
{
$J.each(g_rgSoundCache, function(i,j){
LoadLater(
(function(rgSound){
return function(){
rgSound.element = new Audio(j[strAudioFormat]);
rgSound.element.volume = 0.5;
rgSound.element.preload = "metadata";
if( i == 'loading')
{
rgSound.element.addEventListener('loadedmetadata',function(){
window.g_cCompletedRequests++;
window.g_cActiveRequests--;
g_AudioManager.playMusic('loading');
});
} else {
rgSound.element.addEventListener('loadedmetadata',function(){
window.g_cCompletedRequests++;
window.g_cActiveRequests--;
});
}
}
}
)(j)
);
});
}
for( var i=0; i<this.m_rgScriptsToLoad.length; i++)
{
var instance = this;
LoadLater(
(function(instance, i){
return function()
{
$J.ajax({
url: instance.m_rgScriptsToLoad[i],
dataType: "script",
cache: true
});
window.g_cCompletedRequests++;
window.g_cActiveRequests--;
}
})(this, i)
);
}
/*$J.each(g_rgEmitterCache, function(i,j)
{
//instance.m_cEmittersLoading++;
LoadLater(function(){
$J.ajax({
url: j.url,
dataType: "json"
}).complete(
(function(that){
return function(rgResult)
{
g_rgEmitterCache[i].emitter = rgResult.responseJSON;
//that.m_cEmittersLoaded++;
window.g_cCompletedRequests++;
window.g_cActiveRequests--;
}
})(this)
);
});
});*/
LoadLater(function(){
$J.ajax({
url: 'http://cdn.akamai.steamstatic.com/steamcommunity/public/assets/minigame/towerattack/emitters/combined.json?v='+g_CacheKey,
dataType: "json"
}).done(
function(rgResult){
g_rgEmitterCache = rgResult;
//console.log(rgResult);
window.g_cCompletedRequests++;
window.g_cActiveRequests--;
}
);
});
// Load texture data
$J.each(g_rgTextureCache, function(g,h){
LoadLater(
(function(i, j){
return function(){
var loader = new PIXI.loaders.Loader();
loader.add( i, j.url );
loader.load(function (loader, resources) {
$J.each(resources, function(k,l){
g_rgTextureCache[k].texture = l.texture;
window.g_cCompletedRequests++;
window.g_cActiveRequests--;
});
});
}
}
)(g,h)
);
});
$J.each(g_rgSkeletonCache, function(g,h){
LoadLater(
(function(i, j){
return function(){
var loader = new PIXI.loaders.Loader();
loader.add( i, j.url );
loader.load(function (loader, resources) {
$J.each(resources, function(k,l){
if( !g_rgSkeletonCache[k] )
g_rgSkeletonCache[k] = {};
else // Fun fact: This is because we get two responses for one request due to the atlas.
{
window.g_cCompletedRequests++;
window.g_cActiveRequests--;
}
g_rgSkeletonCache[k].data = l;
});
});
}
}
)(g,h)
);
});
var instance = this;
}
function ToggleSound()
{
WebStorage.SetLocal('minigame_mute', !WebStorage.GetLocal('minigame_mute') );
}
function bIsMuted()
{
return WebStorage.GetLocal('minigame_mute') == true;
}
function PlaySound( sound )
{
if( bIsMuted() )
return;
g_rgSoundCache[sound].element.currentTime=0;
g_rgSoundCache[sound].element.play();
}
// Keyvalues->JSON always produces objects even when it shouldn't. This cleans it up.
function V_ToArray( obj )
{
var rgOut = [];
for (var idx in Object.keys(obj) )
{
if ( obj.hasOwnProperty( idx ) )
{
rgOut.push(obj[idx]);
}
}
return rgOut;
}
window.CAudioManager = function()
{
this.m_rgFading = [];
var instance = this;
setInterval( function(){ instance.tick(); }, 10);
}
CAudioManager.prototype.tick = function()
{
var nFadeRate = 0.01;
for( var i=this.m_rgFading.length-1; i>=0; i--)
{
if( this.m_rgFading[i].volume - nFadeRate <= 0 )
{
this.m_rgFading[i].pause();
this.m_rgFading[i].volume = 0.5;
this.m_rgFading.splice(i,1);
} else
this.m_rgFading[i].volume -= nFadeRate;
}
}
CAudioManager.prototype.play = function( sound, channel )
{
if( bIsMuted() || !g_rgSoundCache[sound].element )
return;
if( channel )
{
// ....
}
g_rgSoundCache[sound].element.currentTime = 0;
g_rgSoundCache[sound].element.play();
}
CAudioManager.prototype.playMusic = function( sound )
{
if( !g_rgSoundCache[sound].element )
return;
this.m_eleMusic = g_rgSoundCache[sound].element;
this.m_eleMusic.currentTime = 0;
this.m_eleMusic.loop = 1;
if( WebStorage.GetLocal('minigame_mutemusic') == true )
return;
this.m_eleMusic.play();
}
CAudioManager.prototype.CrossfadeTrack = function( strNewTrack )
{
if( !g_rgSoundCache[strNewTrack].element || !this.m_eleMusic || this.m_eleMusic == g_rgSoundCache[strNewTrack].element )
return;
// DO SOMETHING PLS
this.m_rgFading.push(this.m_eleMusic);
this.m_eleMusic = g_rgSoundCache[strNewTrack].element;
this.m_eleMusic.volume = 0.5;
this.m_eleMusic.loop = 1;
this.m_eleMusic.currentTime = 0;
if( WebStorage.GetLocal('minigame_mutemusic') == true )
return;
this.m_eleMusic.play();
}
CAudioManager.prototype.ToggleMusic = function( )
{
WebStorage.SetLocal('minigame_mutemusic', !WebStorage.GetLocal('minigame_mutemusic') );
if( !this.m_eleMusic )
return;
if( WebStorage.GetLocal('minigame_mutemusic') == true )
{
this.m_eleMusic.pause();
} else {
this.m_eleMusic.play();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment