Add prototype gameplay loop with character/battlefield assets and server game APIs.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
"""Prepare mail UI cases only in the isolated mail account/database."""
|
||||
import json
|
||||
from pathlib import Path
|
||||
import sqlite3
|
||||
import sys
|
||||
import time
|
||||
|
||||
root = Path(__file__).resolve().parents[1]
|
||||
test_root = (root / 'Tools/output/g1-live').resolve()
|
||||
database = Path((test_root / 'mail-db.path').read_text(encoding='utf-8-sig').strip()).resolve()
|
||||
username = (test_root / 'mail-account.txt').read_text(encoding='utf-8-sig').strip()
|
||||
mode = sys.argv[1] if len(sys.argv) == 2 else ''
|
||||
if test_root not in database.parents or not username.startswith('g1live_mail_') or mode not in ('mixed', 'lost', 'empty', 'expired'):
|
||||
raise RuntimeError('Refusing non-isolated mail fixture')
|
||||
with sqlite3.connect(database) as conn:
|
||||
row = conn.execute('SELECT u.pid,g.state FROM users u JOIN game_states g ON g.pid=u.pid WHERE u.username=?', (username,)).fetchone()
|
||||
state = json.loads(row[1])
|
||||
if state['schema'] != 7 or state.get('pendingShot') or state.get('pendingBattle'):
|
||||
raise RuntimeError('Finish isolated pending activities first')
|
||||
now = int(time.time())
|
||||
def letter(i, reward=None, **flags):
|
||||
m = dict(mailId='fixture_' + str(i), title='营地来信 ' + str(i),
|
||||
body='伙伴们送来了问候。\n这是一封用于检查列表、附件和有效期的来信。',
|
||||
reward=dict(coins=0, candy=0, balls=0, tickets=0), sentAt=now-60,
|
||||
expiresAt=now+3600, read=False, claimed=False, expired=False)
|
||||
if reward:
|
||||
m['reward'].update(reward)
|
||||
m.update(flags)
|
||||
return m
|
||||
if mode == 'mixed':
|
||||
state['mails'] = [letter(0, dict(coins=7, balls=1, tickets=1)),
|
||||
letter(1, dict(balls=500), expiresAt=now-1),
|
||||
letter(2, dict(balls=500), read=True, claimed=True),
|
||||
letter(3), letter(4, dict(balls=2)),
|
||||
letter(5, dict(candy=20)), letter(6), letter(7)]
|
||||
state['mails'][5]['body'] = '伙伴来信\n' + ('这段正文可以上下滑动阅读。\n' * 30)
|
||||
elif mode == 'lost':
|
||||
state['mails'] = [letter('lost', dict(balls=5))]
|
||||
elif mode == 'expired':
|
||||
state['mails'] = [letter('expired', dict(balls=500), expiresAt=now-1)]
|
||||
else:
|
||||
state['mails'] = []
|
||||
state['revision'] += 1
|
||||
conn.execute('UPDATE game_states SET state=? WHERE pid=?', (json.dumps(state, ensure_ascii=False), row[0]))
|
||||
print('Prepared isolated mail UI case:', mode)
|
||||
Reference in New Issue
Block a user