- if app.ENABLE_OX_RENEWAL:
- class BigBoardControl(ui.Bar):
- FONT_WIDTH = 18
- FONT_HEIGHT = 18
- LINE_WIDTH = 500
- LINE_HEIGHT = FONT_HEIGHT + 5
- STEP_HEIGHT = LINE_HEIGHT * 2
- LINE_CHANGE_LIMIT_WIDTH = 450
- BIG_TEXTBAR_MAX_HIGHT = 1000
- FRAME_IMAGE_FILE_NAME_LIST = [
- "season1/interface/oxevent/frame_new_0.sub",
- "season1/interface/oxevent/frame_new_1.sub",
- ]
- FRAME_IMAGE_STEP = 256
- FRAME_BASE_X = -20
- FRAME_BASE_Y = -12
- def __init__(self):
- ui.Bar.__init__(self)
- self.AddFlag("not_pick")
- self.tipList = []
- self.curPos = 0
- self.dstPos = 0
- self.nextScrollTime = 0
- self.scrollstop = 0
- self.pretexsize = 0
- self.nexttextsize = 0
- self.changeline = 0
- self.addtipListcount = 0
- self.SetPosition(0, 150)
- self.SetSize(512, 55)
- self.SetColor(grp.GenerateColor(0.0, 0.0, 0.0, 0.5))
- self.SetWindowHorizontalAlignCenter()
- self.__CreateTextBar()
- self.__LoadFrameImages()
- def __LoadFrameImages(self):
- x = self.FRAME_BASE_X
- y = self.FRAME_BASE_Y
- self.imgList = []
- for imgFileName in self.FRAME_IMAGE_FILE_NAME_LIST:
- self.imgList.append(self.__LoadImage(x, y, imgFileName))
- def __LoadImage(self, x, y, fileName):
- img = ui.ImageBox()
- img.SetParent(self)
- img.AddFlag("not_pick")
- img.LoadImage(fileName)
- img.SetPosition(x, y)
- img.Show()
- return img
- def __del__(self):
- self.tipList = []
- self.textBar.ClearBar()
- self.Hide()
- ui.Bar.__del__(self)
- def __CreateTextBar(self):
- x, y = self.GetGlobalPosition()
- self.textBar = BigTextBar(self.LINE_WIDTH, self.BIG_TEXTBAR_MAX_HIGHT, self.FONT_HEIGHT)
- self.textBar.SetParent(self)
- self.textBar.SetPosition(6, 8)
- self.textBar.SetTextColor(242, 231, 193)
- self.textBar.SetClipRect(0, y+8, wndMgr.GetScreenWidth(), y+8+self.STEP_HEIGHT)
- self.textBar.Show()
- def __CleanOldTip(self):
- self.tipList = []
- self.textBar.ClearBar()
- self.Hide()
- def __RefreshBoard(self):
- self.textBar.ClearBar()
- preaddtipListcount = self.addtipListcount
- self.addtipListcount = 0
- index = 0
- for text in self.tipList:
- (text_width, text_height) = self.textBar.GetTextExtent(text)
- if index == 0:
- self.textBar.TextOut((500-text_width)/2, index*self.LINE_HEIGHT, " ")
- index += 1
- self.addtipListcount += 1
- if index == (len(self.tipList) - (len(self.tipList) - self.pretexsize))+1 and not self.pretexsize == 0:
- self.textBar.TextOut((500-text_width)/2, index*self.LINE_HEIGHT, " ")
- index += 1
- self.textBar.TextOut((500-text_width)/2, index*self.LINE_HEIGHT, " ")
- index += 1
- self.addtipListcount += 2
- self.textBar.TextOut((500-text_width)/2, index*self.LINE_HEIGHT, text)
- index += 1
- if self.tipList:
- index += 1
- self.addtipListcount += 1
- self.textBar.TextOut((500-text_width)/2, index*self.LINE_HEIGHT, " ")
- def SetTip(self, text):
- if not app.IsVisibleNotice():
- return
- if text == "#start" or text == "#end" or text == "#send":
- pass
- else:
- self.__AppendText(text)
- if text == "#start" or text == "#send":
- if text == "#send" and self.pretexsize == 0:
- text = "#end"
- self.__RefreshBoard()
- if text == "#start":
- self.STEP_HEIGHT = (self.LINE_HEIGHT * (len(self.tipList) + self.addtipListcount))
- self.pretexsize = len(self.tipList)
- x, y = self.GetGlobalPosition()
- self.textBar.SetClipRect(0, y+8, wndMgr.GetScreenWidth(), y+8+self.STEP_HEIGHT)
- self.SetSize(512, 10 + (self.LINE_HEIGHT * (len(self.tipList) + self.addtipListcount))+10)
- self.imgList[1].SetPosition(self.FRAME_BASE_X, self.STEP_HEIGHT + 10)
- self.scrollstop = 0
- self.changeline = 1
- if text == "#send":
- self.scrollstop = 1
- self.nexttextsize = len(self.tipList) - self.pretexsize
- if not self.IsShow():
- self.curPos = -self.STEP_HEIGHT
- self.dstPos = -self.STEP_HEIGHT
- self.textBar.SetPosition(3, 8 - self.curPos)
- self.Show()
- if text == "#end":
- self.curPos = -self.STEP_HEIGHT
- self.dstPos = -self.STEP_HEIGHT
- self.textBar.SetPosition(3, 8 - self.curPos)
- self.textcount = 0
- self.changeline = 0
- self.pretexsize = 0
- self.nexttextsize = 0
- self.addtipListcount = 0
- self.__CleanOldTip()
- def __AppendText(self, text):
- import dbg
- prevPos = 0
- while 1:
- curPos = text.find(" ", prevPos)
- if curPos < 0:
- break
- (text_width, text_height) = self.textBar.GetTextExtent(text[:curPos])
- if text_width > self.LINE_CHANGE_LIMIT_WIDTH:
- self.tipList.append(text[:prevPos])
- (text_width, text_height) = self.textBar.GetTextExtent(text[prevPos:])
- if text_width > self.LINE_CHANGE_LIMIT_WIDTH:
- text = text[prevPos:]
- if text[:prevPos] == "":
- prevPos = curPos + 1
- else:
- prevPos = 0
- else:
- text = text[prevPos:]
- break
- else:
- prevPos = curPos + 1
- self.tipList.append(text)
- def OnUpdate(self):
- if not self.tipList:
- self.Hide()
- return
- if self.changeline:
- self.changeline = 0
- self.dstPos = self.curPos + self.STEP_HEIGHT
- if self.dstPos > self.curPos and self.curPos <= -1 and not self.scrollstop:
- self.curPos += 1
- self.textBar.SetPosition(3, 8 - self.curPos)
- if self.scrollstop:
- self.curPos += 1
- self.textBar.SetPosition(3, 8 - self.curPos)
- if self.curPos > (self.pretexsize + 2) * self.LINE_HEIGHT:
- self.pretexsize = (self.pretexsize + self.nexttextsize)
- self.scrollstop = 0
blackdragonx61