def tile_editor(self, x, y, surface): surface.blit(render_text('Edit tile', color=(255,0,0)),(280,10)) minx, miny = self.frontend.rightwindow_rect.x + 10, self.frontend.rightwindow_rect.y + 10 maxx, maxy = minx + self.frontend.rightwindow_rect.w - 10, self.frontend.rightwindow_rect.h - 10 te_canenter = checkboxbtn('Player can enter tile ?', self.canenter, (x,y), self.frontend.eventstack,self.frontend.imagecache, pos=(minx + 180,miny + 60)) te_revealed = checkboxbtn('Tile has been revealed ?', self.revealed, (x,y), self.frontend.eventstack,self.frontend.imagecache, pos=(minx + 180,miny + 90)) te_canenter.checked = self.gamemap.tile(x,y).canenter() te_revealed.checked = self.gamemap.tile(x,y).revealed() if self.tile.background(): self._addtemp('te_rotate', Button('Rotate background', self.rotate, (x,y), self.frontend.eventstack,self.frontend.imagecache, pos=(minx + 180, miny + 120))) self._addtemp('te_canenter', te_canenter) self._addtemp('te_revealed', te_revealed) self._addtemp('te_set_background', Button('Set Background', self.selectbg, (x,y), self.frontend.eventstack,self.frontend.imagecache, pos=(minx + 180, miny + 30))) if self.tile.background() and self.tile.canenter(): te_additem = Button('Add Item', self.additem, [x,y], self.frontend.eventstack,self.frontend.imagecache, pos=(minx,miny + 160)) te_addnpc = Button('Add NPC', self.addnpc, [x,y], self.frontend.eventstack,self.frontend.imagecache, pos=(minx + 120,miny + 160)) te_onenter = Button('Events/OnEnter', self.onenter, [x,y], self.frontend.eventstack,self.frontend.imagecache, pos=(minx + 250,miny + 160)) self._addtemp('te_additem', te_additem) self._addtemp('te_addnpc', te_addnpc) self._addtemp('te_onenter', te_onenter) te_clone_tile = Button('Clone Tile', self.clonetile, [x,y], self.frontend.eventstack,self.frontend.imagecache, pos=(minx,miny + 200)) self._addtemp('te_clone', te_clone_tile) clone_coords = TextInput( pygame.Rect(minx + 150, miny + 200, 100,25), 16, self.frontend.eventstack, prompt='%sx%s' %(x,y), layer=3) self._addtemp('te_clone_coords', clone_coords) debug(self.frontend.sprites)
def animation_editor(self, x, y): l = Label('Animations', (x,y)) y += l.rect.h self._addtemp('animations_label', l) scale = self.frontend.mapscale self.previewsprite = AnimatedSprite(self.frontend.tilemaps, pygame.Rect(x, y, scale, scale), self.item.animations, 8, 5) if self.currentanimation is None: self.currentanimation = self.previewsprite.animation self.previewsprite.pause = True else: self.previewsprite.setanimation(self.currentanimation) self.previewsprite.pause = self.paused.checked self._addtemp('previewsprite', self.previewsprite) self.animation = Dropdown(self.frontend.eventstack, self.frontend.imagecache, 18, pygame.Rect(x + scale + 2, y, 200, 20), self.previewsprite.animations.keys(), choice=self.currentanimation, onselect=self.changeanimation, layer = self.lastlayer) self.lastlayer -= 1 self._addtemp('selectanimation', self.animation) self.paused = checkboxbtn('Paused', self.togglepause, [], self.frontend.eventstack, self.frontend.imagecache, pos=(x + 150,y+22), fontsize=16, layer=6, sendself=True) self.paused.checked = self.previewsprite.pause self._addtemp('AnimationPauseButton', self.paused) if self.paused.checked: nextframebtn = ButtonArrow(self.previewsprite.nextframe, [], self.frontend.eventstack, self.frontend.imagecache, 'right', pos=(x + scale,y+22), layer=6) self._addtemp('nextframebtn', nextframebtn) delframebtn = BlitButton(self.delframe, [], self.frontend.eventstack, self.frontend.imagecache, 'minusarrow', pos=(nextframebtn.rect.x + nextframebtn.rect.w,y+22), layer=6) self._addtemp('delete frame button',delframebtn) addframebtn = BlitButton(self.addframe,[], self.frontend.eventstack, self.frontend.imagecache, 'plusarrow', pos=(delframebtn.rect.x + delframebtn.rect.w,y+22), layer=6) self._addtemp('add frame button',addframebtn)
def layout(self): self.image.blit(render_text ('Game directory:', size=24, color=(255,0,0)),(10,10)) self.gd = TextInput(pygame.Rect(self.rect.x + 220, self.rect.y + 10, self.rect.w-250, 30), 18, self.frontend.eventstack, prompt=self.settingsdata['gamedir'], clearprompt=False, layer=self._layer +1) self._addtemp('gamedirinput', self.gd) self.image.blit(render_text ('Resolution:', size=24, color=(255,0,0)),(10,60)) res_left = ButtonArrow(self.resbtn, ['left'], self.frontend.eventstack,self.frontend.imagecache, 'left', pos=(self.rect.x+120,self.rect.y+60), layer=self._layer +1) res_right = ButtonArrow(self.resbtn, ['right'], self.frontend.eventstack,self.frontend.imagecache, 'right', pos=(self.rect.x+300,self.rect.y+60), layer=self._layer +1) self._addtemp('settings_res_left', res_left) self._addtemp('settings_res_right', res_right) self.image.blit(render_text ('%s X %s' %self.resolution, size=24, color=(255,0,0)),(170,60)) self.fullscreenbtn = checkboxbtn('Full screen', self.fullscreen, [], self.frontend.eventstack,self.frontend.imagecache, fontsize=24, pos=(self.rect.x + 10,self.rect.y +100),layer=self._layer +1) self.fullscreenbtn.checked = self.settingsdata['fullscreen'] self._addtemp('fullscreen', self.fullscreenbtn) self.hardwarebtn = checkboxbtn('Hardware rendering(requires fullscreen)', self.hardware, [], self.frontend.eventstack,self.frontend.imagecache,fontsize=24, pos=(self.rect.x + 10,self.rect.y +130),layer=self._layer +1) self.hardwarebtn.checked = self.settingsdata['hardware_buffer'] self._addtemp('hardware rendering', self.hardwarebtn) self.image.blit(render_text ('Note: changes only take effect when you restart', size=24, color=(255,0,0)),(10,200)) save_btn = Button('Save changes', self.save, [], self.frontend.eventstack,self.frontend.imagecache, pos=(self.rect.x + 200,self.rect.y + 250), layer=self._layer +1) self._addtemp('savesettings', save_btn)
def handlekey(self,key, x,y): keyname = realkey(key) has_label = True l = Label(keyname,(x,y)) lsize = l.rect.w +10 irect = pygame.Rect(x + lsize, y, 250, 20) value = self.item.get(keyname,'') if not value: if key in self.template: value = self.template[key] else: return () if str(value).startswith('__'): value = '' if keyname == 'personal/portrait': self.item.put('personal/portrait', value) self.portrait = value d = BlitButton( self.nextportrait, [], self.frontend.eventstack, self.frontend.imagecache, self.portrait, pos=(irect.x,y), scale=128, layer=7 ) elif isinstance(value, list): d = Button('Manage list', self.listmanager, [keyname, value], self.frontend.eventstack, self.frontend.imagecache, pos=(irect.x, irect.y), layer=self._layer +1) elif (key.startswith('conditional') or keyname == key) and not '__[' in str(self.template[key]): d = TextInput( irect,18, self.frontend.eventstack, prompt=str(value), clearprompt=False, layer=6, name=keyname) elif (key.startswith('conditional') or keyname == key) and '__[' in str(self.template[key]): liststr = self.template[key] items = liststr[3:-1].split(',') if sorted([i.upper() for i in items]) == ['FALSE','TRUE']: has_label = False d = checkboxbtn(keyname, self.valuechange, [], self.frontend.eventstack, self.frontend.imagecache, pos=(x,y), fontsize=16, layer=6, name=key, sendself=True) if d.name in self.item(): d.checked = self.item.get(d.name) else: d.checked = items[0].upper() == 'TRUE' else: if not value and len(items) == 1: value = items[0] d = Dropdown( self.frontend.eventstack, self.frontend.imagecache, 16, irect, items,layer=self.lastlayer, choice=value, onselect=self.valuechange, name=keyname, sendself=True) self.lastlayer -= 1 if has_label: return [l, d] else: return [d]