GUI implementation of alpha clone switching

This commit is contained in:
blitzman
2016-12-11 22:51:48 -05:00
parent 90c1033437
commit a954759012
5 changed files with 65 additions and 5 deletions

View File

@@ -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 = {}

View File

@@ -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,

View File

@@ -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

View File

@@ -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

View File

@@ -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