示例#1
0
def handshake_ack(message):
    match = manager.get_match(message['match'])
    if match == None:
        app.logger.info("Tried to access to match: " + message['match'])
        return
    color = match.get_color(message['player'])
    code = match.join_match(message['player'], message['sid'])
    app.logger.info("[HANDSHAKE] ack received from " + message['sid'] + "C: " +
                    color)

    if (code == 0 or code == 1 or code == 2 or code == 3):
        match = manager.get_match(message['match'])
        emit('chat', {'data': match.get_stack_as_string()}, room=request.sid)
        out = match.get_outcome()
        if out != None:
            emit('ended', {
                'cause': out.termination.value,
                'winner': out.winner,
                'result': out.result()
            },
                 room=request.sid)
            match.finish_match(out.termination.value, out.winner)
        leave_room(request.sid)
        join_room(message['match'])
        matcher[message['sid']] = {
            'code': message['match'],
            'player': message['player']
        }

        emit('unlock', {'data': coder[code]}, room=message['match'])
        emit('receive_movement', match.pack_data(), room=message['match'])
        emit('chat', {'data': coder[code] + " CONNECTED"},
             room=message['match'])
        manager.update(match)

        app.logger.info("PLAYER " + match.get_color(message['player']) +
                        " JOINED OKAY")
    elif code == -4:
        finish = match.get_finish_cause()
        if finish == "draw":
            emit('ended', {
                'cause': 12,
                'winer': "draw",
                'result': "1/2-1/2"
            },
                 room=request.sid)
        else:
            emit('ended', {
                'cause': finish.termination.value,
                'winner': finish.termination.winner,
                'result': finish.termination.result()
            },
                 room=request.sid)
    else:
        evt = Request(RequestType.ERROR,
                      match.get_name_from_code(message['player']),
                      "ERROR JOINING: INVALID PLAYER CODE")
        match.push_event(evt)
        emit('new_event', evt.get_json(), room=accountant.get_cpanel())
        app.logger.info("ERROR JOINING: INVALID PLAYER CODE")
示例#2
0
def disconnect():
    try:
        app.logger.info("[DC] " + request.sid + " requesting disconnect")
        match_code = matcher[request.sid]
        match = manager.get_match(match_code['code'])
        code = match.leave_match(match_code['player'])
        if (code == 0 or code == 1):
            leave_room(match_code['code'])
            emit('chat', {
                'data':
                match.get_color(match_code['player']) + " DISCONNECTED"
            },
                 room=match_code['code'])
            app.logger.info("[DC] " + match.get_color(match_code['player']) +
                            " " + request.sid + " disconnected ok")
            manager.update(match)
        else:
            evt = Request(RequestType.ERROR, request.sid,
                          "[DC] CODE NOT FOUND")
            match.push_event(evt)
            emit('new_event', evt.get_json(), room=accountant.get_cpanel())
            app.logger.error("[DC] CODE NOT FOUND")
    except:
        app.logger.error("[DC] ERROR")
        traceback.print_exc()
示例#3
0
def admin(message):
    match = manager.get_match(message['match'])
    match.stop_timer()
    app.logger.info(message['match'] + " " +
                    match.get_color(message['player']) + " REQUESTED ADMIN")
    evt = Request(RequestType.ADMIN,
                  match.get_name_from_code(message['player']))
    match.push_event(evt)
    emit('new_event', evt.get_json(), room=accountant.get_cpanel())
    emit('stop_timer', {}, room=message['match'])
示例#4
0
def report(message):
    try:
        match = manager.get_match(message['match'])
        match.stop_timer()
        app.logger.info(message['match'] + " " +
                        match.get_color(message['player']) +
                        " REPORTED ILLEGAL")
        evt = Request(RequestType.ILLEGAL,
                      match.get_name_from_code(message['player']))
        app.logger.info(evt.get())
        match.push_event(evt)
        emit('new_event', evt.get_json(), room=accountant.get_cpanel())
        emit('stop_timer', {}, room=message['match'])
        app.logger.info("SENT STOP TIMER EVENT")
    except:
        app.logger.info("ERROR EN REPORT ILLEGAL")
        traceback.print_exc()