Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- ·▄▄▄▄ ▄▄▄ . ▄▄▄· ▄▄▄▄▄ ▄ .▄▄▄▄▄▄▄▄▄ ▄▄▄· ▄▄· ▄ •▄ ▄▄▄ .▄▄▄ ▄▄▌ ▄• ▄▌ ▄▄▄·
- ██▪ ██ ▀▄.▀·▐█ ▀█ •██ ██▪▐█•██ ▀▄ █·▐█ ▀█ ▐█ ▌▪█▌▄▌▪▀▄.▀·▀▄ █· ██• █▪██▌▐█ ▀█
- ▐█· ▐█▌▐▀▀▪▄▄█▀▀█ ▐█.▪██▀▐█ ▐█.▪▐▀▀▄ ▄█▀▀█ ██ ▄▄▐▀▀▄·▐▀▀▪▄▐▀▀▄ ██▪ █▌▐█▌▄█▀▀█
- ██. ██ ▐█▄▄▌▐█ ▪▐▌ ▐█▌·██▌▐▀ ▐█▌·▐█•█▌▐█ ▪▐▌▐███▌▐█.█▌▐█▄▄▌▐█•█▌ ▐█▌▐▌▐█▄█▌▐█ ▪▐▌
- ▀▀▀▀▀• ▀▀▀ ▀ ▀ ▀▀▀ ▀▀▀ · ▀▀▀ .▀ ▀ ▀ ▀ ·▀▀▀ ·▀ ▀ ▀▀▀ .▀ ▀ ▀ .▀▀▀ ▀▀▀ ▀ ▀
- --V. 1.0
- --written by Enjl
- ]]
- local lastPlayerX = 0
- local lastPlayerY = 0
- local deathCounter = 0
- local LevelSaveData
- local hasDied = false
- local deathTracker = {}
- local shownIcons = {}
- deathTracker.ICON_DEFAULT = Graphics.loadImage(Misc.resolveFile("libs\\deathTracker\\deathIcon.png"))
- deathTracker.iconSprite = deathTracker.ICON_DEFAULT
- local function iconHandler()
- for i=1, deathCounter do
- local entry = {}
- entry.x = LevelSaveData.deaths[i].x
- entry.y = LevelSaveData.deaths[i].y
- entry.timer = 0
- entry.opacity = 0
- entry.sprite = deathTracker.iconSprite
- table.insert(shownIcons, entry)
- end
- end
- function deathTracker.onInitAPI()
- registerEvent(deathTracker, "onTick", "onTick", false)
- registerEvent(deathTracker, "onDraw", "onDraw", false)
- registerEvent(deathTracker, "onStart", "onStart", false)
- end
- function deathTracker.onStart()
- SaveData.deathTracker = SaveData.deathTracker or {
- deaths = 0
- }
- SaveData.deathTracker.levels = SaveData.deathTracker.levels or {
- [""] = {}
- }
- if SaveData.deathTracker.levels[Level.filename()] == nil then
- SaveData.deathTracker.levels[Level.filename()] = {totaldeaths = 0, deaths = {}}
- end
- deathCounter = SaveData.deathTracker.levels[Level.filename()].totaldeaths or 0
- LevelSaveData = SaveData.deathTracker.levels[Level.filename()]
- end
- function deathTracker.onDraw()
- local cam = Camera.get()[1]
- for k,v in ipairs(shownIcons) do
- 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
- Graphics.drawImageToScene(v.sprite, v.x - 0.5 * v.sprite.width, v.y - v.sprite.height, v.opacity)
- end
- end
- end
- function deathTracker.onTick()
- local cam = Camera.get()[1]
- --track player position for onscreen depiction of offscreen deaths
- if player.x + player.width > cam.x and player.x < cam.x + 800 then
- lastPlayerX = player.x + 0.5 * player.width
- end
- if player.y + player.height > cam.y and player.y < cam.y + 600 then
- lastPlayerY = player.y + 0.5 * player.height
- end
- --add to counter
- if player:mem(0x13E, FIELD_WORD) > 0 then
- if hasDied == false then
- hasDied = true
- SaveData.deathTracker.deaths = SaveData.deathTracker.deaths + 1
- deathCounter = deathCounter + 1
- LevelSaveData.totaldeaths = deathCounter
- if LevelSaveData.deaths[deathCounter] == nil then
- LevelSaveData.deaths[deathCounter] = {x=0, y=0}
- end
- LevelSaveData.deaths[deathCounter].x = lastPlayerX
- LevelSaveData.deaths[deathCounter].y = lastPlayerY
- iconHandler()
- end
- for k,v in ipairs(shownIcons) do
- v.timer = v.timer + 1
- if v.timer > 50 then
- v.opacity = v.opacity + 0.1
- end
- end
- end
- end
- return deathTracker;
- --cat planet cat planet
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement