aboutsummaryrefslogtreecommitdiff
path: root/gamemode/core/npcmap/cl_npcmap.lua
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2016-11-27 22:02:47 -0500
committerAlexander Pickering <alexandermpickering@gmail.com>2016-11-27 22:02:47 -0500
commit2c4329e2b6e19182a441f79a5c3010011f8ae767 (patch)
treee4d8cd88690bed4cfacf2d4df39bdeed97b376f8 /gamemode/core/npcmap/cl_npcmap.lua
parent5f2a8015bd5d2a42e79038bb52f20260d8d97ba0 (diff)
downloadartery-2c4329e2b6e19182a441f79a5c3010011f8ae767.tar.gz
artery-2c4329e2b6e19182a441f79a5c3010011f8ae767.tar.bz2
artery-2c4329e2b6e19182a441f79a5c3010011f8ae767.zip
Vairous updates
Diffstat (limited to 'gamemode/core/npcmap/cl_npcmap.lua')
-rw-r--r--gamemode/core/npcmap/cl_npcmap.lua162
1 files changed, 162 insertions, 0 deletions
diff --git a/gamemode/core/npcmap/cl_npcmap.lua b/gamemode/core/npcmap/cl_npcmap.lua
new file mode 100644
index 0000000..5a9de7e
--- /dev/null
+++ b/gamemode/core/npcmap/cl_npcmap.lua
@@ -0,0 +1,162 @@
+
+--local tblf = include("/../gamemodes/artery/gamemode/utility/mapfuncs.lua")
+print("Hello from cl_ncpmap in core")
+local drawmap = false
+hook.Add( "ScoreboardShow", "ShowNPCMap", function()
+ print("Showing npc map")
+ drawmap = true
+ return true
+end )
+hook.Add( "ScoreboardHide", "ShowNPCMap", function()
+ print("Hiding npc map")
+ drawmap = false
+end )
+local white = Color( 255, 255, 255, 255 )
+
+local mapicons = --[[mapicons or]] {
+ ["global"] = {
+ ["isleaf"] = false,
+ ["border"] = { {-10000,-10000},
+ {-10000,10000},
+ {10000,10000},
+ {10000,-10000}
+ },
+ }
+}
+
+hook.Add( "HUDPaint", "paintsprites", function()
+ local function drawsubarea(node)
+ print("drawing")
+ PrintTable(node)
+ if node.isleaf then
+ render.SetMaterial( node.material )
+ render.DrawSprite( node.pos, 64, 64, white )
+ print("Actually drawing")
+ PrintTable(node)
+ else
+ if not node.icons then
+ print("found area without any icons!")
+ for k,v in pairs(node) do print(k,":",v) end
+ end
+ for k,v in pairs(node.icons or {}) do
+ drawsubarea(v)
+ end
+ end
+ end
+ if drawmap then
+ print("starting this draw")
+ cam.Start3D()
+ drawsubarea(mapicons["global"])
+ cam.End3D()
+ print("done with this draw")
+ end
+end )
+
+--When the player loads in, load the npcmap for this map
+hook.Add("Initialize","loadmapicons",function()
+ LocalPlayer().MapIcons = LocalPlayer().MapIcons or {}
+ local mapname = game.GetMap()
+ if not file.Exists("artery/client/"..mapname,"DATA") then
+ file.CreateDir("artery/client/"..mapname)
+ end
+
+ local mapiconstxt = file.Read("artery/client/"..mapname.."/known.txt")
+ for k,v in pairs(string.Explode("\r?\n",mapiconstxt,true)) do
+ local isleaf = tobool(v[1])
+ local ttbl = string.Explode(",",v)
+ if isleaf then
+ local subarea = ttbl[2]
+ local material = ttbl[3]
+ local pos = Vector(ttbl[4],ttbl[5],ttbl[6])
+ else
+ local name = v[2]
+ local boundry = {}
+ for i = 3, #ttbl, 3 do
+ boundry[#boundry+1] = ttbl[i],ttbl[i + 1],ttbl[i + 2]
+ end
+ end
+ end
+end)
+
+--When the player disconnects (or changes levels) save the npcmap
+
+--Add an icon to the map
+local function addmapicon(material, subarea, position)
+ print("adding map icon, material:",material,"subarea:",subarea,"bordertbl:",bordertbl)
+ print("mat",material,"subarea",subarea,"position",position)
+ local parts = string.Explode(":",subarea)
+ print("parts:",parts)
+ PrintTable(parts)
+ local cursor = mapicons
+ for k,v in pairs(parts) do
+ print("Traverseing down tree:",k,v)
+ print("cursor was")
+ PrintTable(cursor)
+ if cursor[v] == nil then cursor[v] = {} end
+ cursor = cursor[v]
+ print("cursor is")
+ PrintTable(cursor)
+ end
+ if cursor.isleaf and v.pos == position then return end
+ cursor.icons = cursor.icons or {}
+ for k,v in pairs(cursor.icons) do
+ if v.pos == position then return end --This position already has an icon!
+ end
+ table.insert(cursor.icons,{
+ ["isleaf"] = true,
+ ["material"] = Material(material),
+ ["pos"] = position,
+ })
+ assert(type(cursor) == "table","Attempted to add subarea that dosen't exist:" .. subarea)
+end
+
+local function addmaparea(material, subarea, bordertbl)
+ print("adding map area, material:",material,"subarea:",subarea,"bordertbl:",bordertbl)
+ local parts = string.Explode(":",subarea)
+ print("parts:",parts)
+ PrintTable(parts)
+ local cursor = mapicons
+ if #parts > 1 then
+ for k,v in pairs(parts) do
+ print("Traverseing down tree:",k,v)
+ cursor = cursor[v]
+ end
+ end
+
+ print("Cursor is",cursor)
+ if cursor ~= nil then
+ cursor[subarea] = {
+ ["isleaf"] = false,
+ ["material"] = "",
+ ["border"] = bordertbl,
+ ["subparts"] = {}
+ }
+ else
+ print("Error, cursor was nil!")
+ end
+end
+--[[
+addmaparea("","global",{
+ {-10000,-10000},
+ {-10000,10000},
+ {10000,10000},
+ {10000,-10000}
+})
+]]
+
+net.Receive("addmapicon",function()
+ print("got recieve for map icon")
+ local matstr = net.ReadString()
+ local subarea = net.ReadString()
+ local matpos = net.ReadVector()
+ addmapicon(matstr,subarea,matpos)
+ print("MapIcons is now")
+ PrintTable(mapicons)
+end)
+
+net.Receive("addmaparea",function()
+ print("got receive for map area")
+ local matstr = net.ReadString()
+ local subarea = net.ReadString()
+ local boarders = net.ReadTable()
+end)