summaryrefslogblamecommitdiff
path: root/game/inventory.rpy
blob: ef6f08af83a4cc8da22e6c929c7662322dabd0ca (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:
    def inventoryplace():
        global Player
        # Return next free slot index
        try:
            return Player["inv"].index(None)
        except:
            return len(Player["inv"])

    def get_inventory():
        raw=send_packet("get_inv", "")

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

        if (pt == FAILUREMSG):
            # TODO: msgbox you're offline, quit
            return ERR_LOGIN_DEFAULT

        print("get_inv(): "+str(pt))
        return pt

screen inventory(blank=False, filters="True"):
    # window
    # hbox
    vpgrid:
        cols 4
        spacing 5
        draggable True
        mousewheel True
        scrollbars "vertical"
        side_xalign 0.5
        xoffset 15
        #yoffset 45
        #xfill True
        yfill True

        # The close button returns -1 and comes first
        imagebutton:
                if not blank:
                    idle At("gfx/square/back_idle.png", czoom_70)
                    hover At("gfx/square/back_hover.png", czoom_70)
                else:
                    idle At("gfx/square/bg.png", czoom_70)
                action Return(-1)

        for i, item in enumerate(Player["inv"]):
            # We don't care for None items
            if item is not None:
                # Needed because eval :rolling_eyes:
                #$ ir=copy.copy(item["rare"])
                #$ print(str(locals()))
                python:
                    evl=False
                    #print("---- repr")
                    try:
                        alu=allunits[item["unit_id"]]
                    except:
                        alu={}
                        stdout("ERROR, alu: not defined, index %d" % i)
                    evl=eval(filters, globals(), locals())
                    #print(str(evl))
                    #print(str(filters))
                    #print(str(item))
                    #print(str(alu))
                if evl:
                    $ btn = unitsquare(item["unit_id"], czoom_70)
                    imagebutton:
                        idle btn
                        action Return(i)
                        #alternate "Show the char data chart"

screen char_details(un, hpval, akval, idx):
    style_prefix "confirm"

    frame:
        #at msgbox_emp
        yalign 0.95

        vbox:
            xalign 0.5
            yalign 0.95
            spacing 30

            label _("{b}%s{/b}\n%s\n\n{i}%s{/i}\nHP: %d — ATK: %d\nLv %d/%d — EXP: %d") % (
                                    star_write(un["rare"]), un["name"],
                                    parse_job(un["job"]),
                                    hpval, akval,
                                    Player["inv"][idx]["level"],
                                    un["max_level"],
                                    Player["inv"][idx]["exp"]):
                style "confirm_prompt"
                xalign 0.5

            hbox:
                xalign 0.5
                spacing 100

                textbutton _("Merge") action [SensitiveIf(Player["inv"][idx]["level"] < un["max_level"]), Return(-1)]
                textbutton _("Evolve") action [SensitiveIf(evocheck(Player["inv"][idx]["level"], un)), Return(-2)]

            hbox:
                xalign 0.5
                spacing 100

                textbutton _("Ok") action Return(0)

    ## Right-click and escape answer "no".
    key "game_menu" action Return(0)


# Show inventory button
label inventory:
    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)

label show_inv:
    call screen inventory
    if (_return >= 0):
        $stdout("Selected unit index %d" % _return)
        $un=allunits[Player["inv"][_return]["unit_id"]]
        $show_img("unit_"+str(un["unit_id"]), at_list=[ttop]) # truecenter
        $hpval=readjust_status(Player["inv"][_return]["level"], un["hp"])
        $akval=readjust_status(Player["inv"][_return]["level"], un["strength"])

        $ret=renpy.call_screen("char_details", un, hpval, akval, _return)

        # Proccess input
        if ret == -1:
            $who=_return
            call upgrade_pre
        elif ret == -2:
            $who=_return
            call evolve_pre

        $renpy.hide("unit_"+str(un["unit_id"]))
    else:
        jump restore

    jump show_inv