Exemplo n.º 1
0
    def __init__(self, app, parent, character, *args, **kwargs):
        super().__init__(parent,
                         relief='ridge',
                         *args, **kwargs)
        self.app = app
        self.parent = parent
        self._character = character
        self.dirty = False

        png = Image.open(io.BytesIO(character.png))
        self.image = ImageTk.PhotoImage(png)

        self.photo = tk.Label(self,
                              image=self.image,
                              width=self.image.width(),
                              height=self.image.height())
        self.photo.grid(row=0, column=0, rowspan=3, padx=2, pady=2)

        self.property_panel = PropertyPanel(self, character)
        if character.sex == 1:
            self.property_panel.grid(row=0, column=1, rowspan=1, padx=2, pady=2)
            self.status_panel = StatusPanel(self, character)
            self.status_panel.grid(row=0, column=2, rowspan=1, padx=4, pady=2, sticky='N')
        else:
            self.property_panel.grid(row=0, column=1, rowspan=1, columnspan=2, padx=2, pady=2, sticky='W')


        self._load_btn = ttk.Button(self,
                                    text='Load Character Card',
                                    command=self._open_dialog)
        self._load_btn.grid(row=2, column=1, sticky='W', pady=4)
Exemplo n.º 2
0
class CharacterPanel(ttk.Frame):
    def __init__(self, app, parent, character, *args, **kwargs):
        super().__init__(parent, relief='ridge', *args, **kwargs)
        self.app = app
        self.parent = parent
        self._character = character
        self.dirty = False

        png = Image.open(io.BytesIO(character.png))
        self.image = ImageTk.PhotoImage(png)

        self.photo = tk.Label(self,
                              image=self.image,
                              width=self.image.width(),
                              height=self.image.height())
        self.photo.grid(row=0, column=0, rowspan=3, padx=2, pady=2)
        self.property_panel = PropertyPanel(self, character)
        if character.sex == 1:
            self.property_panel.grid(row=0,
                                     column=1,
                                     rowspan=1,
                                     padx=2,
                                     pady=2)
            self.status_panel = StatusPanel(self, character)
            self.status_panel.grid(row=1,
                                   column=1,
                                   rowspan=1,
                                   padx=4,
                                   pady=2,
                                   sticky='N')
        else:
            self.property_panel.grid(row=0,
                                     column=1,
                                     rowspan=1,
                                     columnspan=2,
                                     padx=2,
                                     pady=2,
                                     sticky='W')

        self._load_btn = ttk.Button(self,
                                    text='Load Character Card',
                                    command=self._open_dialog)
        self._load_btn.grid(row=2, column=1, sticky='W', pady=4)

    @property
    def character(self):
        chara = self._character
        panel = self.property_panel

        chara.firstname = panel.firstname
        chara.lastname = panel.lastname
        chara.nickname = panel.nickname
        if chara.sex == 0:
            chara.intelligence = panel.intellect
            chara.strength = panel.physical
            chara.ero = panel.hentai

        elif chara.sex == 1:
            chara.personality = panel.personality
            chara.weak_point = panel.weak_point
            chara.answers = self.property_panel.answers
            chara.denials = self.property_panel.denials
            chara.attributes = self.property_panel.attributes

            panel = self.status_panel
            chara.feeling = panel.feeling
            chara.m_love = panel.m_love
            chara.h_count = panel.h_count
            chara.koikatu = panel.koikatu
            chara.lover = panel.relation
            chara.date = panel.date
            chara.intimacy = panel.intimacy

            ac = [
                'mune', 'kokan', 'anal', 'siri', 'tikubi', 'kokan_piston',
                'anal_piston', 'houshi'
            ]
            for name in ac:
                chara.set_ac(name, panel.ac(name))

        self.dirty = True
        return chara

    def _update_character(self, character):
        self._character.custom = character.custom
        self._character.coordinates = character.coordinates
        self._character.parameter = character.parameter
        self._character.status = character.status
        self._character.png_length = character.png_length
        self._character.png = character.png
        self.dirty = True

        png = Image.open(io.BytesIO(character.png))
        self.image = ImageTk.PhotoImage(png)
        self.photo.config(image=self.image)

        self.property_panel.update_character(self._character)

    def _open_dialog(self):
        name = askopenfilename(filetype=[("koikatu card", "*.png")],
                               initialdir=self.app.card_dir)
        if name is not None:
            with open(name, 'rb') as infile:
                chara = KoikatuCharacter(infile, True)
                self._update_character(chara)
        else:
            self.quit()
Exemplo n.º 3
0
class CharacterPanel(ttk.Frame):
    def __init__(self, app, parent, character, *args, **kwargs):
        super().__init__(parent, relief='ridge', *args, **kwargs)
        self.app = app
        self.parent = parent
        self._character = character
        self.dirty = False

        png = Image.open(io.BytesIO(character.png))
        self.image = ImageTk.PhotoImage(png)

        self.photo = tk.Label(self,
                              image=self.image,
                              width=self.image.width(),
                              height=self.image.height())
        self.photo.grid(row=0, column=0, rowspan=3, padx=2, pady=2)

        self.property_panel = PropertyPanel(self, character)
        if character.sex == 1:
            self.property_panel.grid(row=0,
                                     column=1,
                                     rowspan=1,
                                     padx=2,
                                     pady=2)
            self.status_panel = StatusPanel(self, character)
            self.status_panel.grid(row=0,
                                   column=2,
                                   rowspan=1,
                                   padx=4,
                                   pady=2,
                                   sticky='N')
        else:
            self.property_panel.grid(row=0,
                                     column=1,
                                     rowspan=1,
                                     columnspan=2,
                                     padx=2,
                                     pady=2,
                                     sticky='W')

        self._load_btn = ttk.Button(self,
                                    text='Load Character Card',
                                    command=self._open_dialog)
        self._load_btn.grid(row=2, column=1, sticky='W', pady=4)

        self._uw_save_btn = ttk.Button(self,
                                       text=character.firstname + 'の下着を記録',
                                       command=self._coordinate_filesave)
        self._uw_save_btn.grid(row=2, column=2, sticky='W', pady=4)

        self._uw_equip_btn = ttk.Button(self,
                                        text=character.firstname + 'に下着を試着',
                                        command=self._coordinate_try)
        self._uw_equip_btn.grid(row=2, column=2, sticky='N', pady=4)

        self.app.inners.update_equip_file(character.lastname +
                                          character.firstname)

    @property
    def character(self):
        chara = self._character
        panel = self.property_panel

        chara.firstname = panel.firstname
        chara.lastname = panel.lastname
        chara.nickname = panel.nickname

        if chara.sex == 1:
            chara.personality = panel.personality
            chara.weak_point = panel.weak_point
            chara.answers = self.property_panel.answers
            chara.denials = self.property_panel.denials
            chara.attributes = self.property_panel.attributes

            panel = self.status_panel
            chara.feeling = panel.feeling
            chara.m_love = panel.m_love
            chara.h_count = panel.h_count
            chara.koikatu = panel.koikatu
            chara.lover = panel.relation
            chara.date = panel.date

            ac = [
                'mune', 'kokan', 'anal', 'siri', 'tikubi', 'kokan_piston',
                'anal_piston', 'houshi'
            ]
            for name in ac:
                chara.set_ac(name, panel.ac(name))

        self.dirty = True
        return chara

    def _update_character(self, character):
        self._character.custom = character.custom
        self._character.coordinates = character.coordinates
        self._character.parameter = character.parameter
        self._character.status = character.status
        self._character.png_length = character.png_length
        self._character.png = character.png
        self.dirty = True

        png = Image.open(io.BytesIO(character.png))
        self.image = ImageTk.PhotoImage(png)
        self.photo.config(image=self.image)

        self.property_panel.update_character(self._character)

    def _open_dialog(self):
        name = askopenfilename(filetype=[("koikatu card", "*.png")],
                               initialdir=self.app.card_dir)
        if name is not None:
            with open(name, 'rb') as infile:
                chara = KoikatuCharacter(infile, True)
                self._update_character(chara)
        else:
            self.quit()

    # 試着設定
    def _coordinate_try(self):
        cloth = askopenfilename(filetype=[("下着データ", "*.txt")],
                                initialdir=self.app.inners.uw_dir)
        if cloth is not None:
            self.app.inners.set_try(
                self._character.lastname + self._character.firstname,
                os.path.basename(cloth))
        else:
            self.app.inners.set_try(
                self._character.lastname + self._character.firstname, "")

    # 下着データ新規登録
    def _coordinate_filesave(self):
        self.app.inners.save_newinner(
            self._character.coordinates[0]["clothes"])
        self.app.inners.reset_inners()
        self.app.inners.set_inners(self.app.inners.get_inners())  #下着データSET