From 8d0e89faf9d472747aff559803e4beedf3f1f888 Mon Sep 17 00:00:00 2001 From: MrZ626 <1046101471@qq.com> Date: Fri, 16 Apr 2021 10:13:54 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E5=AE=8C=E5=96=84USERS?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=EF=BC=8C=E5=8D=87=E7=BA=A7=E5=A4=B4=E5=83=8F?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parts/globalTables.lua | 1 + parts/net.lua | 11 ++++++----- parts/scenes/net_rooms.lua | 2 +- parts/users.lua | 32 +++++++++----------------------- 4 files changed, 17 insertions(+), 29 deletions(-) diff --git a/parts/globalTables.lua b/parts/globalTables.lua index 04e7c4fc..79964d89 100644 --- a/parts/globalTables.lua +++ b/parts/globalTables.lua @@ -250,6 +250,7 @@ SETTING={--Settings 10,13,2,8 }, face={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + dataSaving=false, --Graphic block=true,ghost=.3,center=1, diff --git a/parts/net.lua b/parts/net.lua index 9863a2fe..9770b9f3 100644 --- a/parts/net.lua +++ b/parts/net.lua @@ -120,7 +120,7 @@ function NET.wsclose_stream() WS.close("stream") end ---Account +--Account & User function NET.register(username,email,password) if NET.lock("register")then WS.send("app",JSON.encode{ @@ -141,12 +141,13 @@ function NET.getAccessToken() WS.send("user",JSON.encode{action=0}) end end -function NET.getUserInfo(id,ifDetail) +function NET.getUserInfo(uid) + local hash=not SETTING.dataSaving and USERS.getHash(uid) WS.send("user",JSON.encode{ action=1, data={ - id=id, - detailed=ifDetail or false, + id=uid, + hash=hash, }, }) end @@ -297,7 +298,7 @@ function NET.updateWS_user() LOG.print(text.loginSuccessed) --Get self infos - NET.getUserInfo() + NET.getUserInfo(USER.uid) NET.unlock("wsc_user") elseif res.action==0 then--Get accessToken NET.accessToken=res.accessToken diff --git a/parts/scenes/net_rooms.lua b/parts/scenes/net_rooms.lua index 166adfaa..228a5f81 100644 --- a/parts/scenes/net_rooms.lua +++ b/parts/scenes/net_rooms.lua @@ -37,7 +37,7 @@ function scene.keyDown(k) kb.isDown("w")and"r99"or kb.isDown("e")and"unlimited" )or"solo", - (USERS.getName(USER.uid)or"???").."'s room" + (USERS.getUsername(USER.uid)or"???").."'s room" ) lastCreateRoomTime=TIME() else diff --git a/parts/users.lua b/parts/users.lua index 5b651e0f..0ef2adaf 100644 --- a/parts/users.lua +++ b/parts/users.lua @@ -1,8 +1,6 @@ local loadImage=love.graphics.newImage local fs=love.filesystem -local ins=table.insert - local texture_noImage=DOGC{32,32, {"setc",0,0,0}, {"rect","fill",0,0,32,32}, @@ -14,27 +12,22 @@ local texture_noImage=DOGC{32,32, local function _getEmptyUser() return{ - uid=-1, username="[X]", motto="Techmino haowan", - hash=false, + hash="", new=false, } end -local imgReqSeq={} local db_img={} local db=setmetatable({},{__index=function(self,k) local file="cache/user"..k..".dat" - if fs.getInfo(file)then - rawset(self,k,JSON.decode(fs.read(file))) - if fs.getInfo(self[k].hash)then - db_img[k].avatar=loadImage(self[k].hash) - end - else - rawset(self,k,_getEmptyUser()) + local d=fs.getInfo(file)and JSON.decode(fs.read(file))or _getEmptyUser() + rawset(self,k,d) + if type(d.hash)=="string"and #d.hash>0 and fs.getInfo(d.hash)then + db_img[k].avatar=loadImage(d.hash) end - return self[k] + return d end}) local USERS={} @@ -51,31 +44,24 @@ function USERS.updateUserData(data) if data.avatar then fs.write("cache/"..data.hash,data.avatar:sub(data.avatar:find","+1)) db_img[uid].avatar=loadImage("cache/"..data.hash) - db[uid].hash=data.hash + db[uid].hash=type(data.hash)=="string"and data.hash>0 and data.hash db[uid].new=true end - needSave=true end function USERS.getUsername(uid)return db[uid].username end function USERS.getMotto(uid)return db[uid].motto end +function USERS.getHash(uid)return db[uid].hash end function USERS.getAvatar(uid) if db_img[uid]then return db_img[uid] else if not db[uid].new then - ins(imgReqSeq,uid) + NET.getUserInfo(uid) db[uid].new=true end return texture_noImage end end -function USERS.update() - if #imgReqSeq>0 and WS.status("user")=="running"then - NET.getUserInfo(imgReqSeq[#imgReqSeq],true) - imgReqSeq[#imgReqSeq]=nil - end -end - return USERS \ No newline at end of file