Add player, fix rectangle, add basic ammunition

This commit is contained in:
Mikko Ahlroth 2014-10-18 17:58:04 +03:00
parent 1cb5641cc4
commit 20ffc8f827
6 changed files with 110 additions and 6 deletions

View file

@ -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
View 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;
}

View file

@ -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

View file

@ -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
View 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;
}

View file

@ -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'
}
}