From 1524b7cc7b8e6e18cc1575118e87ea464d6ae494 Mon Sep 17 00:00:00 2001
From: Charles Lindsay <chaz@chazomatic.us>
Date: Fri, 8 Jul 2016 21:38:59 -0700
Subject: [PATCH] Upgrade to Lua 5.3
It's been out for a while, might as well keep current.
The C code is pretty easy--unsigneds just become integers, no big whoop.
The lua code is a little trickier since every math operation has to
(gets to?) take the new integer type into account. I think I got it all
ok, might've even gotten a little pedantic in there... but if this isn't
the place for pedantry, what is?
---
configure.ac | 6 +++---
l3/l3.c | 2 +-
l3/level.c | 18 +++++++++---------
l3/sync.c | 2 +-
res/base/bot.lua | 8 ++++----
res/base/entities/bomn.lua | 4 ++--
res/base/entities/dude.lua | 8 ++++----
res/base/generate.lua | 22 +++++++++++-----------
res/base/sprites/blast.lua | 4 ++--
9 files changed, 37 insertions(+), 37 deletions(-)
diff --git a/configure.ac b/configure.ac
index 1833c5b..941d132 100644
--- a/configure.ac
+++ b/configure.ac
@@ -18,9 +18,9 @@ PKG_CHECK_MODULES([SDL], [
SDL2_image >= 2.0.0
SDL2_ttf >= 2.0.12
])
-PKG_CHECK_MODULES([LUA], [lua5.2 >= 5.2.0], [], dnl Linux package name
- [PKG_CHECK_MODULES([LUA], [lua-5.2 >= 5.2.0], [], dnl BSD
- [PKG_CHECK_MODULES([LUA], [lua >= 5.2.0])] dnl OpenSUSE (et al.?)
+PKG_CHECK_MODULES([LUA], [lua5.3 >= 5.3.0], [], dnl Linux package name
+ [PKG_CHECK_MODULES([LUA], [lua-5.3 >= 5.3.0], [], dnl BSD
+ [PKG_CHECK_MODULES([LUA], [lua >= 5.3.0])] dnl OpenSUSE (et al.?)
)])
AC_CHECK_HEADERS([argp.h], [],
[AC_MSG_ERROR([cannot find required header argp.h])]
diff --git a/l3/l3.c b/l3/l3.c
index e540f09..9392b48 100644
--- a/l3/l3.c
+++ b/l3/l3.c
@@ -128,7 +128,7 @@ static void set_tile_images(lua_State *restrict l) {
b3_fatal("Missing global table %s", L3_TILE_IMAGES_NAME);
for(int i = 0; i < B3_TILE_COUNT; i++) {
- lua_pushunsigned(l, (lua_Unsigned)i);
+ lua_pushinteger(l, (lua_Integer)i);
lua_gettable(l, -2);
b3_image **p_image = luaL_testudata(l, -1, IMAGE_METATABLE);
diff --git a/l3/level.c b/l3/level.c
index f566237..4f0ae97 100644
--- a/l3/level.c
+++ b/l3/level.c
@@ -40,7 +40,7 @@ l3_level *push_new_level(lua_State *restrict l) {
static int level_new(lua_State *restrict l) {
b3_size size = check_size(l, 1);
- int max_entities = luaL_checkint(l, 2);
+ int max_entities = (int)luaL_checkinteger(l, 2);
l3_level *level = push_new_level(l);
@@ -84,14 +84,14 @@ static int level_get_tile(lua_State *restrict l) {
l3_level *level = check_level(l, 1);
b3_pos pos = check_map_pos(l, 2, level->map);
- lua_pushunsigned(l, (lua_Unsigned)b3_get_map_tile(level->map, &pos));
+ lua_pushinteger(l, (lua_Integer)b3_get_map_tile(level->map, &pos));
return 1;
}
static int level_set_tile(lua_State *restrict l) {
l3_level *level = check_level(l, 1);
b3_pos pos = check_map_pos(l, 2, level->map);
- b3_tile tile = (b3_tile)luaL_checkunsigned(l, 3);
+ b3_tile tile = (b3_tile)luaL_checkinteger(l, 3);
b3_set_map_tile(level->map, &pos, tile);
@@ -231,7 +231,7 @@ static int sprentity_set_image(lua_State *restrict l) {
// Works on either "sprites" or entities.
static int sprentity_set_z_order(lua_State *restrict l) {
b3_entity *entity = check_sprentity(l, 1);
- int z_order = luaL_checkint(l, 2);
+ int z_order = (int)luaL_checkinteger(l, 2);
b3_set_entity_z_order(entity, z_order);
@@ -263,7 +263,7 @@ static int level_new_entity(lua_State *restrict l) {
static int level_get_entity(lua_State *restrict l) {
l3_level *level = check_level(l, 1);
- b3_entity_id id = (b3_entity_id)luaL_checkunsigned(l, 2);
+ b3_entity_id id = (b3_entity_id)luaL_checkinteger(l, 2);
b3_entity *entity = b3_get_entity(level->entities, id);
if(entity) {
@@ -279,14 +279,14 @@ static int level_get_entity(lua_State *restrict l) {
static int level_set_dude(lua_State *restrict l) {
l3_level *level = check_level(l, 1);
- int i = luaL_checkint(l, 2) - 1;
+ int i = (int)luaL_checkinteger(l, 2) - 1;
luaL_argcheck(
l,
i >= 0 && i < L3_DUDE_COUNT,
2,
"dude index out of bounds"
);
- b3_entity_id id = (b3_entity_id)luaL_checkunsigned(l, 3);
+ b3_entity_id id = (b3_entity_id)luaL_checkinteger(l, 3);
level->dude_ids[i] = id;
@@ -298,7 +298,7 @@ static int entity_get_id(lua_State *restrict l) {
b3_entity *entity = check_entity(l, 1);
b3_entity_id id = b3_get_entity_id(entity);
- lua_pushunsigned(l, (lua_Unsigned)id);
+ lua_pushinteger(l, (lua_Integer)id);
return 1;
}
@@ -328,7 +328,7 @@ static int entity_get_life(lua_State *restrict l) {
static int entity_set_life(lua_State *restrict l) {
b3_entity *entity = check_entity(l, 1);
- int life = luaL_checkint(l, 2);
+ int life = (int)luaL_checkinteger(l, 2);
b3_set_entity_life(entity, life);
diff --git a/l3/sync.c b/l3/sync.c
index ed0cd08..6e470a4 100644
--- a/l3/sync.c
+++ b/l3/sync.c
@@ -130,7 +130,7 @@ void l3_sync_deleted(b3_entity_id ids[], int count) {
lua_createtable(lua, count, 0);
for(int i = 0; i < count; i++) {
lua_pushinteger(lua, (lua_Integer)(i + 1));
- lua_pushunsigned(lua, (lua_Unsigned)ids[i]);
+ lua_pushinteger(lua, (lua_Integer)ids[i]);
lua_settable(lua, -3);
}
diff --git a/res/base/bot.lua b/res/base/bot.lua
index d873c54..e0c8b59 100644
--- a/res/base/bot.lua
+++ b/res/base/bot.lua
@@ -36,7 +36,7 @@ end
function Bot:co_start(elapsed)
-- Wait just a tick (beyond what's already elapsed, which we ignore) to be a
-- little more human at the start.
- self:co_wait(self.action_time + math.random(0, 5) / 10)
+ self:co_wait(self.action_time + math.random(0, 5) / 10.0)
while true do
self:co_rethink()
@@ -55,7 +55,7 @@ function Bot:co_rethink(danger)
end
function Bot:do_until(act, done)
- local elapsed = 0
+ local elapsed = 0.0
while not done(elapsed) do
elapsed = elapsed + act()
end
@@ -229,7 +229,7 @@ function Bot:co_run_away(danger)
-- TODO: omit paths (unless it's the only one) that go through a dude.
local function interrupt(elapsed)
- return elapsed > 3
+ return elapsed > 3.0
end
if #safe == 0 then
@@ -252,7 +252,7 @@ function Bot:co_hunt()
end
local function interrupt(elapsed)
- return elapsed > 1 or self:get_danger()
+ return elapsed > 1.0 or self:get_danger()
end
if not target then
diff --git a/res/base/entities/bomn.lua b/res/base/entities/bomn.lua
index 9ac571d..270a48f 100644
--- a/res/base/entities/bomn.lua
+++ b/res/base/entities/bomn.lua
@@ -29,7 +29,7 @@ local serial = require("serial")
local Blast = require("sprites.blast")
-Bomn.TIME = 3
+Bomn.TIME = 3.0
Bomn.RADIUS = 8
Bomn.ANIMATION = nil
@@ -149,7 +149,7 @@ end
function Bomn:l3_update(backing, elapsed)
self.time = self.time - elapsed
- if self.time <= 0 then
+ if self.time <= 0.0 then
self:explode(backing)
return
end
diff --git a/res/base/entities/dude.lua b/res/base/entities/dude.lua
index c016701..9ad5d43 100644
--- a/res/base/entities/dude.lua
+++ b/res/base/entities/dude.lua
@@ -29,7 +29,7 @@ local Entities = require("entities")
local Bot = require("bot")
-Dude.SUPER_TIME = 10
+Dude.SUPER_TIME = 10.0
Dude.BUMP_DAMAGE = 1
Dude.BLAST_DAMAGE = 5
@@ -83,7 +83,7 @@ function Dude:set_visual(backing)
end
function Dude:is_super()
- return self.super_time > 0
+ return self.super_time > 0.0
end
function Dude:can_fire()
@@ -98,7 +98,7 @@ function Dude:superify(backing)
end
function Dude:unsuperify(backing)
- self.super_time = 0
+ self.super_time = 0.0
-- If we ever call unsuperify before the time is actually out, we'll also
-- need a self:set_dirty(backing) call here.
@@ -169,7 +169,7 @@ function Dude:l3_update(backing, elapsed)
if self:is_super() then
self.super_time = self.super_time - elapsed
- if self.super_time <= 0 then
+ if self.super_time <= 0.0 then
self:unsuperify(backing)
end
end
diff --git a/res/base/generate.lua b/res/base/generate.lua
index df5f68c..0100bbb 100644
--- a/res/base/generate.lua
+++ b/res/base/generate.lua
@@ -56,16 +56,16 @@ end
function Generator:set_spawns()
local quads = {
- core.Pos(MAP_SIZE.width / 2, MAP_SIZE.height / 2),
+ core.Pos(MAP_SIZE.width // 2, MAP_SIZE.height // 2),
core.Pos(0, 0),
- core.Pos(MAP_SIZE.width / 2, 0),
- core.Pos(0, MAP_SIZE.height / 2),
+ core.Pos(MAP_SIZE.width // 2, 0),
+ core.Pos(0, MAP_SIZE.height // 2),
}
for i, q in ipairs(quads) do
self.spawns[i] = core.Pos(
- math.random(q.x + 2, q.x + MAP_SIZE.width / 2 - 2),
- math.random(q.y + 2, q.y + MAP_SIZE.height / 2 - 2)
+ math.random(q.x + 2, q.x + MAP_SIZE.width // 2 - 2),
+ math.random(q.y + 2, q.y + MAP_SIZE.height // 2 - 2)
)
end
end
@@ -79,8 +79,8 @@ end
function Generator:add_walls()
local fourth = core.Size(
- math.floor(MAP_SIZE.width / 4),
- math.floor(MAP_SIZE.height / 4)
+ math.floor(MAP_SIZE.width // 4),
+ math.floor(MAP_SIZE.height // 4)
)
local pos = {
core.Pos(fourth.width, fourth.height),
@@ -111,7 +111,7 @@ function Generator:add_walls()
for _, p in ipairs(pos) do
wall_grid(p)
end
- wall_grid(core.Pos(MAP_SIZE.width / 2, MAP_SIZE.height / 2))
+ wall_grid(core.Pos(MAP_SIZE.width // 2, MAP_SIZE.height // 2))
end
function Generator:fill_space()
@@ -139,8 +139,8 @@ function Generator:spawn_crates()
local function bisect(a, b)
-- Rounded up or down at random.
return core.Pos(
- math.floor((a.x + b.x) / 2 + 0.5 * math.random(0, 1)),
- math.floor((a.y + b.y) / 2 + 0.5 * math.random(0, 1))
+ math.floor((a.x + b.x) / 2.0 + 0.5 * math.random(0, 1)),
+ math.floor((a.y + b.y) / 2.0 + 0.5 * math.random(0, 1))
)
end
@@ -163,7 +163,7 @@ function Generator:spawn_crates()
return true
end
- local center = core.Pos(MAP_SIZE.width / 2, MAP_SIZE.height / 2)
+ local center = core.Pos(MAP_SIZE.width // 2, MAP_SIZE.height // 2)
span_dir = core.Pos(0, 1)
util.line(center, bisect(self.spawns[1], self.spawns[3]), crates)
diff --git a/res/base/sprites/blast.lua b/res/base/sprites/blast.lua
index e8196ad..019f918 100644
--- a/res/base/sprites/blast.lua
+++ b/res/base/sprites/blast.lua
@@ -27,7 +27,7 @@ local core = require("core")
local util = require("util")
-Blast.TIME = 1
+Blast.TIME = 1.0
function Blast:init_animation()
self.animation = {}
@@ -63,7 +63,7 @@ end
function Blast:l3_update(backing, elapsed)
self.time = self.time - elapsed
- if self.time <= 0 then
+ if self.time <= 0.0 then
self:destroy(backing)
return
end