From b1c3386ca4032ac5925969d759ae2e5bc015d1f8 Mon Sep 17 00:00:00 2001 From: "U-DESKTOP-FOJ6TK1\\Alex" Date: Wed, 12 Feb 2025 17:25:25 -0600 Subject: Final commit --- client/data/localplayer.lua | 297 ++++++++++++++++++++++---------------------- 1 file changed, 150 insertions(+), 147 deletions(-) (limited to 'client/data/localplayer.lua') diff --git a/client/data/localplayer.lua b/client/data/localplayer.lua index 74fbf0a..2914990 100644 --- a/client/data/localplayer.lua +++ b/client/data/localplayer.lua @@ -1,147 +1,150 @@ -local localplayer = {} -local world = require("world") -local net = require("net") -local save = require("save") -print("Doing local player") - -local directions = { - "north","south","east","west","up","down" -} -local directions_index = {} -for k,v in pairs(directions) do - directions_index[v] = k -end ---print("In localplayer, world.locations are:",world.locations) ---for k,v in pairs(world.locations) do - --print(k,":",v) ---end -local lp_base = { - location = world.locations["City"], - has_settled = false, - go = function(self,dir) - dir = string.lower(dir) - if self.location.is_location then - local to - for k,v in pairs(self.location.go) do - if v[1] == dir then - to = v[2]() - break - end - end - self.location = to - cls() - out(self.location.goto_txt) - else --We're in a house/room - local toroom = self.location.go[dir] - --print("got to room:",toroom) - if toroom == "exit" then - print("special exit room") - self.location = self.in_house["in"] - self.in_house = nil - self.owns = false - cls() - out(self.location.goto_txt) - return - end - self.location = toroom - cls() - out(toroom:get_room_desc()) - end - end, - goto_house = function(self,location,house) - print("going to ",name) - print("Got location:",location,"Got name:",house) - local house = net.get_house(location,house) - self.in_house = house - local init_room_name = "1x1x1" - local init_room = house.rooms[init_room_name] - local init_room_meta = getmetatable(init_room).__index - print("init_room_meta",init_room_meta) - local owner = net.do_i_own(location,house.name,self.id) - print("Looked at do_i_own:",owner) - if owner then - self.owns = true - else - self.owns = false - end - self.location = init_room - cls() - out(init_room:get_room_desc()) - print("I'm in the inital room!",init_room) - end, - goto_location = function(self,loc) - self.in_house = nil - print("Setting location to",loc) - self.location = loc - cls() - out(self.location.goto_txt) - end, - --goto_location = function(self,name) - --assert(name ~= nil,"tried to go to a nil location") - --print("Self is",self,"name is",name) - --print("valid locations are:") - --for k,v in pairs(world.locations) do - --print(k,":",v) - --end - --assertf(world.locations[name],"The location %q does not exist.",name) - --cls() - --out(world.locations[name].goto_txt) - --localplayer.location = name - ----out(world.locations[name].desc) - --end, - get_loc = function(self) - --Check if the player is in one of the locations - print("Trying to get location:",self.location) - print("World locations:",#world.locations) - for k,v in pairs(world.locations) do - print(k,":",v) - end - local loc - if world.locations[self.location] then - loc = world.locations[self.location] - end - print("Got location:",loc) - return loc - end, -} -local lp_m = {__index = lp_base} - -local function load_save() - return require("savedata") -end -local success , data = pcall(load_save) -if success then - print("setting local player to saved data") - localplayer = data - setmetatable(localplayer,lp_m) - out(localplayer.location.desc) - if not localplayer.has_settled then - world.basic_commands[#world.basic_commands + 1] = "settle" - end -else - print("Creating new player") - out([[ -Welcome to HTA, the Home Text Adventure. The text here describes where you -are or what your are doing. Use the text box at the bottom to enter commands. -You can submit commands by pressing the button to the right of the textbox, -or by pressing the Enter key. - -Hints for what kinds of things you can type in are displayed right above the -text box. Try typing "look" in the command box. - -You wake up in the City of Beginnings -]]) - setmetatable(localplayer,lp_m) - localplayer.id = math.random() - localplayer.owns = false - localplayer.in_house = nil - world.basic_commands[#world.basic_commands + 1] = "settle" - set_hints(unpack(world.basic_commands)) - local f = io.open("../data/savedata.lua","w") - f:write(save.table_to_string(localplayer)) - f:close() -end - - - -return localplayer +local localplayer = {} +local world = require("world") +local net = require("net") +local save = require("save") +print("Doing local player") + +local directions = { + "north","south","east","west","up","down" +} +local directions_index = {} +for k,v in pairs(directions) do + directions_index[v] = k +end +--print("In localplayer, world.locations are:",world.locations) +--for k,v in pairs(world.locations) do + --print(k,":",v) +--end +local lp_base = { + location = world.locations["City"], + has_settled = false, + go = function(self,dir) + dir = string.lower(dir) + if self.location.is_location then + local to + for k,v in pairs(self.location.go) do + if v[1] == dir then + to = v[2]() + break + end + end + self.location = to + cls() + out(self.location.goto_txt) + else --We're in a house/room + local toroom = self.location.go[dir] + --print("got to room:",toroom) + if toroom == "exit" then + print("special exit room") + self.location = self.in_house["in"] + self.in_house = nil + self.owns = false + cls() + out(self.location.goto_txt) + return + end + self.location = toroom + cls() + out(toroom:get_room_desc()) + end + end, + goto_house = function(self,location,house,clear) + clear = clear ~= nil and clear or true + print("going to ",name) + print("Got location:",location,"Got name:",house) + local house = net.get_house(location,house) + self.in_house = house + local init_room_name = "1x1x1" + local init_room = house.rooms[init_room_name] + local init_room_meta = getmetatable(init_room).__index + print("init_room_meta",init_room_meta) + local owner = net.do_i_own(location,house.name,self.id) + print("Looked at do_i_own:",owner) + if owner then + self.owns = true + else + self.owns = false + end + self.location = init_room + if clear then + cls() + end + out(init_room:get_room_desc() + print("I'm in the inital room!",init_room) + end, + goto_location = function(self,loc) + self.in_house = nil + print("Setting location to",loc) + self.location = loc + cls() + out(self.location.goto_txt) + end, + --goto_location = function(self,name) + --assert(name ~= nil,"tried to go to a nil location") + --print("Self is",self,"name is",name) + --print("valid locations are:") + --for k,v in pairs(world.locations) do + --print(k,":",v) + --end + --assertf(world.locations[name],"The location %q does not exist.",name) + --cls() + --out(world.locations[name].goto_txt) + --localplayer.location = name + ----out(world.locations[name].desc) + --end, + get_loc = function(self) + --Check if the player is in one of the locations + print("Trying to get location:",self.location) + print("World locations:",#world.locations) + for k,v in pairs(world.locations) do + print(k,":",v) + end + local loc + if world.locations[self.location] then + loc = world.locations[self.location] + end + print("Got location:",loc) + return loc + end, +} +local lp_m = {__index = lp_base} + +local function load_save() + return require("savedata") +end +local success , data = pcall(load_save) +if success then + print("setting local player to saved data") + localplayer = data + setmetatable(localplayer,lp_m) + out(localplayer.location.desc) + if not localplayer.has_settled then + world.basic_commands[#world.basic_commands + 1] = "settle" + end +else + print("Creating new player") + out([[ +Welcome to HTA, the Home Text Adventure. The text here describes where you +are or what your are doing. Use the text box at the bottom to enter commands. +You can submit commands by pressing the button to the right of the textbox, +or by pressing the Enter key. + +Hints for what kinds of things you can type in are displayed right above the +text box. Try typing "look" in the command box. + +You wake up in the City of Beginnings +]]) + setmetatable(localplayer,lp_m) + localplayer.id = math.random() + localplayer.owns = false + localplayer.in_house = nil + world.basic_commands[#world.basic_commands + 1] = "settle" + set_hints(unpack(world.basic_commands)) + local f = io.open("../data/savedata.lua","w") + f:write(save.table_to_string(localplayer)) + f:close() +end + + + +return localplayer -- cgit v1.2.3-70-g09d2