summaryrefslogblamecommitdiff
path: root/game/party.rpy
blob: 4d7cdcc4fa75ec3bde72cdce8db557e1feeb4214 (plain) (tree)







































































                                                                                                                                                       
                             













                                                                          
                             















                                                                         
                                                                  























                                                               

 

















                                                               
########################################################################################
#     This file is part of Spheres.
#     Copyright (C) 2019  Jesusalva

#     This library is free software; you can redistribute it and/or
#     modify it under the terms of the GNU Lesser General Public
#     License as published by the Free Software Foundation; either
#     version 2.1 of the License, or (at your option) any later version.

#     This library is distributed in the hope that it will be useful,
#     but WITHOUT ANY WARRANTY; without even the implied warranty of
#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
#     Lesser General Public License for more details.

#     You should have received a copy of the GNU Lesser General Public
#     License along with this library; if not, write to the Free Software
#     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
########################################################################################
# Player data displays
init python:
    # Function which list all unit id on party
    def party_dupcheck(pid):
        ar=[]
        for unt in Player["party_%s" % pid]:
            ar.append(unt["unit_id"])
        return ar

    def get_party(pid, internal=False):
        raw=send_packet("get_party", str(pid))

        pt=json_decode(raw)
        if (pt == ERR_JSONDECODER):
            return ERR_JSONDECODER

        Player["party_%d" % pid]=pt
        if (internal):
            return False

        allmem=""
        for member in pt:
            # Skip'invalid members
            if member["unit_id"] <= 0:
                continue

            # TODO: show image
            rfc=Player["inv"][member["inv_id"]]

            allmem+="%d★ %s (Lv %d, %d exp)\n" % (allunits[member["unit_id"]]["rare"], allunits[member["unit_id"]]["name"], rfc["level"], rfc["exp"])
            #Player["party_1"].append(member)

        renpy.call_screen("msgbox", "Party %d\n %s" % (pid, allmem))
        return True

    def set_party(pid, members):
        raw=send_packet("set_party", """{"party_id": %d, "formation": %s}""" % (pid, str(members)))

        pt=json_decode(raw)
        if (pt == ERR_JSONDECODER):
            return ERR_JSONDECODER

        return True

    def party_update(pid, pix):
        newindex=renpy.call_screen("inventory", True)

        # We only need inventory id's
        # So make a Party variable with this
        Party=dlist()
        for une in Player["party_%d" % pid]:
            Party.append(une["inv_id"])

        if debug:
            print(str(Party))

        # Add unit, but only if no duplicates are found
        # Exception: If it is -1, then we can add
        if newindex != -1:
            dupcheck=party_dupcheck(pid)
            dupid=Player["inv"][newindex]["unit_id"]
            if dupid in dupcheck:
                renpy.notify(_("You cannot add duplicate party members!"))
            else:
                Party[pix]=newindex
        else:
            Party[pix]=newindex

        if debug:
            print(str(Party))

        # Set party
        set_party(pid, Party)
        return True

screen party_main():
    default party = 1
    vbox:
        xalign 0.5
        yalign 0.3
        label _("{size=32}{color=#fff}Party %d{/color}{/size}" % (party))
        null height 20
        hbox:
            for i, item in enumerate(Player["party_%d" % party]):
                imagebutton:
                    if item["unit_id"] > 0:
                        idle unitsquare(item["unit_id"], czoom_70)
                    else:
                        idle At("gfx/square/bg.png", czoom_70)
                    action Return([party, i])
        null height 80
        # The close button returns -1 and comes last (TODO)
        imagebutton:
                idle At("gfx/square/back_idle.png", czoom_75)
                hover At("gfx/square/back_hover.png", czoom_75)
                action Return(-1)

label party_lobby:

    call screen party_main

    # Return to town
    if _return == -1:
        jump restore

    # Update party index
    $party_update(_return[0], _return[1])
    $ get_party(_return[0], True)

    jump party_lobby



label party_lobby_enter:
    play music MUSIC_PARTY.id() fadein 0.5
    $ hud_clear()

    # Try to update inventory
    $ inv=get_inventory()
    python:
        try:
            renpy.call_screen("msgbox", "Error: %d" % int(inv))
        except:
            Player["inv"]=dlist()
            for a in inv:
                Player["inv"].append(a)

    # FIXME
    $ get_party(1, True)
    jump party_lobby