Add feature queries, dungeon information and event calendar UI
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
// PORT query entry points: enemy target, and a pinned touch inventory tooltip.
|
||||
static const char c_szWikiEntryScript[] = R"PY(# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
import chr
|
||||
import player
|
||||
import uitarget
|
||||
import uiToolTip
|
||||
import uiInventory
|
||||
import weakref
|
||||
import wndMgr
|
||||
from mt_biolog import Action
|
||||
import mt_wiki
|
||||
_pinned=None
|
||||
|
||||
|
||||
def OpenMob(vid):
|
||||
race=chr.GetVirtualNumber(vid)
|
||||
wiki=mt_wiki.g_window
|
||||
if not wiki:return
|
||||
wiki.Open()
|
||||
row=wiki.catalogue.mobs.get(race) if wiki.catalogue else None
|
||||
if row:
|
||||
wiki.Select('mobs',row);wiki.QueryRemote('mob',race)
|
||||
|
||||
|
||||
_target=uitarget.TargetBoard.SetTargetVID
|
||||
_enemy=uitarget.TargetBoard.SetEnemyVID
|
||||
_hp=uitarget.TargetBoard.SetHP
|
||||
|
||||
|
||||
def Target(self,vid):
|
||||
_target(self,vid)
|
||||
if hasattr(self,'wikiDropButton'):self.wikiDropButton.Hide()
|
||||
|
||||
|
||||
def Enemy(self,vid):
|
||||
_enemy(self,vid)
|
||||
if not hasattr(self,'wikiDropButton'):
|
||||
owner=weakref.proxy(self)
|
||||
self.wikiDropButton=Action(self,0,0,72,'掉落',lambda:OpenMob(owner.GetTargetVID()))
|
||||
PositionTarget(self)
|
||||
self.wikiDropButton.Show()
|
||||
|
||||
|
||||
def PositionTarget(self):
|
||||
if getattr(self,'wikiDropButton',None):
|
||||
x,y=self.GetGlobalPosition()
|
||||
self.wikiDropButton.SetPosition(min(self.GetWidth()+4,max(0,wndMgr.GetScreenWidth()-x-76)),0)
|
||||
|
||||
|
||||
def HP(self,value):
|
||||
_hp(self,value);PositionTarget(self)
|
||||
|
||||
|
||||
_clear=uiToolTip.ItemToolTip.ClearToolTip
|
||||
_inventory=uiToolTip.ItemToolTip.SetInventoryItem
|
||||
_out=uiInventory.InventoryWindow.OverOutItem
|
||||
|
||||
|
||||
def Clear(self):
|
||||
if getattr(self,'wikiItemButton',None):
|
||||
self.wikiItemButton.event=None;self.wikiItemButton.Hide();self.wikiItemButton=None
|
||||
if getattr(self,'featurePinned',False):self.SetFollow(True)
|
||||
self.featurePinned=False
|
||||
_clear(self)
|
||||
|
||||
|
||||
def Inventory(self,slot,window_type=player.INVENTORY):
|
||||
global _pinned
|
||||
_inventory(self,slot,window_type)
|
||||
mobile=sys.modules.get('mt_mobile_inventory')
|
||||
if not mobile or not mobile.tap:return
|
||||
vnum=player.GetItemIndex(window_type,slot)
|
||||
if not vnum:return
|
||||
owner=weakref.proxy(self)
|
||||
def open_item():
|
||||
if player.GetItemIndex(window_type,slot)!=vnum:return
|
||||
owner.HideToolTip();mt_wiki.OpenItem(vnum)
|
||||
wiki=mt_wiki.g_window
|
||||
if wiki and wiki.catalogue:
|
||||
row=wiki.catalogue.FindItem(vnum)
|
||||
if row and row['kind'] in ('ITEM_GIFTBOX','ITEM_TREASURE_BOX'):wiki.QueryRemote('chest',vnum)
|
||||
y=self.toolTipHeight
|
||||
self.wikiItemButton=Action(self,8,y,max(80,self.GetWidth()-16),'百科 / 宝箱预览',open_item)
|
||||
self.AppendSpace(52);self.SetFollow(False);self.featurePinned=True;_pinned=weakref.proxy(self)
|
||||
x,y=self.GetGlobalPosition()
|
||||
self.SetPosition(max(0,min(x,wndMgr.GetScreenWidth()-self.GetWidth())),max(0,min(y,wndMgr.GetScreenHeight()-self.GetHeight())))
|
||||
|
||||
|
||||
def Out(self):
|
||||
if self.tooltipItem and getattr(self.tooltipItem,'featurePinned',False):return
|
||||
_out(self)
|
||||
|
||||
|
||||
_mobile=sys.modules.get('mt_mobile_inventory')
|
||||
if _mobile:
|
||||
_drag=_mobile.SetDrag
|
||||
def Drag(active):
|
||||
if active and _pinned is not None:
|
||||
try:_pinned.HideToolTip()
|
||||
except ReferenceError:pass
|
||||
_drag(active)
|
||||
_mobile.SetDrag=Drag
|
||||
|
||||
uitarget.TargetBoard.SetTargetVID=Target
|
||||
uitarget.TargetBoard.SetEnemyVID=Enemy
|
||||
uitarget.TargetBoard.SetHP=HP
|
||||
uiToolTip.ItemToolTip.ClearToolTip=Clear
|
||||
uiToolTip.ItemToolTip.SetInventoryItem=Inventory
|
||||
uiInventory.InventoryWindow.OverOutItem=Out
|
||||
)PY";
|
||||
Reference in New Issue
Block a user