84 lines
3.3 KiB
Python
84 lines
3.3 KiB
Python
from flask import Blueprint, render_template, request, redirect, url_for
|
|
|
|
from ..db import query_one, execute, get_all_sessions
|
|
from ..config import SIM_CONFIGS_DIR, load_sim_config, save_sim_config, load_all_modes
|
|
|
|
bp = Blueprint("params", __name__)
|
|
|
|
|
|
@bp.route("/params")
|
|
def params():
|
|
all_sessions = get_all_sessions()
|
|
sid = int(request.args.get("sid", all_sessions[-1]["id"] if all_sessions else 1))
|
|
session = query_one("SELECT * FROM sessions WHERE id = %s", (sid,))
|
|
cfg = load_sim_config(sid)
|
|
modes = load_all_modes()
|
|
flash_msg = request.args.get("msg")
|
|
flash_ok = request.args.get("ok", "1") == "1"
|
|
return render_template("params.html",
|
|
tab="params", current_sid=sid, all_sessions=all_sessions,
|
|
session=session, cfg=cfg, modes=modes, sim_configs_dir=SIM_CONFIGS_DIR,
|
|
flash_msg=flash_msg, flash_ok=flash_ok,
|
|
)
|
|
|
|
|
|
@bp.route("/params/save", methods=["POST"])
|
|
def params_save():
|
|
sid = int(request.args.get("sid", 1))
|
|
cfg = load_sim_config(sid)
|
|
if cfg is None:
|
|
return redirect(url_for("params.params", sid=sid,
|
|
msg=f"Fichier sim_{sid:03d}.json introuvable dans {SIM_CONFIGS_DIR}", ok=0))
|
|
f = request.form
|
|
cfg["name"] = f.get("name", cfg.get("name", ""))
|
|
cfg["mode"] = f.get("mode", cfg.get("mode", "pacifiste"))
|
|
cfg.setdefault("tick", {})["tick_sleep_sec"] = int(f.get("tick_sleep_sec", 60))
|
|
cfg.setdefault("survival", {}).update({
|
|
"drain_speed": float(f.get("survival_drain_speed", 1.0)),
|
|
"fatigue_hp_per_2pts": int(f.get("survival_fatigue_hp", 2)),
|
|
"enabled": "survival_enabled" in f,
|
|
})
|
|
cfg.setdefault("encounter", {}).update({
|
|
"global_rate_multiplier": float(f.get("encounter_rate", 1.0)),
|
|
"enabled": "encounter_enabled" in f,
|
|
})
|
|
cfg.setdefault("economy", {})["caps_global_multiplier"] = float(f.get("caps_multiplier", 1.0))
|
|
try:
|
|
save_sim_config(sid, cfg)
|
|
execute("UPDATE sessions SET mode=%s WHERE id=%s", (cfg["mode"], sid))
|
|
msg = f"Config sim_{sid:03d}.json sauvegardée. Mode DB mis à jour → {cfg['mode']}."
|
|
ok = 1
|
|
except Exception as e:
|
|
msg = f"Erreur: {e}"
|
|
ok = 0
|
|
return redirect(url_for("params.params", sid=sid, msg=msg, ok=ok))
|
|
|
|
|
|
@bp.route("/params/setstatus", methods=["POST"])
|
|
def params_setstatus():
|
|
sid = int(request.args.get("sid", 1))
|
|
status = request.form.get("status", "paused")
|
|
try:
|
|
execute("UPDATE sessions SET status=%s WHERE id=%s", (status, sid))
|
|
msg = f"Session {sid} → status '{status}'."
|
|
ok = 1
|
|
except Exception as e:
|
|
msg = f"Erreur: {e}"
|
|
ok = 0
|
|
return redirect(url_for("params.params", sid=sid, msg=msg, ok=ok))
|
|
|
|
|
|
@bp.route("/params/resetday", methods=["POST"])
|
|
def params_resetday():
|
|
sid = int(request.args.get("sid", 1))
|
|
day = int(request.form.get("day", 1))
|
|
tick = int(request.form.get("tick", 0))
|
|
try:
|
|
execute("UPDATE sessions SET current_day=%s, current_tick=%s WHERE id=%s", (day, tick, sid))
|
|
msg = f"Session {sid} remise à J{day} T{tick}h."
|
|
ok = 1
|
|
except Exception as e:
|
|
msg = f"Erreur: {e}"
|
|
ok = 0
|
|
return redirect(url_for("params.params", sid=sid, msg=msg, ok=ok))
|