2022-11-20 23:11:54 +02:00
import ui
import dbg
import app
import grp
import grpImage
import event
import time
import wndMgr
import net
2023-07-21 21:55:58 +03:00
import sys
2022-11-20 23:11:54 +02:00
QUEST_BOARD_IMAGE_DIR = ' d:/ymir work/ui/game/questboard/ '
cur_questpage_number = 1
entire_questbutton_number = 0
entire_questpage_number = 1
2023-07-21 21:55:58 +03:00
2022-11-20 23:11:54 +02:00
# TOOLTIP_IMAGE_BOX
class ToolTipImageBox ( ui . ImageBox ) :
def __init__ ( self ) :
ui . ImageBox . __init__ ( self )
self . DestroyToolTip ( )
def __del__ ( self ) :
ui . ImageBox . __del__ ( self )
def CreateToolTip ( self , parent , title , desc , x , y ) :
import uiToolTip
self . toolTip = uiToolTip . ToolTip ( )
self . toolTip . SetWindowHorizontalAlignCenter ( )
2023-07-21 21:55:58 +03:00
self . toolTip . SetFollow ( False )
2022-11-20 23:11:54 +02:00
self . toolTip . SetTitle ( title )
self . toolTip . SetPosition ( x , y )
desc = desc . replace ( " | " , " / " )
for line in desc . split ( " / " ) :
self . toolTip . AutoAppendTextLine ( line )
self . toolTip . ResizeToolTip ( )
self . toolTip . Hide ( )
def DestroyToolTip ( self ) :
self . toolTip = None
def OnMouseOverIn ( self ) :
if self . toolTip :
self . toolTip . SetTop ( )
self . toolTip . Show ( )
def OnMouseOverOut ( self ) :
if self . toolTip :
self . toolTip . Hide ( )
# END_OF_TOOLTIP_IMAGE_BOX
class QuestCurtain ( ui . Window ) :
CURTAIN_TIME = 0.25
CURTAIN_SPEED = 200
BarHeight = 60
OnDoneEventList = [ ]
def __init__ ( self , layer = " TOP_MOST " ) :
ui . Window . __init__ ( self , layer )
self . TopBar = ui . Bar ( " TOP_MOST " )
self . BottomBar = ui . Bar ( " TOP_MOST " )
self . TopBar . Show ( )
self . BottomBar . Show ( )
self . TopBar . SetColor ( 0xff000000 )
self . BottomBar . SetColor ( 0xff000000 )
self . TopBar . SetPosition ( 0 , - self . BarHeight )
self . TopBar . SetSize ( wndMgr . GetScreenWidth ( ) , self . BarHeight )
self . BottomBar . SetPosition ( 0 , wndMgr . GetScreenHeight ( ) )
self . BottomBar . SetSize ( wndMgr . GetScreenWidth ( ) , self . BarHeight )
self . CurtainMode = 0
self . lastclock = time . clock ( )
def Close ( self ) :
self . CurtainMode = 0
self . TopBar . SetPosition ( 0 , - self . BarHeight - 1 )
self . BottomBar . SetPosition ( 0 , wndMgr . GetScreenHeight ( ) + 1 )
for OnDoneEvent in QuestCurtain . OnDoneEventList :
apply ( OnDoneEvent , ( self , ) )
QuestCurtain . OnDoneEventList = [ ]
def OnUpdate ( self ) :
dt = time . clock ( ) - self . lastclock
if self . CurtainMode > 0 :
self . TopBar . SetPosition ( 0 , int ( self . TopBar . GetGlobalPosition ( ) [ 1 ] + dt * self . CURTAIN_SPEED ) )
self . BottomBar . SetPosition ( 0 , int ( self . BottomBar . GetGlobalPosition ( ) [ 1 ] - dt * self . CURTAIN_SPEED ) )
if self . TopBar . GetGlobalPosition ( ) [ 1 ] > 0 :
self . TopBar . SetPosition ( 0 , 0 )
self . BottomBar . SetPosition ( 0 , wndMgr . GetScreenHeight ( ) - self . BarHeight )
self . CurtainMode = 0
elif self . CurtainMode < 0 :
self . TopBar . SetPosition ( 0 , int ( self . TopBar . GetGlobalPosition ( ) [ 1 ] - dt * self . CURTAIN_SPEED ) )
self . BottomBar . SetPosition ( 0 , int ( self . BottomBar . GetGlobalPosition ( ) [ 1 ] + dt * self . CURTAIN_SPEED ) )
if self . TopBar . GetGlobalPosition ( ) [ 1 ] < - self . BarHeight :
self . TopBar . SetPosition ( 0 , - self . BarHeight - 1 )
self . BottomBar . SetPosition ( 0 , wndMgr . GetScreenHeight ( ) + 1 )
self . Close ( )
self . lastclock = time . clock ( )
class EventCurtain ( ui . Bar ) :
COLOR_WHITE = 0.0
COLOR_BLACK = 1.0
DEFAULT_FADE_SPEED = 0.035
STATE_WAIT = 0
STATE_OUT = 1
STATE_IN = 2
def __init__ ( self , index ) :
print " NEW EVENT CURTAIN ---------------------------------------------------------------------------- "
ui . Bar . __init__ ( self , " CURTAIN " )
self . SetWindowName ( " EventCurtain " )
self . AddFlag ( " float " )
self . SetSize ( wndMgr . GetScreenWidth ( ) , wndMgr . GetScreenHeight ( ) )
self . Hide ( )
self . fadeColor = 1.0
self . curAlpha = 0.0
2023-07-21 21:55:58 +03:00
self . FadeInFlag = False
2022-11-20 23:11:54 +02:00
self . state = self . STATE_WAIT
self . speed = 1.0
self . eventIndex = index
def __del__ ( self ) :
print " ---------------------------------------------------------------------------- DELETE EVENT CURTAIN "
ui . Bar . __del__ ( self )
def SetAlpha ( self , alpha ) :
color = grp . GenerateColor ( self . fadeColor , self . fadeColor , self . fadeColor , alpha )
self . SetColor ( color )
def FadeOut ( self , speed ) :
self . curAlpha = 0.0
self . __StartFade ( self . STATE_OUT , 0.0 , speed )
def FadeIn ( self , speed ) :
self . curAlpha = 1.0
self . __StartFade ( self . STATE_IN , 0.0 , speed )
def WhiteOut ( self , speed ) :
self . curAlpha = 0.0
self . __StartFade ( self . STATE_OUT , 1.0 , speed )
def WhiteIn ( self , speed ) :
self . curAlpha = 1.0
self . __StartFade ( self . STATE_IN , 1.0 , speed )
def __StartFade ( self , state , color , speed ) :
self . state = state
self . fadeColor = color
self . Show ( )
self . speed = self . DEFAULT_FADE_SPEED
if 0 != speed :
self . speed = speed
def __EndFade ( self ) :
event . EndEventProcess ( self . eventIndex )
def OnUpdate ( self ) :
if self . STATE_OUT == self . state :
self . curAlpha + = self . speed
if self . curAlpha > = 1.0 :
self . state = self . STATE_WAIT
self . curAlpha = 1.0
self . __EndFade ( )
elif self . STATE_IN == self . state :
self . curAlpha - = self . speed
if self . curAlpha < = 0.0 :
self . state = self . STATE_WAIT
self . curAlpha = 0.0
self . __EndFade ( )
self . Hide ( )
self . SetAlpha ( self . curAlpha )
class BarButton ( ui . Button ) :
ColorUp = 0x40999999
ColorDown = 0x40aaaacc
ColorOver = 0x40ddddff
UP = 0
DOWN = 1
OVER = 2
def __init__ ( self , layer = " UI " ,
aColorUp = ColorUp ,
aColorDown = ColorDown ,
aColorOver = ColorOver ) :
ui . Button . __init__ ( self , layer )
self . state = self . UP
self . colortable = aColorUp , aColorDown , aColorOver
def OnRender ( self ) :
x , y = self . GetGlobalPosition ( )
grp . SetColor ( self . colortable [ self . state ] )
grp . RenderBar ( x , y , self . GetWidth ( ) , self . GetHeight ( ) )
def CallEvent ( self ) :
self . state = self . UP
ui . Button . CallEvent ( self )
def DownEvent ( self ) :
self . state = self . DOWN
def ShowToolTip ( self ) :
self . state = self . OVER
def HideToolTip ( self ) :
self . state = self . UP
class DescriptionWindow ( ui . Window ) :
def __init__ ( self , idx ) :
ui . Window . __init__ ( self , " TOP_MOST " )
self . descIndex = idx
def __del__ ( self ) :
ui . Window . __del__ ( self )
def OnRender ( self ) :
event . RenderEventSet ( self . descIndex )
class QuestDialog ( ui . ScriptWindow ) :
TITLE_STATE_NONE = 0
TITLE_STATE_APPEAR = 1
TITLE_STATE_SHOW = 2
TITLE_STATE_DISAPPEAR = 3
SKIN_NONE = 0
SKIN_CINEMA = 5
QUEST_BUTTON_MAX_NUM = 8
def __init__ ( self , skin , idx ) :
ui . ScriptWindow . __init__ ( self )
self . SetWindowName ( " quest dialog " )
self . focusIndex = 0
self . board = None
self . sx = 0
self . sy = 0
self . skin = skin
if skin == 3 :
event . SetRestrictedCount ( idx , 36 )
else :
2023-07-21 21:55:58 +03:00
event . SetRestrictedCount ( idx , 60 )
2022-11-20 23:11:54 +02:00
QuestCurtain . BarHeight = ( wndMgr . GetScreenHeight ( ) - wndMgr . GetScreenWidth ( ) * 9 / 16 ) / 2
if QuestCurtain . BarHeight < 0 :
QuestCurtain . BarHeight = 50
if not ( ' QuestCurtain ' in QuestDialog . __dict__ ) :
QuestDialog . QuestCurtain = QuestCurtain ( )
QuestDialog . QuestCurtain . Show ( )
QuestDialog . QuestCurtain . CurtainMode = 1
self . nextCurtainMode = 0
if self . skin :
QuestDialog . QuestCurtain . CurtainMode = 1
self . nextCurtainMode = 0
self . LoadDialog ( self . skin )
else :
QuestDialog . QuestCurtain . CurtainMode = - 1
self . nextCurtainMode = - 1
self . descIndex = idx
self . descWindow = DescriptionWindow ( idx )
self . descWindow . Show ( )
self . eventCurtain = EventCurtain ( idx )
event . SetEventHandler ( idx , self )
self . OnCloseEvent = None
self . btnAnswer = None
self . btnNext = None
self . imgLeft = None
self . imgTop = None
self . imgBackground = None
self . imgTitle = None
self . titleState = self . TITLE_STATE_NONE
self . titleShowTime = 0
self . images = [ ]
self . prevbutton = None
self . nextbutton = None
# QUEST_INPUT
2023-07-21 21:55:58 +03:00
self . needInputString = False
2022-11-20 23:11:54 +02:00
self . editSlot = None
self . editLine = None
# END_OF_QUEST_INPUT
def __del__ ( self ) :
ui . ScriptWindow . __del__ ( self )
def LoadDialog ( self , skin ) :
try :
PythonScriptLoader = ui . PythonScriptLoader ( )
PythonScriptLoader . LoadScriptFile ( self , " uiscript/questdialog.py " )
except RuntimeError :
dbg . TraceError ( " QuestDialog.LoadDialog " )
try :
self . board = self . GetChild ( ' board ' )
except RuntimeError :
dbg . TraceError ( " QuestDialog.BindObject " )
self . SetCenterPosition ( )
if self . SKIN_CINEMA == skin :
self . board . Hide ( )
# QUEST_CANCEL
def OnCancel ( self ) :
self . nextCurtainMode = - 1
self . CloseSelf ( )
# END_OF_QUEST_CANCEL
def CloseSelf ( self ) :
QuestDialog . QuestCurtain . CurtainMode = self . nextCurtainMode
self . btnNext = None
self . descWindow = None
self . btnAnswer = None
self . Destroy ( )
if self . descIndex :
event . ClearEventSet ( self . descIndex )
self . descIndex = None
self . focusIndex = 0
2023-07-21 21:55:58 +03:00
2022-11-20 23:11:54 +02:00
def Destroy ( self ) :
self . ClearDictionary ( )
if self . OnCloseEvent :
self . OnCloseEvent ( )
self . OnCloseEvent = None
# QUEST_INPUT
if self . needInputString :
if self . editLine :
text = self . editLine . GetText ( )
net . SendQuestInputStringPacket ( text )
# END_OF_QUEST_INPUT
self . imgTitle = None
self . images = None
self . eventCurtain = None
self . board = None
def OnUpdate ( self ) :
if self . skin == self . SKIN_CINEMA :
event . UpdateEventSet ( self . descIndex , 50 , - ( wndMgr . GetScreenHeight ( ) - 44 ) )
# AUTO_RESIZE_BOARD
elif self . skin == 3 :
if self . board :
event . UpdateEventSet ( self . descIndex , self . board . GetGlobalPosition ( ) [ 0 ] + 20 + self . sx , - self . board . GetGlobalPosition ( ) [ 1 ] - 20 - self . sy )
event . SetEventSetWidth ( self . descIndex , self . board . GetWidth ( ) - 40 )
elif self . skin :
if self . board :
event . UpdateEventSet ( self . descIndex , self . board . GetGlobalPosition ( ) [ 0 ] + 20 , - self . board . GetGlobalPosition ( ) [ 1 ] - 20 )
event . SetEventSetWidth ( self . descIndex , self . board . GetWidth ( ) - 40 )
# END_OF_AUTO_RESIZE_BOARD
else :
event . UpdateEventSet ( self . descIndex , 0 , 0 )
if self . TITLE_STATE_NONE != self . titleState :
curTime = app . GetTime ( )
elapsedTime = app . GetTime ( ) - self . titleShowTime
if self . TITLE_STATE_APPEAR == self . titleState :
self . imgTitle . SetAlpha ( elapsedTime * 2 )
if elapsedTime > 0.5 :
self . titleState = self . TITLE_STATE_SHOW
self . titleShowTime = curTime
elif self . TITLE_STATE_SHOW == self . titleState :
if elapsedTime > 1.0 :
self . titleState = self . TITLE_STATE_DISAPPEAR
self . titleShowTime = curTime
elif self . TITLE_STATE_DISAPPEAR == self . titleState :
self . imgTitle . SetAlpha ( 1.0 - elapsedTime * 2 )
if elapsedTime > 0.5 :
self . titleState = self . TITLE_STATE_NONE
self . titleShowTime = curTime
## Set Variables
def AddOnCloseEvent ( self , f ) :
if self . OnCloseEvent :
self . OnCloseEvent = lambda z = [ self . OnCloseEvent , f ] : map ( apply , z )
else :
self . OnCloseEvent = f
def AddOnDoneEvent ( self , f ) :
QuestCurtain . OnDoneEventList . append ( f )
def SetOnCloseEvent ( self , f ) :
self . OnCloseEvent = f
def SetEventSetPosition ( self , x , y ) :
self . sx = x
self . sy = y
def AdjustEventSetPosition ( self , x , y ) :
self . sx + = x
self . sy + = y
## Event
# QUEST_CANCEL
def MakeNextButton ( self , button_type ) :
if self . SKIN_NONE == self . skin :
return
yPos = event . GetEventSetLocalYPosition ( self . descIndex )
b = BarButton ( )
b . SetParent ( self . board )
2023-07-21 21:55:58 +03:00
2022-11-20 23:11:54 +02:00
b . SetSize ( 100 , 26 )
b . SetPosition ( self . sx + self . board . GetWidth ( ) / 2 - 50 , self . sy + yPos )
self . nextButtonType = button_type ;
import localeInfo
if event . BUTTON_TYPE_CANCEL == button_type :
b . SetEvent ( lambda s = self : event . SelectAnswer ( s . descIndex , 254 ) or s . OnCancel ( ) )
b . SetText ( localeInfo . UI_CANCEL )
elif event . BUTTON_TYPE_DONE == button_type :
b . SetEvent ( lambda s = self : s . CloseSelf ( ) )
b . SetText ( localeInfo . UI_OK )
elif event . BUTTON_TYPE_NEXT == button_type :
b . SetEvent ( lambda s = self : event . SelectAnswer ( s . descIndex , 254 ) or s . CloseSelf ( ) )
b . SetText ( localeInfo . UI_NEXT )
b . Show ( )
b . SetTextColor ( 0xffffffff )
self . btnNext = b
2023-07-21 21:55:58 +03:00
2022-11-20 23:11:54 +02:00
# END_OF_QUEST_CANCEL
def MakeQuestion ( self , n ) : # n<> <6E> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> Ʈ <20> <> ȭâ<C8AD> <C3A2> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ư<EFBFBD> <C6B0> "<22> ݱ<EFBFBD> "<22> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ü <20> <> <EFBFBD> <EFBFBD> Ʈ <20> <> ư <20> <> <EFBFBD> <EFBFBD> . by <20> <> <EFBFBD> <EFBFBD> ȣ
global entire_questbutton_number
global entire_questpage_number
global cur_questpage_number
entire_questpage_number = ( ( n - 2 ) / 7 ) + 1
entire_questbutton_number = n
if not self . board :
return
2023-07-21 21:55:58 +03:00
self . btnAnswer = [ self . MakeEachButton ( i ) for i in xrange ( n ) ]
2022-11-20 23:11:54 +02:00
import localeInfo
2023-07-21 21:55:58 +03:00
self . prevbutton = self . MakeNextPrevPageButton ( )
2022-11-20 23:11:54 +02:00
self . prevbutton . SetPosition ( self . sx + self . board . GetWidth ( ) / 2 - 164 , self . board . GetHeight ( ) / 2 - 16 )
self . prevbutton . SetText ( localeInfo . UI_PREVPAGE )
2023-07-21 21:55:58 +03:00
self . prevbutton . SetEvent ( self . PrevQuestPageEvent , 1 , n )
2022-11-20 23:11:54 +02:00
2023-07-21 21:55:58 +03:00
self . nextbutton = self . MakeNextPrevPageButton ( )
2022-11-20 23:11:54 +02:00
self . nextbutton . SetPosition ( self . sx + self . board . GetWidth ( ) / 2 + 112 , self . board . GetHeight ( ) / 2 - 16 )
self . nextbutton . SetText ( localeInfo . UI_NEXTPAGE )
2023-07-21 21:55:58 +03:00
self . nextbutton . SetEvent ( self . NextQuestPageEvent , 1 , n )
2022-11-20 23:11:54 +02:00
if cur_questpage_number != 1 :
cur_questpage_number = 1
2023-07-21 21:55:58 +03:00
def MakeEachButton ( self , i ) :
if self . skin == 3 :
button = BarButton ( " TOP_MOST " , 0x50000000 , 0x50404040 , 0x50606060 )
button . SetParent ( self . board )
button . SetSize ( 106 , 26 )
button . SetPosition ( self . sx + self . board . GetWidth ( ) / 2 + ( ( i * 2 ) - 1 ) * 56 - 56 , self . sy + ( event . GetLineCount ( self . descIndex ) ) * 16 + 20 + 5 )
button . SetText ( " a " )
button . SetTextColor ( 0xff000000 )
else :
i = i % 8
button = BarButton ( " TOP_MOST " )
button . SetParent ( self . board )
button . SetSize ( 200 , 26 )
button . SetPosition ( self . sx + self . board . GetWidth ( ) / 2 - 100 , self . sy + ( event . GetLineCount ( self . descIndex ) + i * 2 ) * 16 + 20 + 5 )
button . SetText ( " a " )
button . SetTextColor ( 0xffffffff )
return button
def MakeNextPrevPageButton ( self ) :
button = BarButton ( " TOP_MOST " )
button . SetParent ( self . board )
button . SetSize ( 52 , 26 )
button . SetText ( " a " )
button . SetTextColor ( 0xffffffff )
return button
def RefreshQuestPage ( self , n ) :
global cur_questpage_number
global entire_questpage_number
num = 0
Showing_button_inx = ( cur_questpage_number - 1 ) * self . QUEST_BUTTON_MAX_NUM
while num < n :
if num > = Showing_button_inx and num < Showing_button_inx + self . QUEST_BUTTON_MAX_NUM :
self . btnAnswer [ num ] . Show ( )
else :
self . btnAnswer [ num ] . Hide ( )
num = num + 1
if cur_questpage_number == 1 :
self . prevbutton . Hide ( )
self . nextbutton . Show ( )
elif cur_questpage_number == entire_questpage_number :
self . prevbutton . Show ( )
self . nextbutton . Hide ( )
else :
self . prevbutton . Show ( )
self . nextbutton . Show ( )
def NextQuestPageEvent ( self , one , n ) :
global cur_questpage_number
cur_questpage_number = cur_questpage_number + one
self . RefreshQuestPage ( n )
def PrevQuestPageEvent ( self , one , n ) :
global cur_questpage_number
cur_questpage_number = cur_questpage_number - one
self . RefreshQuestPage ( n )
def ClickAnswerEvent ( self , ai ) :
event . SelectAnswer ( self . descIndex , ai )
self . nextbutton = None
self . prevbutton = None
self . CloseSelf ( )
2022-11-20 23:11:54 +02:00
def AppendQuestion ( self , name , idx ) : # idx<64> <78> 0<> <30> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> . PythonEventManager.cpp line 881 <20> <> <EFBFBD> <EFBFBD> . by <20> <> <EFBFBD> <EFBFBD> ȣ
if not self . btnAnswer :
return
self . btnAnswer [ idx ] . SetText ( name )
x , y = self . btnAnswer [ idx ] . GetGlobalPosition ( )
2023-07-21 21:55:58 +03:00
self . btnAnswer [ idx ] . SetEvent ( self . ClickAnswerEvent , idx )
2022-11-20 23:11:54 +02:00
global entire_questbutton_number
Showing_button_idx = ( cur_questpage_number - 1 ) * self . QUEST_BUTTON_MAX_NUM
if Showing_button_idx < = idx and idx < Showing_button_idx + self . QUEST_BUTTON_MAX_NUM :
self . btnAnswer [ idx ] . Show ( )
else :
self . btnAnswer [ idx ] . Hide ( )
if entire_questbutton_number > = self . QUEST_BUTTON_MAX_NUM :
self . nextbutton . Show ( )
def FadeOut ( self , speed ) :
self . eventCurtain . FadeOut ( speed )
def FadeIn ( self , speed ) :
self . eventCurtain . FadeIn ( speed )
def WhiteOut ( self , speed ) :
self . eventCurtain . WhiteOut ( speed )
def WhiteIn ( self , speed ) :
self . eventCurtain . WhiteIn ( speed )
def DoneEvent ( self ) :
self . nextCurtainMode = - 1
if self . SKIN_NONE == self . skin or self . SKIN_CINEMA == self . skin :
self . CloseSelf ( )
def __GetQuestImageFileName ( self , filename ) :
if len ( filename ) > 1 :
if filename [ 1 ] != ' : ' :
filename = QUEST_BOARD_IMAGE_DIR + filename
return filename
# QUEST_INPUT
def OnKeyDown ( self , key ) :
if self . btnAnswer == None :
## <20> <> <EFBFBD> ù<EFBFBD> <C3B9> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> '<27> <> <EFBFBD> <EFBFBD> ', 'Ȯ<> <C8AE> ' <20> <> <EFBFBD> <EFBFBD> <20> Ϲ <EFBFBD> <20> <> ư<EFBFBD> <C6B0> <20> ִ<EFBFBD> <20> <> <EFBFBD> 쿡 <20> <> <EFBFBD> <EFBFBD> ó<> <C3B3>
if None != self . btnNext :
if app . DIK_RETURN == key :
self . OnPressEscapeKey ( )
if app . DIK_UP == key or app . DIK_DOWN == key :
self . btnNext . ShowToolTip ( )
2023-07-21 21:55:58 +03:00
return True
2022-11-20 23:11:54 +02:00
focusIndex = self . focusIndex ;
lastFocusIndex = focusIndex ;
#print "QuestDialog key down - focus, last : ", focusIndex, lastFocusIndex
answerCount = len ( self . btnAnswer )
if app . DIK_DOWN == key :
focusIndex + = 1
if app . DIK_UP == key :
focusIndex - = 1
if focusIndex < 0 :
focusIndex = answerCount - 1
if focusIndex > = answerCount :
focusIndex = 0
self . focusIndex = focusIndex ;
focusBtn = self . btnAnswer [ focusIndex ]
lastFocusBtn = self . btnAnswer [ lastFocusIndex ]
if focusIndex != lastFocusIndex :
focusBtn . ShowToolTip ( )
lastFocusBtn . HideToolTip ( )
if app . DIK_RETURN == key :
focusBtn . CallEvent ( )
2023-07-21 21:55:58 +03:00
return True
2022-11-20 23:11:54 +02:00
def OnPressEscapeKey ( self ) :
# ESCŰ<43> <C5B0> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> "<22> <> <EFBFBD> <EFBFBD> " <20> <> ư<EFBFBD> <C6B0> <20> <> <EFBFBD> <EFBFBD> <20> Ͱ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<> <C8BF> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> .
if None != self . btnNext :
2023-07-21 21:55:58 +03:00
##<23> <> <EFBFBD> <EFBFBD> Ʈ<EFBFBD> <C6AE> <EFBFBD> ڵ<EFBFBD> <DAB5> <EFBFBD> <20> <> <EFBFBD> δ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ESC<53> <43> ư
2022-11-20 23:11:54 +02:00
if event . BUTTON_TYPE_CANCEL == self . nextButtonType :
event . SelectAnswer ( self . descIndex , 254 )
2023-07-21 21:55:58 +03:00
self . CloseSelf ( )
## <20> ƹ<EFBFBD> <20> ۾<EFBFBD> <DBBE> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2022-11-20 23:11:54 +02:00
elif event . BUTTON_TYPE_DONE == self . nextButtonType :
self . CloseSelf ( )
2023-07-21 21:55:58 +03:00
## <20> <> <EFBFBD> ͳ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȭ<EFBFBD> <C8AD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> Ѿ<D1BE> <EEB0A1> <EFBFBD> <EFBFBD> <20> Ұ<EFBFBD> <D2B0> <EFBFBD>
2022-11-20 23:11:54 +02:00
elif event . BUTTON_TYPE_NEXT == self . nextButtonType :
event . SelectAnswer ( self . descIndex , 254 )
self . CloseSelf ( )
else :
2023-07-21 21:55:58 +03:00
## <20> <> <EFBFBD> ߿<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ų<EFBFBD> , ESC<53> <43> ư<EFBFBD> <C6B0> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
event . SelectAnswer ( self . descIndex , entire_questbutton_number - 1 )
2022-11-20 23:11:54 +02:00
self . nextbutton = None
self . prevbutton = None
2023-07-21 21:55:58 +03:00
self . OnCancel ( )
return True
2022-11-20 23:11:54 +02:00
def OnIMEReturn ( self ) :
if self . needInputString :
self . CloseSelf ( )
2023-07-21 21:55:58 +03:00
return True
2022-11-20 23:11:54 +02:00
def OnIMEUpdate ( self ) :
if not self . needInputString :
return
if not self . editLine :
return
self . editLine . OnIMEUpdate ( )
def OnInput ( self ) :
2023-07-21 21:55:58 +03:00
self . needInputString = True
2022-11-20 23:11:54 +02:00
event . AddEventSetLocalYPosition ( self . descIndex , 5 + 10 )
yPos = event . GetEventSetLocalYPosition ( self . descIndex )
self . editSlot = ui . SlotBar ( )
self . editSlot . SetSize ( 200 , 18 )
self . editSlot . SetPosition ( 0 , yPos )
self . editSlot . SetParent ( self . board )
self . editSlot . SetWindowHorizontalAlignCenter ( )
self . editSlot . Show ( )
self . editLine = ui . EditLine ( )
self . editLine . SetParent ( self . editSlot )
self . editLine . SetPosition ( 3 , 3 )
self . editLine . SetSize ( 200 , 17 )
self . editLine . SetMax ( 30 )
self . editLine . SetFocus ( )
self . editLine . Show ( )
event . AddEventSetLocalYPosition ( self . descIndex , 25 + 10 )
self . MakeNextButton ( event . BUTTON_TYPE_DONE )
self . editLine . UpdateRect ( )
self . editSlot . UpdateRect ( )
self . board . UpdateRect ( )
# END_OF_QUEST_INPUT
def OnImage ( self , x , y , filename , desc = " " ) :
filename = self . __GetQuestImageFileName ( filename )
# IMAGE_EXCEPTION_BUG_FIX
try :
img = ui . MakeImageBox ( self . board , filename , x , y )
self . images . append ( img )
except RuntimeError :
pass
# END_OF_IMAGE_EXCEPTION_BUG_FIX
# QUEST_IMAGE
def OnInsertItemIcon ( self , type , idx , title , desc , index = 0 , total = 1 ) :
if " item " != type :
return
import item
item . SelectItem ( idx )
filename = item . GetIconImageFileName ( )
underTitle = title
if not title and not desc :
title = item . GetItemName ( )
desc = item . GetItemDescription ( )
tempDesc = desc
desc = " "
import grpText
lineCount = grpText . GetSplitingTextLineCount ( tempDesc , 25 )
for i in xrange ( lineCount ) :
desc + = grpText . GetSplitingTextLine ( tempDesc , 25 , i ) + " / "
desc = desc [ : - 1 ]
self . OnInsertImage ( filename , underTitle , title , desc , index , total )
def OnInsertImage ( self , filename , underTitle , title , desc , index = 0 , total = 1 ) :
if index == 0 :
event . AddEventSetLocalYPosition ( self . descIndex , 24 )
y = event . GetEventSetLocalYPosition ( self . descIndex )
xBoard , yBoard = self . board . GetGlobalPosition ( )
try :
img = ToolTipImageBox ( )
img . SetParent ( self . board )
img . LoadImage ( filename )
pos_x = ( self . board . GetWidth ( ) * ( index + 1 ) / ( total + 1 ) ) - ( img . GetWidth ( ) / 2 )
img . SetPosition ( pos_x , y )
#img.SetWindowHorizontalAlignCenter()
img . DestroyToolTip ( )
if title and desc :
img . CreateToolTip ( self . board , title , desc , 0 , yBoard + y + img . GetHeight ( ) )
img . Show ( )
self . images . append ( img )
except RuntimeError :
pass
2023-07-21 21:55:58 +03:00
event . AddEventSetLocalYPosition ( self . descIndex , img . GetHeight ( ) - 20 )
2022-11-20 23:11:54 +02:00
if underTitle :
event . AddEventSetLocalYPosition ( self . descIndex , 3 )
event . InsertTextInline ( self . descIndex , underTitle , ( self . board . GetWidth ( ) * ( index + 1 ) / ( total + 1 ) ) )
if index != total - 1 :
event . AddEventSetLocalYPosition ( self . descIndex , - ( 3 + 16 ) )
else :
if index == total - 1 :
2023-07-21 21:55:58 +03:00
event . AddEventSetLocalYPosition ( self . descIndex , 4 )
2022-11-20 23:11:54 +02:00
if index != total - 1 :
2023-07-21 21:55:58 +03:00
event . AddEventSetLocalYPosition ( self . descIndex , - ( img . GetHeight ( ) - 20 ) )
2022-11-20 23:11:54 +02:00
# END_OF_QUEST_IMAGE
def OnSize ( self , width , height ) :
self . board . SetSize ( width , height )
def OnTitleImage ( self , filename ) :
img = ui . ImageBox ( " TOP_MOST " )
try :
img . SetWindowHorizontalAlignCenter ( )
img . LoadImage ( filename )
img . SetPosition ( 0 , wndMgr . GetScreenHeight ( ) - ( 75 / 2 ) - ( 32 / 2 ) )
img . SetAlpha ( 0.0 )
img . Show ( )
except RuntimeError :
dbg . TraceError ( " QuestDialog.OnTitleImage( %s ) " % filename )
img . Hide ( )
self . imgTitle = img
self . titleState = self . TITLE_STATE_APPEAR
self . titleShowTime = app . GetTime ( )
def OnLeftImage ( self , imgfile ) :
imgfile = self . __GetQuestImageFileName ( imgfile )
if not self . imgLeft :
self . imgLeft = ui . ExpandedImageBox ( " TOP_MOST " )
self . imgLeft . SetParent ( self )
self . imgLeft . SetPosition ( 0 , 0 )
bd = self . board
bx , by = bd . GetLocalPosition ( )
bd . SetPosition ( 160 , by )
if self . imgTop :
tx , ty = self . imgTop . GetLocalPosition ( )
self . imgTop . SetPosition ( 160 , ty )
try :
self . imgLeft . LoadImage ( imgfile )
self . imgLeft . SetSize ( 400 , 450 )
self . imgLeft . SetOrigin ( self . imgLeft . GetWidth ( ) / 2 , self . imgLeft . GetHeight ( ) / 2 )
self . imgLeft . Show ( )
except RuntimeError :
import dbg
dbg . TraceError ( " QuestDialog.OnLeftImage( %s ) " % imgfile )
self . imgLeft . Hide ( )
def OnTopImage ( self , imgfile ) :
imgfile = self . __GetQuestImageFileName ( imgfile )
bd = self . board
bx , by = bd . GetLocalPosition ( )
if not self . imgTop :
self . imgTop = ui . ExpandedImageBox ( " TOP_MOST " )
self . imgTop . SetParent ( self )
bd . SetPosition ( bx , 190 )
self . imgTop . SetPosition ( bx , 10 )
try :
self . imgTop . LoadImage ( imgfile )
h = self . imgTop . GetHeight ( )
if h > 170 :
# need adjust board size
bd . SetPosition ( bx , 20 + h )
bd . SetSize ( 350 , 420 - h )
self . imgTop . SetSize ( 350 , h )
else :
self . imgTop . SetSize ( 350 , 170 )
bd . SetPosition ( bx , 190 )
bd . SetSize ( 350 , 250 )
self . imgTop . SetOrigin ( self . imgTop . GetWidth ( ) / 2 , self . imgTop . GetHeight ( ) / 2 )
self . imgTop . Show ( )
except RuntimeError :
dbg . TraceError ( " QuestDialog.OnTopImage( %s ) " % imgfile )
self . imgTop . Hide ( )
def OnBackgroundImage ( self , imgfile ) :
imgfile = self . __GetQuestImageFileName ( imgfile )
c = self . board
w = c . GetWidth ( )
h = c . GetHeight ( )
px , py = c . GetLocalPosition ( )
moved = 0
if not self . imgBackground :
self . imgBackground = ui . ExpandedImageBox ( " TOP_MOST " )
self . imgBackground . SetParent ( c )
self . imgBackground . SetPosition ( 0 , 0 )
self . imgBackground . LoadImage ( imgfile )
iw = self . imgBackground . GetWidth ( )
ih = self . imgBackground . GetHeight ( )
if self . skin == 3 :
iw = 256
ih = 333
self . imgBackground . SetSize ( iw , ih )
if w < iw :
px - = ( iw - w ) / 2
c . SetPosition ( px , py )
w = iw
if h < ih :
py - = ( ih - h ) / 2
c . SetPosition ( px , py )
h = ih
if self . skin == 3 :
w = 256
h = 333
self . sx = 0
self . sy = 100
c . SetSize ( w , h )
c . HideInternal ( )
c . SetWindowHorizontalAlignCenter ( )
c . SetWindowVerticalAlignCenter ( )
c . SetPosition ( 0 , 0 )
if self . skin == 3 :
c . SetPosition ( - 190 , 0 )
self . imgBackground . SetWindowHorizontalAlignCenter ( )
self . imgBackground . SetWindowVerticalAlignCenter ( )
self . imgBackground . SetPosition ( 0 , 0 )
self . imgBackground . Show ( )