Used for the bug reporter, and the click detector which both have no handles to this.
It would be nicer to have no globals, but this is the only one. I promise!
achievements:Achievement[] = [new Achievement(m.link_email),new Achievement(m.reach_day_5, new ProgressMaxDay(5)),new Achievement(m.kill_50_zombies, new ProgressKillZombies(50)),new Achievement(m.place_5_buildings, new ProgressBuildingsPlaced(5)),new Achievement(m.reach_level_5, new ProgressLevel(5)),new Achievement(m.enhance_level_25),new Achievement(m.play_15_minutes, new ProgressTimePlayed(15 * 60)),new Achievement(m.play_1_hour, new ProgressTimePlayed(60 * 60)),new Achievement(m.place_50_buildings, new ProgressBuildingsPlaced(50)),new Achievement(m.have_10k_crystals),new Achievement(m.reach_level_15, new ProgressLevel(15)),new Achievement(m.enhance_level_50),new Achievement(m.reach_day_20, new ProgressMaxDay(20)),new Achievement(m.kill_500_zombies, new ProgressKillZombies(500)),new Achievement(m.build_10_transporters),new Achievement(m.place_10_solarpanels_in_desert),new Achievement(m.have_1mio_crystals),new Achievement(m.reach_day_100, new ProgressMaxDay(100)),new Achievement(m.place_500_buildings, new ProgressBuildingsPlaced(500)),new Achievement(m.enhance_level_75),new Achievement(m.reach_day_40_no_walls),new Achievement(m.reach_level_25, new ProgressLevel(25)),new Achievement(m.kill_3500_zombies, new ProgressKillZombies(3500)),new Achievement(m.play_5_hours, new ProgressTimePlayed(5 * 60 * 60)),new Achievement(m.every_building_built),new Achievement(m.reach_day_200, new ProgressMaxDay(420)),new Achievement(m.reach_level_50, new ProgressLevel(50)),new Achievement(m.reach_day_30_cannons_only),new Achievement(m.play_24_hours, new ProgressTimePlayed(24 * 60 * 60)),new Achievement(m.place_3500_buildings, new ProgressBuildingsPlaced(3500)),new Achievement(m.kill_15k_zombies, new ProgressKillZombies(15000)),new Achievement(m.have_1bil_crystals),new Achievement(m.explore_whole_ice_map),new Achievement(m.enhance_level_100),new Achievement(m.reach_level_75, new ProgressLevel(75)),new Achievement(m.reach_day_300, new ProgressMaxDay(1000)),new Achievement(m.place_10k_buildings, new ProgressBuildingsPlaced(10000)),new Achievement(m.kill_100k_zombies, new ProgressKillZombies(100000)),new Achievement(m.enhance_level_125),new Achievement(m.unlocked_all_achievements)]
changelog:(object | object | object)[] = [{date: "03.10.2019",entries: ["Huge performance improvements when loading games and recomputing (Up to 10 times)"]},{date: "02.10.2019",entries: ["The resource statistics dialog shows now much more details", // https://prnt.sc/pds1qb"You can now chat and report players after a multiplayer game finished", // http://prntscr.com/pdtqjy"You can now click the zombies and crystal storage indicators on the screen borders to focus the camera on them", // https://prnt.sc/pdrqsj"Balancing: The shield tower now requires much more resources at higher levels","Minor ui tweaks","The page should now load faster"]},{date: "30.09.2019",entries: ["Decrease boss zombie damage and health in multiplayer","(hopefully) Fix crash in sandbox when buildings are enhanced to high levels"]},{date: "29.09.2019",entries: ["Added new lasertower upgrades!","Allow to purchase essence","Update translations","Improve page load time","Fix buildings which are not yet researched being shown","Fix cache issues breaking the game"]},{date: "28.09.2019",entries: ["Fix day not updating when the game runs in background","Added language icon to main menu"]},{date: "26.09.2019",entries: ["Fix music overlapping","Balancing: Increase mage zombies damage against walls by 25% and his overall damage by 50%"]},{date: "25.09.2019",entries: ["Fix bug in multiplayer causing most of the desyncs","Add settings to show crystals debt, disable it by default","The pulse zombie boss now removes all shields from your walls to counter the shield generator","Reduce wall health in multiplayer","Update translations"]},{date: "24.09.2019",entries: ["Balancing: Decrease crystals gained from zombies","Balancing: Decrease playerbase damage at higher levels","Fix server rejecting savegames","Fix multiple crashes and errors","Multiplayer: Hopefully fix desync errors by waiting longer after a resync"]},{date: "23.09.2019",entries: ["Balancing: Vastly increase cost of buildings at higher levels","Add shortcut to toggle ui (F2)","Fix crossbow not hitting armored zombies","Fix reactor having broken storage indicators","Added steam standalone (closed beta)"]},{date: "22.09.2019",entries: ["Added iron arrows, steel arrows and uranium arrows, as well as the required upgrades for them!","Added uranium cannon balls!","Added lightning tower upgrades!","Added laser range upgrade!","Added uranium shields upgrade to the shield generator","All factories now have a storage indicator so you can see if they have enough resources!","The storage indicators have been reworked to better show the storage when multiple resources are stored (they now show only the highest, except if its not full, then they fill up with the others - just try it out!)","Rebalance again, since everything was way too cheap","Rebalance waves (change which zombies spawns when)","Fix buildings toolbar sometimes being hidden after deleting a building fast","Fix shieldgenerator consuming way too much resources","Fix crash in multiplayer","Fix rendering bug with invisible zombies","Decrease global health from playerbase"]},{date: "21.09.2019",entries: ["Rebalanced whole game, it might be totally unbalanced now!","Increased level cap to 512","Walls can now be shielded!","Walls now have new artwork at level 50 and 75!","Fix zombies sometimes getting invincible after resync","Vastly reduce transporter build duration","Relax multiplayer spam filter"]},{date: "19.09.2019",entries: ["Fix sandbox games flagged by anticheat","Improve anticheat, flag cheaters internally","LOTS of bugfixes (the sandbox crash still exists tho)","Fixes on the backend and gameservers","Prepare or steam standalone"]},{date: "18.09.2019",entries: ["Fix attempting to reload the page in multiplayer causing to dc, even when clicking abort on the confirmation","Multiplayer: Extend grace period to 4 minutes","Buff wall health by up to 500% on higher levels","Decrease global health granted from playerbase from 45% to 25% again","Properly sync on gameover so the right day is shown in the leaderboard","Fix zombie gravestones not spawned in singleplayer","Multiplayer: Reduce mage zombie health by 30% and its damage by 20%","Multiplayer: Now showing an announcement when the grace period is over","Multiplayer: Automatically choose random map theme for every game"]},{date: "17.09.2019",entries: ["Different powerups! Arrows, Cannons and Crystals, each with 3 different levels","Change delete keybinding from 'DEL' to 'X'","Multiplayer: Allow defense view and resource statistics in multiplayer","Multiplayer: Fixing zombies getting stuck on resources sometimes","Multiplayer: Decrease Mage Zombie damage by 65%","Multiplayer: Increase Mage Zombie damage to walls by 300%","Multiplayer: Increase Wall Health by 50%","Multiplayer: Decrease build duration of all buildings by 20%","Multiplayer: Increase zombie health by 20%","Multiplayer: Increase zombie damage by 10%","Multiplayer: Decrease signal repeater base build duration to 8 seconds and decrease it later by up to 40%","Multiplayer: Increase global health bonus from playerbase from 25% to 45%"]},{date: "15.09.2019",entries: ["Multiplayer: Properly show players playing and players in lobby","Show beta warning","Backend: Improve performance"]},{date: "13.09.2019",entries: ["Multiplayer: Rebalance crystalmines to start at level 12 (so you don't have to upgrade it directly)","Multiplayer: Increase essence gained from 40/minute to 60/minute","Multiplayer: Limit amount of zombie spanwers, you get one in the beginning and then one each 3 minutes","Show info to restart the app after purchasing the no-ads purchase","Lots of internal server improvements, moved to different provider (Now can scale horizontally)","Rate limit server endpoints","Reduce name-change cost","Allow underscore and minus sign in player names","Reduce sawmill upgrade cost"]},{version: [1, 0, 9],entries: ["Bumped app version"]},{date: "11.09.2019",entries: ["Add avertisements in browser version","Implement no-ads purchase","Fix purchasing sandbox and hard mode unlocking each other","Lots of internal server improvements"]},{date: "10.09.2019",entries: ["Integrated XSolla for in app purchases","Added disable ads purchase (Not working yet)","Some css fixes","Fix massive lag in multiplayer"]},{date: "09.09.2019",entries: ["Buff spawner and pulse zombies health","Improve multiplayer network stability","Attempt to redo actions which were cancelled during a resync","Fix pulse zombies and spawner zombies causing a desnyc"]},{date: "08.09.2019",entries: ["Multiplayer: Increase essence gain","Fix ui breaking by tab navigation","Distinguish messages in the all chat with a badge","Warn if not using chrome for the multiplayer","Unify tooltip for all structures, also those with no research","Added background video to main menu","Multiplayer: Vastly increase of zombie factory on higher levels (4+)","Multiplayer: Fix zombies not attacking after desync","Lots of ui fixes","Fix leaderboards not updated properly","Lots of bugfixes"]},{date: "07.09.2019",entries: ["Multiplayer: ELO / Divisions system!"]},{date: "04.09.2019",entries: ["Improved signal repeater connections rendering","Show enemies in minimap on high and extreme graphics quality","Added multiplayer overview","Lots of minor fixes and changes","Fix crash when clicking bug reporter"]},{date: "03.09.2019",entries: ["Debuff zombie spawner level 4 zombies from level 55 to level 50","Added name change purchase"]},{date: "02.09.2019",entries: ["Fix occasional crash when clicking the minimap","Fix resources not always being properly emitted","Multiplayer: Fix lots of network issues, show in chat whos lagging","Multiplayer: Show opponents ping","Multiplayer: Fix sounds and alerts shown for destroyed buildings of opponents","Multiplayer: 2v2: Fixing zombies getting stuck on your allies buildings"]},{date: "01.09.2019",entries: ["Multiplayer: PvP 2v2 mode! (experimental)","Fix zombies bugging through walls","Multiplayer: Increase essence cost of zombie spawner research","Multiplayer: Decrease upgrade costs by 10%","Multiplayer: Decrease signal repeater cost by 30%","Add minimap +/- buttons","Fix minimap dragging","Multiplayer: Fix lots of issues causing desyncs and crashes","Multiplayer: Fix global health enhancement being permanent after resync","You can now press space to center on your playerbase"]},{date: "30.08.2019",entries: ["Added keybinding to upgrade buildings","Multiplayer: Show announcements when spanwing zombies","Multiplayer: Client side action prediction","Multiplayer: Fix enemies disappearing after desync","Multiplayer: Added grace period of 2:30 in which you can't produce zombies","Multiplayer: The river is now always revealed in fog","Multiplayer: Visualize where your zombies are when they are hidden in fog","Multiplayer: Fix buildings not getting destroyed","Improve fog rendering, animate fog on higher graphics qualities","Add first zombie skin","Rebalance achievements and store prices","Further ui improvements"]},{date: "29.08.2019",entries: ["Added chat in multiplayer","Fixed lots of issues in multiplayer","Fixed missing solarpanel translations","Fix laser not working","Fix solarpanels not working in multiplayer","Added bug reporter button in multiplayer"]},{date: "28.08.2019",entries: ["Show health bars in multiplayer","Buff crystal storage in multiplayer, also fix issue that arcs do not spread"]},{date: "27.08.2019",entries: ["Lots of multiplayer fixes, it now runs much more stable","Show cost and duration when placing buildings","Reworked the logo and ui","The leaderboard is now categorized by difficulty as well","Add confirmation when reloading the page while playing","Show warning if building is set to none priority",]},{date: "25.08.2019",entries: ["Added river which divides the map and slows down zombies in multiplayer","Fix desync regarding resource deliveries in multiplayer","Multiplayer should be now more stable, except for zombies","Zombies now jump over their own buildings (e.g. walls) in multiplayer"]},{date: "24.08.2019",entries: ["Lots of multiplayer fixes","Add defense view","Fix game not updating when window has no focus"]},{date: "23.08.2019",entries: ["Rewrote whole multiplayer to be cheat-safe (Now very buggy tho)","Multiplayer: Allow to spawn zombies which attack","Fix offline badge showing up even when not offline"]},{date: "18.07.2019",entries: ["Allow moving the map with the arrow keys","New lightningtower artwork","Do not show 'click to rebuild' if the building is in fog because a signal repeater was destroyed","Fix placement ui being too bright on desert / arctic","Fix spotlight damage radius not being equal to the one shown by the light itself","Fix occasional crashes"]},{date: "18.07.2019",entries: ["You now recieve back 70% of the essence you spent when you sell a building!","Added new spotlight artwork as well as new artwork for its research!","Zombies now look towards the buildings they attack","Improved priority tooltip design, added explanatory dialog","Fix crash when trying to place a building outside of the map","Fix being able to place buildings on the map border","Fix white background in firefox"]},{date: ["17.07.2019"],entries: ["Crystals shown are now computed differently: They take into account how much your blueprints need, so you can actually go in debt now!","When unlocking new buildings, those are shown with a badge in the toolbar until you placed them","Allow to zoom out more","Fix destroy indicators not working and thus zombies not granting crystals","Fix wrong numbers for crystals being shown in the resource statistics","Keybindings: Allow accessing sidebar options from everywhere"]},{date: ["17.07.2019"],entries: ["Buildings not connected to your playerbase network now show a warning sign","Signal repeaters not connected to your playerbase do not work anymore and do only reveal the fog by a bit","Fix global health enhancement not showing up after unlocking","Fix saving not working and thus loosing savegames","Fix resource statistics not properly updating","Fix crash when using laser tower",]},{date: ["15.07.2019"],entries: ["Lots of further performance optimization"]},{date: ["14.07.2019"],entries: ["Added resource overview","Fix equalize levels not always working properly","Improved tutorial and added more steps","Improved unlock text in buildings dialog","Automatically disable tutorial after reaching day 30","Added more tips","Updated translations"]},{date: ["13.07.2019"],entries: ["There is now a tutorial (Lots of more steps are planned, this is more proof of concept)","Reduced lag when saving the game by a lot","Improved rendering performance","Improved ingame settings menu","Added setting to disable automatic placement","The game now continues to run in background"]},{date: ["12.07.2019"],entries: ["Huge performance improvements","Download high resolution textures in background, so you can start playing much faster now, especially with a slow internet connection","Imrpoved ingame settings menu"]},{date: ["11.08.2019"],entries: ["Pulse zombies! They emit pulses which deactivate buildings for a while","Improved blueprint design and progress bars","Lots of performance improvements especially when enhancing buildings","Further balancing, made zombies stronger and upgrades more expensive","Fix upgrade path being rendered wrong on mobile"]},{date: ["10.08.2019"],entries: ["Huge balancing update, almost all numbers have changed","Allow keybindings to pause / resume game while in dialogs / tooltips","Added sounds when enhancing buildings","Experience points are now properly gained in singleplayer","Fixed crash in multiplayer mode","Lots of minor fixes"]},{date: ["09.08.2019"],entries: ["Added spotlight upgrades - It is no longer useless!","Redesign building tooltip to fit better on all resolutions","Fix building tooltip not properly refreshing","Fix zombies getting no damage when saving and loading a game"]},{date: ["08.08.2019"],entries: ["Added fancy gameover animation!","Added setting for the automatic pause when opening the user interface, which is now disabled by default","Added zombie sounds","Add sound when playerbase health is low","Lots of refactorings regarding the hud","Fix splash damage damaging buildings of same faction","Fix levels being rendered too small on android","Fix spotlight rendering","Minor rendering fixes","Update translations"]},{date: ["01.08.2019"],entries: ["Fixed crash when trying to recover your account"]},{version: [1, 0, 8],entries: ["Bumped app version due to lots of changes and a database reset"]},{date: "31.07.2019",entries: ["Added 20 new achievements!","Lots of server side improvements","Improve singleplayer user interface","Fix keyboard detected on mobile devices","Fix buildings dialog closing directly after clicking a building","Fix some issues regarding clicks and touches","Update translations",]},{date: "30.07.2019",entries: ["Refactored singleplayer savegames so you can have multiple savegames!","Full database reset due to the new savegame structure","Added screen shake when playerbase gets attacked",]},{date: "28.07.2019",entries: ["Refactored multiplayer and setup an EU gameserver cluster","Started to rework the mainmenu","Preparations in order to support multiple singleplayer savegames"]},{date: "25.07.2019",entries: ["Added zombie spawner, but right now it doesn't do anything","Added enhancements to the spotlight and increased its damage","Lots of internal refactorings and cleanup to prepare for upcoming updates!"]},{date: "24.07.2019",entries: ["Multiplayer: Enhancing buildings now works and is synchronized","Fix savegames marked as 'offline' by server"]},{date: "23.07.2019",entries: ["Multiplayer: Deleting buildings now works and is synchronized","Multiplayer: Upgrading buildings now works and is synchronized",]},{date: "22.07.2019",entries: ["Multiplayer: You can now place buildings in multiplayer!","Multiplayer: Disallow to open tooltip for non-owned buildings","Multiplayer: Fix unintentional coop behaviour (Buildings connecting)","Multiplayer: Allow destroying blueprints","Multiplayer: Fix tooltip not updating when blueprint transformed into building"]},{date: "20.07.2019",entries: ["Huge internal refactorings in order to support multiplayer","Multiplayer: Now synchronizing and showing bases and your buildable areas"]},{date: "18.07.2019",entries: ["Multiplayer: You can now start a match with a random opponent (But you will only get to the loading screen)","Multiplayer: Automatically refresh player counts in queue in the select matchmode state"]},{date: "17.07.2019",entries: ["Reduce panning animation on desktop","Started to work on multiplayer"]},{date: "15.07.2019",entries: ["Change level colors to be more consistent","Added keybindings so you can choose the building placement location with the arrow keys!","Made the auto-placement for walls smarter, it now uses more diagonal connections","Fix crash regarding keybindings","Improve wall rendering performance and improve the connection logic between walls and buildings","Fig bug when rotating device while the game is loading"]},{date: "14.07.2019",entries: ["There are now keybindings in the desktop version! Later you will be able to configure them","Balancing: Made building enhancements stronger for less costs","Balancing: Decrease exploding zombie damage","Grey out category symbols which are not available","Lots of internal refactorings again","Fixes spikes showing high numbers unformatted","Reduce render resolution on lower graphics qualities, increase it on extreme",]},{date: "13.07.2019",entries: ["Fix crash on game over","Lots of internal refactorings and improvements"]},{date: "12.07.2019",entries: ["Made fast forward free, and added a game speed panel","Lots of internal refactorings, especially regarding touch and mouse handling - please report any bugs you find!","Lots of rendering performance improvements again (Hopefully didn't break anything)","Fix camera panning, again","You can now click the difficulty icon on the top left to show information about it","Update translations"]},{date: "11.07.2019",entries: ["Spawner boss zombie! It attacks with lightning arcs and spawns other zombies!","Add arrowstorage and cannonstorage artwork for higher levels","Show upgraded sprites later: They now change at level 10, 25, 50, 75 and 100","Implement knockback of the crossbow update","Add upgrades to the cannonstorage which makes it store better ammunition","Fix walls connecting to resources not blocking diagonal movement","Fix zombies attacking powerups"]},{date: "11.07.2019",entries: ["Reworked cannon upgrades - It now can be upgraded to a machine gun or a catapult!","Factories and miners now prefer buildings which are closer to them","Improve performance by mergin close travelling resources which are similar","Fix crystal storage indicator not always being shown","Fix app not working on devices with a mouse and touchpen"]},{date: "10.07.2019",entries: ["Invisible zombies! Build and upgrade signal repeaters to reveal them!","Increase all map sizes by 25%","Buildings are now instantly placed in sandbox mode","Now showing a hint on the top if the crystal storage is low health","Fix rendering bug regarding chunks","Artwork: Improved signal repeater sprites","Artwork: Improved sawmill sprites","Artwork: Improved crystal storage sprites"]},{date: "09.07.2019",entries: ["Lots of performance improvements","Add 'none' priority which makes buildings consume no resources anymore","The screen now gets red if the crystal storage reaches low health","Balancing: Reduce zombie health by 25%","Balancing: Reduce mage zombie damage by 40%","Decrease cannon resource usage by 50%","Improve camera panning (experimental)","Show arrow to crystal storage when not in view (similar to zombie indicators)","Fix sandbox games getting rejected by the server","Artwork: New signal repeater connections","Change maximum level to 128 to prevent precision issues"]},{date: "08.07.2019",entries: ["Massive rendering performance improvements","Fix wall diagonal connections"]},{date: "07.07.2019",entries: ["Powerups! Connect them to your base to gain global improvements!","Armored Zombies!","Arrowtowers without the crossbow update can no longer damage armored zombies","The signal repeater upgrades work now!","Storages now emit the resources faster","Improve wall and spikes placement mode (prefer tiles further away from the base)","Fix high number spelling","Fix walls not connecting to resources","Balancing: Build duration on easy is now reduced by 50%, on hard its increased by 30%","Balancing: Increase spike damage, decrease resources used","Update translations","Change ui click sound","Increase forest and desert map size","Do not show 'level up all' and 'bring to same level' if theres only one of that building"]},{date: "07.07.2019",entries: ["Walls now connect diagonally","Rendering performance improvements","Improve error message when no tile is available","Fix bug where walls would not block diagonal movement","Fix 'this tile is already occupied' showing in fog, so you can determine where resources are","Balancing: Zombies now ignore blueprints in easy mode","Balancing: Increase wall health by 200%","Balancing: Buff zombies in early levels","Balancing: Triple zombie health but decrease damage (So they stay alive longer, but do less damage)","Backend: Fix compression error when updating savegame"]},{date: "05.07.2019",entries: ["Reworked arrow tower, it now has supper cool upgrades! (Like crossbow, double shot, etc)","Balancing: Make zombies stronger at later levels","Balancing: Reduce transporter health","Balancing: Reduce global health increasement from the crystal storage","Balancing: Increase wall health"]},{date: "04.07.2019",entries: ["Added 'upgrade all' and 'bring to same level'","Fix invalid translations being accepted","Fix leaderboard showing sandbox games","Fix savegame comparison dialog showing unecessarily","Fix street rendering bug","Fix background rendering bug","Fix zombies pointing away from the structures they attack","Fix very high numbers breaking the ui","Fix numbers showing wrong in blueprint tooltip","Reduce signal repeater cost again","Lots of performance and memory improvements again","Decrease emit interval of buildings to improve performance on higher levels"]},{date: "03.07.2019",entries: ["Lots performance improvements and refactorings, I might have introduced rendering bugs tho, please report them if you find any","Map layouts are now random!","Artwork: New artwork for the desert and arctic map","The fog is no longer transparent, making it more exciting to explore","Update translations","Fix introductory dialog not showing","Fix bug with street rendering","Fix small rendering bug with transporter connections","Interface: Close sidebar on user interaction","Interface: Show reason why a sidebar option is not available","Interface: Added setting to display FPS"]},{date: "02.07.2019",entries: ["Added easter egg","Modified the font to be monospace for digits, so that the numbers don't 'jump' arround","Balancing: Buff mage zombie (+damage, +health)","Update translations","You can now toggle pause with the space key","Internal refactorings"]},{date: "01.07.2019",entries: ["Add sidebar with forward until night option ","Add setting to enable/disable zombie indicators","Decrease zombie damage","Balancing: Do not apply global health to walls","Fix crash when spamming walls","Fix crash when clicking sell building twice very fast","Fix crash when changing a setting and going back","Fix some internal warnings","Fix multi placement aborting when no adjacent spot was found","Fix spotlight not showing low storage","Fix time achievements gained while the game is paused.","Artwork: Add particle when cannonballs hit the ground","Artwork: Improve crystal storage sprite and add some glow","Interface: Improve day/night indicator and show difficulty","Interface: Reduce the duration of the 'achievement unlocked' notification","Interface: Updated main menu background","Interface: Properly scale the ui on desktop browsers"]},{date: "30.06.2019",entries: ["Difficulties now work, the zombies get stronger and the buildings more expensive","The playerbase health bonus now applies with 25% to all buildings (Later this will be an upgrade)","Show health bar in building tooltip","Added Mage zombies","You now have unlimited crystals and heads in sandbox mode","Nerv archer zombie range again","Increase gravestone collector range by 30%","Rebalance building costs and times","Fix bug reporter reporting invalid savegame","Buff zombies on higher levels","Update translations","Add page which lists translation errors (See #announcements in the discord)","Make health upgrades on wall and crystal storage more expensive and scale less","Fix offline indicator showing in the beginning","Fix high amounts of coins and crystals being displayed wrong","Nerv lightning tower by decreasing its range","Fix floorspikes storage indicator","Update difficulty descriptions","Do not show introduction in sandbox mode","Added enhancements to spikes","Increase cannon and arrowtower damage","Fix bug where the health bar would show on full health as well due to precision errors"]},{date: "29.06.2019",entries: ["Fix bug reporter","Update translations","Add chinese (traditional)","Fix some artifacts on image gradients caused by lossy compression in production builds","Fix bug where it stays night"]},{date: "28.06.2019",entries: ["Show nights survived in gameover screen","Update translations","Improve offline indicators","Backend: Fixed crash reports being reported twice","Fix fractional storage on some buildings","You can now click on the offline indicator to find out why your savegame is not synchronized","Improve fog so it shows more clearly which tiles are explored and which not","Increase day duration by 15 seconds","Backend: Add maintenance mode","Added 'Report Bug' button to ingame settings"]},{date: "27.06.2019",entries: ["Fix achievement progress not properly shown","Nerv zombies in lower levels, buff them in higher ones","Increase arrow tower range by 25%","Update translations","Finish german translation"]},{date: "26.06.2019",entries: ["Instead of just stones there are now stones, iron ores, coal ores and uranium ores","Added ui scale setting","Made cannonball storage cheaper","Fixed spelling in preload state","Fixed 'core thread did not respond' error","Fixed bad file content error in some cases","Fixed coins not getting updated in main menu","Backend: Fixed some unstable endpoints","Updated translations","Fixed error animation on some dialogs","New miner connections artwork","New streets artwork","Automatically scroll to unlocked achivements when clicking the notification","Fixed crash if the game is gameover just in the moment where the automatic save happens","Fixed zombies spawning too close to the base"]},{date: "25.06.2019",entries: ["Added changelog and also added some past entries (incomplete)","Fixed coins being called coins in the purchase dialog","Fixed leaderboard ui when playernames are long","Added confirmation dialogs when choosing either the client or server savegame","Show meaningful error codes when the savegame failed to sync","Added cannon storage","Enhance the storage visualizer when a tower can store multiple resources","Added arrow storage","Make solarpanel scale worse, so the reactor gets more relevant at later levels","Remove the damage upgrade from the playerbase, since it was too strong","Update crystalmine artwork"]},{date: "24.06.2019",entries: ["Added nuclear reactor","New arrowfactory artwork","Improved spotlight artwork","Improved lightning tower artwork","Fixed spikes","Unified building costs (Now all cost crystals + one of a resource)","Fixed tooltip fog being too small on desktop","Fixed notch rendering","Improve ui icons in the buildings and resource tooltip"]},{date: "23.06.2019",entries: ["Reduced zombie size","Changed app name to YORG.io 3","Added a dialog to compare savegames when the stored savegame on the server differs","Improved main menu background"]},{version: [1, 0, 7],entries: ["Base app version since changelog was added"]}]
Returns the html to render an icon for the given resource
Parameters
resourceId: any
size: any
Returns string
getSavegameInterface
getSavegameInterface(logger: any, savegame: any): any
Returns if the given savegame has any supported interface
Parameters
logger: any
savegame: any
Returns any
getStringForKeyCode
getStringForKeyCode(code: any): any
Returns a keycode -> string
Parameters
code: any
Returns any
getTotalBaseExperienceForLevel
getTotalBaseExperienceForLevel(level: any): any
Parameters
level: any
Returns any
handleKeydown
handleKeydown(params: any): boolean
Parameters
params: any
Returns boolean
handleScroll
handleScroll(params: any): boolean
Parameters
params: any
Returns boolean
handleTouchEnd
handleTouchEnd(event: any): void
Parameters
event: any
Returns void
handleTouchMove
handleTouchMove(event: any): void
Parameters
event: any
Returns void
handleTouchStart
handleTouchStart(event: any): void
Parameters
event: any
Returns void
handleTouchend
handleTouchend(params: any): boolean
Parameters
params: any
Returns boolean
handleTouchmove
handleTouchmove(params: any): boolean
Parameters
params: any
Returns boolean
handleTouchstart
handleTouchstart(params: any): boolean
Parameters
params: any
Returns boolean
hslToRgb
hslToRgb(h: any, s: any, l: any): number[]
Converts an HSL color value to RGB. Conversion formula
adapted from http://en.wikipedia.org/wiki/HSL_color_space.
Assumes h, s, and l are contained in the set [0, 1] and
returns r, g, and b in the set [0, 255].
Parameters
h: any
The hue
s: any
The saturation
l: any
The lightness
Returns number[]
The RGB representation
initAssert
initAssert(): void
Returns void
initBehaviourRegistry
initBehaviourRegistry(): void
Returns void
initBuildingRegistry
initBuildingRegistry(): void
Returns void
initBuildingsByCategory
initBuildingsByCategory(buildings: any): void
Parameters
buildings: any
Returns void
initClientActionRegistry
initClientActionRegistry(): void
Returns void
initComponentRegistry
initComponentRegistry(): void
Returns void
initDamageFormRegistry
initDamageFormRegistry(): void
Returns void
initDamageTypeRegistry
initDamageTypeRegistry(): void
Returns void
initDestroyIndicatorRegistry
initDestroyIndicatorRegistry(): void
Returns void
initDifficultyRegistry
initDifficultyRegistry(): void
Returns void
initDrawUtils
initDrawUtils(): void
Returns void
initEnemyActionRegistry
initEnemyActionRegistry(): void
Returns void
initEnemyRegistry
initEnemyRegistry(): void
Returns void
initErrorHandler
initErrorHandler(): void
Returns void
initEvent
initEvent(name: any): Event
Parameters
name: any
Returns Event
initExtensions
initExtensions(): void
Returns void
initFactionRegistry
initFactionRegistry(): void
Returns void
initGameSpeedRegistry
initGameSpeedRegistry(): void
Returns void
initGraphicsQualityRegistry
initGraphicsQualityRegistry(): void
Returns void
initIncrementalSearch
initIncrementalSearch(): void
Returns void
initMapLayoutRegistry
initMapLayoutRegistry(): void
Returns void
initMatchmodeRegistry
initMatchmodeRegistry(): void
Returns void
initPolyfills
initPolyfills(): void
Returns void
initProjectileRegistry
initProjectileRegistry(): void
Returns void
initTargetModeRegistry
initTargetModeRegistry(): void
Returns void
initThemeConfigRegistry
initThemeConfigRegistry(): void
Returns void
initTutorialStepRegistry
initTutorialStepRegistry(): void
Returns void
initializeMap
initializeMap(root: any, layout: any): void
Initializes the map
Parameters
root: any
layout: any
Returns void
inlineSpritesHTML
inlineSpritesHTML(text: any): any
Inlines text so that
'This is your playerbase: {building:playerbase}, and these are crystals: {resource:crystal}'
show the actual sprites in html
Parameters
text: any
Returns any
insertEvent
insertEvent(type: any, params: any): void
Parameters
type: any
params: any
Returns void
internalBuildStringFromArgs
internalBuildStringFromArgs(args: any): string
Parameters
args: any
Returns string
isAndroid
isAndroid(): boolean
Returns if this platform is android
Returns boolean
isIos
isIos(): boolean
Returns if this platform is iOs
Returns boolean
isSupportedBrowser
isSupportedBrowser(): boolean
Returns boolean
key
key(str: any): any
Parameters
str: any
Returns any
Let leaveProfilingScope
leaveProfilingScope(scope: any): void
Parameters
scope: any
Returns void
lerp
lerp(a: any, b: any, x: any): number
Interpolates two numbers
Parameters
a: any
b: any
x: any
Mix factor, 0 means 100% a, 1 means 100%b, rest is interpolated
prepareObjectForLogging(obj: any, maxDepth?: number): any
Parameters
obj: any
Default value maxDepth: number = 1
Returns any
preparePayload
preparePayload(key: any, value: any): any
Prepares a json payload
Parameters
key: any
value: any
Returns any
pulseAnimation
pulseAnimation(time: any, duration?: number, seed?: number): number
Computes a sine-based animation which pulsates from 0 .. 1 .. 0
Parameters
time: any
Current time in seconds
Default value duration: number = 1
Duration of the full pulse in seconds
Default value seed: number = 0
Seed to offset the animation
Returns number
pushToQueue
pushToQueue(entry: any): void
Parameters
entry: any
Returns void
quantizeFloat
quantizeFloat(value: any): number
Fixes lockstep simulation by converting times like 34.0000000003 to 34.00.
We use 3 digits of precision, this allows to store sufficient precision of 1 ms without
the risk to simulation errors due to resync issues
Translates error codes like "invalid-auth-key" into their translations (E.g. "Invalid Auth Key").
If the code is not known or an arbitrary string, returns the code
Parameters
err: any
The error code
Returns string
Translated code
unpackMpObject
unpackMpObject(obj: any, recursive?: boolean): any
Used for the bug reporter, and the click detector which both have no handles to this. It would be nicer to have no globals, but this is the only one. I promise!
{Application}