Reduced script verbosity to a degree

This commit is contained in:
Kayne Ruse
2015-03-08 20:08:12 +11:00
parent 01502372c9
commit 501b1e9814
17 changed files with 90 additions and 536 deletions
+25 -25
View File
@@ -1,4 +1,4 @@
local Region = require("map_system").Region
local regionAPI = require("region")
local mapMaker = {}
@@ -25,38 +25,38 @@ mapMaker.edges.west = -1
function mapMaker.SmoothEdgesSimple(r)
--make and pad an array to use
local shiftArray = {}
for i = 1, Region.GetWidth(r) do
for i = 1, regionAPI.GetWidth(r) do
shiftArray[i] = {}
for j = 1, Region.GetHeight(r) do
for j = 1, regionAPI.GetHeight(r) do
shiftArray[i][j] = 0
end
end
--build the array
for i = 1, Region.GetWidth(r) do
for j = 1, Region.GetHeight(r) do
--if (not region edge) and (west tile < this tile), etc.
if i > 1 and Region.GetTile(r, i - 1, j, 1) < Region.GetTile(r, i, j, 1) then
for i = 1, regionAPI.GetWidth(r) do
for j = 1, regionAPI.GetHeight(r) do
--if (not regionAPI edge) and (west tile < this tile), etc.
if i > 1 and regionAPI.GetTile(r, i - 1, j, 1) < regionAPI.GetTile(r, i, j, 1) then
shiftArray[i][j] = shiftArray[i][j] + mapMaker.edges.west
end
if j > 1 and Region.GetTile(r, i, j - 1, 1) < Region.GetTile(r, i, j, 1) then
if j > 1 and regionAPI.GetTile(r, i, j - 1, 1) < regionAPI.GetTile(r, i, j, 1) then
shiftArray[i][j] = shiftArray[i][j] + mapMaker.edges.north
end
if i < Region.GetWidth(r) and Region.GetTile(r, i + 1, j, 1) < Region.GetTile(r, i, j, 1) then
if i < regionAPI.GetWidth(r) and regionAPI.GetTile(r, i + 1, j, 1) < regionAPI.GetTile(r, i, j, 1) then
shiftArray[i][j] = shiftArray[i][j] + mapMaker.edges.east
end
if j < Region.GetHeight(r) and Region.GetTile(r, i, j + 1, 1) < Region.GetTile(r, i, j, 1) then
if j < regionAPI.GetHeight(r) and regionAPI.GetTile(r, i, j + 1, 1) < regionAPI.GetTile(r, i, j, 1) then
shiftArray[i][j] = shiftArray[i][j] + mapMaker.edges.south
end
end
end
--finally apply this
for i = 1, Region.GetWidth(r) do
for j = 1, Region.GetHeight(r) do
for i = 1, regionAPI.GetWidth(r) do
for j = 1, regionAPI.GetHeight(r) do
if shiftArray[i][j] ~= 0 then
Region.SetTile(r, i, j, 2, Region.GetTile(r, i, j, 1) + shiftArray[i][j])
Region.SetTile(r, i, j, 1, Region.GetTile(r, i, j, 1) - 3)
regionAPI.SetTile(r, i, j, 2, regionAPI.GetTile(r, i, j, 1) + shiftArray[i][j])
regionAPI.SetTile(r, i, j, 1, regionAPI.GetTile(r, i, j, 1) - 3)
end
end
end
@@ -65,27 +65,27 @@ end
--custom generation systems here
function mapMaker.DebugIsland(r)
--basic distance check for each tile, placing an island around the world origin
for i = 1, Region.GetWidth(r) do
for j = 1, Region.GetHeight(r) do
local dist = mapMaker.Dist(0, 0, i + Region.GetX(r) -1, j + Region.GetY(r) -1)
for i = 1, regionAPI.GetWidth(r) do
for j = 1, regionAPI.GetHeight(r) do
local dist = mapMaker.Dist(0, 0, i + regionAPI.GetX(r) -1, j + regionAPI.GetY(r) -1)
if dist < 10 then
Region.SetTile(r, i, j, 1, mapMaker.plains)
regionAPI.SetTile(r, i, j, 1, mapMaker.plains)
elseif dist < 12 then
Region.SetTile(r, i, j, 1, mapMaker.sand)
regionAPI.SetTile(r, i, j, 1, mapMaker.sand)
else
Region.SetTile(r, i, j, 1, mapMaker.water)
Region.SetSolid(r, i, j, true)
regionAPI.SetTile(r, i, j, 1, mapMaker.water)
regionAPI.SetSolid(r, i, j, true)
end
end
end
--examples of the smoothing function NOT working correctly
--[[
for j = 1, Region.GetHeight(r) do
Region.SetTile(r, 3, j, 1, mapMaker.dirt)
Region.SetTile(r, 4, j, 1, mapMaker.dirt)
for j = 1, regionAPI.GetHeight(r) do
regionAPI.SetTile(r, 3, j, 1, mapMaker.dirt)
regionAPI.SetTile(r, 4, j, 1, mapMaker.dirt)
Region.SetTile(r, 10, j, 1, mapMaker.dirt)
regionAPI.SetTile(r, 10, j, 1, mapMaker.dirt)
end
--]]
+3 -3
View File
@@ -1,14 +1,14 @@
local Region = require("map_system").Region
local region = require("region")
local mapSaver = {}
function mapSaver.Load(r)
--empty
io.write("map_saver:Load(", Region.GetX(r), ", ", Region.GetY(r), ")\n")
io.write("map_saver:Load(", region.GetX(r), ", ", region.GetY(r), ")\n")
end
function mapSaver.Save(r)
--empty
io.write("map_saver:Save(", Region.GetX(r), ", ", Region.GetY(r), ")\n")
io.write("map_saver:Save(", region.GetX(r), ", ", region.GetY(r), ")\n")
end
--TODO: (3) create a flexible saving & loading system
+39 -71
View File
@@ -1,87 +1,55 @@
print("Lua script check")
--requirements
roomManagerAPI = require("room_manager")
roomAPI = require("room")
mapMaker = require("map_maker")
mapSaver = require("map_saver")
mapSystem = require("map_system")
roomSystem = require("room_system")
characterSystem = require("character_system")
networkSystem = require("network")
triggerSystem = require("trigger_system")
local function dumpTable(t)
print(t)
for k, v in pairs(t) do
print("",k,v)
end
end
--test the room hooks
roomSystem.RoomManager.SetOnCreate(function(room, index)
print("", "Creating room: ", roomSystem.Room.GetName(room), index)
--called ~60 times per second
-- roomSystem.Room.SetOnTick(room, function(room)
-- roomSystem.Room.ForEachCharacter(room, function(character)
-- print(characterSystem.Character.GetHandle(character))
-- end)
--[[
local character = characterSystem.CharacterManager.GetCharacter("handle")
if character ~= nil then
--debugging
local originX, originY = characterSystem.Character.GetOrigin(character)
local motionX, motionY = characterSystem.Character.GetMotion(character)
if motionY < 0 then
characterSystem.Character.SetMotion(character, motionX, 0)
networkSystem.PumpCharacterUpdate(character)
print("Sending: ", motionX, motionY)
end
end
--]]
-- end)
roomManagerAPI.SetOnCreate(function(room, index)
print("", "Creating room: ", roomAPI.GetName(room), index)
end)
roomSystem.RoomManager.SetOnUnload(function(room, index)
print("", "Unloading room: ", roomSystem.Room.GetName(room), index)
roomManagerAPI.SetOnUnload(function(room, index)
print("", "Unloading room: ", roomAPI.GetName(room), index)
end)
--NOTE: room 0 is the first that the client asks for, therefore it must exist
local overworld, uid = roomSystem.RoomManager.CreateRoom("overworld", "overworld.bmp")
roomSystem.Room.Initialize(overworld, mapSaver.Load, mapSaver.Save, mapMaker.DebugIsland, mapSaver.Save)
local overworld, uid = roomManagerAPI.CreateRoom("overworld", "overworld.bmp")
roomAPI.Initialize(overworld, mapSaver.Load, mapSaver.Save, mapMaker.DebugIsland, mapSaver.Save)
--debug: test the trigger system
local pager = roomSystem.Room.GetPager(overworld)
mapSystem.RegionPager.SetTile(pager, 0, 0, 0, mapMaker.dirt)
local triggerMgr = roomSystem.Room.GetTriggerMgr(overworld)
--TODO: (1) What does the trigger script take as a parameter?
triggerSystem.TriggerManager.Create(triggerMgr, "dirt", 0, 0, 0, 0, 32, 32, function(character)
local x, y = characterSystem.Character.GetOrigin(character)
characterSystem.Character.SetOrigin(character, x, y + 128)
networkSystem.PumpCharacterUpdate(character)
--TODO: (0) What userdata type does the trigger script take as a parameter?
regionPagerAPI = require("region_pager")
triggerManagerAPI = require("trigger_manager")
function createTrigger(handle, room, x, y, script)
local pager = roomAPI.GetPager(room)
--place the indicator tile
regionPagerAPI.SetTile(pager, x, y, 0, mapMaker.dirt)
regionPagerAPI.SetTile(pager, x, y, 1, mapMaker.blank)
regionPagerAPI.SetTile(pager, x, y, 2, mapMaker.blank)
--create the trigger object
triggerManagerAPI.Create(
roomAPI.GetTriggerMgr(room), handle, x, y,
0, 0, 32, 32, --size of the tiles
script
)
end
characterAPI = require("character")
networkAPI = require("network")
--simple teleporter
createTrigger("trigger 1", overworld, 0, 0, function(character)
local x, y = characterAPI.GetOrigin(character)
characterAPI.SetOrigin(character, x, y + 128)
networkAPI.PumpCharacterUpdate(character)
end)
--debugging
function dumpTrigger(t)
local originX, originY = triggerSystem.Trigger.GetOrigin(t)
local bx, by, bw, bh = triggerSystem.Trigger.GetBounds(t)
local s = triggerSystem.Trigger.GetScript(t)
print(triggerSystem.Trigger.GetHandle(t), originX, originY, bx, by, bw, bh, s)
end
function dumpTable(t)
for k, v in pairs(t) do
print("", k, v)
end
end
--[[
triggerMgr = roomSystem.Room.GetTriggerMgr(overworld)
trigger1, uid1 = triggerSystem.TriggerManager.Create(triggerMgr, "handle1")
trigger2, uid2 = triggerSystem.TriggerManager.Create(triggerMgr, "handle2", 30.2, 40.2)
trigger3, uid3 = triggerSystem.TriggerManager.Create(triggerMgr, "handle3", 30.2, 40.2, 0, 16, 32, 32, function() end)
dumpTrigger(trigger1)
dumpTrigger(trigger2)
dumpTrigger(trigger3)
--]]
print("Finished the lua script")