def load_other_cars(): if not cars: return self.mdt.fsm.demand('Countdown') car = cars.pop(0) car_class = Car if Server().is_active: car_class = NetworkCar # if car in player_cars else Car if Client().is_active: car_class = NetworkCar s_p = self.track.get_start_pos(grid.index(car)) pos, hpr = s_p[0] + (0, 0, .2), s_p[1] func = load_other_cars no_p = car not in player_cars srv_or_sng = Server().is_active or not Client().is_active car_class = AiCar if no_p and srv_or_sng else car_class drv = r_p.drivers[car] car_props = CarProps( car, r_p.coll_path, r_p.coll_name, pos, hpr, func, self.mdt, r_p.laps, r_p.keys, r_p.joystick, r_p.sounds, r_p.color_main, r_p.color, r_p.font, r_p.car_path, r_p.phys_file, r_p.wheel_names, r_p.tuning_engine, r_p.tuning_tires, r_p.tuning_suspensions, r_p.road_name, r_p.model_name, r_p.damage_paths, r_p.wheel_gfx_names, r_p.particle_path, drv.logic.engine, drv.logic.tires, drv.logic.suspensions, r_p.rocket_path, r_p.camera_vec, self.mdt.track.phys.waypoints, r_p.respawn_name, r_p.pitstop_name, r_p.wall_name, r_p.goal_name, r_p.bonus_name, r_p.roads_names, r_p.cars) new_car = car_class(car_props) game.cars += [new_car]
def enterRace(self, track_path='', car_path='', drivers=''): LogMgr().log('entering Race state') base.ignore('escape-up') if 'save' not in self.mdt.options.dct: self.mdt.options['save'] = {} self.mdt.options['save']['track'] = track_path self.mdt.options['save']['car'] = car_path self.mdt.options['save']['drivers'] = drivers self.mdt.options.store() keys = self.mdt.options['settings']['keys'] joystick = self.mdt.options['settings']['joystick'] sounds = { 'engine': 'assets/sfx/engine.ogg', 'brake': 'assets/sfx/brake.ogg', 'crash': 'assets/sfx/crash.ogg', 'crash_hs': 'assets/sfx/crash_high_speed.ogg', 'lap': 'assets/sfx/lap.ogg', 'landing': 'assets/sfx/landing.ogg' } if Server().is_active: self.season.create_race_server(keys, joystick, sounds) elif Client().is_active: self.season.create_race_client(keys, joystick, sounds) else: race_props = self.mdt.logic.build_race_props( car_path, drivers, track_path, keys, joystick, sounds) self.mdt.logic.season.create_race(race_props) LogMgr().log('selected drivers: ' + str(drivers)) self.mdt.logic.season.race.logic.drivers = drivers track_name_transl = track_path track_dct = { 'desert': _('desert'), 'mountain': _('mountain'), 'amusement': _('amusement park') } if track_path in track_dct: track_name_transl = track_dct[track_path] singlerace = game.logic.season.__class__ == SingleRaceSeason self.mdt.logic.season.race.fsm.demand( 'Loading', track_path, car_path, [], drivers, ['prototype', 'desert', 'mountain', 'amusement'], track_name_transl, singlerace, [ 'kronos', 'themis', 'diones', 'iapeto', 'phoibe', 'rea', 'iperion' ], 'assets/images/cars/%s_sel.png', 'assets/images/drivers/driver%s_sel.png', game.options['settings']['joystick'], game.options['settings']['keys'], Utils().menu_args, 'assets/sfx/countdown.ogg') self.mdt.logic.season.race.attach_obs(self.mdt.logic.on_race_loaded) exit_meth = self.mdt.logic.on_ingame_exit_confirm self.mdt.logic.season.race.attach_obs(exit_meth)
def connect(self): menu_gui = self.mdt.menu.gui try: eng.log(self.ent.get()) Client().start(self.mdt.event.process_msg, self.ent.get()) menu_args = self.mdt.menu.gui.menu_args self.add_widget(OnscreenText( text=_('Waiting for the server'), scale=.12, pos=(0, -.5), font=menu_gui.font, fg=menu_args.text_fg)) except ClientError: txt = OnscreenText(_('Error'), pos=(0, -.05), fg=(1, 0, 0, 1), scale=.16, font=menu_gui.menu_args.font) eng.do_later(5, txt.destroy)
def on_car(self, car): eng.log('car request: ' + car) Client().send([NetMsgs.car_request, car])
def exit_play(self): Client().destroy() RaceLogic.exit_play(self)
def send_ready(task): Client().send([NetMsgs.client_ready]) eng.log('sent client ready') return task.again
def on_back(self): if Client().is_active: Client().destroy()