def __init__(self, theMap, isHost): super(Model, self).__init__() self.theMap = theMap self.openEditor = False self.sendNetMessage = False self.starting = False self.bg = pygame.Surface(SCREEN_SIZE) self.bg.fill(CHARACTER_SELECT_BG_COLOR) self.group = CharacterPanelGroup(self.theMap.numOfCharactersPerTeam()) self.currSelected = None x = (CHARACTER_SELECT_PANEL_SELECTION_BORDER_WIDTH * 2) + CHARACTER_SELECT_PANEL_SIZE[0] y = (CHARACTER_SELECT_PANEL_SELECTION_BORDER_WIDTH * 2) + CHARACTER_SELECT_PANEL_SIZE[1] self.selectionBorder = pygame.Surface((x, y)) self.selectionBorder.fill(CHARACTER_SELECT_PANEL_SELECTION_BORDER_COLOR) tempRect = Rect((0, 0), CHARACTER_SELECT_PLAYER_SIZE) tempRect.bottom = SCREEN_SIZE[1] - CHARACTER_SELECT_GROUP_FROM_TOP tempRect.centerx = SCREEN_SIZE[0] / 2 self.clientPanel = PlayerPanel(tempRect, "Client", self.group.num) tempRect = Rect((0, 0), CHARACTER_SELECT_PLAYER_SIZE) tempRect.bottom = self.clientPanel.rect.top - CHARACTER_SELECT_GROUP_SPACING tempRect.centerx = SCREEN_SIZE[0] / 2 self.hostPanel = PlayerPanel(tempRect, "Host", self.group.num) if isHost: self.myPanel = self.hostPanel self.theirPanel = self.clientPanel else: self.myPanel = self.clientPanel self.theirPanel = self.hostPanel tempRect = Rect((0, 0), CHARACTER_SELECT_BUTTON_SIZE) tempRect.left = self.myPanel.rect.right + CHARACTER_SELECT_GROUP_SPACING tempRect.top = self.myPanel.rect.top self.readyButton = Button(tempRect, "Ready") if isHost: tempRect = Rect((0, 0), CHARACTER_SELECT_BUTTON_SIZE) tempRect.left = self.theirPanel.rect.right + CHARACTER_SELECT_GROUP_SPACING tempRect.top = self.theirPanel.rect.top self.startButton = Button(tempRect, "Start") else: self.startButton = None x = (CHARACTER_SELECT_PANEL_SELECTION_BORDER_WIDTH * 2) + CHARACTER_SELECT_BUTTON_SIZE[0] y = (CHARACTER_SELECT_PANEL_SELECTION_BORDER_WIDTH * 2) + CHARACTER_SELECT_BUTTON_SIZE[1] self.selectionBorderButton = pygame.Surface((x, y)) self.selectionBorderButton.fill(CHARACTER_SELECT_PANEL_SELECTION_BORDER_COLOR) self.loadingImage = INTERFACE_GRAPHICS[9] self.loadingRect = Rect((0, 0), self.loadingImage.get_size()) self.loadingRect.center = (SCREEN_SIZE[0] / 2, SCREEN_SIZE[1] / 2)
def __init__(self, num): self.num = num numOfCols = int(math.ceil(float(num) / float(CHARACTER_SELECT_PANELS_PER_COL))) numOfPanelsInCol = [] for i in range(numOfCols): numOfPanelsInCol.append(0) count = 0 currCol = 0 while count < num: numOfPanelsInCol[currCol] += 1 count += 1 currCol += 1 if currCol == numOfCols: currCol = 0 self.characterPanels = [] for i in range(len(numOfPanelsInCol)): colMid = (SCREEN_SIZE[0] / (len(numOfPanelsInCol) + 1)) * (i + 1) for j in range(numOfPanelsInCol[i]): rect = Rect((0, 0), CHARACTER_SELECT_PANEL_SIZE) rect.centerx = colMid rect.top = CHARACTER_SELECT_GROUP_FROM_TOP + ( (CHARACTER_SELECT_PANEL_SIZE[1] + CHARACTER_SELECT_GROUP_SPACING) * j ) self.characterPanels.append(CharacterPanel(rect, None))
def changeVal(self, val=None): if not val is None: self.val = val self.panel = pygame.Surface(self.rect.size) self.panel.blit(self.backPanel, (0, 0)) font = CHARACTER_SELECTION_FONT textHeight = font.get_linesize() + 2 tempRect = Rect((0, 0), (self.rect.width, textHeight)) text = textrect.render_textrect( self.name, font, tempRect, CHARACTER_SELECTION_FONT_COLOR, ALMOST_BLACK, 0, True ) tempRect = Rect((0, 0), text.get_size()) tempRect.top = (CHARACTER_SELECT_PANEL_SIZE[1] / 2) - (tempRect.height / 2) loc = (tempRect.left + CHARACTER_SELECT_PANEL_BORDER_WIDTH + CHARACTER_SELECT_PANEL_BORDER_SIZE, tempRect.top) self.panel.blit(text, loc) if self.ready: msg = "READY" color = CHARACTER_SELECTION_READY_COLOR else: msg = str(self.val) + "/" + str(self.maxVal) color = CHARACTER_SELECTION_FONT_COLOR text = textrect.render_textrect(msg, font, tempRect, color, ALMOST_BLACK, 2, True) loc = (tempRect.left - CHARACTER_SELECT_PANEL_BORDER_WIDTH - CHARACTER_SELECT_PANEL_BORDER_SIZE, tempRect.top) self.panel.blit(text, loc)
def __init__(self, num): self.num = num numOfCols = int( math.ceil(float(num) / float(CHARACTER_SELECT_PANELS_PER_COL))) numOfPanelsInCol = [] for i in range(numOfCols): numOfPanelsInCol.append(0) count = 0 currCol = 0 while count < num: numOfPanelsInCol[currCol] += 1 count += 1 currCol += 1 if currCol == numOfCols: currCol = 0 self.characterPanels = [] for i in range(len(numOfPanelsInCol)): colMid = (SCREEN_SIZE[0] / (len(numOfPanelsInCol) + 1)) * (i + 1) for j in range(numOfPanelsInCol[i]): rect = Rect((0, 0), CHARACTER_SELECT_PANEL_SIZE) rect.centerx = colMid rect.top = (CHARACTER_SELECT_GROUP_FROM_TOP + ((CHARACTER_SELECT_PANEL_SIZE[1] + CHARACTER_SELECT_GROUP_SPACING) * j)) self.characterPanels.append(CharacterPanel(rect, None))
def changeVal(self, val=None): if not val is None: self.val = val self.panel = pygame.Surface(self.rect.size) self.panel.blit(self.backPanel, (0, 0)) font = CHARACTER_SELECTION_FONT textHeight = font.get_linesize() + 2 tempRect = Rect((0, 0), (self.rect.width, textHeight)) text = textrect.render_textrect(self.name, font, tempRect, CHARACTER_SELECTION_FONT_COLOR, ALMOST_BLACK, 0, True) tempRect = Rect((0, 0), text.get_size()) tempRect.top = ((CHARACTER_SELECT_PANEL_SIZE[1] / 2) - (tempRect.height / 2)) loc = (tempRect.left + CHARACTER_SELECT_PANEL_BORDER_WIDTH + CHARACTER_SELECT_PANEL_BORDER_SIZE, tempRect.top) self.panel.blit(text, loc) if self.ready: msg = "READY" color = CHARACTER_SELECTION_READY_COLOR else: msg = str(self.val) + "/" + str(self.maxVal) color = CHARACTER_SELECTION_FONT_COLOR text = textrect.render_textrect(msg, font, tempRect, color, ALMOST_BLACK, 2, True) loc = (tempRect.left - CHARACTER_SELECT_PANEL_BORDER_WIDTH - CHARACTER_SELECT_PANEL_BORDER_SIZE, tempRect.top) self.panel.blit(text, loc)
def setCharacter(self, c): self.character = c self.panel = pygame.Surface(CHARACTER_SELECT_PANEL_SIZE) self.panel.blit(self.backPanel, (0, 0)) if not self.character is None: font = CHARACTER_SELECTION_FONT msg = self.character.name textHeight = font.get_linesize() + 2 tempRect = Rect((0, 0), (CHARACTER_SELECT_PANEL_SIZE[0], textHeight)) text = textrect.render_textrect(msg, font, tempRect, CHARACTER_SELECTION_FONT_COLOR, ALMOST_BLACK, 1, True) tempRect = Rect((0, 0), text.get_size()) tempRect.left = (CHARACTER_SELECT_PANEL_SIZE[0] / 2) - (tempRect.width / 2) tempRect.top = (CHARACTER_SELECT_PANEL_SIZE[1] / 2) - (tempRect.height / 2) self.panel.blit(text, tempRect.topleft)
def setButton(self, val): if not (val == self.enabled): self.enabled = val self.panel = pygame.Surface(self.rect.size) self.panel.blit(self.backPanel, (0, 0)) if self.enabled: color = CHARACTER_SELECTION_BUTTON_COLOR_ON else: color = CHARACTER_SELECTION_BUTTON_COLOR_OFF font = CHARACTER_SELECTION_FONT textHeight = font.get_linesize() + 2 tempRect = Rect((0, 0), (self.rect.width, textHeight)) text = textrect.render_textrect(self.msg, font, tempRect, color, ALMOST_BLACK, 1, True) tempRect = Rect((0, 0), text.get_size()) tempRect.top = (CHARACTER_SELECT_PANEL_SIZE[1] / 2) - (tempRect.height / 2) self.panel.blit(text, tempRect.topleft)
def setCharacter(self, c): self.character = c self.panel = pygame.Surface(CHARACTER_SELECT_PANEL_SIZE) self.panel.blit(self.backPanel, (0, 0)) if not self.character is None: font = CHARACTER_SELECTION_FONT msg = self.character.name textHeight = font.get_linesize() + 2 tempRect = Rect((0, 0), (CHARACTER_SELECT_PANEL_SIZE[0], textHeight)) text = textrect.render_textrect(msg, font, tempRect, CHARACTER_SELECTION_FONT_COLOR, ALMOST_BLACK, 1, True) tempRect = Rect((0, 0), text.get_size()) tempRect.left = ((CHARACTER_SELECT_PANEL_SIZE[0] / 2) - (tempRect.width / 2)) tempRect.top = ((CHARACTER_SELECT_PANEL_SIZE[1] / 2) - (tempRect.height / 2)) self.panel.blit(text, tempRect.topleft)
def setButton(self, val): if not (val == self.enabled): self.enabled = val self.panel = pygame.Surface(self.rect.size) self.panel.blit(self.backPanel, (0, 0)) if self.enabled: color = CHARACTER_SELECTION_BUTTON_COLOR_ON else: color = CHARACTER_SELECTION_BUTTON_COLOR_OFF font = CHARACTER_SELECTION_FONT textHeight = font.get_linesize() + 2 tempRect = Rect((0, 0), (self.rect.width, textHeight)) text = textrect.render_textrect(self.msg, font, tempRect, color, ALMOST_BLACK, 1, True) tempRect = Rect((0, 0), text.get_size()) tempRect.top = ((CHARACTER_SELECT_PANEL_SIZE[1] / 2) - (tempRect.height / 2)) self.panel.blit(text, tempRect.topleft)
def __init__(self, inChars, terrainLeft, terrainRight): super(Model, self).__init__() self.rect = Rect((0, 0), BATTLE_ARENA_SIZE) self.testBool = False self.testBool2 = False self.players = inChars for p in self.players: p.beginBattle() pos = (self.rect.centerx, self.rect.height - BATTLE_AREA_FLOOR_HEIGHT) self.players[0].setLoc(add_points(pos, ((-BATTLE_PLAYER_START_DISTANCE / 2), 0))) self.players[0].facingRight = True self.players[1].setLoc(add_points(pos, ((BATTLE_PLAYER_START_DISTANCE / 2), 0))) self.players[1].facingRight = False self.keys = [[False, False, False, False, False, False, False, False, False], [False, False, False, False, False, False, False, False, False]] self.keysNow = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]] self.frameByFrame = [0, 0] self.returnCode = [0, 0] self.projectiles = [] self.retreatProhibitTime = boundint.BoundInt(0, RETREAT_PROHIBIT_TIME, RETREAT_PROHIBIT_TIME) self.retreatPhase = 0 self.cameraPlayer = 0 self.netPlayer = 0 self.catBar = None self.createBars() self.resetHitMemory() self.endingVal = -1 self.endingValTick = 0 self.fx = [] self.platforms = getPlatforms(terrainLeft, terrainRight) self.countdown = countdown.Countdown(BATTLE_COUNTDOWN_LENGTH) self.createEndingText() self.damageTagRects = [] self.damagePercentRects = [] for i in range(2): rect = Rect((0, 0), (80, 100)) if (i == 0): rect.left = 0 else: rect.right = SCREEN_SIZE[0] rect.top = SCREEN_SIZE[1] - 55 self.damageTagRects.append(rect) rect2 = Rect((0, 0), (80, 100)) if (i == 0): rect2.left = 0 else: rect2.right = SCREEN_SIZE[0] rect2.top = rect.top + 18 self.damagePercentRects.append(rect2) self.damageTag = textrect.render_textrect("Strength", STRUCTURE_COUNT_FONT, self.damageTagRects[0], ALMOST_BLACK, BLACK, 1, True)
def __init__(self, theMap, isHost): super(Model, self).__init__() self.theMap = theMap self.openEditor = False self.sendNetMessage = False self.starting = False self.bg = pygame.Surface(SCREEN_SIZE) self.bg.fill(CHARACTER_SELECT_BG_COLOR) self.group = CharacterPanelGroup(self.theMap.numOfCharactersPerTeam()) self.currSelected = None x = ((CHARACTER_SELECT_PANEL_SELECTION_BORDER_WIDTH * 2) + CHARACTER_SELECT_PANEL_SIZE[0]) y = ((CHARACTER_SELECT_PANEL_SELECTION_BORDER_WIDTH * 2) + CHARACTER_SELECT_PANEL_SIZE[1]) self.selectionBorder = pygame.Surface((x, y)) self.selectionBorder.fill( CHARACTER_SELECT_PANEL_SELECTION_BORDER_COLOR) tempRect = Rect((0, 0), CHARACTER_SELECT_PLAYER_SIZE) tempRect.bottom = SCREEN_SIZE[1] - CHARACTER_SELECT_GROUP_FROM_TOP tempRect.centerx = SCREEN_SIZE[0] / 2 self.clientPanel = PlayerPanel(tempRect, "Client", self.group.num) tempRect = Rect((0, 0), CHARACTER_SELECT_PLAYER_SIZE) tempRect.bottom = (self.clientPanel.rect.top - CHARACTER_SELECT_GROUP_SPACING) tempRect.centerx = SCREEN_SIZE[0] / 2 self.hostPanel = PlayerPanel(tempRect, "Host", self.group.num) if isHost: self.myPanel = self.hostPanel self.theirPanel = self.clientPanel else: self.myPanel = self.clientPanel self.theirPanel = self.hostPanel tempRect = Rect((0, 0), CHARACTER_SELECT_BUTTON_SIZE) tempRect.left = self.myPanel.rect.right + CHARACTER_SELECT_GROUP_SPACING tempRect.top = self.myPanel.rect.top self.readyButton = Button(tempRect, "Ready") if isHost: tempRect = Rect((0, 0), CHARACTER_SELECT_BUTTON_SIZE) tempRect.left = (self.theirPanel.rect.right + CHARACTER_SELECT_GROUP_SPACING) tempRect.top = self.theirPanel.rect.top self.startButton = Button(tempRect, "Start") else: self.startButton = None x = ((CHARACTER_SELECT_PANEL_SELECTION_BORDER_WIDTH * 2) + CHARACTER_SELECT_BUTTON_SIZE[0]) y = ((CHARACTER_SELECT_PANEL_SELECTION_BORDER_WIDTH * 2) + CHARACTER_SELECT_BUTTON_SIZE[1]) self.selectionBorderButton = pygame.Surface((x, y)) self.selectionBorderButton.fill( CHARACTER_SELECT_PANEL_SELECTION_BORDER_COLOR) self.loadingImage = INTERFACE_GRAPHICS[9] self.loadingRect = Rect((0, 0), self.loadingImage.get_size()) self.loadingRect.center = (SCREEN_SIZE[0] / 2, SCREEN_SIZE[1] / 2)
def __init__(self, inChars, terrainLeft, terrainRight): super(Model, self).__init__() self.rect = Rect((0, 0), BATTLE_ARENA_SIZE) self.testBool = False self.testBool2 = False self.players = inChars for p in self.players: p.beginBattle() pos = (self.rect.centerx, self.rect.height - BATTLE_AREA_FLOOR_HEIGHT) self.players[0].setLoc( add_points(pos, ((-BATTLE_PLAYER_START_DISTANCE / 2), 0))) self.players[0].facingRight = True self.players[1].setLoc( add_points(pos, ((BATTLE_PLAYER_START_DISTANCE / 2), 0))) self.players[1].facingRight = False self.keys = [[ False, False, False, False, False, False, False, False, False ], [False, False, False, False, False, False, False, False, False]] self.keysNow = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]] self.frameByFrame = [0, 0] self.returnCode = [0, 0] self.projectiles = [] self.retreatProhibitTime = boundint.BoundInt(0, RETREAT_PROHIBIT_TIME, RETREAT_PROHIBIT_TIME) self.retreatPhase = 0 self.cameraPlayer = 0 self.netPlayer = 0 self.catBar = None self.createBars() self.resetHitMemory() self.endingVal = -1 self.endingValTick = 0 self.fx = [] self.platforms = getPlatforms(terrainLeft, terrainRight) self.countdown = countdown.Countdown(BATTLE_COUNTDOWN_LENGTH) self.createEndingText() self.damageTagRects = [] self.damagePercentRects = [] for i in range(2): rect = Rect((0, 0), (80, 100)) if (i == 0): rect.left = 0 else: rect.right = SCREEN_SIZE[0] rect.top = SCREEN_SIZE[1] - 55 self.damageTagRects.append(rect) rect2 = Rect((0, 0), (80, 100)) if (i == 0): rect2.left = 0 else: rect2.right = SCREEN_SIZE[0] rect2.top = rect.top + 18 self.damagePercentRects.append(rect2) self.damageTag = textrect.render_textrect("Strength", STRUCTURE_COUNT_FONT, self.damageTagRects[0], ALMOST_BLACK, BLACK, 1, True)
def __init__(self, isHost): super(Model, self).__init__() self.bgs = [ scrollingbackground.ScrollingBackground(Rect( (0, 0), SCREEN_SIZE), CHARACTER_SELECT_BG_SKY, [0, 0]), scrollingbackground.ScrollingBackground( Rect((0, SCREEN_SIZE[1] - CHARACTER_SELECT_BG_MOUNTAINS_FAR.get_size()[1] - 70), SCREEN_SIZE), CHARACTER_SELECT_BG_MOUNTAINS_FAR, [-0.3, 0]), scrollingbackground.ScrollingBackground( Rect((0, SCREEN_SIZE[1] - CHARACTER_SELECT_BG_MOUNTAINS_NEAR.get_size()[1]), SCREEN_SIZE), CHARACTER_SELECT_BG_MOUNTAINS_NEAR, [-0.8, 0]) ] self.starting = False self.map = None self.netMessage = None self.subScreen = 0 if isHost: self.playerNum = 0 else: self.playerNum = 1 #Create Map-selection Panel rect = Rect((0, 0), CHARACTER_SELECTION_PANEL_SIZE) rect.centerx = SCREEN_SIZE[0] / 2 rect.top = CHARACTER_SELECTION_PANEL_SPACING self.mapPanel = Panel(0, isHost, rect) self.characterPanels = [] tempRect = Rect((50, 50), (200, 0)) menuOptions = [] for map in gamemap.getMapList(): menuOptions.append(map.name + " (" + str(len(map.startingPoints[0])) + ")") menuOptions.append("<RANDOM>") self.mapMenu = minimenu.MiniMenu(tempRect, menuOptions, MAIN_MENU_FONT, MAIN_MENU_COLOR_ON, MAIN_MENU_COLOR_OFF, MAIN_MENU_COLOR_BG) self.mapMenu.center(ENTIRE_SCREEN, True, True) #Create Species Selection Menu speciesClasses = [(mapchar.Hare, hare.Hare), (mapchar.Cat, cat.Cat)] speciesList = [] for speciesClassGroup in speciesClasses: mapClass = speciesClassGroup[0] battleClass = speciesClassGroup[1] speciesList.append(mapClass(self.playerNum, battleClass())) self.speciesDialog = DetailDialog(SPECIES_SELECTION_DIALOG_SLOT_SIZE, SPECIES_SELECTION_DIALOG_MARGIN, SPECIES_SELECTION_DIALOG_SPACING, speciesList, [4, 2]) self.currCharacterPanel = None self.readyPanels = [None, None] self.goPanel = None
def __init__(self, isHost): super(Model, self).__init__() self.bgs = [scrollingbackground.ScrollingBackground(Rect((0, 0), SCREEN_SIZE), CHARACTER_SELECT_BG_SKY, [0, 0]), scrollingbackground.ScrollingBackground(Rect((0, SCREEN_SIZE[1] - CHARACTER_SELECT_BG_MOUNTAINS_FAR.get_size()[1] - 70), SCREEN_SIZE), CHARACTER_SELECT_BG_MOUNTAINS_FAR, [-0.3, 0]), scrollingbackground.ScrollingBackground(Rect((0, SCREEN_SIZE[1] - CHARACTER_SELECT_BG_MOUNTAINS_NEAR.get_size()[1]), SCREEN_SIZE), CHARACTER_SELECT_BG_MOUNTAINS_NEAR, [-0.8, 0]) ] self.starting = False self.map = None self.netMessage = None self.subScreen = 0 if isHost: self.playerNum = 0 else: self.playerNum = 1 #Create Map-selection Panel rect = Rect((0,0), CHARACTER_SELECTION_PANEL_SIZE) rect.centerx = SCREEN_SIZE[0] / 2 rect.top = CHARACTER_SELECTION_PANEL_SPACING self.mapPanel = Panel(0, isHost, rect) self.characterPanels = [] tempRect = Rect( (50, 50), (200, 0) ) menuOptions = [] for map in gamemap.getMapList(): menuOptions.append(map.name + " (" + str(len(map.startingPoints[0])) + ")") menuOptions.append("<RANDOM>") self.mapMenu = minimenu.MiniMenu(tempRect, menuOptions, MAIN_MENU_FONT, MAIN_MENU_COLOR_ON, MAIN_MENU_COLOR_OFF, MAIN_MENU_COLOR_BG) self.mapMenu.center(ENTIRE_SCREEN, True, True) #Create Species Selection Menu speciesClasses = [(mapchar.Hare, hare.Hare), (mapchar.Cat, cat.Cat)] speciesList = [] for speciesClassGroup in speciesClasses: mapClass = speciesClassGroup[0] battleClass = speciesClassGroup[1] speciesList.append(mapClass(self.playerNum, battleClass())) self.speciesDialog = DetailDialog(SPECIES_SELECTION_DIALOG_SLOT_SIZE, SPECIES_SELECTION_DIALOG_MARGIN, SPECIES_SELECTION_DIALOG_SPACING, speciesList, [4, 2] ) self.currCharacterPanel = None self.readyPanels = [None, None] self.goPanel = None