Add player, fix rectangle, add basic ammunition
This commit is contained in:
parent
1cb5641cc4
commit
20ffc8f827
6 changed files with 110 additions and 6 deletions
|
@ -23,7 +23,7 @@ Rectangle = Class{
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
|
||||||
update = function(self)
|
update = function(self, dt)
|
||||||
PhysicsEntity.update(self, dt)
|
PhysicsEntity.update(self, dt)
|
||||||
|
|
||||||
self.x, self.y = self.fixture:getBoundingBox()
|
self.x, self.y = self.fixture:getBoundingBox()
|
||||||
|
@ -35,8 +35,16 @@ Rectangle = Class{
|
||||||
if self.img ~= nil then
|
if self.img ~= nil then
|
||||||
love.graphics.draw(self.img, self.quad, self.body:getX(), self.body:getY(), self.angle, 1, 1, self.xsize / 2, self.ysize / 2)
|
love.graphics.draw(self.img, self.quad, self.body:getX(), self.body:getY(), self.angle, 1, 1, self.xsize / 2, self.ysize / 2)
|
||||||
else
|
else
|
||||||
love.graphics.rectangle("fill", self.x, self.y, self.xsize, self.ysize)
|
love.graphics.push()
|
||||||
|
love.graphics.translate(self.body:getX(), self.body:getY())
|
||||||
|
love.graphics.rotate(self.angle)
|
||||||
|
love.graphics.rectangle("fill", -self.xsize / 2, -self.ysize / 2, self.xsize, self.ysize)
|
||||||
|
love.graphics.pop()
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
setAngle = function(self, angle)
|
||||||
|
self.body:setAngle(deg_to_rad(angle))
|
||||||
|
end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
34
entities/vickers77.lua
Normal file
34
entities/vickers77.lua
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
Class = require 'hump.class'
|
||||||
|
require 'entities/physicsentity'
|
||||||
|
require 'settings'
|
||||||
|
|
||||||
|
Vickers77 = Class{
|
||||||
|
__includes = Rectangle,
|
||||||
|
|
||||||
|
MAX_LIFETIME = 60 * 5,
|
||||||
|
img = nil,
|
||||||
|
frame = 0,
|
||||||
|
|
||||||
|
init = function(self, x, y, level)
|
||||||
|
local xsize = 0.35 * PIXELS_PER_METER
|
||||||
|
local ysize = 0.1 * PIXELS_PER_METER
|
||||||
|
|
||||||
|
Rectangle.init(self, x, y, level, "dynamic", 0.2, xsize, ysize, 1000, nil)
|
||||||
|
self.body:setBullet(true)
|
||||||
|
end;
|
||||||
|
|
||||||
|
update = function(self, dt)
|
||||||
|
Rectangle.update(self, dt)
|
||||||
|
|
||||||
|
self.frame = self.frame + 1
|
||||||
|
|
||||||
|
if self.frame >= self.MAX_LIFETIME then
|
||||||
|
self:delete()
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
draw = function(self)
|
||||||
|
Rectangle.draw(self)
|
||||||
|
end;
|
||||||
|
}
|
||||||
|
|
|
@ -1,10 +1,17 @@
|
||||||
Gamestate = require 'hump.gamestate'
|
Gamestate = require 'hump.gamestate'
|
||||||
require 'level'
|
require 'level'
|
||||||
|
require 'player'
|
||||||
|
require 'entities/vickers77'
|
||||||
|
|
||||||
level_state = {}
|
level_state = {}
|
||||||
|
|
||||||
players = {}
|
local players = {
|
||||||
level_music = nil
|
[1] = Player(1, 'flux'),
|
||||||
|
[2] = Player(2, 'Nicd')
|
||||||
|
}
|
||||||
|
|
||||||
|
local level_music = nil
|
||||||
|
local current_level = nil
|
||||||
|
|
||||||
function level_state:init()
|
function level_state:init()
|
||||||
end
|
end
|
||||||
|
@ -50,6 +57,8 @@ function level_state:leave(bool)
|
||||||
end
|
end
|
||||||
|
|
||||||
function level_state:keypressed(key, unicode)
|
function level_state:keypressed(key, unicode)
|
||||||
|
print('Somebody pressed ' .. key)
|
||||||
|
|
||||||
-- Ctrl + R restarts current level.
|
-- Ctrl + R restarts current level.
|
||||||
if key == "r"
|
if key == "r"
|
||||||
and (love.keyboard.isDown("lctrl")
|
and (love.keyboard.isDown("lctrl")
|
||||||
|
@ -57,13 +66,23 @@ function level_state:keypressed(key, unicode)
|
||||||
|
|
||||||
current_level.reset = true
|
current_level.reset = true
|
||||||
else
|
else
|
||||||
-- Do something
|
for id, player in pairs(players) do
|
||||||
|
player:press(key)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local shot = Vickers77(200, 700, current_level)
|
||||||
|
shot:setAngle(-89)
|
||||||
|
shot:punch(-89, 10000)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function level_state:keyreleased(key, unicode)
|
function level_state:keyreleased(key, unicode)
|
||||||
|
print('Somebody released ' .. key)
|
||||||
|
|
||||||
|
for id, player in pairs(players) do
|
||||||
|
player:release(key)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
Gamestate = require 'hump.gamestate'
|
Gamestate = require 'hump.gamestate'
|
||||||
Class = require 'hump.class'
|
|
||||||
|
|
||||||
menu_state = {}
|
menu_state = {}
|
||||||
|
|
||||||
|
|
28
player.lua
Normal file
28
player.lua
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
Class = require 'hump/class'
|
||||||
|
require 'settings'
|
||||||
|
|
||||||
|
Player = Class{
|
||||||
|
init = function(self, id, name)
|
||||||
|
self.id = id
|
||||||
|
self.name = name
|
||||||
|
self.keys = KEYMAP[self.id]
|
||||||
|
|
||||||
|
print(self.name .. ' (' .. self.id .. ') ready for action!')
|
||||||
|
end;
|
||||||
|
|
||||||
|
press = function(self, key)
|
||||||
|
for action, keycode in pairs(self.keys) do
|
||||||
|
if key == keycode then
|
||||||
|
print(self.name .. ' pressed ' .. action .. '!')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
release = function(self, key)
|
||||||
|
for action, keycode in pairs(self.keys) do
|
||||||
|
if key == keycode then
|
||||||
|
print(self.name .. ' released ' .. action .. '!')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
}
|
16
settings.lua
16
settings.lua
|
@ -5,3 +5,19 @@ PIXELS_PER_METER = 10
|
||||||
|
|
||||||
GRAVITY_X = 0
|
GRAVITY_X = 0
|
||||||
GRAVITY_Y = 9.82599 * PIXELS_PER_METER
|
GRAVITY_Y = 9.82599 * PIXELS_PER_METER
|
||||||
|
|
||||||
|
KEYMAP = {
|
||||||
|
[1] = {
|
||||||
|
ccw = 'k',
|
||||||
|
cw = 'l',
|
||||||
|
flip = 'i',
|
||||||
|
shoot = 'o'
|
||||||
|
},
|
||||||
|
|
||||||
|
[2] = {
|
||||||
|
ccw = 'a',
|
||||||
|
cw = 's',
|
||||||
|
flip = 'q',
|
||||||
|
shoot = 'w'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue