it's a presentable stub now!
This commit is contained in:
		@@ -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
									
								
							
							
						
						
									
										8
									
								
								app/pylocal/tick.py
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										50
									
								
								scratch.ipynb
									
									
									
									
									
										Normal 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
 | 
			
		||||
}
 | 
			
		||||
@@ -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";
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user