def set_params(self, scrpos_noscale, scrsize_noscale): minsize = cw.s(4) hwidth = self.width - cw.s(8) self.scrsize_noscale = max(cw.SIZE_AREA[1], scrsize_noscale) self.scrpos_noscale = min(self.scrsize_noscale - cw.SIZE_AREA[1], max(0, scrpos_noscale)) if not self.visible: return l = float(cw.SIZE_AREA[1]) / self.scrsize_noscale scrpos = cw.s(self.scrpos_noscale) * l scrsize = min(cw.s(self.scrsize_noscale), self.rect.height) * l if scrsize < minsize: posper = scrpos / float(self.rect.height - scrsize) scrsize = minsize sizen = cw.s(cw.SIZE_AREA[1]) - scrsize scrpos = sizen * posper scrpos = int(round(scrpos)) scrsize = int(round(scrsize)) self.image.fill((0, 0, 0, 128), rect=pygame.Rect(hwidth, 0, self.width - hwidth, self.rect.height)) if 0 < scrsize: rect = pygame.Rect(hwidth, scrpos, self.width - hwidth, scrsize) self.image.fill((255, 255, 255, 224), rect)
def update_scale(self): for anime in self._iter_animes(self.animations): anime.load_cell() # 他セルの位置とサイズを参照するものは全て読み込んだ後にここで再計算する for anime in self.refs: if not isinstance(anime.pos_noscale[0], int): a = anime.pos_noscale[0][len("Ref:"):] anime.pos_noscale = (self.animation_table[a].pos_noscale[0], anime.pos_noscale[1]) if not isinstance(anime.pos_noscale[1], int): a = anime.pos_noscale[1][len("Ref:"):] anime.pos_noscale = (anime.pos_noscale[0], self.animation_table[a].pos_noscale[1]) if not isinstance(anime.size_noscale[0], int): a = anime.size_noscale[0][len("Ref:"):] anime.size_noscale = (self.animation_table[a].size_noscale[0], anime.size_noscale[1]) if not isinstance(anime.size_noscale[1], int): a = anime.size_noscale[1][len("Ref:"):] anime.size_noscale = (anime.size_noscale[0], self.animation_table[a].size_noscale[1]) del self.refs[:] self.rect = pygame.Rect(cw.s(self.pos_noscale), cw.s(self.size_noscale)) self.image = pygame.Surface(self.rect.size).convert() for anime in self._iter_animes(self.animations): anime.update_scale()
def update_scale(self): self.width = cw.s(8) self.image = pygame.Surface( (self.width, cw.s(cw.SIZE_AREA[1]))).convert_alpha() self.rect = self.image.get_rect() self.rect.topleft = cw.s(cw.SIZE_AREA[0]) - self.width, cw.s(0) self.image.fill((0, 0, 0, 0), rect=pygame.Rect(0, 0, self.rect.width, self.rect.height)) self.set_params(self.scrpos_noscale, self.scrsize_noscale)
def set_backcolor(self, color): self._color = color rect = self.panelimg.get_rect() size = rect.size rect.topleft = cw.s((1, 1)) rect.size = (size[0] - cw.s(2), size[1] - cw.s(2)) self.panelimg.fill(color, rect) if self.icon: self.panelimg.blit(self.icon, cw.s((3, 3))) _draw_edge(self.panelimg)
def _init_image(self): self.image = pygame.Surface(cw.s((633, 33))).convert() #ステータスバー スケーリング時 subimg = cw.cwpy.rsrc.get_statusbtnbmp(2, 0) self.maskmode = not self.showbuttons and cw.cwpy.is_statusbarmask() if self.maskmode: subimg.fill((74, 74, 74), special_flags=pygame.locals.BLEND_RGB_SUB) self.image.fill((240, 240, 240)) self.image.blit(subimg, cw.s((0, 0))) self.rect = self.image.get_rect() self.rect.topleft = -1,cw.s(420)
def get_scaledimage(self, image): """imageの横幅が大きすぎる場合は パネル内に収まるようにリサイズして返す。 """ wmax = self.panelimg.get_width() - cw.s(5) - cw.s(5) if self.icon: wmax = wmax - self.icon.get_width() - cw.s(3) rect = image.get_rect() if wmax < rect.width: rect.width = wmax image = cw.image.smoothscale(image.convert_alpha(), rect.size, smoothing=cw.cwpy.setting.fontsmoothing_statusbar) return image
def clear_image(self): if not self.rect.width: return False rect = self.rect self.image = pygame.Surface(cw.s((0, 0))).convert() self.rect = pygame.Rect(0, 0, 0, 0) cw.cwpy.draw(clip=rect) return True
def set_desc(self, desc): self.desc = desc if self._desc: cw.cwpy.sbargrp.remove(self._desc) rect = self._desc.rect self._desc = None self._desc = Desc(self, u"", self.desc, u"", arrowpos=cw.s(3)+self.icon.get_width()//2) cw.cwpy.sbargrp.add(self._desc, layer=LAYER_DESC) cw.cwpy.draw(clip=self._desc.rect)
def __init__(self, parent, pos): image = cw.s(cw.cwpy.rsrc.pygamedebugs["EVT_GET_CAST_noscale"]) name = cw.cwpy.msgs["show_fcards"] desc = cw.cwpy.msgs["desc_show_friend_card"] StatusBarButton.__init__(self, parent, name, pos, 1, icon=image, is_pushed=cw.cwpy.setting.show_fcardsinbattle, desc=desc, hotkey=u"F6") self.is_showing = cw.cwpy.is_playingscenario self.selectable_on_event = False
def __init__(self, bgscr, speed): Transition.__init__(self, bgscr, speed) self.variation = (11 - self.speed) * 15 self.sec_w_noscale = 10 self.sec_h_noscale = 10 self.sec_w = cw.s(self.sec_w_noscale) self.sec_h = cw.s(self.sec_h_noscale) self.rect_sec = pygame.Rect(0, 0, self.sec_w, self.sec_h) self.poslist = [] for x in xrange(cw.s(cw.SIZE_GAME[0]) / self.sec_w + 1): for y in xrange(cw.s(cw.SIZE_GAME[1]) / self.sec_h + 1): self.poslist.append((x * self.sec_w, y * self.sec_h)) self.poslist = cw.cwpy.dice.shuffle(self.poslist) self.image = self.image.convert_alpha() self.changecolor = (255, 255, 255, 0)
def __init__(self, parent, color, pos, size=None, icon=None, desc=u""): self.parent = parent if size is None: size = cw.s((120, 22)) base.MouseHandlerSprite.__init__(self) # panelimg self._color = color self._create_paneimg(pos, size, icon) self.desc = desc self._desc = None
def __init__(self, bgscr, speed): """背景変更時のトランジション用スプライト。 image: 変更前の背景。 speed: トランジション効果時のウェイト。 """ base.CWPySprite.__init__(self) self.image = bgscr self.rect = self.image.get_rect() self.rect.topleft = cw.s((0, 0)) self.status = "hidden" self.frame = 0 self.speed = speed
def update_image(self): if cw.cwpy.setting.show_btndesc and self.handling and self.desc and not cw.cwpy.is_showingdlg(): if not self._desc: self._desc = Desc(self, u"", self.desc, u"", arrowpos=cw.s(3)+self.icon.get_width()//2) cw.cwpy.sbargrp.add(self._desc, layer=LAYER_DESC) cw.cwpy.draw(clip=self._desc.rect) else: if self._desc: cw.cwpy.sbargrp.remove(self._desc) cw.cwpy.draw(clip=self._desc.rect) self._desc = None cw.cwpy.has_inputevent = True
def __init__(self): base.CWPySprite.__init__(self) self.image = pygame.Surface(cw.s((632, 33))).convert() self.yadomoney = None self.partymoney = None self.autostart = None self.debugger = None self.backlog = None self.scaling = None self.settings = None self.infocards = None self.friendcards = None self.rect = self.image.get_rect() self.rect.topleft = cw.s((0, 420)) self.showbuttons = False self.maskmode = None self.loading = False self.volumebar = VolumeBar() cw.cwpy.sbargrp.add(self.volumebar, layer=LAYER_VOLUME_BAR) self._init_image() # spritegroupに追加 cw.cwpy.sbargrp.add(self, layer=LAYER_BASE)
def update_scale(self): if self.image_noscale.get_width(): w, h = self.image_noscale.get_size() scr_scale = self.image_noscale.scr_scale if hasattr( self.image_noscale, "scr_scale") else 1 w //= scr_scale h //= scr_scale size = (w, h) if size <> self.size_noscale: size = cw.s(self.size_noscale) if cw.cwpy.setting.smoothscale_bg and self.imgpath: self._image = cw.image.smoothscale(self.image_noscale, size) else: self._image = pygame.transform.scale( self.image_noscale, size) else: self._image = cw.s(self.image_noscale) else: self._image = self.image_noscale self.update_image()
def update_image(self): StatusBarPanel.update_image(self) s = self.currency % (self.text) font = cw.cwpy.rsrc.fonts["sbarpanel"] image = font.render(s, cw.cwpy.setting.fontsmoothing_statusbar, (255, 255, 255)) image = self.get_scaledimage(image) rect = image.get_rect() rect.left = self.rect.w - (rect.w + cw.s(5)) rect.top = (self.rect.h - rect.h) / 2 self.image = self.panelimg.copy() self.image.blit(image, rect.topleft)
def __init__(self, parent, pos, size=None, text="", nmax=0, nmin=100, current=0): base.CWPySprite.__init__(self) if size is None: size = cw.s((300, 22)) self.text = text self.max = nmax self.min = nmin self.current = current self._last_params = None self.rect = pygame.Rect(pos, size) self.rect.top = parent.rect.top + pos[1] self.rect.left = parent.rect.left + pos[0] self.update(None) # spritegroupに追加 cw.cwpy.sbargrp.add(self, layer=LAYER_STATUS_PROGRESS)
def update_transition(self, scr): p_frame = self.get_frame() self.frame = p_frame w = (p_frame * self.variation) / 5 if not self.rect_blinds.w == w: self.rect_blinds.size = (w, cw.SIZE_GAME[1]) for x, y in self.poslist: self.rect_blinds.topleft = (x - w, y) self.image.fill(self.changecolor, cw.s(self.rect_blinds)) if w >= self.w_blinds: self.frame = 0 self.status = "hidden"
def _draw_edge(image): def put(x, y): rect = pygame.Rect((x, y), (1, 1)) image.fill((0, 0, 0), rect) image.fill((0, 0, 0, 192), rect, special_flags=pygame.locals.BLEND_RGBA_SUB) def put_inside(x, y): rect = pygame.Rect((x, y), (1, 1)) image.fill((192, 192, 192), rect, special_flags=pygame.locals.BLEND_RGB_MULT) w, h = image.get_size() put(0, 0) put(w-1, 0) put(0, h-1) put(w-1, h-1) put_inside(cw.s(1), cw.s(1)) put_inside(w-1-cw.s(1), cw.s(1)) put_inside(cw.s(1), h-1-cw.s(1)) put_inside(w-1-cw.s(1), h-1-cw.s(1))
def get_transition((name, speed)): """現在表示中の背景を元にしたトランジションスプライトを返す。 transitiontype: トランジション効果の種類名と速度のタプル。 """ if name == "Default": name = cw.cwpy.setting.transition if not isinstance(speed, int): speed = cw.cwpy.setting.transitionspeed if not speed == 0 and not name == "None": cls = globals().get(name, None) if cls: image = pygame.Surface(cw.s(cw.SIZE_AREA)).convert() cw.sprite.background.layered_draw_ex(cw.cwpy.cardgrp, image) for sprite in cw.cwpy.topgrp.get_sprites_from_layer("jpytemporal"): image.blit(sprite.image, sprite.rect.topleft) return cls(image, speed) return None
def layered_draw_ex(self, layered_updates, surface, draw_desc): rects = [] srect = surface.get_rect() clip = surface.get_clip() if clip: srect = clip sprites = layered_updates.sprites() h = cw.SIZE_GAME[1]-cw.SIZE_AREA[1] sbarclip = cw.s(pygame.Rect(0, cw.SIZE_AREA[1], cw.SIZE_GAME[0], h)) for sprite in sprites: if srect.colliderect(sprite.rect): if isinstance(sprite, (VolumeBar, Desc)): if not draw_desc: continue surface.set_clip(srect.clip(sprite.rect)) else: surface.set_clip(srect.clip(sprite.rect).clip(sbarclip)) rect = surface.blit(sprite.image, sprite.rect) rects.append(rect) surface.set_clip(clip) return rects
def _create_paneimg(self, pos, icon): # ボタン画像 self.btnimg = {} # ボタンアイコン・ラベル if icon: self.icon = icon else: font = cw.cwpy.rsrc.fonts["sbarbtn"] self.icon = font.render(self.name, cw.cwpy.setting.fontsmoothing_statusbar, (0, 0, 0)) if not self.enabled: self.icon = cw.imageretouch.to_disabledsurface(self.icon) # image self.image = self.get_unselectedimage() self.noimg = pygame.Surface(cw.s((0, 0))).convert() # rect self.rect = self.image.get_rect() self.rect.top = self.parent.rect.top + pos[1] self.rect.left = self.parent.rect.left + pos[0] # spritegroupに追加 cw.cwpy.sbargrp.add(self, layer=LAYER_STATUS_ITEM)
def _create_paneimg(self, pos, size, icon): self.icon = icon self.panelimg = pygame.Surface(size).convert_alpha() self.panelimg.fill((0, 0, 0)) rect = self.panelimg.get_rect() rect.topleft = cw.s((1, 1)) rect.size = (size[0] - cw.s(2), size[1] - cw.s(2)) self.panelimg.fill(self._color, rect) _draw_edge(self.panelimg) if self.icon: self.panelimg.blit(self.icon, cw.s((3, 3))) self.handling_rect = pygame.Rect(cw.s(3), cw.s(3), self.icon.get_width(), self.icon.get_height()) # image self.image = self.panelimg.copy() self.noimg = pygame.Surface(cw.s((0, 0))).convert() # rect self.rect = self.image.get_rect() self.rect.top = self.parent.rect.top + pos[1] self.rect.left = self.parent.rect.left + pos[0] # spritegroupに追加 cw.cwpy.sbargrp.add(self, layer=LAYER_STATUS_ITEM)
def to_negative_for_card(image, framewidth=0): """色反転したpygame.Surfaceを返す。 カード画像用なので外枠nピクセルは色反転しない。 image: pygame.Surface framewidth: 外枠の幅。現在は1.50に合わせて外枠無し(0) """ w, h = image.get_size() if w < cw.s(1 + framewidth * 2) or h < cw.s(1 + framewidth * 2): return image.copy() rect = pygame.Rect(cw.s((framewidth, framewidth)), (w - cw.s(framewidth * 2), h - cw.s(framewidth * 2))) outimage = image.copy() if image.get_flags() & SRCALPHA: outimage.fill((255, 255, 255), rect, BLEND_RGB_ADD) else: outimage.fill((255, 255, 255), rect) outimage.blit(image.subsurface(rect), cw.s((framewidth, framewidth)), None, BLEND_RGB_SUB) return outimage
def update_scale(self): if self.volume == cw.cwpy.setting.vol_master and self.upscr == cw.UP_SCR and self.rect.width: return self.volume = cw.cwpy.setting.vol_master self.upscr = cw.UP_SCR padw = 8 padw2 = 2 padh = 5 barh = 200 font = cw.cwpy.rsrc.fonts["sbarprogress"] tsize = font.size(u"100%") tsize2 = font.size(u"音量") tw = max(tsize[0], tsize2[0]) self.rect = pygame.Rect(cw.s(560), cw.s(60), tw+cw.s(padw2)*2, cw.s(barh)+cw.s(1)*2+cw.s(padh)*4+tsize[1]*2) self.image = pygame.Surface(self.rect.size).convert_alpha() self.image.fill((0, 0, 0, 128)) self.image.fill((0, 0, 0, 192), pygame.Rect(cw.s(padw), cw.s(padh)*2+tsize[1], self.rect.width-cw.s(padw)*2, cw.s(barh)+cw.s(2))) n = cw.s(barh - int(cw.cwpy.setting.vol_master * barh)) self.image.fill((0, 128, 128, 192), pygame.Rect(cw.s(padw)+cw.s(1), cw.s(padh)*2+tsize[1]+cw.s(1)+n, self.rect.width-cw.s(padw)*2-cw.s(2), cw.s(barh)-n)) subimg = font.render("%s%%" % (int(cw.cwpy.setting.vol_master * 100)), True, (255, 255, 255)) self.image.blit(subimg, ((self.rect.width-tsize[0])/2+tsize[0]-subimg.get_width(), cw.s(padh)*2+tsize[1]+cw.s(barh)+cw.s(padh))) subimg = font.render(u"音量", True, (255, 255, 255)) self.image.blit(subimg, ((self.rect.width-tsize2[0])/2, cw.s(padh))) cw.cwpy.draw(clip=self.rect)
def update_image(self): """ 現在のフレームに応じてイメージを更新する。 パーツが出現中の時間でなければ、イメージをクリアする。 """ frame = self.parent.frame - self.startframe - self.spawn if frame < 0 or self.duration <= frame or not self._image.get_width(): self.clear_image() return if self.animation_frame: if 1 < self.repeat_count: aframe = self.animation_frame + self.repeat_interval else: aframe = self.animation_frame repeat = frame // aframe if 1 < self.repeat_count and self.repeat_count <= repeat: self.clear_image() return if 1 < self.repeat_count: frame = frame % aframe if self.animation_frame <= frame: self.clear_image() return else: frame = 0 pos = cw.s(self.pos_noscale) size = cw.s(self.size_noscale) if self.animation_type == "Spawn": # アニメーション無しで出現 self.image = self._image self.rect = pygame.Rect(pos, size) elif self.animation_type in ("FadeIn", "FadeOut"): # フェードインしながら出現・フェードアウトしながら消滅 self.rect = pygame.Rect(pos, size) alpha = min(255, (frame * 255) // self.animation_frame) if self.animation_type == "FadeOut": alpha = 255 - alpha if not self._has_alpha and 255 < alpha: alpha = None if self._has_alpha: self.image = self._image.copy() self.image.fill((255, 255, 255, alpha), special_flags=pygame.locals.BLEND_RGBA_MULT) else: self.image = self._image if self.image.get_alpha() <> alpha: self.image.set_alpha(alpha) elif self.animation_type == "Rotate": # カードのように回転 width = size[0] size = (size[0] * self.dealing_scales[frame] // 100, size[1]) pos = (pos[0] + (width - size[0]) // 2, pos[1]) self.rect = pygame.Rect(pos, size) if self._image.get_size() == size: self.image = self._image else: self.image = cw.image.smoothscale(self._image, size) else: raise Exception("Invalid AnimationType: %s" % (self.animation_type))
def update_image(self): self._last_params = (self.text, self.max, self.min, self.current) image = pygame.Surface(self.rect.size).convert_alpha() image.fill((0, 0, 0)) w, h = self.rect.size rect = pygame.Rect(cw.s(1), cw.s(1), w-cw.s(2), h-cw.s(2)) image.fill((255, 255, 255), rect) w = self.rect.width - cw.s(2) font = cw.cwpy.rsrc.fonts["sbarprogress"] subimg = font.render(self.text, cw.cwpy.setting.fontsmoothing_statusbar, (0, 0, 0)) if w-cw.s(4) < subimg.get_width(): subimg = cw.image.smoothscale(subimg.convert_alpha(), (w-cw.s(4), subimg.get_height()), smoothing=cw.cwpy.setting.fontsmoothing_statusbar) x = (image.get_width() - subimg.get_width()) / 2 y = (image.get_height() - subimg.get_height()) / 2 g = w / float(self.max - self.min) curw = int(self.current * g) + cw.s(1) rect = (cw.s(1), cw.s(1), curw, self.rect.height-cw.s(2)) image.fill((0, 0, 128), rect) curw = curw - (x-cw.s(1)) rect = (cw.s(0), cw.s(0), min(curw, subimg.get_width()), subimg.get_height()) subimg.fill((255, 255, 255, 0), rect, special_flags=pygame.locals.BLEND_RGBA_ADD) image.blit(subimg, (x, y)) _draw_edge(image) self.image = image
def __init__(self, parent, name, desc, hotkey, arrowpos=None): base.CWPySprite.__init__(self) self.parent = parent self.name = name self.desc = desc self.hotkey = hotkey if self.name and self.hotkey: title = u"%s(%s)" % (self.name, self.hotkey) font = cw.cwpy.rsrc.fonts["sbardesc"] tfont = cw.cwpy.rsrc.fonts["sbardesctitle"] h = font.get_height() # 必要サイズを計算 lines = self.desc.splitlines() spx = cw.s(8) spy = cw.s(4) tw, th = cw.s(1), spy*2 # 表題 if self.name and self.hotkey: th += cw.s(3) # 表題と本文の間 fw, fh = tfont.size(title) tw = max(tw, fw + spx*2) th += h # 本文 for line in lines: fw, fh = font.size(line) tw = max(tw, fw + spx*2) th += h # 解説画像を作成 arroww = cw.s(8) arrowh = cw.s(12) self.image = pygame.Surface((tw, th+arrowh)).convert_alpha() color = (255, 255, 200) self.image.fill(color) self.image.fill((0, 0, 0, 255), (cw.s(0), th, tw, arrowh), special_flags=pygame.locals.BLEND_RGBA_SUB) linecolor = (0, 0, 0) cw.setting.Resource.draw_frame(self.image, pygame.Rect(cw.s(0), cw.s(0), tw, th), linecolor) self.rect = self.image.get_rect() x, y = spx, spy if self.name and self.hotkey: # 表題 subimg = tfont.render(title, True, linecolor) self.image.blit(subimg, (x, y)) y += tfont.get_height() + cw.s(1) pygame.draw.line(self.image, linecolor, (x, y), (x+tw-spx*2, y), cw.s(1)) y += cw.s(2) # 本文 for line in lines: subimg = font.render(line, True, linecolor) self.image.blit(subimg, (x, y)) y += h # ボタンに合わせて位置を調節 if arrowpos is None: self.rect.center = self.parent.rect.center else: self.rect.left = self.parent.rect.left+arrowpos - self.rect.width//2 _px, py = self.parent.rect.topleft self.rect.top = py - th - cw.s(5) # 画面内に収める if self.rect.left < cw.s(2): self.rect.left = cw.s(2) gw = cw.s(cw.SIZE_GAME[0]) if gw <= self.rect.left + self.rect.width: self.rect.left = gw - cw.s(2) - self.rect.width # ボタンを指す部分 if arrowpos is None: x = self.parent.rect.center[0]-self.rect.left else: x = self.parent.rect.left+arrowpos x -= self.rect.left y = th-1 pl = [(x-arroww/2, y), (x, y+arrowh), (x+arroww/2, y)] pygame.draw.polygon(self.image, color, pl) pygame.draw.aalines(self.image, linecolor, False, pl) self.image.fill((255, 255, 255, 224), special_flags=pygame.locals.BLEND_RGBA_MULT)
def change(self, showbuttons=True, encounter=False, cancelbtn=False): self.clear() in_camp = cw.cwpy.areaid in (cw.AREA_CAMP, cw.AREA_TRADE3) if showbuttons and (pygame.event.peek(pygame.locals.USEREVENT) or cw.cwpy.expanding) and not in_camp: showbuttons = False self.showbuttons = showbuttons maskmode = not self.showbuttons and cw.cwpy.is_statusbarmask() if self.maskmode <> maskmode: self.maskmode = maskmode subimg = cw.cwpy.rsrc.get_statusbtnbmp(2, 0) if maskmode: subimg.fill((74, 74, 74), special_flags=pygame.locals.BLEND_RGB_SUB) self.image.fill((240, 240, 240)) self.image.blit(subimg, cw.s((0, 0))) if cw.cwpy.expanding: ExpandView(self, cw.s((10, 6))) showbuttons &= not cw.cwpy.is_showingbacklog() and not cw.cwpy.sdata.in_f9 left = cw.s(606) rmargin = cw.s(0) self._create_settings((left, cw.s(2))) #PyLite:画面拡大ボタン if cw.cwpy.setting.display_scalebutton: left -= cw.s(26) rmargin += cw.s(24) self._create_scaling((left, cw.s(2))) if cw.cwpy.setting.display_logbutton and cw.cwpy.setting.backlogmax: #if cw.cwpy.setting.backlogmax: left -= cw.s(26) rmargin += cw.s(24) self._create_backlog((left, cw.s(2))) if cw.cwpy.is_debugmode(): left -= cw.s(26) rmargin += cw.s(24) self._create_debugger((left, cw.s(2))) if encounter: EncounterPanel(self, (cw.s(474) - rmargin, cw.s(6))) elif (cw.cwpy.is_curtained() and cw.cwpy.areaid <> cw.AREA_CAMP) or cw.cwpy.selectedheader: if cw.cwpy.status == "Yado": if cancelbtn or cw.cwpy.areaid == -3: CancelButton(self, cw.s((255, 6))) elif not cw.cwpy.expanding: self._create_yadomoney(cw.s((10, 6))) if cw.cwpy.ydata.party: self._create_partymoney((cw.s(474) - rmargin, cw.s(6))) else: if cancelbtn or (showbuttons and cw.cwpy.areaid <> -5):#TODO:Lite:面倒なので妥協 CancelButton(self, cw.s((255, 6))) elif cw.cwpy.status == "Scenario": self._create_partymoney((cw.s(474) - rmargin, cw.s(6))) elif cw.cwpy.is_battlestatus(): RoundCounterPanel(self, (cw.s(474) - rmargin, cw.s(6))) elif cw.cwpy.status == "Yado": if not cw.cwpy.expanding: self._create_yadomoney(cw.s((10, 6))) if cw.cwpy.ydata.party: self._create_partymoney((cw.s(474) - rmargin, cw.s(6))) elif cw.cwpy.status == "Scenario": if showbuttons: lmargin = 10 CampButton(self, cw.s((lmargin, 6))) lmargin += 123 TableButton(self, cw.s((lmargin, 6))) lmargin += 123 self._create_partymoney((cw.s(474) - rmargin, cw.s(6))) rmargin += cw.s(34) if cw.cwpy.setting.display_noticeinfo and cw.cwpy.is_playingscenario() and cw.cwpy.sdata.has_infocards(): self._create_infocards((cw.s(474) - rmargin, cw.s(2))) elif cw.cwpy.is_battlestatus(): if cw.cwpy.setting.show_roundautostartbutton: self._create_autostart(cw.s((5, 2))) left = cw.s(36) else: left = cw.s(10) if showbuttons: btn = ActionButton(self, (left, cw.s((6)))) if self.autostart: self.autostart.actionbtn = btn if cw.cwpy.battle.possible_runaway: RunAwayButton(self, (cw.s(123) + left, cw.s((6)))) RoundCounterPanel(self, (cw.s(474) - rmargin, cw.s(6))) rmargin += cw.s(34) if showbuttons and cw.cwpy.is_debugmode() and\ cw.cwpy.battle.is_ready() and cw.cwpy.get_fcards(): self._create_friendcards((cw.s(474) - rmargin, cw.s(3))) if self.infocards and not cw.cwpy.is_playingscenario(): self.infocards.notice = False if showbuttons: self.loading = False if not cw.cwpy.sdata or not cw.cwpy.sdata.in_f9: # デバッガのツールが使用可能かどうかを更新 cw.cwpy.event.refresh_tools()
def __init__(self): base.CWPySprite.__init__(self) self.image = pygame.Surface(cw.s((0, 0))).convert() self.rect = pygame.Rect(0, 0, 0, 0) self.volume = cw.cwpy.setting.vol_master self.upscr = cw.UP_SCR