def createNPC(): bar = mapMenuItems.scrollBar(910, 10, 610, 10) texts = py.sprite.Group() ni = mapMenuItems.textInput((350, 200), 30, 16, 1, button=None, default=[], type="str") texts.add(mapMenuItems.textLabel("NPC Name:", (150, 210), (0, 0, 0), "../Resources/Fonts/RPGSystem.ttf", 40, variable=False, centred=False)) fi = mapMenuItems.textInput((450, 260), 30, 2, 2, button=None, default=[], type="int") texts.add(mapMenuItems.textLabel("Base Friendliness:", (150, 270), (0, 0, 0), "../Resources/Fonts/RPGSystem.ttf", 40, variable=False, centred=False)) arb = mapMenuItems.radioButtons(350, 330, ["Good", "Evil"]) texts.add(mapMenuItems.textLabel("Alignment:", (150, 330), (0, 0, 0), "../Resources/Fonts/RPGSystem.ttf", 40, variable=False, centred=False)) drb = mapMenuItems.radioButtons(350, 390, ["Up", "Down", "Left", "Right"]) texts.add(mapMenuItems.textLabel("Direction:", (150, 390), (0, 0, 0), "../Resources/Fonts/RPGSystem.ttf", 40, variable=False, centred=False)) buttons = py.sprite.Group() buttons.add(mapMenuItems.button("Done", (800, 550), 60, (200, 0, 200), (255, 50, 255), "../Resources/Fonts/RPGSystem.ttf", "done")) buttons.add(mapMenuItems.button("Add Conversation", (460, 500), 60, (200, 200, 100), (100, 200, 200), "../Resources/Fonts/RPGSystem.ttf", "convo", centred=True)) imageButton = npcImageButton(drb) faceButton = npcFaceButton() while True: v.screen.fill((220, 220, 220)) v.events = [] v.events = py.event.get() imageButton.update() faceButton.update() bar.update() texts.update() arb.update() drb.update() ni.update() fi.update() buttons.update() for event in v.events: if event.type == py.MOUSEBUTTONDOWN: for button in buttons: if button.pressed(): if button.ID == "done": v.selectedNPC = {"Image": imageButton.selected, "Name": ni.outText, "Alignment": arb.outText, "Base Like": fi.outText, "Direction": drb.outText} print(v.selectedNPC) return if button.ID == "convo": chatEdit() py.display.flip()
def mapEditor(): v.map = py.Surface((600, 550)) v.pallet = py.Surface((400, 630)) v.options = py.Surface((1000, 80)) v.scrollX = 0 v.scrollY = 0 v.scale = 2 v.selected = 0 v.selectedEnemy = {"Image":None, "Name":None, "Health":None, "Attack":None, "Speed":None} v.editHitable = False v.eLayer = "base" v.overPlayer = False v.hoverPos = None v.hoverData = None v.makeTeleport = False v.makeEnemy = False v.palletImages = py.sprite.Group() v.tileImages = tileEdit.getGrid() for i in range(0, len(v.tileImages)): v.palletImages.add(tileEdit.image(i)) v.enemyImages = py.sprite.Group() num = 0 for i in listdir("..\Resources\Images\EnemySkins"): v.enemyImages.add(npcEdit.enemyImage(num, "Resources/Images/EnemySkins/" + i)) num += 1 v.clock = py.time.Clock() py.time.set_timer(py.USEREVENT, 1000) #1 sec delay buttons = py.sprite.Group() buttons.add(mapMenuItems.toggleButton("layer", 0)) buttons.add(mapMenuItems.toggleButton("hitbox", 1)) buttons.add(mapMenuItems.toggleButton("over", 2)) buttons.add(mapMenuItems.toggleButton("teleport", 3)) buttons.add(mapMenuItems.toggleButton("enemy", 4)) buttons.add(mapMenuItems.toggleButton("npc", 5)) tileScroll = mapMenuItems.scrollBar(900, 0, 630, max([i.posy for i in v.palletImages])) #63680 #TODO: Fix spritesheet cutoff while True: py.event.pump() v.hoverPos = None v.events = [] v.events = py.event.get() v.clock.tick(30) v.screen.fill((255, 255, 255)) v.map.fill((0, 255, 255)) v.pallet.fill((255, 255, 255)) v.options.fill((0, 0, 255)) v.baseTiles.update() v.topTiles.update() if not v.makeEnemy: v.palletImages.update() if v.makeEnemy: v.enemyImages.update() buttons.update() if not v.pauseEdit: keysPressed = py.key.get_pressed() speed = 20 if keysPressed[py.K_d]: v.scrollX += speed if keysPressed[py.K_a]: v.scrollX -= speed if keysPressed[py.K_w]: v.scrollY += speed if keysPressed[py.K_s]: v.scrollY -= speed for event in v.events: if event.type == py.MOUSEBUTTONUP: if v.map.get_rect().collidepoint(py.mouse.get_pos()): if event.button == 4: v.scale += 0.1 if event.button == 5: v.scale -= 0.1 v.scale = round(v.scale, 1) if v.scale <= 0.1: v.scale = 0.1 if py.mouse.get_pos()[0] > 600: if event.button == 4: v.tileScroll += 50 if event.button == 5: v.tileScroll -= 50 v.scale = round(v.scale, 1) if v.scale <= 0.1: v.scale = 0.1 if event.type == py.KEYDOWN: if event.key == py.K_RETURN: outMap = save() if event.type == py.KEYDOWN: if event.key == py.K_SPACE: v.palletImages = py.sprite.Group() v.tileImages = tileEdit.getGrid() for i in range(0, len(v.tileImages)): v.palletImages.add(tileEdit.image(i)) if event.type == py.QUIT: save() sys.exit() v.screen.blit(v.map, (0, 0)) v.screen.blit(v.options, (0, 550)) v.screen.blit(v.pallet, (600, 0)) if not v.editTeleport == None: v.editTeleport.update() v.pauseEdit = True else: v.pauseEdit = False mapMenuItems.toolTip() tileScroll.scroll = v.tileScroll tileScroll.update() v.tileScroll = tileScroll.scroll py.display.flip()
def chatEdit(): v.chunks = py.sprite.Group() v.chunkIDs['0'] = [] v.chunkIDs['1'] = [] v.chunkIDs['2'] = [] v.chatEdit = editChunk() buttons = py.sprite.Group() buttons.add(mapMenuItems.button("ADD", (720, 50), 100, (150, 150, 150), (200, 200, 200), None, "add", bsize=(150, 150), centretext=True)) buttons.add(mapMenuItems.button("Save & Exit", (10, 10), 30, (150, 150, 150), (200, 200, 200), None, "exit")) texts = py.sprite.Group() texts.add(mapMenuItems.textLabel("ID:", (5, 250), (0, 0, 0), None, 40)) boxes = py.sprite.Group() for i in range(0, 10): boxes.add(box(i)) barX = mapMenuItems.scrollBar(0, 620, 910, 2200, verticle=False) barY = mapMenuItems.scrollBar(910, 0, 620, 200, verticle=True) while True: v.screen.fill((250, 250, 250)) v.events = [] v.events = py.event.get() v.chunks.update() py.draw.rect(v.screen, (255, 255, 255), (0, 0, 920, 290)) for ch in v.chunks: if ch.hovered: ch.update() v.chatEdit.update() buttons.update() #texts.update() mapMenuItems.textLabel("ID:", (5 - v.npcScrollX, 250), (0, 0, 0), None, 40).update() boxes.update() py.draw.line(v.screen, (0, 0, 0), (0, 290), (920, 290), 2) for i in range(10): py.draw.line(v.screen, (0, 0, 0), ((300 * i) - 30 - v.npcScrollX, 290), ((300 * i) - 30 - v.npcScrollX, 630), 2) #py.draw.line(v.screen, (0, 0, 0), (570 - v.npcScrollX, 290), (570 - v.npcScrollX, 630), 2) py.draw.rect(v.screen, (255, 255, 255), (0, 600, 920, 30)) barX.update() barY.update() v.npcScrollX = barX.scroll v.npcScrollY = barY.scroll for event in v.events: if event.type == py.MOUSEBUTTONDOWN: for button in buttons: if button.pressed(): if button.ID == "add": if v.chatEdit.created == True: v.chatEdit.save() v.chunks.add(chatChunk(v.chatEdit.c_message, v.chatEdit.c_id, v.chatEdit.c_goto, v.chatEdit.c_charisma, v.chatEdit.c_buttons, v.chatEdit.c_changelike, v.chatEdit.c_end)) v.chatEdit = editChunk() if button.ID == "exit": out = [] for but in v.chunks: out.append(but.save()) print(out) return out py.display.flip()