From 79d0012d66c441642f7d096aed73acced689cee1 Mon Sep 17 00:00:00 2001 From: jerick Date: Wed, 26 Nov 2025 17:04:15 -0500 Subject: [PATCH] proper functoin calls for faction data --- README.md | 10 +++++- __pycache__/main.cpython-311.pyc | Bin 4932 -> 5360 bytes main.py | 42 +++++++++++++---------- routes/faction.py | 31 ----------------- static/dashboard.js | 36 ++++++++++++++++++++ static/styles.css | 55 +++++++++++++++++++++++++++++++ templates/dashboard.html | 30 +++++++++-------- 7 files changed, 142 insertions(+), 62 deletions(-) delete mode 100644 routes/faction.py diff --git a/README.md b/README.md index 4f8126f..87f5a3d 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,12 @@ Features: - check if the assigned enemy has been hit after 1 minute, if not reassign - match targets up with members that have the appropriate stats - dashboard to see who is supposed to hit who -- maybe also enemy stats \ No newline at end of file +- maybe also enemy stats + + +ToDo: +- move interval button to a neutral spot +- sections to list faction memebers + - needs to be movable objects +- Assignment pools depending on stats + - players will be round-robin queued their targets from here \ No newline at end of file diff --git a/__pycache__/main.cpython-311.pyc b/__pycache__/main.cpython-311.pyc index 583d2c2800b8bd7da67e307e4d58c93a13bd8808..21493d8879a03a696f13dd5a4944844c1e2f7466 100644 GIT binary patch delta 2191 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 DASHBOARD ROUTE LOADED") return templates.TemplateResponse("dashboard.html", {"request": request}) - +# ----------------------------- +# Pydantic model for JSON payloads +# ----------------------------- +class FactionRequest(BaseModel): + faction_id: int + interval: int # ----------------------------- # API Endpoints # ----------------------------- -@app.post("/api/enemy") -async def api_enemy(faction_id: int, interval: int): - await update_enemy_faction(faction_id, interval) - return {"status": "enemy loop running", "id": faction_id, "interval": interval} +@app.post("/api/update_enemy_faction") +async def api_enemy(data: FactionRequest): + await update_enemy_faction(data.faction_id, data.interval) + return {"status": "enemy loop running", "id": data.faction_id, "interval": data.interval} +@app.post("/api/update_friendly_faction") +async def api_friendly(data: FactionRequest): + await update_friendly_faction(data.faction_id, data.interval) + return {"status": "friendly loop running", "id": data.faction_id, "interval": data.interval} -@app.post("/api/friendly") -async def api_friendly(faction_id: int, interval: int): - await update_friendly_faction(faction_id, interval) - return {"status": "friendly loop running", "id": faction_id, "interval": interval} - - -# Discord +# ----------------------------- +# Discord bot setup +# ----------------------------- intents = discord.Intents.default() intents.message_content = True - enrolled_attackers = [] enemy_queue = [] active_assignments = {} @@ -92,6 +97,9 @@ TOKEN = "YOUR_DISCORD_TOKEN" async def start_bot(): await bot.start(TOKEN) +# ----------------------------- +# Main entry +# ----------------------------- if __name__ == "__main__": loop = asyncio.get_event_loop() diff --git a/routes/faction.py b/routes/faction.py deleted file mode 100644 index 25268f8..0000000 --- a/routes/faction.py +++ /dev/null @@ -1,31 +0,0 @@ -from fastapi import APIRouter -from pydantic import BaseModel -import asyncio - -router = APIRouter() - -class FactionRequest(BaseModel): - faction_id: int - refresh_interval: int - -async def update_friendly_faction_loop(faction_id: int, interval: int): - while True: - print(f"Refreshing friendly faction {faction_id}") - # call your update_friendly_faction() here - await asyncio.sleep(interval) - -async def update_enemy_faction_loop(faction_id: int, interval: int): - while True: - print(f"Refreshing enemy faction {faction_id}") - # call your update_enemy_faction() here - await asyncio.sleep(interval) - -@router.post("/refresh/friendly") -async def refresh_friendly(data: FactionRequest): - asyncio.create_task(update_friendly_faction_loop(data.faction_id, data.refresh_interval)) - return {"status": "friendly loop started"} - -@router.post("/refresh/enemy") -async def refresh_enemy(data: FactionRequest): - asyncio.create_task(update_enemy_faction_loop(data.faction_id, data.refresh_interval)) - return {"status": "enemy loop started"} diff --git a/static/dashboard.js b/static/dashboard.js index e69de29..48fb613 100644 --- a/static/dashboard.js +++ b/static/dashboard.js @@ -0,0 +1,36 @@ +async function updateEnemy() { + const factionId = parseInt(document.getElementById("enemyId").value); + const interval = parseInt(document.getElementById("refreshInterval").value); + + if (!factionId || !interval) { + alert("Please enter Enemy Faction ID and Refresh Interval!"); + return; + } + + await fetch(`/api/update_enemy_faction`, { + method: "POST", + headers: {"Content-Type": "application/json"}, + body: JSON.stringify({ faction_id: factionId, interval: interval }) + }); +} + +async function updateFriendly() { + const factionId = parseInt(document.getElementById("friendlyId").value); + + if (!factionId) { + alert("Please enter Friendly Faction ID!"); + return; + } + + const interval = parseInt(document.getElementById("refreshInterval").value); + if (!interval) { + alert("Please enter Refresh Interval!"); + return; + } + + await fetch(`/api/update_friendly_faction`, { + method: "POST", + headers: {"Content-Type": "application/json"}, + body: JSON.stringify({ faction_id: factionId, interval: interval }) + }); +} diff --git a/static/styles.css b/static/styles.css index e69de29..edf5e25 100644 --- a/static/styles.css +++ b/static/styles.css @@ -0,0 +1,55 @@ +body { + font-family: Arial, sans-serif; + background-color: #1e1e2f; + color: #f0f0f0; + margin: 0; + padding: 0; +} + +.container { + max-width: 800px; + margin: 2rem auto; + padding: 2rem; + background-color: #2c2c3e; + border-radius: 12px; + box-shadow: 0 0 20px rgba(0,0,0,0.5); +} + +h1 { + text-align: center; + color: #ffcc00; +} + +.faction-section { + background-color: #3a3a4d; + margin: 1.5rem 0; + padding: 1rem 1.5rem; + border-radius: 8px; +} + +.faction-section h2 { + color: #66ccff; +} + +input[type="number"] { + padding: 0.5rem; + margin-right: 0.5rem; + border-radius: 6px; + border: none; + width: 150px; +} + +button { + padding: 0.5rem 1rem; + border-radius: 6px; + border: none; + background-color: #66ccff; + color: #1e1e2f; + font-weight: bold; + cursor: pointer; + transition: background-color 0.2s; +} + +button:hover { + background-color: #3399ff; +} diff --git a/templates/dashboard.html b/templates/dashboard.html index 667d65a..b254326 100644 --- a/templates/dashboard.html +++ b/templates/dashboard.html @@ -1,24 +1,28 @@ - + + War Dashboard +
+

War Dashboard

-

War Dashboard

+
+

Enemy Faction

+ + + +
-
-

Enemy Faction

- -
+
+

Friendly Faction

+ + +
+
-
-

Friendly Faction

- -
- - + -