diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2016-11-27 22:02:47 -0500 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2016-11-27 22:02:47 -0500 |
| commit | 2c4329e2b6e19182a441f79a5c3010011f8ae767 (patch) | |
| tree | e4d8cd88690bed4cfacf2d4df39bdeed97b376f8 /gamemode/core | |
| parent | 5f2a8015bd5d2a42e79038bb52f20260d8d97ba0 (diff) | |
| download | artery-2c4329e2b6e19182a441f79a5c3010011f8ae767.tar.gz artery-2c4329e2b6e19182a441f79a5c3010011f8ae767.tar.bz2 artery-2c4329e2b6e19182a441f79a5c3010011f8ae767.zip | |
Vairous updates
Diffstat (limited to 'gamemode/core')
| -rw-r--r-- | gamemode/core/clienteffects/cl_effects.lua | 12 | ||||
| -rw-r--r-- | gamemode/core/clienteffects/sh_effects.lua | 10 | ||||
| -rw-r--r-- | gamemode/core/clienteffects/sv_effects.lua | 11 | ||||
| -rw-r--r-- | gamemode/core/npcmap/cl_npcmap.lua | 162 | ||||
| -rw-r--r-- | gamemode/core/npcmap/sv_npcmap.lua | 22 |
5 files changed, 217 insertions, 0 deletions
diff --git a/gamemode/core/clienteffects/cl_effects.lua b/gamemode/core/clienteffects/cl_effects.lua new file mode 100644 index 0000000..d51cf7d --- /dev/null +++ b/gamemode/core/clienteffects/cl_effects.lua @@ -0,0 +1,12 @@ + +local effects = {} +effects["weapon_blocked"] = function() + util.ScreenShake( LocalPlayer():GetPos(), 3, 3, 0.25, 100 ) +end + +net.Receive("art_clienteffect",function() + local effectid = net.ReadUInt(32) + local effectname = ART.screen_effect_ids[effectid] + print("Got effect name",effectname) + effects[effectname]() +end) diff --git a/gamemode/core/clienteffects/sh_effects.lua b/gamemode/core/clienteffects/sh_effects.lua new file mode 100644 index 0000000..70f3a79 --- /dev/null +++ b/gamemode/core/clienteffects/sh_effects.lua @@ -0,0 +1,10 @@ +ART = ART or {} + +ART.screen_effect_ids = { + "weapon_blocked" +} + +ART.screen_effect_names = {} +for k,v in pairs(ART.screen_effect_ids) do + ART.screen_effect_names[v] = k +end diff --git a/gamemode/core/clienteffects/sv_effects.lua b/gamemode/core/clienteffects/sv_effects.lua new file mode 100644 index 0000000..2a8e083 --- /dev/null +++ b/gamemode/core/clienteffects/sv_effects.lua @@ -0,0 +1,11 @@ + +ART = ART or {} + +util.AddNetworkString("art_clienteffect") + +ART.ApplyEffect = function(who,effectname) + assert(ART.screen_effect_names[effectname] ~= nil,"Attempted to call a nil effect name:" .. effectname .. ". Valid effect names:" .. table.concat(ART.screen_effect_ids,",")) + net.Start("art_clienteffect") + net.WriteUInt(ART.screen_effect_names[effectname],32) + net.Send(who) +end 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) diff --git a/gamemode/core/npcmap/sv_npcmap.lua b/gamemode/core/npcmap/sv_npcmap.lua new file mode 100644 index 0000000..8368484 --- /dev/null +++ b/gamemode/core/npcmap/sv_npcmap.lua @@ -0,0 +1,22 @@ +if CLIENT then error("You're not supposed to be here!") end +local pmeta = FindMetaTable("Player") + +util.AddNetworkString("addmapicon") +util.AddNetworkString("addmaparea") + +function pmeta:AddMapIcon(icon,subarea,position) + print("adding map icon") + net.Start("addmapicon") + net.WriteString(icon) + net.WriteString(subarea) + net.WriteVector(position) + net.Send(self) +end + +function pmeta:AddMapArea(icon,subarea,bordertbl) + print("adding area") + net.Start("addmaparea") + net.WriteString(icon) + net.WriteString(subarea) + net.WriteTable(bordertbl) +end |
