Skip to content

Commit

Permalink
add characters and skills
Browse files Browse the repository at this point in the history
  • Loading branch information
zheplusplus committed Feb 10, 2012
1 parent 0fffca4 commit 89160d2
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 8 deletions.
10 changes: 10 additions & 0 deletions core/src/event.py
Expand Up @@ -26,6 +26,16 @@ def as_log(self):
def add(self, event):
self.events.append(event)

class GameStarted(Event):
def __init__(self, players):
self.players = players

def _as_log(self):
return { 'characters': map(lambda p: {
'player_id': p.player_id,
'character': p.character_name,
}, self.players) }

def card_to_msg(c):
return {
'name': c.name,
Expand Down
6 changes: 4 additions & 2 deletions core/src/game_control.py
Expand Up @@ -10,10 +10,12 @@ def __init__(self, event_list, card_pool, players_control, action_stack):
self.action_stack = action_stack

def start(self):
for player in self.players_control.players:
player.start(self)
self.players_control.start(self)
self.players_control.current_player().round(self)

def characters_selected(self, players):
self._add_event(event.GameStarted(players))

def next_round(self):
self.players_control.next_player()
self.players_control.current_player().round(self)
Expand Down
26 changes: 26 additions & 0 deletions ext/src/characters.py
@@ -0,0 +1,26 @@
from ext.src.skills import bequeathed_strategy, merciless, dragon_heart, \
martial_saint, prodigy, horsemanship, fury_pith, \
heavenly_scent

class Character:
def __init__(self, name, character_skills):
self.name = name
self.skills = character_skills

def select(self, player):
player.character_name = self.name
for s in self.skills: s.add_to(player)

GUO_JIA = Character('Guo Jia', [bequeathed_strategy])
ZHANG_CHUNHUA = Character('Zhang Chunhua', [merciless])

ZHAO_YUN = Character('Zhao Yun', [dragon_heart])
GUAN_YU = Character('Guan Yu', [martial_saint])
HUANG_YUEYING = Character('Huang Yueying', [prodigy])
MA_CHAO = Character('Ma Chao', [horsemanship])
WEI_YAN = Character('Wei Yan', [fury_pith])

JUNIOR_QIAO = Character('Junior Qiao', [heavenly_scent])

MA_CHAO_SP = Character('Ma Chao SP', [horsemanship])
PAND_DE = Character('Pang De', [horsemanship])
14 changes: 14 additions & 0 deletions ext/src/players_control.py
Expand Up @@ -45,6 +45,20 @@ class PlayersControl(CorePlayersControl):
def __init__(self):
CorePlayersControl.__init__(self)

def add_player(self, player):
if 8 == len(self.players):
raise ValueError('Room is full')
return CorePlayersControl.add_player(self, player)

def start(self, game_control):
from ext.src.characters import *
CHARACTERS = [GUO_JIA, ZHANG_CHUNHUA, ZHAO_YUN, GUAN_YU, HUANG_YUEYING,
HUANG_YUEYING, MA_CHAO, WEI_YAN]
for i in range(0, len(self.players)):
CHARACTERS[i].select(self.players[i])
game_control.characters_selected(self.players)
for player in self.players: player.start(game_control)

def next_player(self):
self.current_pid = (self.current_pid + 1) % len(self.players)
if None == self.current_player():
Expand Down
18 changes: 12 additions & 6 deletions gateway/wsgi/game.py
Expand Up @@ -45,12 +45,18 @@ def after_game_start(self, path, request_body):
}

def add_player(self, time, name):
token = sha256(name + str(time)).hexdigest()
self.players_tokens.append(token)
return {
'code': ret_code.OK,
'token': token,
}
try:
token = sha256(name + str(time)).hexdigest()
self.players_tokens.append(token)
return {
'code': ret_code.OK,
'token': token,
}
except ValueError, e:
return {
'code': ret_code.BAD_REQUEST,
'reason': e.message,
}

def start(self):
if len(self.players_tokens) < 2:
Expand Down

0 comments on commit 89160d2

Please sign in to comment.