aboutsummaryrefslogtreecommitdiff
path: root/explore.py
blob: fa8239c179265b2dce08b4bfb63a8e3968a517da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import isrock
import isportal
from math import floor
from curses import KEY_LEFT as left, KEY_RIGHT as right, KEY_DOWN as down, KEY_UP as up
import inv

def splitlist(liststr, strsplit):
  newlist = []
  sublist = []
  for item in liststr:
    if item == strsplit:
      newlist.append(sublist)
      sublist = []
    else:
      sublist.append(item)
  newlist.append(sublist)
  return newlist

class Explore:
  def __init__(self, density, x=0, y=0):
    self.density = density
    self.x = x
    self.y = y

  def get_area(self, dim):
    out = ''
    for y in range(dim[0]):
      y += self.y
      for x in range(floor(dim[1]/2)):
        x += self.x
        pos = isrock.isrock(self.density, (x,y), typereq=True)
        if not pos[0]:
          out += ' '
        elif pos[1] == 'n':
          out += '*'
        else:
          out += '\\'
        out += ' '
      out = out[:-1]
      out += '\n'
    return out[:-1]

  def displace(self, dim, dis):
    self.move((self.x + dim[0],  self.y + dim[1]), dis)

  def move(self, dim, dis):
    self.x, self.y = dim[0], dim[1]
    dim = (dim[0]+dis[1], dim[1]+dis[0])
    if isportal.isportal(dim): 
      dim = isportal.link(dim)
      self.x, self.y = dim[0]-dis[1], dim[1]-dis[0]

  def interpretkey(self, key):
    return {up:(0,-1), left:(-1,0), down:(0,1), right:(1,0)}[key] 

  def rockmod(self, dim, state):
    dim = (self.x + dim[1], self.y + dim[0])
    if state != isrock.isrock(self.density, dim):
      if state and inv.quantity <= 0:
        return
      isrock.modrock(dim, state)
      inv.quantity += -1 if state else 1

  def getinv(self):
    return inv.quantity

  def load(self, file):
    try:
      f = open('./worlds/'+str(file)[2:-1],'r')
      data = [line[:-1] for line in f.readlines()] #removes newlines
      f.close()
    except:
      return "File Doesn't Exist"
    loc = [int(num) for num in data[0].split(' ')]
    self.x, self.y, inv.quantity = loc[0], loc[1], loc[2]
    data = splitlist(data[1:], '______')
    isrock.load(data[0])
    isportal.load(data[1])

  def save(self, file):
    f = open('./worlds/'+str(file)[2:-1],'w')
    data = str(self.x) + ' ' + str(self.y) + ' ' + str(inv.quantity) + '\n'
    data += isrock.save()
    data += '______\n' + isportal.save()
    f.write(data)
    f.close()

  def setportal(self, dim):
    dim = (dim[1]+self.x, dim[0]+self.y)
    if not isrock.isrock(self.density, dim) and inv.quantity >= 10:
      inv.quantity -= 10
      isrock.modrock(dim, True, 'p')
      isportal.modportal(dim)
    elif isrock.isrock(self.density, dim, typereq=True)[1] == 'p':
      inv.quantity += 10
      isrock.modrock(dim, False)
      isportal.modportal(dim)