本文整理汇总了Python中listener.Listener.join方法的典型用法代码示例。如果您正苦于以下问题:Python Listener.join方法的具体用法?Python Listener.join怎么用?Python Listener.join使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类listener.Listener
的用法示例。
在下文中一共展示了Listener.join方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: print
# 需要导入模块: from listener import Listener [as 别名]
# 或者: from listener.Listener import join [as 别名]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import logging.config
from config import config
from listener import Listener
logging.filename = 'logs/{}_log'.format(config['server_name'])
logging.config.fileConfig('logging.ini')
if __name__ == '__main__':
if '-h' in sys.argv or '--help' in sys.argv:
print('Run this file and as the first argument send name of the config'
'file. For example: python main.py config.ini')
if len(sys.argv) < 2:
logging.error('Please specify config name.')
sys.exit(1)
listener = Listener()
try:
listener.start()
except KeyboardInterrupt:
logging.info('KeyboardInterrupt. Exiting...')
listener.stop()
listener.join()
示例2: NetMgr
# 需要导入模块: from listener import Listener [as 别名]
# 或者: from listener.Listener import join [as 别名]
class NetMgr(Mgr):
def __init__(self, engine,localOptions):
Mgr.__init__(self, engine)
self.engine = engine
self.networkingEnabled = localOptions.enableNetworking
if self.networkingEnabled:
self.server = localOptions.server
else:
self.server = False
self.ip = localOptions.ip
self.remainingIDs = []
self.timeToWaitForPlayers = 10
def initialize(self):
pass
def loadLevel(self):
if self.networkingEnabled:
self.broadcaster = Broadcaster()
self.listener = Listener()
self.listener.start()
self.broadcaster.start()
if self.server or not self.networkingEnabled:
self.remainingIDs.append([1,""])
self.remainingIDs.append([2,""])
def releaseLevel(self):
if self.networkingEnabled:
self.listener.stop()
self.broadcaster.stop()
self.listener.join()
self.broadcaster.join()
def tick(self, dtime):
if self.networkingEnabled:
if dtime < 1 and self.timeToWaitForPlayers > 0:
self.timeToWaitForPlayers -= dtime
# check to see if all players are ready to start the race
if self.timeToWaitForPlayers > 0 and self.engine.gameMgr.allPlayersReady == False:
allReady = True
for ent in self.engine.entMgr.entities:
if not ent.isReady:
allReady = False
if len(self.engine.entMgr.entities) > 1:
self.engine.gameMgr.allPlayersReady = allReady
elif self.timeToWaitForPlayers <= 0:
self.engine.gameMgr.allPlayersReady = True
# get messages
incoming = self.listener.getMessages()
outgoingMsgs = []
for msgs in incoming:
msgType, msg = messages.unpack(msgs)
if msgType == const.STATUS:
found = False
# check to see if the status message is regarding a ship that is already created
for ent in self.engine.entMgr.entities:
if ent.shipId == msg.shipId:
found = True
# if it is, send updates to entity
if found and msg.shipId != self.engine.entMgr.playerIndex:
self.engine.entMgr.entities[msg.shipId].updateQueue.append(msg)
# if it isn't, create that entity
elif not found:
ent = Spaceship("Ship" + str(msg.shipId),msg.shipId, self.engine,const.MESHES[msg.shipId])
ent.pos = self.engine.entMgr.nextPos
self.engine.entMgr.nextPos.x += 40
self.engine.entMgr.entities.append(ent)
# only process requests before game has started
elif msgType == const.REQUEST and self.timeToWaitForPlayers > 0:
for ID in self.remainingIDs:
# if the id has not been issued already, or if the ID corresponds to a user who has been given an ID (but did not recieve their ID), send the ID
if ID[1] == "" or ID[1] == msg.userName:
outgoingMsgs.append(messages.pack(messages.InfoMessage(msg.userName,ID[0]),const.INFO))
ID[1] = msg.userName
# only process info messages when this player has not been handed a playerIndex
elif msgType == const.INFO and not self.server and self.engine.entMgr.playerIndex == -1:
self.engine.entMgr.playerIndex = msg.shipId
found = False
for ent in self.engine.entMgr.entities:
if ent.shipId == msg.shipId:
found = True
if not found:
ent = Spaceship("Ship" + str(msg.shipId),msg.shipId, self.engine,const.MESHES[msg.shipId])
ent.pos = self.engine.entMgr.nextPos
self.engine.entMgr.nextPos.x += 40
self.engine.entMgr.entities.append(ent)
# if this player has not been handed a playerIndex, request one.
if self.engine.entMgr.playerIndex == -1:
outgoingMsgs.append(messages.pack(messages.RequestMessage(str(socket.gethostname())),const.REQUEST))
# if the player has been handed a playerIndex, send the status of your ship
else:
myId = self.engine.entMgr.playerIndex
myEnt = self.engine.entMgr.entities[myId]
outgoingMsgs.append(messages.pack(messages.StatusMessage(myId,myEnt.pos,myEnt.dir,myEnt.colVel,myEnt.speed,myEnt.pitch, myEnt.roll,myEnt.isReady),const.STATUS))
# send outgoing messages
for msg in outgoingMsgs:
self.broadcaster.addMessage(msg)