diff options
Diffstat (limited to 'client/main.lua')
-rw-r--r-- | client/main.lua | 64 |
1 files changed, 38 insertions, 26 deletions
diff --git a/client/main.lua b/client/main.lua index b5d322e..3d7a598 100644 --- a/client/main.lua +++ b/client/main.lua @@ -1,40 +1,42 @@ local enet = require"enet" local words = require"common.words" -local SERVER_HOSTNAME = "ubq323.website" -local PLAYER_SIZE = 30 +-- local SERVER_HOSTNAME = "ubq323.website" +local SERVER_HOSTNAME = "localhost" +local PLAYER_SIZE = 0.7 local local_player = nil +local drawing = require"drawing" +local coords = require"common.coords" +local camera = require"camera".Camera.make() -math.randomseed(os.time()) +-- local pprint=require"common.pprint" +-- pprint.setup{show_all=true} --- { --- pos={100,100}, --- color={love.math.colorFromBytes(0xdf,0x73,0xff)}, --- } -local host,peer +math.randomseed(os.time()) +local host,peer local chunk = require"common.chunk".Chunk.make() -local function draw_player(pl,me) +local function draw_player(pl,islocal) local hplsz = PLAYER_SIZE/2 love.graphics.setColor(pl.color) - love.graphics.rectangle("fill",pl.pos[1]-hplsz,pl.pos[2]-hplsz,PLAYER_SIZE,PLAYER_SIZE) - love.graphics.setColor(0,0,0) - love.graphics.print(tostring(pl.id),pl.pos[1],pl.pos[2]) - if me then - love.graphics.setColor(1,1,1) - love.graphics.rectangle("line",pl.pos[1]-hplsz,pl.pos[2]-hplsz,PLAYER_SIZE,PLAYER_SIZE) + love.graphics.rectangle("fill",pl.pos.x-hplsz,pl.pos.y-hplsz,PLAYER_SIZE,PLAYER_SIZE) + -- love.graphics.print(tostring(pl.id),pl.pos.x,pl.pos.y) + if islocal then + love.graphics.setLineWidth(0.01) + love.graphics.setColor(0.5,0,0) + love.graphics.rectangle("line",pl.pos.x-hplsz,pl.pos.y-hplsz,PLAYER_SIZE,PLAYER_SIZE) end end local remote_players = {} local function update_local_player(pl,dt) - local SPEED = 300 -- pixels/sec + local SPEED = 10 -- pixels/sec local function kd(code) if love.keyboard.isScancodeDown(code) then return 1 else return 0 end end @@ -51,21 +53,25 @@ local function update_local_player(pl,dt) dy = dy / math.sqrt(2) end - pl.pos[1] = pl.pos[1] + SPEED * dt * dx - pl.pos[2] = pl.pos[2] + SPEED * dt * dy + pl.pos.x = pl.pos.x + SPEED * dt * dx + pl.pos.y = pl.pos.y + SPEED * dt * dy pl.pos_dirty = true + + end local function sync_local_player(pl,peer) -- send updated info about local player to server if pl.pos_dirty then - peer:send(words.join("ppos",pl.pos[1],pl.pos[2])) + peer:send(words.join("ppos",pl.pos.x,pl.pos.y)) end end function love.update(dt) if local_player then update_local_player(local_player,dt) + if love.keyboard.isScancodeDown"q" then camera.zoom = camera.zoom*1.05 end + if love.keyboard.isScancodeDown"e" then camera.zoom = camera.zoom/1.05 end sync_local_player(local_player,peer) end repeat @@ -82,7 +88,7 @@ function love.update(dt) r=tonumber(r) g=tonumber(g) b=tonumber(b) - remote_players[id] = {pos={x,y},color={r,g,b},id=id} + remote_players[id] = {pos=coords.Pos.make(x,y),color={r,g,b},id=id} elseif op == "leave" then local id = tonumber(w[2]) remote_players[id]=nil @@ -92,8 +98,8 @@ function love.update(dt) x=tonumber(x) y=tonumber(y) assert(remote_players[id],"wheeze") - remote_players[id].pos[1] = x - remote_players[id].pos[2] = y + remote_players[id].pos.x = x + remote_players[id].pos.y = y elseif op == "you" then local id,x,y,r,g,b = unpack(w,2) id=tonumber(id) @@ -102,7 +108,7 @@ function love.update(dt) r=tonumber(r) g=tonumber(g) b=tonumber(b) - local_player = {pos={x,y},color={r,g,b},id=id} + local_player = {pos=coords.Pos.make(x,y),color={r,g,b},id=id} end end until not ev @@ -110,6 +116,14 @@ end function love.draw() love.graphics.clear(1,1,1) + love.graphics.origin() + if local_player then + camera.pos = local_player.pos + end + camera:apply_trans() + + drawing.draw_chunk(chunk) + if local_player then draw_player(local_player,true) end @@ -117,12 +131,10 @@ function love.draw() draw_player(pl) end - -- require"drawing".drawhex({x=200,y=200},40) - require"drawing".draw_chunk(chunk) - end function love.load() + -- require"profile".start(10,io.open("./trace","w")) host = enet.host_create() peer = host:connect(SERVER_HOSTNAME..":8473") end |