Advertisement
KBM-Quine

localdeathTracker

Nov 17th, 2020
546
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.75 KB | None | 0 0
  1. --[[
  2. ·▄▄▄▄  ▄▄▄ . ▄▄▄· ▄▄▄▄▄ ▄ .▄▄▄▄▄▄▄▄▄   ▄▄▄·  ▄▄· ▄ •▄ ▄▄▄ .▄▄▄     ▄▄▌  ▄• ▄▌ ▄▄▄·
  3. ██▪ ██ ▀▄.▀·▐█ ▀█ •██  ██▪▐█•██  ▀▄ █·▐█ ▀█ ▐█ ▌▪█▌▄▌▪▀▄.▀·▀▄ █·   ██•  █▪██▌▐█ ▀█
  4. ▐█· ▐█▌▐▀▀▪▄▄█▀▀█  ▐█.▪██▀▐█ ▐█.▪▐▀▀▄ ▄█▀▀█ ██ ▄▄▐▀▀▄·▐▀▀▪▄▐▀▀▄    ██▪  █▌▐█▌▄█▀▀█
  5. ██. ██ ▐█▄▄▌▐█ ▪▐▌ ▐█▌·██▌▐▀ ▐█▌·▐█•█▌▐█ ▪▐▌▐███▌▐█.█▌▐█▄▄▌▐█•█▌   ▐█▌▐▌▐█▄█▌▐█ ▪▐▌
  6. ▀▀▀▀▀•  ▀▀▀  ▀  ▀  ▀▀▀ ▀▀▀ · ▀▀▀ .▀  ▀ ▀  ▀ ·▀▀▀ ·▀  ▀ ▀▀▀ .▀  ▀ ▀ .▀▀▀  ▀▀▀  ▀  ▀
  7. --V. 1.0
  8. --written by Enjl
  9. ]]
  10.  
  11. local lastPlayerX = 0
  12. local lastPlayerY = 0
  13. local deathCounter = 0
  14. local LevelSaveData
  15.  
  16. local hasDied = false
  17.  
  18. local deathTracker = {}
  19.  
  20. local shownIcons = {}
  21.  
  22. deathTracker.ICON_DEFAULT = Graphics.loadImage(Misc.resolveFile("libs\\deathTracker\\deathIcon.png"))
  23.  
  24. deathTracker.iconSprite = deathTracker.ICON_DEFAULT
  25.  
  26. local function iconHandler()
  27.     for i=1, deathCounter do
  28.         local entry = {}
  29.         entry.x = LevelSaveData.deaths[i].x
  30.         entry.y = LevelSaveData.deaths[i].y
  31.         entry.timer = 0
  32.         entry.opacity = 0
  33.         entry.sprite = deathTracker.iconSprite
  34.         table.insert(shownIcons, entry)
  35.     end
  36. end
  37.  
  38. function deathTracker.onInitAPI()
  39.     registerEvent(deathTracker, "onTick", "onTick", false)
  40.     registerEvent(deathTracker, "onDraw", "onDraw", false)
  41.     registerEvent(deathTracker, "onStart", "onStart", false)
  42. end
  43.  
  44. function deathTracker.onStart()
  45.     SaveData.deathTracker = SaveData.deathTracker or {
  46.         deaths = 0
  47.     }
  48.     SaveData.deathTracker.levels = SaveData.deathTracker.levels or {
  49.         [""] = {}
  50.     }
  51.     if SaveData.deathTracker.levels[Level.filename()] == nil then
  52.         SaveData.deathTracker.levels[Level.filename()] = {totaldeaths = 0, deaths = {}}
  53.     end
  54.     deathCounter = SaveData.deathTracker.levels[Level.filename()].totaldeaths or 0
  55.     LevelSaveData = SaveData.deathTracker.levels[Level.filename()]
  56. end
  57.  
  58. function deathTracker.onDraw()
  59.     local cam = Camera.get()[1]
  60.     for k,v in ipairs(shownIcons) do
  61.         if v.x + 0.5 * v.sprite.width > cam.x and v.x -0.5 * v.sprite.width < cam.x + 800 and v.y + 0.5 * v.sprite.height > cam.y and v.y -0.5 * v.sprite.height < cam.y + 600 then
  62.             Graphics.drawImageToScene(v.sprite, v.x - 0.5 * v.sprite.width, v.y - v.sprite.height, v.opacity)
  63.         end
  64.     end
  65. end
  66.  
  67. function deathTracker.onTick()
  68.     local cam = Camera.get()[1]
  69.     --track player position for onscreen depiction of offscreen deaths
  70.     if player.x + player.width > cam.x and player.x < cam.x + 800 then
  71.         lastPlayerX = player.x + 0.5 * player.width
  72.     end
  73.     if player.y + player.height > cam.y and player.y < cam.y + 600 then
  74.         lastPlayerY = player.y + 0.5 * player.height
  75.     end
  76.     --add to counter
  77.     if player:mem(0x13E, FIELD_WORD) > 0 then
  78.         if hasDied == false then
  79.             hasDied = true
  80.             SaveData.deathTracker.deaths = SaveData.deathTracker.deaths + 1
  81.             deathCounter = deathCounter + 1
  82.             LevelSaveData.totaldeaths = deathCounter
  83.             if LevelSaveData.deaths[deathCounter] == nil then
  84.                 LevelSaveData.deaths[deathCounter] = {x=0, y=0}
  85.             end
  86.             LevelSaveData.deaths[deathCounter].x = lastPlayerX
  87.             LevelSaveData.deaths[deathCounter].y = lastPlayerY
  88.             iconHandler()
  89.         end
  90.         for k,v in ipairs(shownIcons) do
  91.             v.timer = v.timer + 1
  92.             if v.timer > 50 then
  93.                 v.opacity = v.opacity + 0.1
  94.             end
  95.         end
  96.     end
  97. end
  98.  
  99. return deathTracker;
  100. --cat planet cat planet
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement