GUI implementation of alpha clone switching
This commit is contained in:
@@ -109,6 +109,12 @@ def getAlphaClone(lookfor, eager=None):
|
||||
return item
|
||||
|
||||
|
||||
def getAlphaCloneList(eager=None):
|
||||
eager = processEager(eager)
|
||||
clones = gamedata_session.query(AlphaClone).options(*eager).all()
|
||||
return clones
|
||||
|
||||
|
||||
groupNameMap = {}
|
||||
|
||||
|
||||
|
||||
@@ -33,11 +33,12 @@ characters_table = Table("characters", saveddata_meta,
|
||||
Column("defaultChar", Integer),
|
||||
Column("chars", String, nullable=True),
|
||||
Column("defaultLevel", Integer, nullable=True),
|
||||
Column("alphaClone", Integer, nullable=True),
|
||||
Column("alphaCloneID", Integer, nullable=True),
|
||||
Column("ownerID", ForeignKey("users.ID"), nullable=True))
|
||||
|
||||
mapper(Character, characters_table,
|
||||
properties={
|
||||
"_Character__alphaCloneID": characters_table.c.alphaCloneID,
|
||||
"savedName": characters_table.c.name,
|
||||
"_Character__owner": relation(
|
||||
User,
|
||||
|
||||
@@ -99,6 +99,7 @@ class Character(object):
|
||||
self.__skills = []
|
||||
self.__skillIdMap = {}
|
||||
self.dirtySkills = set()
|
||||
self.alphaClone = None
|
||||
|
||||
if initSkills:
|
||||
for item in self.getSkillList():
|
||||
@@ -115,8 +116,10 @@ class Character(object):
|
||||
self.__skillIdMap[skill.itemID] = skill
|
||||
self.dirtySkills = set()
|
||||
|
||||
if self.alphaClone:
|
||||
self.alphaClone = eos.db.getAlphaClone(self.alphaClone)
|
||||
self.alphaClone = None
|
||||
|
||||
if self.alphaCloneID:
|
||||
self.alphaClone = eos.db.getAlphaClone(self.alphaCloneID)
|
||||
|
||||
def apiUpdateCharSheet(self, skills):
|
||||
del self.__skills[:]
|
||||
@@ -144,6 +147,15 @@ class Character(object):
|
||||
def name(self, name):
|
||||
self.savedName = name
|
||||
|
||||
@property
|
||||
def alphaCloneID(self):
|
||||
return self.__alphaCloneID
|
||||
|
||||
@alphaCloneID.setter
|
||||
def alphaCloneID(self, cloneID):
|
||||
self.__alphaCloneID = cloneID
|
||||
self.alphaClone = eos.db.getAlphaClone(cloneID) if cloneID is not None else None
|
||||
|
||||
@property
|
||||
def skills(self):
|
||||
return self.__skills
|
||||
|
||||
@@ -239,10 +239,25 @@ class SkillTreeView (wx.Panel):
|
||||
|
||||
pmainSizer = wx.BoxSizer(wx.VERTICAL)
|
||||
|
||||
self.clonesChoice = wx.Choice(self, wx.ID_ANY, style=0)
|
||||
i = self.clonesChoice.Append("Omega Clone", None)
|
||||
self.clonesChoice.SetSelection(i)
|
||||
pmainSizer.Add(self.clonesChoice, 0, wx.ALL | wx.EXPAND, 5)
|
||||
|
||||
sChar = service.Character.getInstance()
|
||||
self.alphaClones = sChar.getAlphaCloneList()
|
||||
char = self.charEditor.entityEditor.getActiveEntity()
|
||||
|
||||
for clone in self.alphaClones:
|
||||
i = self.clonesChoice.Append(clone.alphaCloneName, clone.ID)
|
||||
if clone.ID == char.alphaCloneID:
|
||||
self.clonesChoice.SetSelection(i)
|
||||
|
||||
self.clonesChoice.Bind(wx.EVT_CHOICE, self.cloneChanged)
|
||||
|
||||
tree = self.skillTreeListCtrl = wx.gizmos.TreeListCtrl(self, wx.ID_ANY, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT)
|
||||
pmainSizer.Add(tree, 1, wx.EXPAND | wx.ALL, 5)
|
||||
|
||||
|
||||
self.imageList = wx.ImageList(16, 16)
|
||||
tree.SetImageList(self.imageList)
|
||||
self.skillBookImageId = self.imageList.Add(BitmapLoader.getBitmap("skill_small", "gui"))
|
||||
@@ -262,7 +277,7 @@ class SkillTreeView (wx.Panel):
|
||||
tree.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.scheduleMenu)
|
||||
|
||||
# bind the Character selection event
|
||||
self.charEditor.entityEditor.Bind(wx.EVT_CHOICE, self.populateSkillTree)
|
||||
self.charEditor.entityEditor.Bind(wx.EVT_CHOICE, self.charChanged)
|
||||
self.charEditor.Bind(GE.CHAR_LIST_UPDATED, self.populateSkillTree)
|
||||
|
||||
srcContext = "skillItem"
|
||||
@@ -295,11 +310,30 @@ class SkillTreeView (wx.Panel):
|
||||
|
||||
self.Layout()
|
||||
|
||||
def cloneChanged(self, event):
|
||||
sChar = service.Character.getInstance()
|
||||
sChar.setAlphaClone(self.charEditor.entityEditor.getActiveEntity(), event.ClientData)
|
||||
self.populateSkillTree()
|
||||
|
||||
def charChanged(self, event=None):
|
||||
char = self.charEditor.entityEditor.getActiveEntity()
|
||||
for i in range(self.clonesChoice.GetCount()):
|
||||
cloneID = self.clonesChoice.GetClientData(i)
|
||||
if char.alphaCloneID == cloneID:
|
||||
self.clonesChoice.SetSelection(i)
|
||||
|
||||
self.populateSkillTree(event)
|
||||
|
||||
def populateSkillTree(self, event=None):
|
||||
sChar = service.Character.getInstance()
|
||||
char = self.charEditor.entityEditor.getActiveEntity()
|
||||
dirtyGroups = set([skill.item.group.ID for skill in char.dirtySkills])
|
||||
|
||||
if char.name in ("All 0", "All 5"):
|
||||
self.clonesChoice.Disable()
|
||||
else:
|
||||
self.clonesChoice.Enable()
|
||||
|
||||
groups = sChar.getSkillGroups()
|
||||
imageId = self.skillBookImageId
|
||||
root = self.root
|
||||
|
||||
@@ -188,6 +188,9 @@ class Character(object):
|
||||
def all5ID(self):
|
||||
return self.all5().ID
|
||||
|
||||
def getAlphaCloneList(self):
|
||||
return eos.db.getAlphaCloneList()
|
||||
|
||||
def getCharacterList(self):
|
||||
return eos.db.getCharacterList()
|
||||
|
||||
@@ -233,6 +236,10 @@ class Character(object):
|
||||
skills.append((skill.ID, skill.name))
|
||||
return skills
|
||||
|
||||
def setAlphaClone(self, char, cloneID):
|
||||
char.alphaCloneID = cloneID
|
||||
eos.db.commit()
|
||||
|
||||
def getSkillDescription(self, itemID):
|
||||
return eos.db.getItem(itemID).description
|
||||
|
||||
|
||||
Reference in New Issue
Block a user