Jump to content
Sign in to follow this  
.hack//ROOTS

sistema python Aviso: cuando un amigo se conecta

Recommended Posts

w5lM0dK.png

Quote
### 0.1 Root / uiMessenger.py:

# 1. Search:

    def OnLogin(self, groupIndex ...
   
# 1. After:

        member.Online()
        self.OnRefreshList()
       
# 1. Add:

        if not name in constInfo.ALREADY_NOTIFY_LIST:
            self.onlinePopup = uiCommon.OnlinePopup()
            self.onlinePopup.SetUserName(name)
            self.onlinePopup.SetEvent(ui.__mem_func__(self.OpenWhisper), "MOUSE_LEFT_BUTTON_UP", name)
            self.onlinePopup.SlideIn()
       
            constInfo.ALREADY_NOTIFY_LIST.append(name)  
           
# 1.1 After: def OnLogin(... Add:

    def OpenWhisper(self, eventType, userName):
        self.whisperButtonEvent(userName)
       
### 0.2 Root / constInfo.py:

# 2. Add:

ALREADY_NOTIFY_LIST = []

### 0.3 Root / ui.py

# 3 Search:

class Board(Window):

    (....)

# 3 REPLACE this class with:

class Board(Window):
    CORNER_WIDTH = 32
    CORNER_HEIGHT = 32
    LINE_WIDTH = 128
    LINE_HEIGHT = 128

    LT = 0
    LB = 1
    RT = 2
    RB = 3
    L = 0
    R = 1
    T = 2
    B = 3
   
    BASE_PATH = "d:/ymir work/ui/pattern"
    IMAGES = {
        'CORNER' : {
            0 : "Board_Corner_LeftTop",
            1 : "Board_Corner_LeftBottom",
            2 : "Board_Corner_RightTop",
            3 : "Board_Corner_RightBottom"
        },
        'BAR' : {
            0 : "Board_Line_Left",
            1 : "Board_Line_Right",
            2 : "Board_Line_Top",
            3 : "Board_Line_Bottom"
        },
        'FILL' : "Board_Base"
    }

    def __init__(self, layer = "UI"):
        Window.__init__(self, layer)
        self.skipMaxCheck = False

        self.MakeBoard()
       
    def MakeBoard(self):
        CornerFileNames = [ ]
        LineFileNames = [ ]
       
        for imageDictKey in (['CORNER', 'BAR']):
            for x in xrange(len(self.IMAGES[imageDictKey])):
                if imageDictKey == "CORNER":
                    CornerFileNames.append("%s/%s.tga" % (self.BASE_PATH, self.IMAGES[imageDictKey][x]))
                elif imageDictKey == "BAR":
                    LineFileNames.append("%s/%s.tga" % (self.BASE_PATH, self.IMAGES[imageDictKey][x]))
       
        self.Corners = []
        for fileName in CornerFileNames:
            Corner = ExpandedImageBox()
            Corner.AddFlag("not_pick")
            Corner.LoadImage(fileName)
            Corner.SetParent(self)
            Corner.SetPosition(0, 0)
            Corner.Show()
            self.Corners.append(Corner)

        self.Lines = []
        for fileName in LineFileNames:
            Line = ExpandedImageBox()
            Line.AddFlag("not_pick")
            Line.LoadImage(fileName)
            Line.SetParent(self)
            Line.SetPosition(0, 0)
            Line.Show()
            self.Lines.append(Line)

        self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT)
        self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0)

        self.Base = ExpandedImageBox()
        self.Base.AddFlag("not_pick")
        self.Base.LoadImage("%s/%s.tga" % (self.BASE_PATH, self.IMAGES['FILL']))
        self.Base.SetParent(self)
        self.Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT)
        self.Base.Show()

    def __del__(self):
        Window.__del__(self)

    def SetSize(self, width, height):
        if not self.skipMaxCheck:
            width = max(self.CORNER_WIDTH*2, width)
            height = max(self.CORNER_HEIGHT*2, height)
           
        Window.SetSize(self, width, height)

        self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT)
        self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0)
        self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT)
        self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT)
        self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT)

        verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT
        horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH
        self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
        self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
        self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
        self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)

        if self.Base:
            self.Base.SetRenderingRect(0, 0, horizontalShowingPercentage, verticalShowingPercentage)
           
# 3 AFTER CLASS BOARD ADD THIS CLASS:

class BorderB(Board):
    CORNER_WIDTH = 16
    CORNER_HEIGHT = 16
    LINE_WIDTH = 16
    LINE_HEIGHT = 16
   
    BASE_PATH = "d:/ymir work/ui/pattern"

    IMAGES = {
        'CORNER' : {
            0 : "border_b_left_top",
            1 : "border_b_left_bottom",
            2 : "border_b_right_top",
            3 : "border_b_right_bottom"
        },
        'BAR' : {
            0 : "border_b_left",
            1 : "border_b_right",
            2 : "border_b_top",
            3 : "border_b_bottom"
        },
        'FILL' : "border_b_center"
    }
   
    def __init__(self):
        Board.__init__(self)
           
        self.eventFunc = {
            "MOUSE_LEFT_BUTTON_UP" : None,
        }
        self.eventArgs = {
            "MOUSE_LEFT_BUTTON_UP" : None,
        }

    def __del__(self):
        Board.__del__(self)
        self.eventFunc = None
        self.eventArgs = None

    def SetSize(self, width, height):
        Board.SetSize(self, width, height)
       
    def SetEvent(self, func, *args) :
        result = self.eventFunc.has_key(args[0])      
        if result :
            self.eventFunc[args[0]] = func
            self.eventArgs[args[0]] = args
        else :
            print "[ERROR] ui.py SetEvent, Can`t Find has_key : %s" % args[0]
           
    def OnMouseLeftButtonUp(self):
        if self.eventFunc["MOUSE_LEFT_BUTTON_UP"] :
            apply(self.eventFunc["MOUSE_LEFT_BUTTON_UP"], self.eventArgs["MOUSE_LEFT_BUTTON_UP"])
           
           
           
### 0.4 Root / uiCommon.py
add:
import wndMgr

# 4 Add this to the end of file:

### (Check if you have in this file import app )

class OnlinePopup(ui.BorderB):
    def __init__(self):
        ui.BorderB.__init__(self)
       
        self.isActiveSlide = False
        self.isActiveSlideOut = False
        self.endTime = 0
        self.wndWidth = 0

        self.textLine = ui.TextLine()
        self.textLine.SetParent(self)
        self.textLine.SetWindowHorizontalAlignCenter()
        self.textLine.SetWindowVerticalAlignCenter()
        self.textLine.SetHorizontalAlignCenter()
        self.textLine.SetVerticalAlignCenter()
        self.textLine.SetPosition(13, 0)
        self.textLine.Show()
       
        self.onlineImage = ui.ImageBox()
        self.onlineImage.SetParent(self)
        self.onlineImage.SetPosition(8, 8)
        self.onlineImage.LoadImage("d:/ymir work/ui/game/windows/messenger_list_online.sub")
        self.onlineImage.Show()
       
    def __del__(self):
        ui.BorderB.__del__(self)

    def SlideIn(self):
        self.SetTop()
        self.Show()
       
        self.isActiveSlide = True
        self.endTime = app.GetGlobalTimeStamp() + 5

    def Close(self):
        self.Hide()

    def Destroy(self):
        self.Close()

    def SetUserName(self, name):
        self.textLine.SetText("Player %s is online." % str(name))
       
        self.wndWidth = self.textLine.GetTextSize()[0] + 40
        self.SetSize(self.wndWidth, 25)
        self.SetPosition(-self.wndWidth, wndMgr.GetScreenHeight() - 200)
       
    def OnUpdate(self):
        if self.isActiveSlide and self.isActiveSlide == True:
            x, y = self.GetLocalPosition()
            if x < 0:
                self.SetPosition(x + 4, y)
               
        if self.endTime - app.GetGlobalTimeStamp() <= 0 and self.isActiveSlideOut == False and self.isActiveSlide == True:
            self.isActiveSlide = False
            self.isActiveSlideOut = True
               
        if self.isActiveSlideOut and self.isActiveSlideOut == True:
            x, y = self.GetLocalPosition()
            if x > -(self.wndWidth):
                self.SetPosition(x - 4, y)
               
            if x <= -(self.wndWidth):
                self.isActiveSlideOut = False
                self.Close()


######## Please write in topic If i forgot something. ########

 

Quote

Download: 

Debes iniciar sesión para ver el contenido del enlace en esta publicación.

w5lM0dK.png

imageproxy.php?img=&key=71c4c8bb529411adqdnyxNZ.png

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...