it's a presentable stub now!

This commit is contained in:
Nicole O'Connor 2023-02-01 14:52:56 -08:00
parent 07b56dcd40
commit 7c9930e0b6
4 changed files with 123 additions and 5 deletions

View File

@ -3,12 +3,10 @@
import gevent.monkey
gevent.monkey.patch_all()
import logging
import flask
from gevent.pywsgi import WSGIServer
from pylocal import core
from pylocal import core, tick
@core.app.route("/")
def index():
@ -18,5 +16,5 @@ def index():
if __name__ == "__main__":
#core.app.run("0.0.0.0", 1337)
http_server = WSGIServer(('', 80), core.app, log=logging.getLogger(name="gevent"))
http_server = WSGIServer(('', 80), core.app)
http_server.serve_forever()

8
app/pylocal/tick.py Normal file
View File

@ -0,0 +1,8 @@
import json
import random
from . import core
@core.app.route("/tick")
def tick():
return random.choices([json.dumps({"code": 200, "event_type": 0}), json.dumps({"code": 200, "event_type": 1, "log": "The server chose a flavor text event, which hasn't been fully implemented yet."})], weights=[16, 1])[0]

50
scratch.ipynb Normal file
View File

@ -0,0 +1,50 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"otl-hga.net\n"
]
}
],
"source": [
"domain_components = \"seagull.mercenary.otl-hga.net\".split(\".\")\n",
"base_domain = \".\".join(domain_components[-2:])\n",
"print(base_domain)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.9 (main, Dec 7 2022, 00:00:00) [GCC 12.2.1 20221121 (Red Hat 12.2.1-4)]"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "767d51c1340bd893661ea55ea3124f6de3c7a262a8b4abca0554b478b1e2ff90"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}

View File

@ -1,12 +1,28 @@
const sleep = ms => new Promise(r => setTimeout(r, ms)); // sleep(int ms)
var page_elements = {};
var gamestate = {};
const gamestate_default = {
"tick": 1,
"name": "Nameless"
};
function prepare_gamestate() {
var gamestate_loaded = window.localStorage.getItem("gamestate");
if (gamestate_loaded == null) { gamestate = structuredClone(gamestate_default); }
else { gamestate = JSON.parse(gamestate_loaded); }
}
function record_log(text) {
const div_logrow = document.createElement("div");
div_logrow.className = "log-line";
const div_logtick = document.createElement("div");
div_logtick.className = "log-tick"
div_logtick.innerHTML = "Day 69";
div_logtick.innerHTML = "Day " + gamestate["tick"];
div_logrow.append(div_logtick);
const div_logmsg = document.createElement("div");
@ -17,14 +33,58 @@ function record_log(text) {
page_elements["div_log"].append(div_logrow);
}
function save_game() {
window.localStorage.setItem("gamestate", JSON.stringify(gamestate));
record_log("Game saved.");
}
var tick_meter_running = true;
async function game_tick() {
gamestate["tick"] += 1;
page_elements["lbl_tick"].innerHTML = gamestate["tick"];
var tickdata = await fetch("/tick")
.then(res => {
json = res.json()
console.log(json)
return json
})
.catch(e => { throw e; });
console.log(JSON.stringify(tickdata));
if (tickdata["code"] != 200) {
console.error("Non-200 tick code: " + tickdata["code"]);
return;
}
if (tickdata["event_type"] == 0) {
//sleep(12000);
//game_tick();
} else if (tickdata["event_type"] == 1) {
// Flavor event - no gameplay effect, but occasionally says something fun.
record_log(tickdata["log"]);
//await sleep(12000);
//game_tick();
}
}
document.addEventListener("DOMContentLoaded", function (ev) {
page_elements["div_log"] = document.querySelector("#main-log");
page_elements["div_name"] = document.querySelector("#side-seagull-name");
page_elements["div_name_editor"] = document.querySelector("#side-seagull-name-editor");
page_elements["lbl_name"] = document.querySelector("#lbl-seagull-name");
page_elements["edt_name"] = document.querySelector("#edt-seagull-name");
page_elements["lbl_tick"] = document.querySelector("#main-day-counter");
prepare_gamestate();
record_log("It works!");
page_elements["lbl_name"].innerHTML = gamestate["name"];
page_elements["lbl_tick"].innerHTML = gamestate["tick"];
const interval = setInterval(() => {
if (tick_meter_running) { game_tick(); }
}, 1200);
});
function change_seagull_name() {
@ -35,6 +95,8 @@ function change_seagull_name() {
function confirm_seagull_name() {
const new_name = page_elements["edt_name"].value;
page_elements["lbl_name"].innerHTML = new_name;
gamestate["name"] = new_name;
save_game();
page_elements["div_name"].style.display = "block";
page_elements["div_name_editor"].style.display = "none";