Example #1
0
    def handle_arrival_msg(self):
        # TODO: impl protocol to handle arrived packet from network layer.
        # call self.msg_handler() to deliver to application layer.

        msg = self.network_layer.recv()

        if util.valid_ack(msg):
            sequence = util.get_sequence(msg)
            self.logger.info("Sender received ack%d", sequence)
            with self.sender_lock:
                self.sender_ack_base = sequence

        if util.valid_data(msg):
            sequence = util.get_sequence(msg)
            if sequence == GoBackN.receiver_expect_sequence:
                self.logger.info("Receiver received expected packet pkt%d",
                                 sequence)
                packet = util.make_ack_packet(config.MSG_TYPE_ACK, sequence)
                self.network_layer.send(packet)
                self.logger.info("Receiver send back ack%d", sequence)
                payload = util.get_payload(msg)
                self.msg_handler(payload)
                with GoBackN.gbn_lock:
                    GoBackN.receiver_expect_sequence = (
                        GoBackN.receiver_expect_sequence + 1) % util.HASH_SIZE
            else:
                self.logger.info("Receiver received unexpected packet pkt%d",
                                 sequence)
                if GoBackN.receiver_expect_sequence > 0:
                    packet = util.make_ack_packet(
                        config.MSG_TYPE_ACK,
                        GoBackN.receiver_expect_sequence - 1)
                    self.network_layer.send(packet)
                    self.logger.info("Recevier send back ack%d",
                                     GoBackN.receiver_expect_sequence - 1)
Example #2
0
    def handle_arrival_msg(self):
        msg = self.network_layer.recv()
        # TODO: impl protocol to handle arrived packet from network layer.
        # call self.msg_handler() to deliver to application layer.
        if util.valid_ack(msg):
            with StopAndWait.ss_lock:
                StopAndWait.sender_ack_sequence = util.get_sequence(msg)

        if util.valid_data(msg):
            sequence = util.get_sequence(msg)
            packet = util.make_ack_packet(config.MSG_TYPE_ACK, sequence)
            self.network_layer.send(packet)
            if StopAndWait.receiver_sequence != sequence:
                self.logger.info('Receiver received new packet: pkt%d',
                                 sequence)
                with StopAndWait.ss_lock:
                    StopAndWait.receiver_sequence = sequence
                payload = util.get_payload(msg)
                self.msg_handler(payload)
            else:
                self.logger.info(
                    'Receiver received duplicate packet: pkt%d, ignored',
                    sequence)
Example #3
0
 def get_sequence_safe(self, id):
     if 'astral206' in self.config['ground_truth'] and self.config['ground_truth']['astral206'] and len(id) != 7:
         sequence = str(self.original_sequences[id[:7]].seq).upper()
     else:
         sequence = util.get_sequence(self.config, id)
     return sequence
Example #4
0
def new_animation(basename, ext, num, freq, sequence, num_digits=1, offset=0):
    frame_names = util.name_sequence(basename, ext, num, num_digits, offset)
    frames = util.get_sequence(frame_names, sequence)
    return Animation(frames, freq)
Example #5
0
    def __init__(self, size, scale):
        pygame.init()
        self.scale = scale
        self.size = size
        if scale:
            self.window = pygame.display.set_mode((size[0]*2, size[1]*2))
        else:
            self.window = pygame.display.set_mode(size)

        self.screen = pygame.Surface(size)
        self.screen.set_colorkey((0,0,0))
        self.actual_screen = pygame.display.get_surface()
        self.camera = camera.Camera(util.vec2(30,25),size)

        pygame.mouse.set_visible(0)
        self.clock = pygame.time.Clock()
        self.is_running = True

        self.restart_level_counter = -1
        self.current_stage_id = stage.STAGE_INTRO
        self.remove_player = False

        # physics
        #init_physics()


        # music:
        self.bg_music = util.load_sound("data/channel_panic!-theme.ogg")
        #self.bg_music.play(-1)
        #self.bg_music_playing = True
        self.bg_music_playing = False
        # billboards
        self.billboards = []
        self.billboards.append(billboard.Billboard("data/background_stars.png",util.vec2(0,0),10,True))
        self.billboards.append(billboard.Billboard("data/background_city.png",util.vec2(0,210),40,True,False,False))
        self.billboards.append(billboard.Billboard("data/background_city2.png",util.vec2(0,190),30,True,False,True))

        #timer
        self.map_timer = billboard.GuiTimerBar(util.vec2(240,0),15)

        # misc
        names = util.name_sequence("data/entity_door","png",4)
        # lol hack
        frames = util.get_sequence(names,[0,1,2,3,4,4,4,4,4,4,4,4,4,4])
        self.door_anim = animation.Animation(frames,8)
        self.animate_door = False

        self.fade_in_out = False
        self.fade_in_out_time = 0

        self.playing_intro = True

        # key gui thingy
        self.gui_key = billboard.GuiKeys(util.vec2(0,0),16)

        # game settings
        #self.player = player.Player(util.vec2(100,20), self.space)
        #print(self.player.object_type)
        #self.camera = camera.Camera(util.vec2(30,25),size)
        #self.current_stage = None
        # set color key to black
        #self.screen.set_colorkey(pygame.Color(0,0,0))
        pygame.key.set_repeat(1, 20)