63 lines
1.4 KiB
Python
63 lines
1.4 KiB
Python
import requests
|
|
import os
|
|
import time
|
|
|
|
# Loop and get new api
|
|
def main():
|
|
response = {}
|
|
id = -1
|
|
while True:
|
|
try:
|
|
response = api_get()
|
|
if response["id"] != id:
|
|
id = response["id"]
|
|
print(response)
|
|
match response["action_type"]:
|
|
case "output":
|
|
character = get_character(response["character"])
|
|
output(character, response["content"])
|
|
case "choice":
|
|
user_choice = choice(response["choices"])
|
|
time.sleep(0.5)
|
|
continue
|
|
case "end":
|
|
print("Exitting successfully")
|
|
os._exit(0)
|
|
else:
|
|
continue
|
|
except:
|
|
print("Server not up or cannot be reached")
|
|
input() # Enter to go to next loop (testing)
|
|
|
|
# Make choice
|
|
def choice(choices):
|
|
api_url = "http://localhost:20264/choice"
|
|
for (index,choice) in enumerate(choices):
|
|
print(f"{index}: {choice}")
|
|
try:
|
|
choice = int(input())
|
|
except:
|
|
choice = 0
|
|
print("Invalid choice, defaulting to 0")
|
|
requests.post(api_url, json=choice);
|
|
|
|
# Character outputs text to the user
|
|
def output(character, text):
|
|
print(character["name"], "says")
|
|
print(text)
|
|
|
|
# Get user from the backend
|
|
def get_character(character):
|
|
if character.lower() == "narrator":
|
|
return {"name": "narrator"}
|
|
api_url = f"http://localhost:20264/character/{character}"
|
|
return requests.get(api_url).json()
|
|
|
|
# Normal API request
|
|
def api_get():
|
|
api_url = "http://localhost:20264/happening/"
|
|
response = requests.get(api_url).json()
|
|
return response
|
|
|
|
main()
|