mirror of
https://gitlab.com/MaddoScientisto/cirnofarm.git
synced 2026-06-22 19:43:55 +00:00
New bullet instantiation method
This commit is contained in:
parent
c33488fabd
commit
cc921f9ade
4 changed files with 121 additions and 84 deletions
|
|
@ -6,7 +6,7 @@ version 2
|
||||||
:: sfx/
|
:: sfx/
|
||||||
:: gfx/0.gfx
|
:: gfx/0.gfx
|
||||||
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w
|
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w
|
||||||
NC0yNCAwOToxMTowMyIscmV2aXNpb249NjQ4XV1sejQAbgYAAOA6AADzFHtbMF09e2JtcD1weHUA
|
NC0yNCAxNTowNjoxMiIscmV2aXNpb249NjcxXV1sejQAbgYAAOA6AADzFHtbMF09e2JtcD1weHUA
|
||||||
QyAQEATw8CxmbGFncz0wLHBhbl94CADaeT0wLHpvb209MTF9LDIA8QivGyPeA34D3iPeA-4JE24D
|
QyAQEATw8CxmbGFncz0wLHBhbl94CADaeT0wLHpvb209MTF9LDIA8QivGyPeA34D3iPeA-4JE24D
|
||||||
ThNuI04DfhMA-wOOAz4DTgMuI34jLgOeA-4UAy5eAB3wCfBFTYAtJi1QHWYdBSAdhg0VAB2WHRUN
|
ThNuI04DfhMA-wOOAz4DTgMuI34jLgOeA-4UAy5eAB3wCfBFTYAtJi1QHWYdBSAdhg0VAB2WHRUN
|
||||||
pgQAww0VAA2WHQUQvQXwE1gAHzFYABXwKlBEgBRPHxRQDxSPHwRALxRPHyRADxQfH0QODxkEQA8U
|
pgQAww0VAA2WHQUQvQXwE1gAHzFYABXwKlBEgBRPHxRQDxSPHwRALxRPHyRADxQfH0QODxkEQA8U
|
||||||
|
|
@ -38,11 +38,11 @@ EAfwBAcQByAHMAeAQgAdkAgAOAAIAAgwCAYAgRAIABhQGFAYCgAEFgA-OAAINwEfDzIA--------
|
||||||
------------------------------------w1A9MTF9fQ==
|
------------------------------------w1A9MTF9fQ==
|
||||||
:: gfx/.info.pod
|
:: gfx/.info.pod
|
||||||
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w
|
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w
|
||||||
NC0yNCAwOToxMTowMyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA
|
NC0yNCAxNTowNjoxMiIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA
|
||||||
MG5pbA==
|
MG5pbA==
|
||||||
:: map/0.map
|
:: map/0.map
|
||||||
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w
|
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w
|
||||||
NC0yNCAwOToxMTowMyIscmV2aXNpb249NjU4XV1sejQAagIAALFBAADwCHt7Ym1wPXVzZXJkYXRh
|
NC0yNCAxNTowNjoxMiIscmV2aXNpb249NjgxXV1sejQAagIAALFBAADwCHt7Ym1wPXVzZXJkYXRh
|
||||||
KCJpMTYiLDMyAwAvIjABAP--jD80ODABAF4vNDABAAs-MTMw9AL--1wOBAMOIAAPAQBGEzMEAAgB
|
KCJpMTYiLDMyAwAvIjABAP--jD80ODABAF4vNDABAAs-MTMw9AL--1wOBAMOIAAPAQBGEzMEAAgB
|
||||||
AC8zMAEATi80OBgADw4kAA8BADkOaAAPAQD----------8vxGSIpLGhpZGRlbj1mYWxzZSxuYW1l
|
AC8zMAEATi80OBgADw4kAA8BADkOaAAPAQD----------8vxGSIpLGhpZGRlbj1mYWxzZSxuYW1l
|
||||||
PSJvYmplY3RzIixwYW5feD0tOTAKAPIBeT0tMTEwLHRpbGVfaD0xNgoAEHcKAI96b29tPTF9LGsQ
|
PSJvYmplY3RzIixwYW5feD0tOTAKAPIBeT0tMTEwLHRpbGVfaD0xNgoAEHcKAI96b29tPTF9LGsQ
|
||||||
|
|
@ -56,11 +56,11 @@ ACIPAQA3HzgEACIPgAE3HzgEACMPAQA1LzE4BAAjDwEANS8xOAQAIw8BADUvMTgEACMPAQA1LzE4
|
||||||
BAAjD9cg-----------FTGJhY2vXIA9uEBFQbT0xfX0=
|
BAAjD9cg-----------FTGJhY2vXIA9uEBFQbT0xfX0=
|
||||||
:: map/.info.pod
|
:: map/.info.pod
|
||||||
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w
|
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w
|
||||||
NC0yNCAwOToxMTowMyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA
|
NC0yNCAxNTowNjoxMiIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA
|
||||||
MG5pbA==
|
MG5pbA==
|
||||||
:: sfx/0.sfx
|
:: sfx/0.sfx
|
||||||
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w
|
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w
|
||||||
NC0yNCAwOToxMTowMyIscmV2aXNpb249NTU3XV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ
|
NC0yNCAxNTowNjoxMiIscmV2aXNpb249NTgwXV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ
|
||||||
Ag4AAaABIAKgDgAPEAAN8MoBAgMEBQYHAA--kAgJCgsPDA8NDw4PDxAA8AANDxEPEg8TDxQPFQ8W
|
Ag4AAaABIAKgDgAPEAAN8MoBAgMEBQYHAA--kAgJCgsPDA8NDw4PDxAA8AANDxEPEg8TDxQPFQ8W
|
||||||
DxcTAPEBDxgPGQ8aDxsPHA8dDx4PHxQA8QAgDyEPIg8jDyQPJQ8mDycUAPEAKA8pDyoPKw8sDy0P
|
DxcTAPEBDxgPGQ8aDxsPHA8dDx4PHxQA8QAgDyEPIg8jDyQPJQ8mDycUAPEAKA8pDyoPKw8sDy0P
|
||||||
Lg8vFADxADAPMQ8yDzMPNA81DzYPNxQA-wU4DzkPOg87DzwPPQ8_Dz8AD--w-wEA6-InWgEQBg8g
|
Lg8vFADxADAPMQ8yDzMPNA81DzYPNxQA-wU4DzkPOg87DzwPPQ8_Dz8AD--w-wEA6-InWgEQBg8g
|
||||||
|
|
@ -69,14 +69,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
|
||||||
NC0yNCAwOToxMTowMyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA
|
NC0yNCAxNTowNjoxMiIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA
|
||||||
MG5pbA==
|
MG5pbA==
|
||||||
:: main.lua
|
:: main.lua
|
||||||
--[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-24 09:11:03",revision=754]]
|
--[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-24 15:06:12",revision=800]]
|
||||||
include("/cirnofarm/src/game.lua")
|
include("/cirnofarm/src/game.lua")
|
||||||
:: .info.pod
|
:: .info.pod
|
||||||
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTE2IDE5OjQyOjIyIixtb2RpZmllZD0iMjAyNC0w
|
b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTE2IDE5OjQyOjIyIixtb2RpZmllZD0iMjAyNC0w
|
||||||
NC0yNCAwOToxMTowMyIscnVudGltZT02LHN0b3JlZD0iMjAyNC0wNC0xNiAxOTo0MDowNSIsd29y
|
NC0yNCAxNTowNjoxMiIscnVudGltZT02LHN0b3JlZD0iMjAyNC0wNC0xNiAxOTo0MDowNSIsd29y
|
||||||
a3NwYWNlcz17e2xvY2F0aW9uPSJtYWluLmx1YSMxIix3b3Jrc3BhY2VfaW5kZXg9MX0se2xvY2F0
|
a3NwYWNlcz17e2xvY2F0aW9uPSJtYWluLmx1YSMxIix3b3Jrc3BhY2VfaW5kZXg9MX0se2xvY2F0
|
||||||
aW9uPSJnZngvMC5nZngiLHdvcmtzcGFjZV9pbmRleD0yfSx7bG9jYXRpb249Im1hcC8wLm1hcCIs
|
aW9uPSJnZngvMC5nZngiLHdvcmtzcGFjZV9pbmRleD0yfSx7bG9jYXRpb249Im1hcC8wLm1hcCIs
|
||||||
d29ya3NwYWNlX2luZGV4PTN9LHtsb2NhdGlvbj0ic2Z4LzAuc2Z4Iix3b3Jrc3BhY2VfaW5kZXg9
|
d29ya3NwYWNlX2luZGV4PTN9LHtsb2NhdGlvbj0ic2Z4LzAuc2Z4Iix3b3Jrc3BhY2VfaW5kZXg9
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
--include("/cirnofarm/src/actor.lua")
|
--include("/cirnofarm/src/actor.lua")
|
||||||
|
|
||||||
local weapons_manager = require(make_path("weapons"))
|
local weapons_manager = require(make_path("weapons"))
|
||||||
|
local map_manager = require(make_path("map"))
|
||||||
|
|
||||||
last_coll=0
|
last_coll=0
|
||||||
mouse_debug = true
|
mouse_debug = true
|
||||||
|
|
@ -198,13 +199,13 @@ function check_collision(x,y,w,h)
|
||||||
|
|
||||||
for i=x,x+w,w do
|
for i=x,x+w,w do
|
||||||
|
|
||||||
if (is_tile_solid(i,y) or is_tile_solid(i,y+h)) then
|
if (map_manager.is_tile_solid(i,y) or map_manager.is_tile_solid(i,y+h)) then
|
||||||
collide = collide or true
|
collide = collide or true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
for i=y,y+h do
|
for i=y,y+h do
|
||||||
if (is_tile_solid(x,i) or is_tile_solid(x+w,i)) then
|
if (map_manager.is_tile_solid(x,i) or map_manager.is_tile_solid(x+w,i)) then
|
||||||
collide = collide or true
|
collide = collide or true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -212,27 +213,6 @@ function check_collision(x,y,w,h)
|
||||||
return collide
|
return collide
|
||||||
end
|
end
|
||||||
|
|
||||||
function get_layer_tile(x,y,layer)
|
|
||||||
return get(fetch"map/0.map"[layer].bmp,x,y)
|
|
||||||
end
|
|
||||||
|
|
||||||
function is_tile(tile_type,x,y)
|
|
||||||
--local tile = mget(x/tile_width,y/tile_height)
|
|
||||||
local tile = get_layer_tile(x/tile_width,y/tile_height,3)
|
|
||||||
local has_flag = fget(tile,tile_type)
|
|
||||||
--last_coll = fget(tile)
|
|
||||||
return has_flag
|
|
||||||
end
|
|
||||||
|
|
||||||
function is_tile_solid(x,y)
|
|
||||||
return is_tile(1,x,y) == 1
|
|
||||||
end
|
|
||||||
|
|
||||||
function can_move(x,y)
|
|
||||||
return is_tile(0,x,y)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function cmap(o)
|
function cmap(o)
|
||||||
local ct=false
|
local ct=false
|
||||||
local cb=false
|
local cb=false
|
||||||
|
|
|
||||||
28
src/map.lua
Normal file
28
src/map.lua
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
M = {}
|
||||||
|
|
||||||
|
local tile_width = 16
|
||||||
|
local tile_height = 16
|
||||||
|
|
||||||
|
local current_map = "0"
|
||||||
|
|
||||||
|
function get_layer_tile(x,y,layer)
|
||||||
|
return get(fetch("map/".. current_map .. ".map")[layer].bmp,x,y)
|
||||||
|
end
|
||||||
|
|
||||||
|
function is_tile(tile_type,x,y)
|
||||||
|
--local tile = mget(x/tile_width,y/tile_height)
|
||||||
|
local tile = get_layer_tile(x/tile_width,y/tile_height,3)
|
||||||
|
local has_flag = fget(tile,tile_type)
|
||||||
|
--last_coll = fget(tile)
|
||||||
|
return has_flag
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.is_tile_solid(x,y)
|
||||||
|
return is_tile(1,x,y) == 1
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.can_move(x,y)
|
||||||
|
return is_tile(0,x,y)
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
131
src/weapons.lua
131
src/weapons.lua
|
|
@ -22,27 +22,61 @@ bullet = {
|
||||||
destroy_sprite_index=66,
|
destroy_sprite_index=66,
|
||||||
life=100,
|
life=100,
|
||||||
damage=1,
|
damage=1,
|
||||||
draw=function(self)
|
-- draw=function(self)
|
||||||
--pset(self.x,self.y,8)
|
-- --pset(self.x,self.y,8)
|
||||||
spr(self.spriteIndex,self.x,self.y)
|
-- spr(self.spriteIndex,self.x,self.y)
|
||||||
end,
|
-- end,
|
||||||
update=function(self)
|
-- update=function(self)
|
||||||
self.x+=self.dx
|
-- self.x+=self.dx
|
||||||
self.y+=self.dy
|
-- self.y+=self.dy
|
||||||
|
|
||||||
self.life-=1
|
-- self.life-=1
|
||||||
if self.life<0 then
|
-- if self.life<0 then
|
||||||
del(bullets,self)
|
-- del(bullets,self)
|
||||||
-- TODO: Create particle
|
-- -- TODO: Create particle
|
||||||
end
|
-- end
|
||||||
|
|
||||||
self.check_collision(self)
|
-- self.check_collision(self)
|
||||||
end,
|
-- end,
|
||||||
check_collision=function(self)
|
-- check_collision=function(self)
|
||||||
-- If Collide with wall destroy self and create particle
|
-- -- If Collide with wall destroy self and create particle
|
||||||
|
|
||||||
end
|
-- end
|
||||||
}
|
}
|
||||||
|
bullet.__index = bullet
|
||||||
|
function bullet:new(x, y, dx, dy)
|
||||||
|
local o = setmetatable({}, bullet)
|
||||||
|
o.x = x
|
||||||
|
o.y = y
|
||||||
|
o.dx = dx
|
||||||
|
o.dy = dy
|
||||||
|
--o.life = 100
|
||||||
|
--o.spriteIndex = 80
|
||||||
|
--o.destroy_sprite_index = 66
|
||||||
|
--o.damage = 1
|
||||||
|
return o
|
||||||
|
end
|
||||||
|
|
||||||
|
function bullet:check_collision()
|
||||||
|
--
|
||||||
|
end
|
||||||
|
|
||||||
|
function bullet:update()
|
||||||
|
self.x+=self.dx
|
||||||
|
self.y+=self.dy
|
||||||
|
|
||||||
|
self.life-=1
|
||||||
|
if self.life<0 then
|
||||||
|
del(bullets,self)
|
||||||
|
-- TODO: Create particle
|
||||||
|
end
|
||||||
|
|
||||||
|
self.check_collision()
|
||||||
|
end
|
||||||
|
|
||||||
|
function bullet:draw()
|
||||||
|
spr(self.spriteIndex,self.x,self.y)
|
||||||
|
end
|
||||||
|
|
||||||
function M.create_bullet(new_x, new_y, dir_x, dir_y)
|
function M.create_bullet(new_x, new_y, dir_x, dir_y)
|
||||||
-- Calculate the length of the direction vector
|
-- Calculate the length of the direction vector
|
||||||
|
|
@ -52,45 +86,40 @@ function M.create_bullet(new_x, new_y, dir_x, dir_y)
|
||||||
local normalized_dir_x = dir_x / length
|
local normalized_dir_x = dir_x / length
|
||||||
local normalized_dir_y = dir_y / length
|
local normalized_dir_y = dir_y / length
|
||||||
|
|
||||||
b = bullet
|
local b = bullet:new(new_x, new_y, normalized_dir_x * 2, normalized_dir_y * 2)
|
||||||
b.life = 100
|
|
||||||
b.x = new_x
|
|
||||||
b.y = new_y
|
|
||||||
b.dx = normalized_dir_x * 2
|
|
||||||
b.dy = normalized_dir_y * 2
|
|
||||||
|
|
||||||
--add(bullets, b)
|
add(bullets, b)
|
||||||
|
|
||||||
add(bullets, {
|
-- add(bullets, {
|
||||||
x=new_x,
|
-- x=new_x,
|
||||||
y=new_y,
|
-- y=new_y,
|
||||||
dx=normalized_dir_x * 2,
|
-- dx=normalized_dir_x * 2,
|
||||||
dy=normalized_dir_y * 2,
|
-- dy=normalized_dir_y * 2,
|
||||||
spriteIndex=80,
|
-- spriteIndex=80,
|
||||||
destroy_sprite_index=66,
|
-- destroy_sprite_index=66,
|
||||||
life=100,
|
-- life=100,
|
||||||
damage=1,
|
-- damage=1,
|
||||||
draw=function(self)
|
-- draw=function(self)
|
||||||
--pset(self.x,self.y,8)
|
-- --pset(self.x,self.y,8)
|
||||||
spr(self.spriteIndex,self.x,self.y)
|
-- spr(self.spriteIndex,self.x,self.y)
|
||||||
end,
|
-- end,
|
||||||
update=function(self)
|
-- update=function(self)
|
||||||
self.x+=self.dx
|
-- self.x+=self.dx
|
||||||
self.y+=self.dy
|
-- self.y+=self.dy
|
||||||
|
|
||||||
self.life-=1
|
-- self.life-=1
|
||||||
if self.life<0 then
|
-- if self.life<0 then
|
||||||
del(bullets,self)
|
-- del(bullets,self)
|
||||||
-- TODO: Create particle
|
-- -- TODO: Create particle
|
||||||
end
|
-- end
|
||||||
|
|
||||||
self.check_collision(self)
|
-- self.check_collision(self)
|
||||||
end,
|
-- end,
|
||||||
check_collision=function(self)
|
-- check_collision=function(self)
|
||||||
-- If Collide with wall destroy self and create particle
|
-- -- If Collide with wall destroy self and create particle
|
||||||
|
|
||||||
end
|
-- end
|
||||||
})
|
-- })
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue