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;
|
||||
|
||||
update = function(self)
|
||||
update = function(self, dt)
|
||||
PhysicsEntity.update(self, dt)
|
||||
|
||||
self.x, self.y = self.fixture:getBoundingBox()
|
||||
|
@ -35,8 +35,16 @@ Rectangle = Class{
|
|||
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)
|
||||
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;
|
||||
|
||||
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'
|
||||
require 'level'
|
||||
require 'player'
|
||||
require 'entities/vickers77'
|
||||
|
||||
level_state = {}
|
||||
|
||||
players = {}
|
||||
level_music = nil
|
||||
local players = {
|
||||
[1] = Player(1, 'flux'),
|
||||
[2] = Player(2, 'Nicd')
|
||||
}
|
||||
|
||||
local level_music = nil
|
||||
local current_level = nil
|
||||
|
||||
function level_state:init()
|
||||
end
|
||||
|
@ -50,6 +57,8 @@ function level_state:leave(bool)
|
|||
end
|
||||
|
||||
function level_state:keypressed(key, unicode)
|
||||
print('Somebody pressed ' .. key)
|
||||
|
||||
-- Ctrl + R restarts current level.
|
||||
if key == "r"
|
||||
and (love.keyboard.isDown("lctrl")
|
||||
|
@ -57,13 +66,23 @@ function level_state:keypressed(key, unicode)
|
|||
|
||||
current_level.reset = true
|
||||
else
|
||||
-- Do something
|
||||
for id, player in pairs(players) do
|
||||
player:press(key)
|
||||
end
|
||||
end
|
||||
|
||||
local shot = Vickers77(200, 700, current_level)
|
||||
shot:setAngle(-89)
|
||||
shot:punch(-89, 10000)
|
||||
end
|
||||
|
||||
|
||||
function level_state:keyreleased(key, unicode)
|
||||
print('Somebody released ' .. key)
|
||||
|
||||
for id, player in pairs(players) do
|
||||
player:release(key)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
Gamestate = require 'hump.gamestate'
|
||||
Class = require 'hump.class'
|
||||
|
||||
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_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