Example #1
0
    def __init__(self, main):
        Screen.__init__(self, main)
        self.waves = Waves()
        self.inputblock = pygame.Surface((JOIN_BOX_W, JOIN_BOX_H), pygame.SRCALPHA)
        self.inputblock.fill((0, 0, 0, 128))
        self.textbox = pygame.Surface((JOIN_TEXT_W, JOIN_TEXT_H), pygame.SRCALPHA)
        self.textbox.fill((0, 0, 0, 64))
        self.font = pygame.font.Font(None, 40)
        okbutton = pygame.Surface((JOIN_BUTT_W, JOIN_BUTT_H), pygame.SRCALPHA)
        okbutton.fill((0, 0, 0, 64))
        oktxt = self.font.render("Join", True, COLORS["white"])
        okbutton.blit(oktxt, (10, 8))
        backbutton = pygame.Surface((JOIN_BUTT_W, JOIN_BUTT_H), pygame.SRCALPHA)
        backbutton.fill((0, 0, 0, 64))
        backtxt = self.font.render("Back", True, COLORS["white"])
        backbutton.blit(backtxt, (5, 8))
        self.inputblock.blit(backbutton, (JOIN_BUTT_BUF_X, JOIN_BUTT_BUF_Y))
        self.inputblock.blit(okbutton, (self.inputblock.get_width()-JOIN_BUTT_BUF_X-okbutton.get_width(), JOIN_BUTT_BUF_Y))
        instruction = self.font.render("Server Address", True, COLORS["white"])
        self.inputblock.blit(instruction, (int(((self.inputblock.get_width()-instruction.get_width())/2.0)), 10))
        self.ip = ""
        self.countdown = 0

        def go_back(mpos):
            self.main.change_screen("main")
        self.clickbox.append((JOIN_BACK_X, JOIN_BUTT_Y, JOIN_BUTT_W, JOIN_BUTT_H), go_back)
        self.clickbox.append((JOIN_OK_X, JOIN_BUTT_Y, JOIN_BUTT_W, JOIN_BUTT_H), self.connect_ip)
Example #2
0
    def __init__(self, width, height, manager, owner):

        Screen.__init__(self, manager, owner, Screens.PRODUCTENTRY)
        ProductEntryGUI.__init__(self, width, height, self)

        self.states = Enum("BARCODE", "DESCRIPTION", "PRICE", "ADDING",
                           "WARNING")
        self.events = Enum("GUIEVENT", "SCAN", "BADSCAN", "KEYPRESS",
                           "TIMEOUT")

        self.barcode = ""
        self.price = 0
        self.description = ""

        self.sm = SimpleStateMachine(
            self.states.BARCODE,  #pylint: disable=C0103
            [
                (self.states.BARCODE, self.events.GUIEVENT,
                 self._on_gui_event),
                (self.states.BARCODE, self.events.SCAN, self._got_barcode),
                (self.states.BARCODE, self.events.BADSCAN,
                 self._got_new_barcode),
                (self.states.BARCODE, self.events.KEYPRESS,
                 lambda: self.states.BARCODE),
                (self.states.DESCRIPTION, self.events.GUIEVENT,
                 self._on_gui_event),
                (self.states.DESCRIPTION, self.events.KEYPRESS,
                 self._got_new_desc_char),
                (self.states.DESCRIPTION, self.events.SCAN,
                 lambda: self.states.DESCRIPTION),
                (self.states.DESCRIPTION, self.events.BADSCAN,
                 lambda: self.states.DESCRIPTION),
                (self.states.PRICE, self.events.GUIEVENT, self._on_gui_event),
                (self.states.PRICE, self.events.KEYPRESS,
                 self._got_new_price_char),
                (self.states.PRICE, self.events.SCAN,
                 lambda: self.states.DESCRIPTION),
                (self.states.PRICE, self.events.BADSCAN,
                 lambda: self.states.DESCRIPTION),
                (self.states.ADDING, self.events.TIMEOUT, self._exit),
                (self.states.ADDING, self.events.GUIEVENT,
                 lambda: self.states.ADDING),
                (self.states.ADDING, self.events.KEYPRESS,
                 lambda: self.states.ADDING),
                (self.states.ADDING, self.events.SCAN,
                 lambda: self.states.ADDING),
                (self.states.ADDING, self.events.BADSCAN,
                 lambda: self.states.ADDING),
                (self.states.WARNING, self.events.TIMEOUT,
                 lambda: self.states.BARCODE),
                (self.states.WARNING, self.events.GUIEVENT,
                 lambda: self.states.WARNING),
                (self.states.WARNING, self.events.KEYPRESS,
                 lambda: self.states.WARNING),
                (self.states.WARNING, self.events.SCAN,
                 lambda: self.states.WARNING),
                (self.states.WARNING, self.events.BADSCAN,
                 lambda: self.states.WARNING),
            ])
Example #3
0
    def die(self):
        '''
        '''

        super().die()

        Screen.load_screen(DeathScreen(Screen.get_current_screen()))
        sound_manager.play_effect('player_death')
Example #4
0
    def update(self, delta_time):
        '''
        '''

        super().update(delta_time)

        if event_handler.is_key_pressed(pygame.K_RETURN):
            Screen.load_screen(GameScreen())
Example #5
0
    def instantiate(position):
        '''
        '''

        if Blood.total_objects < 40:
            Screen.get_current_screen().object_handler.instantiate(
                Blood(position))
            Blood.total_objects += 1
Example #6
0
    def update(self, delta_time):
        '''
        '''

        super().update(delta_time)

        if event_handler.is_key_pressed(pygame.K_RETURN):
            Screen.get_last_screen().load_content()
            Screen.load_screen(Screen.get_last_screen())
Example #7
0
 def display(self, screen):
     Screen.display(self, screen)
     self.waves.display(screen)
     screen.blit(self.inputblock, (JOIN_BOX_X, JOIN_BOX_Y))
     screen.blit(self.textbox, (JOIN_TEXT_X, JOIN_TEXT_Y))
     if self.countdown > 0:
         self.countdown -= 1
         if not self.countdown:
             self.redraw_textbox(False)
Example #8
0
 def setup_class(self):
     self.d_psr = 1 * u.kpc
     self.d_scr = 0.5 * u.kpc
     self.pulsar = Source(
         vel=CartesianRepresentation(100., 0, 0, unit='km/s'))
     self.screen = Screen(CartesianRepresentation([0., 10.], [0., 0.],
                                                  [0., 0.],
                                                  unit='AU'),
                          CartesianRepresentation(0., 0., 0., unit='km/s'),
                          magnification=np.array([1., 0.5j]))
     self.telescope = Telescope()
Example #9
0
 def display(self, screen):
     Screen.display(self, screen)
     self.waves.display(screen)
     if self.highlight_over_loc is not None:
         screen.blit(self.highlight_over_box, self.highlight_over_loc)
     if self.highlight_click_loc is not None:
         screen.blit(self.highlight_click_box, self.highlight_click_loc)
     screen.blit(self.disp_area, (40, 160))
     screen.blit(self.text_area, (40, 690))
     screen.blit(self.save_load_button, (550, 690))
     screen.blit(self.back_button, (40, 740))
Example #10
0
    def display(self, screen):
        Screen.display(self, screen)
        # I feel like the following code is flipping me off...
        self.waves.display(screen, False)
        screen.blit(self.players_panel, (26, 38))
        screen.blit(self.chat_panel, (545, 38))
        screen.blit(self.textbox, (565, 577), (min(self.textbox.get_width()-582, max(0, (self.font.size(self.text_input)[0])-582+10)), 0, 582, 30))
        screen.blit(self.base_panel, (26, 681))
        screen.blit(self.msgpanel.view, (566, 63))

        if self.player_menu_pos != (0, 0):
            screen.blit(self.player_menu, (self.player_menu_pos[0], self.player_menu_pos[1]))
Example #11
0
    def on_shooting(self):
        '''
        '''

        sound_manager.play_effect('shotgun')
        self.owner.animator.play('shotgun_shoot')

        # spawn bullets
        for i in range(35):
            Screen.get_current_screen().instantiate(
                Bullet(self, self.bullet_speed, self.bullet_max_distance))

        super().on_shooting()
Example #12
0
    def on_shooting(self):
        '''
        '''

        # spawn bullet
        Screen.get_current_screen().instantiate(
            Bullet(self, self.bullet_speed, self.bullet_max_distance))

        if self.bullets != 0 and self.bullets % self.magazine_size == 0:
            self.reload()
            self.bullets -= 1
        elif self.bullets > 0:
            self.bullets -= 1

        self.can_shoot = False
Example #13
0
    def update(self, delta_time):
        '''
        '''

        super().update(delta_time)

        if self.is_dead:
            return

        # update current gun
        self.current_gun.update(delta_time)

        # handle movement
        self._movement(delta_time)

        # shoot
        if event_handler.is_mouse_down(1):
            self.attack()

        # switch weapons
        self._swith_weapons()

        # get the camera in current screen
        camera = Screen.get_current_screen().camera

        # look at mouse
        self.transform.look_at(
            camera.screen_to_world_point(
                Vector2.tuple_to_vector2(pygame.mouse.get_pos())))

        # make the camera follow player
        self._camera_follow(camera)
Example #14
0
    def spawn_enemy(self, enemy):
        '''
        '''

        self.current_wave_index += 1

        enemy_type = None
        position = Vector2(enemy[2], enemy[3])

        if enemy[1] == 'normal_zombie':
            enemy_type = Zombie(self.player, position)
        elif enemy[1] == 'big_zombie':
            enemy_type = BigZombie(self.player, position)

        Screen.get_current_screen().instantiate(enemy_type)
        self.spawned_enemies.append(enemy_type)
Example #15
0
class TestSimpleScreen:
    def setup_class(self):
        self.d_psr = 1 * u.kpc
        self.d_scr = 0.5 * u.kpc
        self.pulsar = Source(
            vel=CartesianRepresentation(100., 0, 0, unit='km/s'))
        self.screen = Screen(CartesianRepresentation([0., 10.], [0., 0.],
                                                     [0., 0.],
                                                     unit='AU'),
                             CartesianRepresentation(0., 0., 0., unit='km/s'),
                             magnification=np.array([1., 0.5j]))
        self.telescope = Telescope()

    def test_observe_pulsar(self):
        obs = self.telescope.observe(self.pulsar, distance=self.d_psr)
        assert obs.brightness.shape == ()
        assert obs.brightness == 1.
        assert obs.tau == 0.
        assert obs.taudot == 0.

    def test_screen_pulsar(self):
        d_rel = self.d_psr - self.d_scr
        screened = self.screen.observe(self.pulsar, distance=d_rel)
        assert screened.brightness.shape == (2, )
        assert np.all(screened.brightness == self.screen.magnification)
        theta = ([0, -10] * u.AU) / d_rel
        tau_expected = theta**2 * 0.5 * d_rel / const.c
        assert u.allclose(screened.tau, tau_expected)
        taudot_expected = 100 * u.km / u.s * theta / const.c
        assert u.allclose(screened.taudot, taudot_expected)

    def test_observe_screened_pulsar(self):
        d_rel = self.d_psr - self.d_scr
        screened = self.screen.observe(self.pulsar, distance=d_rel)
        obs = self.telescope.observe(screened, distance=self.d_scr)
        assert obs.brightness.shape == (2, )
        assert np.all(obs.brightness == self.screen.magnification)
        d_eff = self.d_psr * self.d_scr / d_rel
        v_eff = self.d_scr / d_rel * 100 * u.km / u.s
        theta = ([0, -10] * u.AU) / self.d_scr
        tau_expected = theta**2 * 0.5 * d_eff / const.c
        assert u.allclose(obs.tau, tau_expected)
        taudot_expected = v_eff * theta / const.c
        assert u.allclose(obs.taudot, taudot_expected)

        # Sanity check on repr
        repr(obs)
Example #16
0
    def __init__(self, main):
        Screen.__init__(self, main)
        self.waves = Waves()
        self.files = None
        self.font = pygame.font.Font(None, LINE_HEIGHT)
        self.disp_area = pygame.Surface((600, 520), pygame.SRCALPHA)
        self.text_area = pygame.Surface((500, LINE_HEIGHT), pygame.SRCALPHA)
        self.save_load_button = pygame.Surface((90, LINE_HEIGHT), pygame.SRCALPHA)
        self.highlight_over_box = pygame.Surface((600, LINE_HEIGHT), pygame.SRCALPHA)
        self.highlight_over_box.fill((0, 0, 0, 64))
        self.highlight_over_loc = None
        self.highlight_click_box = pygame.Surface((600, LINE_HEIGHT), pygame.SRCALPHA)
        self.highlight_click_box.fill((0, 0, 0, 64))
        self.highlight_click_loc = None
        self.redraw_save_load()
        self.return_to = None
        self.text_area.fill((0, 0, 0, 64))
        self.text_input = ""
        self.back_button = pygame.Surface((110, 50), pygame.SRCALPHA)
        self.back_button.fill((0, 0, 0, 128))
        txt = pygame.font.Font(None, 60).render("Back", True, COLORS["white"])
        self.back_button.blit(txt, (5, 5))
        def go_back(mpos):
            if self.return_to is not None:
                self.main.change_screen(self.return_to)
            else:
                print "I got nowhere to go to."
        self.clickbox.append((40, 740, 110, 50), go_back)
        self.redraw_files()

        def m_click(mpos):
            index = mpos[1]//LINE_HEIGHT
            if index < len(self.files):
                self.highlight_click_loc = (40, index*LINE_HEIGHT + 160)
                self.text_input = self.files[index]
                self.redraw_text()
        def m_over(mpos):
            index = mpos[1]//LINE_HEIGHT
            if index < len(self.files):
                self.highlight_over_loc = (40, index*LINE_HEIGHT + 160)
            else:
                self.highlight_over_loc = None
        def m_out():
            self.highlight_over_loc = None
        self.overbox.append((40, 160, 600, 520), m_over, off=m_out)
        self.clickbox.append((40, 160, 600, 520), m_click)
        self.clickbox.append((550, 690, 90, LINE_HEIGHT), self.save_load)
Example #17
0
def main() -> None:
    ''' The main function of the program that contains the gameLoop
    '''

    # ---------------------- GameLoop
    while not utils.quit_game:

        # --------------------UPDATE--------------------
        event_handler.update()
        Screen.get_current_screen().update(
            clock.get_time())  # update everything in the current screen

        # ---------------------DRAW---------------------
        utils.window.fill((20, 20, 20))  # clear screen
        Screen.get_current_screen().draw(
            utils.window)  # draw everything in the current screen
        pygame.display.update()  # render everything

        clock.tick(100)  # set the FPS to 100
Example #18
0
    def __init__(self, width, height, manager, owner):
        Screen.__init__(self, manager, owner, Screens.MAINSCREEN)
        MainScreenGUI.__init__(self, width, height, self)
        
        self.states = Enum("IDLE", "CHARGING", "PAYMENTMSG", "WARNING")
        self.events = Enum("GUIEVENT", "SCAN", "BADSCAN", "RFID", "BADRFID", "CHARGED", "BANNERTIMEOUT")
        
        self.sm = SimpleStateMachine(self.states.IDLE, #pylint: disable=C0103
        [
                [self.states.IDLE,          self.events.GUIEVENT,       self._on_idle_gui_event],
                [self.states.IDLE,          self.events.SCAN,           self._on_idle_scan_event],
                [self.states.IDLE,          self.events.BADSCAN,        self._on_idle_bad_scan_event],
                [self.states.IDLE,          self.events.RFID,           self._on_rfid_event],
                [self.states.IDLE,          self.events.BADRFID,        self._on_bad_rfid_event],

                [self.states.PAYMENTMSG,    self.events.BANNERTIMEOUT,  self._return_to_intro],
                [self.states.PAYMENTMSG,    self.events.GUIEVENT,       lambda: self.states.PAYMENTMSG],
                [self.states.PAYMENTMSG,    self.events.SCAN,           lambda: self.states.PAYMENTMSG],
                [self.states.PAYMENTMSG,    self.events.BADSCAN,        lambda: self.states.PAYMENTMSG],
                [self.states.PAYMENTMSG,    self.events.RFID,           lambda: self.states.PAYMENTMSG],
                [self.states.PAYMENTMSG,    self.events.BADRFID,        lambda: self.states.PAYMENTMSG],
                
                [self.states.CHARGING,      self.events.CHARGED,        lambda: self.states.PAYMENTMSG],
                [self.states.CHARGING,      self.events.GUIEVENT,       lambda: self.states.CHARGING],
                [self.states.CHARGING,      self.events.SCAN,           lambda: self.states.CHARGING],
                [self.states.CHARGING,      self.events.BADSCAN,        lambda: self.states.CHARGING],
                [self.states.CHARGING,      self.events.RFID,           lambda: self.states.CHARGING],
                [self.states.CHARGING,      self.events.BADRFID,        lambda: self.states.CHARGING],
                
                [self.states.WARNING,       self.events.BANNERTIMEOUT,  self._remove_warning],
                [self.states.WARNING,       self.events.SCAN,           self._on_idle_scan_event],
                [self.states.WARNING,       self.events.BADSCAN,        self._update_barcode_warning],
                [self.states.WARNING,       self.events.RFID,           self._on_rfid_event],
                [self.states.WARNING,       self.events.BADRFID,        self._on_bad_rfid_event],
                [self.states.WARNING,       self.events.GUIEVENT,       self._remove_warning],

        ])

        self.logger = logging.getLogger("MainScreen")

        self.new_product = None
        self.badcode = ""
Example #19
0
    def __init__(self, width, height, manager, owner):

        Screen.__init__(self, manager, owner, Screens.PRODUCTENTRY)
        ProductEntryGUI.__init__(self, width, height, self)

        self.states = Enum("BARCODE", "DESCRIPTION", "PRICE", "ADDING", "WARNING")
        self.events = Enum("GUIEVENT", "SCAN", "BADSCAN", "KEYPRESS", "TIMEOUT")

        self.barcode = ""
        self.price = 0
        self.description = ""
       
        self.sm = SimpleStateMachine(self.states.BARCODE, #pylint: disable=C0103
        [
            (self.states.BARCODE, self.events.GUIEVENT,      self._on_gui_event),
            (self.states.BARCODE, self.events.SCAN,          self._got_barcode),
            (self.states.BARCODE, self.events.BADSCAN,       self._got_new_barcode),
            (self.states.BARCODE, self.events.KEYPRESS,      lambda: self.states.BARCODE),

            (self.states.DESCRIPTION, self.events.GUIEVENT,  self._on_gui_event),
            (self.states.DESCRIPTION, self.events.KEYPRESS,  self._got_new_desc_char),
            (self.states.DESCRIPTION, self.events.SCAN,      lambda: self.states.DESCRIPTION),
            (self.states.DESCRIPTION, self.events.BADSCAN,   lambda: self.states.DESCRIPTION),

            (self.states.PRICE, self.events.GUIEVENT,        self._on_gui_event),
            (self.states.PRICE, self.events.KEYPRESS,        self._got_new_price_char),
            (self.states.PRICE, self.events.SCAN,            lambda: self.states.DESCRIPTION),
            (self.states.PRICE, self.events.BADSCAN,         lambda: self.states.DESCRIPTION),

            (self.states.ADDING, self.events.TIMEOUT,        self._exit),
            (self.states.ADDING, self.events.GUIEVENT,       lambda: self.states.ADDING),
            (self.states.ADDING, self.events.KEYPRESS,       lambda: self.states.ADDING),
            (self.states.ADDING, self.events.SCAN,           lambda: self.states.ADDING),
            (self.states.ADDING, self.events.BADSCAN,        lambda: self.states.ADDING),
            
            (self.states.WARNING, self.events.TIMEOUT,       lambda: self.states.BARCODE),
            (self.states.WARNING, self.events.GUIEVENT,       lambda: self.states.WARNING),
            (self.states.WARNING, self.events.KEYPRESS,       lambda: self.states.WARNING),
            (self.states.WARNING, self.events.SCAN,           lambda: self.states.WARNING),
            (self.states.WARNING, self.events.BADSCAN,        lambda: self.states.WARNING),
        ])
Example #20
0
    def on_render(self, surface):
        super().on_render(surface)

        # display weapon name
        weapon = self.current_gun
        bullets = weapon.bullets % weapon.magazine_size + 1 if not weapon.reloading else 0
        magazines = weapon.bullets // weapon.magazine_size * weapon.magazine_size if not weapon.reloading else weapon.bullets // weapon.magazine_size * weapon.magazine_size + weapon.magazine_size
        text = f'{self.current_gun.name} | {bullets}/{magazines}'
        position = Screen.get_current_screen().camera.world_to_screen_point(
            self.transform.position -
            Vector2(len(text) * 0.25 * 11, 55)).to_tuple()
        utils.draw_font(surface,
                        text, (255, 255, 255),
                        position,
                        size=11,
                        bold=True)
Example #21
0
 def __init__(self, width, height, manager, owner):
     
     Screen.__init__(self, manager, owner, Screens.NUMERICENTRY)
     NumericEntryGUI.__init__(self, width, height, self)
     self.amountinpence = 0
     self.preset_amount = False
Example #22
0
    def __init__(self, main, host=True):
        Screen.__init__(self, main)

        self.my_index = 0

        self.player_colors = [(0xFF, 0, 0), (0, 0xFF, 0), (0xFF, 0, 0xFF), (0xFF, 0xFF, 0),
                              (0, 0xFF, 0xFF), (0xFF, 180, 0), (180, 0, 0xFF),
                              (0, 0xFF, 100), (0xFF, 0xCC, 0xCC), (0xCC, 0xCC, 0xFF)]
        self.color_pick = 0
        self.largefont = pygame.font.Font(None, 70)
        self.font = pygame.font.Font(None, 30)

        self.waves = Waves()

        self.player_menu = pygame.Surface((415, 120), pygame.SRCALPHA)
        self.player_menu_pos = (0, 0)

        self.players_panel = pygame.Surface((496, 578), pygame.SRCALPHA)
        self.players_panel.fill((0, 0, 0, 128))
        self.players = []

        self.start_timeout = time.time()

        self.players.append(["Host", pygame.Surface((474, 48), pygame.SRCALPHA), False])
        for _ in xrange(1, 10):
            self.players.append([CLOSED, pygame.Surface((474, 48), pygame.SRCALPHA), False])
        self.redraw_players()
        self.chat_panel = pygame.Surface((696, 578), pygame.SRCALPHA)
        self.chat_panel.fill((0, 0, 0, 128))
        send_button = pygame.Surface((67, 30), pygame.SRCALPHA)
        send_button.fill((0, 0, 0, 64))
        txt = self.font.render("Send", True, (0xCC, )*3)    # TODO: nope
        send_button.blit(txt, (10, 7))
        self.chat_panel.blit(send_button, (20+582+5, 577-38))
        self.textbox = pygame.Surface((1820, 30), pygame.SRCALPHA)
        self.textbox.fill((0, 0, 0, 64))
        self.base_panel = pygame.Surface((1215, 96), pygame.SRCALPHA)
        self.base_panel.fill((0, 0, 0, 128))
        txt_leave_lobby = self.largefont.render("Leave Lobby", True, COLORS["white"])
        self.button_leave_lobby = pygame.Surface((331, 76), pygame.SRCALPHA)
        self.button_leave_lobby.fill((0, 0, 0, 64))
        self.button_leave_lobby.blit(txt_leave_lobby, (15, 15))
        self.base_panel.blit(self.button_leave_lobby, (10, 10))

        if host:
            def get_ip():
                try:
                    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
                    s.connect(('google.com', 80))
                    ip = s.getsockname()[0]
                    s.close()

                    txt_ip = self.largefont.render(ip, True, COLORS["white"])
                    self.base_panel.blit(txt_ip, (450, 25))

                    def copy_ip(mpos):
                        try:
                            pygame.scrap.init()
                            pygame.scrap.put(pygame.SCRAP_TEXT, ip)
                        except:
                            pass  # fixes!

                    self.clickbox.append((476, 706, txt_ip.get_width(), txt_ip.get_height()), copy_ip)
                except (urllib2.URLError, urllib2.HTTPError, IOError):
                    print "Error fetching IP"
            threading.Thread(target=get_ip).start()

        self.button_start = pygame.Surface((331, 76), pygame.SRCALPHA)
        self.button_start.fill((0, 0, 0, 64))
        txt_start_game = self.largefont.render("Start Game", True, COLORS["white"])
        self.button_start.blit(txt_start_game, (30, 15))
        self.base_panel.blit(self.button_start, (870, 10))

        def start_game(mpos):
            if time.time() - self.start_timeout > 3:
                self.main.client.start_game()
                self.start_timeout = time.time()
        self.clickbox.append((900, 690, 331, 76), start_game)

        self.text_input = ""
        self.msgpanel = MessagePanel((652, 509), 23, self.font)
        self.startable = False

        def to_main(mpos):
            self.main.change_screen("main")
        self.clickbox.append((37, 692, 329, 74), to_main)

        def ready_button_click(i):
            def anon(mpos):
                if i == self.my_index:
                    self.main.client.set_ready(int(not self.players[i][2]))
                else:
                    print "ready button clicked!!"
            return anon
        for x in xrange(10):
            self.clickbox.append((37, 75+54*x, 48, 48), ready_button_click(x))

        def player_panel_click(i):
            def anon(mpos):
                if self.my_index == 0:      # only the host can kick
                    if i == self.my_index:
                        pass
                    elif isinstance(self.players[i][0], int):
                        self.player_menu_pos = (95, 75+54*i+48)
                        options = ["Closed", "Open", "AI"]
                        self.player_menu.fill((0, 0, 0, 128))

                        def clearworking(mpos):
                            self.player_menu_pos = (0, 0)
                            for k in xrange(3):
                                self.clickbox.remove((95, 75+54*i+48+k*40+5))
                            self.clickbox.remove((0, 0))
                        self.clickbox.append((0, 0, 1280, 800), clearworking, z=2)
                        for j, option in enumerate(options):
                            def wrapper(toWhat):
                                def changeto(mpos):
                                    self.main.client.set_slot(i, toWhat+1)
                                    self.player_menu_pos = (0, 0)
                                    for k in xrange(3):
                                        self.clickbox.remove((95, 75+54*i+48+k*40+5))
                                    self.clickbox.remove((0, 0))
                                return changeto
                            self.clickbox.append((95, 75+54*i+48+j*40+5, 415, 40), wrapper(j), z=3)
                            text = self.font.render(option, True, COLORS["white"])
                            self.player_menu.blit(text, (5, 5+j*40))
                    else:   # it's a person
                        self.player_menu_pos = (95, 75+54*i+48)
                        self.player_menu.fill((0, 0, 0, 0))
                        pygame.draw.rect(self.player_menu, (0, 0, 0, 128), (0, 0, 415, 30))

                        def clearworking(mpos):
                            self.player_menu_pos = (0, 0)
                            self.clickbox.remove((95, 75+54*i+48+5))
                            self.clickbox.remove((0, 0))
                        self.clickbox.append((0, 0, 1280, 800), clearworking, z=2)

                        def kickhim(mpos):
                            self.main.client.kick_player(str(i))
                            self.player_menu_pos = (0, 0)
                            self.clickbox.remove((95, 75+54*i+48+5))
                            self.clickbox.remove((0, 0))
                        self.clickbox.append((95, 75+54*i+48, 415, 40), kickhim, z=3)
                        text = self.font.render("Kick", True, COLORS["white"])
                        self.player_menu.blit(text, (5, 5))
            return anon
        for x in xrange(10):
            self.clickbox.append((95, 75+54*x, 415, 48), player_panel_click(x))

        def wrapper(mpos):
            self.message()
            self.textbox.fill((0, 0, 0, 64))
            txt = self.font.render(self.text_input, True, COLORS["white"])
            self.textbox.blit(txt, (5, 5))
        self.clickbox.append((1154, 580, 64, 25), wrapper)
Example #23
0
    def __init__(self, width, height, manager, owner):
        Screen.__init__(self, manager, owner, Screens.MAINSCREEN)
        MainScreenGUI.__init__(self, width, height, self)

        self.states = Enum("IDLE", "CHARGING", "PAYMENTMSG", "WARNING")
        self.events = Enum("GUIEVENT", "SCAN", "BADSCAN", "RFID", "BADRFID",
                           "CHARGED", "BANNERTIMEOUT")

        self.sm = SimpleStateMachine(
            self.states.IDLE,  #pylint: disable=C0103
            [
                [
                    self.states.IDLE, self.events.GUIEVENT,
                    self._on_idle_gui_event
                ],
                [self.states.IDLE, self.events.SCAN, self._on_idle_scan_event],
                [
                    self.states.IDLE, self.events.BADSCAN,
                    self._on_idle_bad_scan_event
                ],
                [self.states.IDLE, self.events.RFID, self._on_rfid_event],
                [
                    self.states.IDLE, self.events.BADRFID,
                    self._on_bad_rfid_event
                ],
                [
                    self.states.PAYMENTMSG, self.events.BANNERTIMEOUT,
                    self._return_to_intro
                ],
                [
                    self.states.PAYMENTMSG, self.events.GUIEVENT,
                    lambda: self.states.PAYMENTMSG
                ],
                [
                    self.states.PAYMENTMSG, self.events.SCAN,
                    lambda: self.states.PAYMENTMSG
                ],
                [
                    self.states.PAYMENTMSG, self.events.BADSCAN,
                    lambda: self.states.PAYMENTMSG
                ],
                [
                    self.states.PAYMENTMSG, self.events.RFID,
                    lambda: self.states.PAYMENTMSG
                ],
                [
                    self.states.PAYMENTMSG, self.events.BADRFID,
                    lambda: self.states.PAYMENTMSG
                ],
                [
                    self.states.CHARGING, self.events.CHARGED,
                    lambda: self.states.PAYMENTMSG
                ],
                [
                    self.states.CHARGING, self.events.GUIEVENT,
                    lambda: self.states.CHARGING
                ],
                [
                    self.states.CHARGING, self.events.SCAN,
                    lambda: self.states.CHARGING
                ],
                [
                    self.states.CHARGING, self.events.BADSCAN,
                    lambda: self.states.CHARGING
                ],
                [
                    self.states.CHARGING, self.events.RFID,
                    lambda: self.states.CHARGING
                ],
                [
                    self.states.CHARGING, self.events.BADRFID,
                    lambda: self.states.CHARGING
                ],
                [
                    self.states.WARNING, self.events.BANNERTIMEOUT,
                    self._remove_warning
                ],
                [
                    self.states.WARNING, self.events.SCAN,
                    self._on_idle_scan_event
                ],
                [
                    self.states.WARNING, self.events.BADSCAN,
                    self._update_barcode_warning
                ],
                [self.states.WARNING, self.events.RFID, self._on_rfid_event],
                [
                    self.states.WARNING, self.events.BADRFID,
                    self._on_bad_rfid_event
                ],
                [
                    self.states.WARNING, self.events.GUIEVENT,
                    self._remove_warning
                ],
            ])

        self.logger = logging.getLogger("MainScreen")

        self.new_product = None
        self.badcode = ""
Example #24
0
pygame.init()

# Initialize the game window
utils.window = pygame.display.set_mode(
    (utils.window_size[0], utils.window_size[1]))
pygame.display.set_caption('Zombie Shooter 3000')

# Icon
#icon = pygame.image.load('content/sprites/icon.png')
#pygame.display.set_icon(icon)

# Used font for txt
#config.font = pygame.font.SysFont('Tahoma',18, True, False)

# set the current screen to
Screen.load_screen(LoadScreen())
Screen.load_screen(MenuScreen())

# clock is used to get a framerate of 60fps
clock = pygame.time.Clock()


def main() -> None:
    ''' The main function of the program that contains the gameLoop
    '''

    # ---------------------- GameLoop
    while not utils.quit_game:

        # --------------------UPDATE--------------------
        event_handler.update()