summaryrefslogtreecommitdiff
path: root/client/data/localplayer.lua
diff options
context:
space:
mode:
Diffstat (limited to 'client/data/localplayer.lua')
-rw-r--r--client/data/localplayer.lua297
1 files changed, 150 insertions, 147 deletions
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