-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgridView.py
More file actions
126 lines (105 loc) · 4.78 KB
/
gridView.py
File metadata and controls
126 lines (105 loc) · 4.78 KB
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
from helpers import *
import curses
from classtypes import vec2
#CUSTOMS
def gf(cell):
return forcefit(cell,1)
#END CUSTOMS
# use these doodoo head ┤ ├ ■ ┌ ┴ ┐└ ╥ ┘ ╫ ║ ═ ╩
class cursedgrid():
def __init__(self,crdRang,screen,defaultCell=" ",defaultColor=0):
#speed vars
self.range=crdRang
self.gridSize=vec2(crdRang[1][0]-crdRang[0][0],crdRang[1][1]-crdRang[0][1])
self.bigSize=vec2(self.gridSize.x*2+1,self.gridSize.y)
self.defColor=defaultColor
self.defCell=defaultCell
self.grid = [[[mapl(defaultCell),defaultColor] for j in range(self.gridSize.x)] for i in range(self.gridSize.y)]
self.scr=screen
def __str__(self):
return "\n".join([str(i) for i in self.grid])
def initScr(self,crdRang,screen,defaultCell=" ",defaultColor=1):
#speed vars
self.rang=crdRang
self.bigSize=vec2(crdRang[1][0]-crdRang[0][0]+1,crdRang[1][1]-crdRang[0][1]+1)
self.gridSize=vec2(int(self.gridSize.x/2)+self.gridSize.x%2,self.gridSize.y)
self.defColor=defaultColor
self.defCell=defaultCell
self.grid = [[[mapl(defaultCell),defaultColor] for j in range(self.gridSize.x)] for i in range(self.gridSize.y)]
self.scr=screen
def repRange(self,rang,clearCell="˜¨¬¬",clearColor=-1):#˜¨¬¬ is null but holding option down >:)
repCell=[clearCell,clearColor]
if clearCell=="˜¨¬¬":
repCell[0]=self.defCell
if clearColor==-1:
repCell[1]=self.defColor
for x in range(rang[0][0],rang[1][0]+1):
for y in range(rang[0][1],rang[1][1]+1):
self.grid[y][x]=repCell
def cellSwap(self,poso,post,way=0):#ways: 0-all 1-no color 2-only colors
temp = self.grid[poso[1]][poso[0]]
if way==0:
self.grid[poso[1]][poso[0]] = self.grid[post[1]][post[0]]
self.grid[post[1]][post[0]] = temp
elif way==1:
self.grid[poso[1]][poso[0]][0] = self.grid[post[1]][post[0]][0]
self.grid[post[1]][post[0]][0] = temp[0]
else:
self.grid[poso[1]][poso[0]][1] = self.grid[post[1]][post[0]][1]
self.grid[post[1]][post[0]][1] = temp[1]
def push(self,getFunc=gf):
for y in range(self.gridSize.y):
for x in range(self.gridSize.x):
self.scr.addch(y,x," ")
if x%2==0:
cell = self.grid[y][x//2]
self.scr.addch(y,x,getFunc(cell[0]),curses.color_pair(cell[1]))
class cursedcam():
def __init__(self,viewSize,screen,cgrid,outOffset=[0,0],pos=[0,0]):
#speed vars
self.viewSize = viewSize
self.outOffset = outOffset
self.pos = pos
self.scr=screen
self.grid=cgrid.grid
self.cgrid=cgrid
self.color_overrides={}#"[5,2]": 2, etc
self.cell_overrides={}
def push(self,getFunc=gf):
for y in range(self.pos[1],self.pos[1]+self.viewSize[1]):
for x in range(self.pos[0],self.pos[0]+self.viewSize[0]):
# self.scr.addch(y-self.pos[1]+self.outOffset[1],(x-self.pos[0]+self.outOffset[0])*2,"x")
if -1<y<len(self.grid) and -1<x<len(self.grid[0]):
cell = self.grid[y][x]
dicell = getFunc(cell[0])
colr = cell[1]
pch = str(vec2(x,y))
if pch in self.color_overrides.keys():
colr = self.color_overrides[pch]
if pch in self.cell_overrides.keys():
dicell = self.cell_overrides[pch]
self.scr.addch(y-self.pos[1]+self.outOffset[1],(x-self.pos[0]+self.outOffset[0])*2,dicell,curses.color_pair(colr))
else:
self.scr.addch(y-self.pos[1]+self.outOffset[1],(x-self.pos[0]+self.outOffset[0])*2," ")
class cursedtext():
def __init__(self,posrang,screen,text=[],rolling=True,fit="r"):
self.rang=posrang
self.size=[posrang[1][0]-posrang[0][0]+1,posrang[1][1]-posrang[0][1]+1]
self.rolling=rolling
self.text=text
self.scref=screen
self.fit=fit
if not rolling and text==[]:
self.text=[""*self.size[0] for i in range(self.size[1])]
def addText(self,text):
self.text.append(str(text))
if len(self.text)>self.size[1]:
del self.text[0]
def push(self):
for i in range(self.rang[0][1],self.rang[1][1]+1):
index=i-self.rang[0][1]
if index<len(self.text):
text = self.text[index]
self.scref.addstr(i,self.rang[0][0]," "+forcefit(self.text[index],self.size[0],pos=self.fit))
else:
self.scref.addstr(i,self.rang[0][0]," "+forcefit("",self.size[0],pos=self.fit))