-
Notifications
You must be signed in to change notification settings - Fork 0
/
util.py
135 lines (116 loc) · 3.42 KB
/
util.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
from google.appengine.ext import db
from models import Account
import os
import random
import json
def create_world_data():
from models import Interactions
#character data
character = {}
character['x'] = 9
character['y'] = 5
#attach objects to data set
data = {}
data['character'] = character
data['status'] = Interactions().__dict__
return data
def template_path(template):
from constants import template_dir
path = os.path.join(
os.path.dirname(__file__) + template_dir,
template
)
return path
def get_game(game_id):
game = db.GqlQuery('SELECT * from Game ' +
'WHERE game_id = :1',
game_id)
if game.count() == 1:
return game[0]
return None
def get_account(user):
from models import Account
existing = db.GqlQuery('SELECT * from Account ' +
'WHERE user = :1',
user)
if existing.count() == 0:
account = Account()
account.user = user
account.put()
return account
else:
return existing[0]
def get_active_games(user):
return db.GqlQuery('SELECT * from Game ' +
'WHERE players = :1',
user.nickname())
def is_valid_user(nickname):
acc = db.GqlQuery('SELECT * from Account ' +
'WHERE user = USER(:1)',
nickname + '@gmail.com')
if acc.count() == 1:
return True
return False
def get_major_arcana():
return [
'fool',
'magician',
'priestess',
'heirophant',
'hermit',
'hanged'
]
def get_goals():
return {
'sword': ['chair','doll','matchbox','knife'],
'coin': ['silver','purse','gold','card'],
'cup': ['bottle','food','milk','bread'],
'wand': ['cloth','ticket','pen','key']
}
def create_new_game(players, name):
import uuid
from models import Game
from constants import default_counter
from constants import win_types
game = Game()
game.game_name = name
game.game_id = str(uuid.uuid1())
game.players = players
game.current_player = random.randint(0, len(players) - 1)
game.data = json.dumps(create_world_data())
game.move_counter = default_counter
game.major_arcana = []
arcana = get_major_arcana()
for i in range(len(players)):
num = random.randint(0, len(arcana) - 1)
game.major_arcana.append(arcana[num])
del arcana[num]
goals = get_goals()
game.goals = []
for i in game.major_arcana:
for goal in win_types[i]:
num = random.randint(0, len(goals[goal]) - 1)
game.goals.append(goals[goal][num])
del goals[goal][num]
game.put()
def validate_player(nickname, game_id):
if not game_id or game_id == '':
return False
game = db.GqlQuery('SELECT * from Game ' +
'WHERE game_id = :1',
game_id)
if game.count() == 1:
players = game[0].players
if players[game[0].current_player] == nickname:
return True
return False
def get_world_data(nickname, game_id):
game = get_game(game_id)
data = json.loads(game.data)
current = game.current_player
data['character']['arcana'] = game.major_arcana[current]
data['move_counter'] = game.move_counter
data['character']['goals'] = []
data['character']['goals'].append(game.goals[current * 2])
data['character']['goals'].append(game.goals[(current * 2) + 1])
return data