Add Protocoin screen

This commit is contained in:
Tanner Collin 2022-09-01 17:15:27 -06:00
parent 256dda3693
commit 7a5be75e06

68
main.py
View File

@ -48,6 +48,14 @@ def fetch_classes():
except: except:
return 'Error.' return 'Error.'
def fetch_protocoin():
try:
r = requests.get('https://api.spaceport.dns.t0.vc/protocoin/transactions/', timeout=5)
r.raise_for_status()
return r.json()
except:
return 'Error.'
if wa_api_key: if wa_api_key:
import wolframalpha import wolframalpha
wa_client = wolframalpha.Client(wa_api_key) wa_client = wolframalpha.Client(wa_api_key)
@ -143,6 +151,8 @@ think_result = ''
stats = {} stats = {}
classes = {} classes = {}
classes_start = 0 classes_start = 0
protocoin = {}
protocoin_line = 0
while True: while True:
if current_screen == 'home': if current_screen == 'home':
@ -156,9 +166,10 @@ while True:
stdscr.addstr(9, 4, '[T] Stats') stdscr.addstr(9, 4, '[T] Stats')
stdscr.addstr(11, 4, '[S] Sign') stdscr.addstr(11, 4, '[S] Sign')
stdscr.addstr(13, 4, '[C] Classes') stdscr.addstr(13, 4, '[C] Classes')
stdscr.addstr(15, 4, '[P] Protocoin')
if wa_api_key: if wa_api_key:
stdscr.addstr(15, 4, '[K] Think') stdscr.addstr(17, 4, '[K] Think')
stdscr.addstr(17, 4, '[A] About') stdscr.addstr(19, 4, '[A] About')
stdscr.addstr(23, 1, ' Copyright (c) 1985 Bikeshed Computer Systems Corp.') stdscr.addstr(23, 1, ' Copyright (c) 1985 Bikeshed Computer Systems Corp.')
stdscr.clrtoeol() stdscr.clrtoeol()
@ -233,6 +244,45 @@ while True:
classes = fetch_classes() classes = fetch_classes()
stdscr.erase() stdscr.erase()
skip_input = True skip_input = True
elif current_screen == 'protocoin':
stdscr.addstr(0, 1, 'PROTOVAC')
stdscr.addstr(2, 1, 'Protocoin')
stdscr.addstr(3, 1, '=========')
if protocoin:
txs = protocoin['transactions']
lines = []
lines.append('Protocoin is used to buy things from Protospace\'s vending machines.')
lines.append('')
lines.append('Total in circulation: {}'.format(protocoin['total_protocoin']))
lines.append('')
lines.append('Transactions:')
lines.append('')
lines.append('ID Date Method Amount Category')
for tx in txs:
lines.append('{} {} {:<11} {:<6} {:<11}'.format(
tx['id'],
tx['date'],
tx['account_type'],
tx['protocoin'],
'Transfer' if tx['category'] == 'Other' else tx['category'],
))
offset = 5
for num, line in enumerate(lines[protocoin_line:protocoin_line+17]):
stdscr.addstr(num + offset, 1, line)
else:
stdscr.addstr(5, 1, 'Loading...')
stdscr.addstr(23, 1, '[B] Back [J] Down [K] Up')
stdscr.clrtoeol()
stdscr.refresh()
if not protocoin:
protocoin = fetch_protocoin()
stdscr.erase()
skip_input = True
elif current_screen == 'sign': elif current_screen == 'sign':
stdscr.addstr(0, 1, 'PROTOVAC') stdscr.addstr(0, 1, 'PROTOVAC')
stdscr.addstr(2, 1, 'Protospace Sign') stdscr.addstr(2, 1, 'Protospace Sign')
@ -330,6 +380,8 @@ while True:
current_screen = 'debug' current_screen = 'debug'
elif button == 'a': elif button == 'a':
current_screen = 'about' current_screen = 'about'
elif button == 'p':
current_screen = 'protocoin'
elif current_screen == 'debug': elif current_screen == 'debug':
if button == 'b': if button == 'b':
current_screen = 'home' current_screen = 'home'
@ -352,6 +404,18 @@ while True:
if classes_start > 0: if classes_start > 0:
classes_start -= 1 classes_start -= 1
stdscr.erase() stdscr.erase()
elif current_screen == 'protocoin':
if button == 'b':
current_screen = 'home'
protocoin = {}
protocoin_line = 0
elif button == 'j':
protocoin_line += 1
stdscr.erase()
elif button == 'k':
if protocoin_line > 0:
protocoin_line -= 1
stdscr.erase()
elif current_screen == 'sign': elif current_screen == 'sign':
if sign_to_send: if sign_to_send:
if c == BACKSPACE_KEY: if c == BACKSPACE_KEY: