Camera refactor

This commit is contained in:
MaddoScientisto 2024-04-26 14:00:34 +02:00
commit 56fa9bce02
3 changed files with 102 additions and 88 deletions

View file

@ -6,7 +6,7 @@ version 2
:: sfx/ :: sfx/
:: gfx/0.gfx :: gfx/0.gfx
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w
NC0yNiAxMTozMToxOCIscmV2aXNpb249ODcyXV1sejQAcggAANo9AADzFHtbMF09e2JtcD1weHUA NC0yNiAxMjowMDoxMiIscmV2aXNpb249ODg0XV1sejQAkAgAAPw9AADzFHtbMF09e2JtcD1weHUA
QyAQEATw8CxmbGFncz0wLHBhbl94CADaeT0wLHpvb209MTF9LDIA8QivGyPeA34D3iPeA-4JE24D QyAQEATw8CxmbGFncz0wLHBhbl94CADaeT0wLHpvb209MTF9LDIA8QivGyPeA34D3iPeA-4JE24D
ThNuI04DfhMA-wOOAz4DTgMuI34jLgOeA-4UAy5eAB3wCfBFTYAtJi1QHWYdBSAdhg0VAB2WHRUN ThNuI04DfhMA-wOOAz4DTgMuI34jLgOeA-4UAy5eAB3wCfBFTYAtJi1QHWYdBSAdhg0VAB2WHRUN
pgQAww0VAA2WHQUQvQXwE1gAHzNYABXwKlBEgBRPHxRQDxSPHwRALxRPHyRADxQfH0QODxkEQA8U pgQAww0VAA2WHQUQvQXwE1gAHzNYABXwKlBEgBRPHxRQDxSPHwRALxRPHyRADxQfH0QODxkEQA8U
@ -39,42 +39,43 @@ X4AY0BhQ0gFPmGAI4AiAFDAIQOQAGghzAxUY4wAhPhjjACA9GNcADAYAA78AJwQY4gAXGOEAAxgA
zw0AFDAYMBRwGNAYYJIBHS-w8OQCbC-_ELMAHk-Q-xQQywI5L-4STgAdWFA4sCjAAgBvmHB4oEjw zw0AFDAYMBRwGNAYYJIBHS-w8OQCbC-_ELMAHk-Q-xQQywI5L-4STgAdWFA4sCjAAgBvmHB4oEjw
nQ0fj1AYAGhQ_BDw1AUeAO0BAgIArrA4kFhQiGB48Gh_AA-8AW9hMDwPHCxgwhHwCAcMDhwwHA4M nQ0fj1AYAGhQ_BDw1AUeAO0BAgIArrA4kFhQiGB48Gh_AA-8AW9hMDwPHCxgwhHwCAcMDhwwHA4M
RwwODDAMDgxnDA4wHhcOAgAyDEAOCQDwISAeIFcADjAeIDcwHkAsCBwQHkAHLAgcB0AeAAdcBwAe RwwODDAMDgxnDA4wHhcOAgAyDEAOCQDwISAeIFcADjAeIDcwHkAsCBwQHkAHLAgcB0AeAAdcBwAe
AB4QfBAeIAcMBwwHTHAXAAgAnwxwFxAXkBgQGH8BHvIEMCw-HHAcbmAMDhEOEQcOYAwHDgMAYGAM AB4QfBAeIAcMBwwHTHAXAAgAnwxwFxAXkBgQGH8BHvAFIAEsPxwBUAEcbgFAAQwOEQ4RBw4KACIH
BxwHHAgA-zAPF0cNDlAcJw0nHoAMBw6gBwwHCAcOB3AHDA4IDggeB1AHHG4HMBcsXhcgF3wAF0AH DgMAAQwAMhwHHAoA8A8PF0cNDgEwARwnDSceATAxDAcOMVABBwwHCAcOBwEKAP8mDggOCB4HATAB
ABcABxAHkAcAB7AcABxwBCAPMgD-GP8ngA8b0B6ATxgOPUA9Am0wvTAdAm0CHSBdAl0gzTAdAk0C BxxuBwEQARcsXhcBAAEXfAEXARARBwEXAQcRBxFAAQABBwEHAZABHAEcAUC2AR8PMgD-GP8ngA8b
LTBNCF0wPQJtQF0CLWB9cG2QTbAtkwH-Sw8yABz-AAQEBAAfHAAOFx4XDgAeADwAGv8GCAgEgAcw 0B6ATxgOPUA9Am0wvTAdAm0CHSBdAl0gzTAdAk0CLTBNCF0wPQJtQF0CLWB9cG2QTbAtJQYgDzIA
ByAHEAfwBAcQByAHMAeAQgAdkAgAOAAIAAgwCAYAgRAIABhQGFAYCgAEFgA-OAAINwEfDzIA---- -0f-AAQEBAAfHAAOFx4XDgAeADwAGv8GCAgEgAcwByAHEAfwBAcQByAHMAeAQgAdkAgAOAAIAAgw
----------------------------------------w1A9MTF9fQ== CAYAgRAIABhQGFAYCgAEFgA-OAAINwEfDzIA----------------------------------------
----w1A9MTF9fQ==
:: gfx/.info.pod :: gfx/.info.pod
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w
NC0yNiAxMTozMToxOCIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA NC0yNiAxMjowMDoxMyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA
MG5pbA== MG5pbA==
:: map/0.map :: map/0.map
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w
NC0yNiAxMTozMToxOCIscmV2aXNpb249ODkxXV1sejQAnAMAABVCAADwCHt7Ym1wPXVzZXJkYXRh NC0yNiAxMjowMDoxMiIscmV2aXNpb249OTA0XV1sejQAngMAABVCAADwCHt7Ym1wPXVzZXJkYXRh
KCJpMTYiLDMyAwAvIjABAP_DLjEwDAAPAQDhPzQ4MAEAXi80MAEACz8xMzABAHMXNAQADwEANQ9Q KCJpMTYiLDMyAwAvIjABAP_DLjEwDAAPAQDhPzQ4MAEAXi80MAEACz8xMzABAHMXNAQADwEANQ9Q
ACEfM4AAbg8BALoqNDgIAQ8EAwcOIAAPAQA2BIAAHzNgAQAvMzABAE4vNDgYAA8OJAAPAQA5DmgA ACEfM4AAbg8BALoqNDgIAQ8EAwcOIAAPAQA2BIAAHzNgAQAvMzABAE4vNDgYAA8OJAAPAQA5DmgA
DwEAch4zgAEPgABgDwEA---------7-1HSIpLGhpZGRlbj1mYWxzZSxuYW1lPSJvYmplY3RzIixw DwEAch4zgAEPgABgDwEA---------7-1HSIpLGhpZGRlbj1mYWxzZSxuYW1lPSJvYmplY3RzIixw
YW5feD0tMTUyLjgzAQABFwBpeT0tMTAxFwCSdGlsZV9oPTE2CgAQdwoAj3pvb209MX0shBAJDwEA YW5feD0tMTUyLjgzAQABFwBpeT0tMTAxFwCSdGlsZV9oPTE2CgAQdwoAj3pvb209MX0shBAJDwEA
----mi9hMIAA7Q8BAP--------------Sw_EEAOvZm9yZWdyb3VuZIcQ4i8zOQQAAw8BAFFjMzIw ----mi9hMIAA-2AvMzABAP-------------WD4QQA69mb3JlZ3JvdW5khxDiLzM5BAADDwEAUWMz
MDA5BAAaYgwAHzOAAF0aMAwAHzMAAW0WOIwBDwQAAQ_AADYPAQAFHmOUAAgIAB8zgABZFzAMAA_A MjAwMDkEABpiDAAfM4AAXRowDAAfMwABbRY4jAEPBAABD4AANg8BAAUeY5QACAgAHzOAAFkXMAwA
AD0XNQQACAEALzUwAQAIDwABUB8wgADUHzUEAAwEAQAaNQQADwABtg_AAOxqMmIwMDJjBAAEAQAv D4AAPRc1BAAIAQAvNTABAAgPAAFQHzCAANQfNQQADAQBABo1BAAPAAG2D4AA7GoyYjAwMmMEAAQB
MmMEAAQfZIAANz8zNTABAB4vM2KAAGsvMDCAAPwfMoAAO2cyODAwMjkEAB9hAAFIL2QwXAAOACgA AC8yYwQABB9kgAA3PzM1MAEAHi8zYoAAay8wMIAA-B8ygAA7ZzI4MDAyOQQAH2EAAUgvZDBcAA4A
DiQADwEALw5YAA9cAAMvMzIkAAEPAQAvD4AABgz8CA_AASUfM4AAIwF8CBc5BAAPpAECDwEALwGA KAAOJAAPAQAvDlgAD1wAAy8zMiQAAQ8BAC8PgAAGDPwID4ABJR8zgAAjAXwIFzkEAA_kAQIPAQAv
ABc1BAAPgAARAywALzMwAQAzDuACDzAADAMcAw4BAA_QAycPiAEDDxwCEw8BAAMPgABHDZwBD4AA AYAAFzUEAA_AABEDLAAvMzABADMO4AIPMAAMAxwDDgEAD5ADJw_IAQMPHAITDwEAAw_AAEcNnAEP
3Q4BAA_AAK4FCAMPBAAkD4cQMU9zb2xpghBWDwEA-4QISgIvOTABANYvMWEEAAMPAQBVLzFhBAAD gADdDgEAD4AArgUIAw8EACQPhxAxT3NvbGmCEFYPAQD-hAhKAi85MAEA1i8xYQQAAw8BAFUvMWEE
LzAwkAFTJzFiBAAWOQQALzA4BAAKDwEANx84BAAiDwEANx84BAAiD4ABNx84BAAjDwEANS8xOAQA AAMvMDCQAVMnMWIEABY5BAAvMDgEAAoPAQA3HzgEACIPAQA3HzgEACIPgAE3HzgEACMPAQA1LzE4
Iw8BADUvMTgEACMPAQA1LzE4BAAjDwEANS8xOAQAIw8BADUvMWIEAAAECAQfYgQABw8BADYfOAQA BAAjDwEANS8xOAQAIw8BADUvMTgEACMPAQA1LzE4BAAjDwEANS8xYgQAAAQIBB9iBAAHDwEANh84
Ig8BADcfOAQAIg8BADcfOAQAIg8BADceOAQAD4IQAhs4BAAPAQA1HjgEAB8zogsBGzgEAA8BADUf BAAiDwEANx84BAAiDwEANx84BAAiDwEANx44BAAPghACGzgEAA8BADUeOAQAHzOiCwEbOAQADwEA
OIAA-2wuMWJ4BA_AAAEEHAAOgAQPAQA0HzgEABIPAQBGLzE4BAATDwEARS8xOAQAEw8BAEUvMTgE NR84gAD-bC4xYngED4AAAQQcAA6ABA8BADQfOAQAEg8BAEYvMTgEABMPAQBFLzE4BAATDwEARS8x
ABMPAQBGHzgEACIPAQA3HzgEACIPCSG2TGJhY2sJIU4xMi4zhxAoMjYWAA_HEAZQbT0xfX0= OAQAEw8BAEYfOAQAIg8BADcfOAQAIg8JIbZMYmFjawkhTjEyLjOHECgyNhYAD4cQBlBtPTF9fQ==
:: map/.info.pod :: map/.info.pod
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w
NC0yNiAxMTozMToxOCIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA NC0yNiAxMjowMDoxMyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA
MG5pbA== MG5pbA==
:: sfx/0.sfx :: sfx/0.sfx
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w
NC0yNiAxMTozMToxOCIscmV2aXNpb249NzMzXV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ NC0yNiAxMjowMDoxMiIscmV2aXNpb249NzQxXV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ
Ag4AAaABIAKgDgAPEAAN8MoBAgMEBQYHAA--kAgJCgsPDA8NDw4PDxAA8AANDxEPEg8TDxQPFQ8W Ag4AAaABIAKgDgAPEAAN8MoBAgMEBQYHAA--kAgJCgsPDA8NDw4PDxAA8AANDxEPEg8TDxQPFQ8W
DxcTAPEBDxgPGQ8aDxsPHA8dDx4PHxQA8QAgDyEPIg8jDyQPJQ8mDycUAPEAKA8pDyoPKw8sDy0P DxcTAPEBDxgPGQ8aDxsPHA8dDx4PHxQA8QAgDyEPIg8jDyQPJQ8mDycUAPEAKA8pDyoPKw8sDy0P
Lg8vFADxADAPMQ8yDzMPNA81DzYPNxQA-wU4DzkPOg87DzwPPQ8_Dz8AD--w-wEA6-InWgEQBg8g Lg8vFADxADAPMQ8yDzMPNA81DzYPNxQA-wU4DzkPOg87DzwPPQ8_Dz8AD--w-wEA6-InWgEQBg8g
@ -83,14 +84,14 @@ L-AAMAD--4If-wEAzPEd6A9AAA1ADxcACxoIBggQAgMQBQAGAAgASRcAJggJUP--CfEX-gn8F-4J
8HArAF-_sPBwBAgA-9wf-wEAl1D-----Hw== 8HArAF-_sPBwBAgA-9wf-wEAl1D-----Hw==
:: sfx/.info.pod :: sfx/.info.pod
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w
NC0yNiAxMTozMToxOCIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA NC0yNiAxMjowMDoxMyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA
MG5pbA== MG5pbA==
:: main.lua :: main.lua
--[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-26 11:31:18",revision=995]] --[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-26 12:00:12",revision=1005]]
include("/cirnofarm/src/game.lua") include("/cirnofarm/src/game.lua")
:: .info.pod :: .info.pod
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTE2IDE5OjQyOjIyIixtb2RpZmllZD0iMjAyNC0w b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTE2IDE5OjQyOjIyIixtb2RpZmllZD0iMjAyNC0w
NC0yNiAxMTozMToxOCIscnVudGltZT02LHN0b3JlZD0iMjAyNC0wNC0xNiAxOTo0MDowNSIsd29y NC0yNiAxMjowMDoxMyIscnVudGltZT02LHN0b3JlZD0iMjAyNC0wNC0xNiAxOTo0MDowNSIsd29y
a3NwYWNlcz17e2xvY2F0aW9uPSJtYWluLmx1YSMxIix3b3Jrc3BhY2VfaW5kZXg9MX0se2xvY2F0 a3NwYWNlcz17e2xvY2F0aW9uPSJtYWluLmx1YSMxIix3b3Jrc3BhY2VfaW5kZXg9MX0se2xvY2F0
aW9uPSJnZngvMC5nZngiLHdvcmtzcGFjZV9pbmRleD0yfSx7bG9jYXRpb249Im1hcC8wLm1hcCIs aW9uPSJnZngvMC5nZngiLHdvcmtzcGFjZV9pbmRleD0yfSx7bG9jYXRpb249Im1hcC8wLm1hcCIs
d29ya3NwYWNlX2luZGV4PTN9LHtsb2NhdGlvbj0ic2Z4LzAuc2Z4Iix3b3Jrc3BhY2VfaW5kZXg9 d29ya3NwYWNlX2luZGV4PTN9LHtsb2NhdGlvbj0ic2Z4LzAuc2Z4Iix3b3Jrc3BhY2VfaW5kZXg9

View file

@ -29,73 +29,77 @@ function cirno_init()
--bullets={} --bullets={}
player={} player={}
add(player, { local cirnoInstance = {
x=128, x=128,
y=128, y=128,
w=16, w=16,
h=16, h=16,
speed=0.05, speed=0.05,
hflip=false, hflip=false,
spriteIndex=65, spriteIndex=65,
crosshair_index=82, crosshair_index=82,
move_x=0, move_x=0,
move_y=0, move_y=0,
noclip=false, noclip=false,
cm=true, -- Collide with map tiles cm=true, -- Collide with map tiles
cb=true, -- Collide with world bounds cb=true, -- Collide with world bounds
draw=function(self) draw=function(self)
camera(self.x - 240, self.y - 135)
spr(self.spriteIndex,self.x,self.y, self.hflip)
print(string.format("x:%.2f y:%.2f mx:%.2f my:%.2f",self.x,self.y,
self.move_x,self.move_y),0,0,1)
draw_crosshair(self) spr(self.spriteIndex,self.x,self.y, self.hflip)
--print(string.format("dir_x:%.4f dir_y:%.4f",self. print(string.format("x:%.2f y:%.2f mx:%.2f my:%.2f",self.x,self.y,
end, self.move_x,self.move_y),0,0,1)
update=function(self)
self.move_character(self) draw_crosshair(self)
--print(string.format("dir_x:%.4f dir_y:%.4f",self.
end,
update=function(self)
self.move_character(self)
-- Shoot bullet with Z
if (btn(4)) then
--create_bullet(self.x,self.y,self.move_x,self.move_Y)
weapons_manager.create_bullet(self.x+8,self.y+8,self.move_x,self.move_y)
end
end,
move_character=function(self)
-- Shoot bullet with Z local hitbox_x = 4
if (btn(4)) then local hitbox_y = 8
--create_bullet(self.x,self.y,self.move_x,self.move_Y) local hitbox_w = 6
weapons_manager.create_bullet(self.x+8,self.y+8,self.move_x,self.move_y) local hitbox_h = 8
end
end,
move_character=function(self)
local hitbox_x = 4 --self.move_x = self.x
local hitbox_y = 8 --self.move_y = self.y
local hitbox_w = 6 if (btn(0)) self.move_x -= self.speed self.hflip = true
local hitbox_h = 8 if (btn(1)) self.move_x += self.speed self.hflip = false
if (btn(2)) self.move_y -= self.speed
--self.move_x = self.x if (btn(3)) self.move_y += self.speed
--self.move_y = self.y
if (btn(0)) self.move_x -= self.speed self.hflip = true if (check_collision(self.x+self.move_x+hitbox_x,
if (btn(1)) self.move_x += self.speed self.hflip = false self.y+hitbox_y,
if (btn(2)) self.move_y -= self.speed hitbox_w,
if (btn(3)) self.move_y += self.speed hitbox_h)) then
if (not self.noclip) then self.move_x = 0 end
if (check_collision(self.x+self.move_x+hitbox_x, end
self.y+hitbox_y,
hitbox_w, if (check_collision(self.x+hitbox_x,
hitbox_h)) then self.y+self.move_y+hitbox_y,
if (not self.noclip) then self.move_x = 0 end hitbox_w,
end hitbox_h)) then
if (not self.noclip) then self.move_y = 0 end
if (check_collision(self.x+hitbox_x, end
self.y+self.move_y+hitbox_y,
hitbox_w, self.move_x *= 0.95
hitbox_h)) then self.move_y *= 0.95
if (not self.noclip) then self.move_y = 0 end
self.x += self.move_x
self.y += self.move_y
end end
}
self.move_x *= 0.95 add(player, cirnoInstance)
self.move_y *= 0.95
self.x += self.move_x return cirnoInstance
self.y += self.move_y
end
})
end end
@ -182,4 +186,8 @@ function M.draw()
return cirno_draw() return cirno_draw()
end end
function M.get()
return player[1]
end
return M return M

View file

@ -62,7 +62,7 @@ tile_height = 16
function _init() function _init()
spawn_objects() spawn_objects()
cirno.init() cirnoInstance = cirno.init()
end end
function _update() function _update()
@ -97,10 +97,15 @@ particles = {}
function _draw() function _draw()
cls(0) cls(0)
camera(cirnoInstance.x - 240, cirnoInstance.y - 135)
foreach(LAYERS, render_layer) foreach(LAYERS, render_layer)
mouse_debug.draw(4, tile_width, tile_height) mouse_debug.draw(4, tile_width, tile_height)
weapons_manager.debug_draw() weapons_manager.debug_draw()
end end
function spawn_objects() function spawn_objects()