示例#1
0
 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)
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
 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]