moved max quests acts to d2enum

This commit is contained in:
M. Sz 2020-12-04 10:43:33 +01:00
parent ed89d91ae4
commit dffa8ff865
2 changed files with 52 additions and 65 deletions

View File

@ -23,9 +23,6 @@ const (
Act5 Act5
) )
// ActsWithHalfQuestNumber is act, where is half quest number (act4)
const ActsWithHalfQuestNumber = Act4
/* I think, It should looks like that: /* I think, It should looks like that:
each quest has its own position in questStatus map each quest has its own position in questStatus map
which should come from save file. which should come from save file.

View File

@ -54,15 +54,6 @@ const (
questTab5X = 317 questTab5X = 317
) )
const (
questLogTab1 = iota
questLogTab2
questLogTab3
questLogTab4
questLogTab5
questLogNumTabs
)
func (s *QuestLog) getPositionForSocket(number int) (x, y int) { func (s *QuestLog) getPositionForSocket(number int) (x, y int) {
pos := []struct { pos := []struct {
x int x int
@ -129,7 +120,7 @@ func NewQuestLog(asset *d2asset.AssetManager,
originX: originX, originX: originX,
originY: originY, originY: originY,
act: act, act: act,
tab: [questLogNumTabs]*questLogTab{ tab: [d2enum.ActsNumber]*questLogTab{
{}, {},
{}, {},
{}, {},
@ -157,11 +148,11 @@ type QuestLog struct {
selectedTab int selectedTab int
selectedQuest int selectedQuest int
act int act int
tab [questLogNumTabs]*questLogTab tab [d2enum.ActsNumber]*questLogTab
questName *d2ui.Label questName *d2ui.Label
questDescr *d2ui.Label questDescr *d2ui.Label
quests [5]*d2ui.WidgetGroup quests [d2enum.ActsNumber]*d2ui.WidgetGroup
questStatus map[int]int questStatus map[int]int
originX int originX int
@ -243,7 +234,7 @@ func (s *QuestLog) Load() {
s.loadTabs() s.loadTabs()
for i := 0; i < 5; i++ { for i := 0; i < d2enum.ActsNumber; i++ {
s.quests[i] = s.loadQuestIconsForAct(i + 1) s.quests[i] = s.loadQuestIconsForAct(i + 1)
} }
@ -251,30 +242,24 @@ func (s *QuestLog) Load() {
} }
func (s *QuestLog) loadTabs() { func (s *QuestLog) loadTabs() {
s.tab[questLogTab1].newTab(s.uiManager, d2ui.ButtonTypeTab1, questTab1X) var buttonTypes = []struct {
s.tab[questLogTab1].invisibleButton.OnActivated(func() { s.setTab(questLogTab1) }) bt d2ui.ButtonType
s.panelGroup.AddWidget(s.tab[questLogTab1].button) x int
s.panelGroup.AddWidget(s.tab[questLogTab1].invisibleButton) }{
{d2ui.ButtonTypeTab1, questTab1X},
{d2ui.ButtonTypeTab2, questTab2X},
{d2ui.ButtonTypeTab3, questTab3X},
{d2ui.ButtonTypeTab4, questTab4X},
{d2ui.ButtonTypeTab5, questTab5X},
}
s.tab[questLogTab2].newTab(s.uiManager, d2ui.ButtonTypeTab2, questTab2X) for i := 0; i < d2enum.ActsNumber; i++ {
s.tab[questLogTab2].invisibleButton.OnActivated(func() { s.setTab(questLogTab2) }) currentValue := i
s.panelGroup.AddWidget(s.tab[questLogTab2].button) s.tab[i].newTab(s.uiManager, buttonTypes[i].bt, buttonTypes[i].x)
s.panelGroup.AddWidget(s.tab[questLogTab2].invisibleButton) s.tab[i].invisibleButton.OnActivated(func() { s.setTab(currentValue) })
s.panelGroup.AddWidget(s.tab[i].button)
s.tab[questLogTab3].newTab(s.uiManager, d2ui.ButtonTypeTab3, questTab3X) s.panelGroup.AddWidget(s.tab[i].invisibleButton)
s.tab[questLogTab3].invisibleButton.OnActivated(func() { s.setTab(questLogTab3) }) }
s.panelGroup.AddWidget(s.tab[questLogTab3].button)
s.panelGroup.AddWidget(s.tab[questLogTab3].invisibleButton)
s.tab[questLogTab4].newTab(s.uiManager, d2ui.ButtonTypeTab4, questTab4X)
s.tab[questLogTab4].invisibleButton.OnActivated(func() { s.setTab(questLogTab4) })
s.panelGroup.AddWidget(s.tab[questLogTab4].button)
s.panelGroup.AddWidget(s.tab[questLogTab4].invisibleButton)
s.tab[questLogTab5].newTab(s.uiManager, d2ui.ButtonTypeTab5, questTab5X)
s.tab[questLogTab5].invisibleButton.OnActivated(func() { s.setTab(questLogTab5) })
s.panelGroup.AddWidget(s.tab[questLogTab5].button)
s.panelGroup.AddWidget(s.tab[questLogTab5].invisibleButton)
s.setTab(s.act - 1) s.setTab(s.act - 1)
} }
@ -310,31 +295,7 @@ func (s *QuestLog) loadQuestIconsForAct(act int) *d2ui.WidgetGroup {
button.SetPosition(x+questOffsetX, y+questOffsetY) button.SetPosition(x+questOffsetX, y+questOffsetY)
buttons = append(buttons, button) buttons = append(buttons, button)
icon, err = s.uiManager.NewSprite(s.questIconsTable(act, n), d2resource.PaletteSky) icon, err = s.makeQuestIconForAct(act, n)
if err != nil {
s.Error(err.Error())
}
switch s.questStatus[s.cordsToQuestID(act, n)] {
case d2enum.QuestStatusCompleted:
err = icon.SetCurrentFrame(completedFrame)
case d2enum.QuestStatusCompleting:
// that's not complet now
err = icon.SetCurrentFrame(0)
if err != nil {
s.Error(err.Error())
}
icon.PlayForward()
icon.SetPlayLoop(false)
err = icon.SetCurrentFrame(completedFrame)
s.questStatus[s.cordsToQuestID(act, n)] = d2enum.QuestStatusCompleted
case d2enum.QuestStatusNotStarted:
err = icon.SetCurrentFrame(notStartedFrame)
default:
err = icon.SetCurrentFrame(inProgresFrame)
}
if err != nil { if err != nil {
s.Error(err.Error()) s.Error(err.Error())
} }
@ -376,6 +337,35 @@ func (s *QuestLog) loadQuestIconsForAct(act int) *d2ui.WidgetGroup {
return wg return wg
} }
func (s *QuestLog) makeQuestIconForAct(act, n int) (*d2ui.Sprite, error) {
icon, err := s.uiManager.NewSprite(s.questIconsTable(act, n), d2resource.PaletteSky)
if err != nil {
s.Error(err.Error())
}
switch s.questStatus[s.cordsToQuestID(act, n)] {
case d2enum.QuestStatusCompleted:
err = icon.SetCurrentFrame(completedFrame)
case d2enum.QuestStatusCompleting:
// that's not complet now
err = icon.SetCurrentFrame(0)
if err != nil {
s.Error(err.Error())
}
icon.PlayForward()
icon.SetPlayLoop(false)
err = icon.SetCurrentFrame(completedFrame)
s.questStatus[s.cordsToQuestID(act, n)] = d2enum.QuestStatusCompleted
case d2enum.QuestStatusNotStarted:
err = icon.SetCurrentFrame(notStartedFrame)
default:
err = icon.SetCurrentFrame(inProgresFrame)
}
return icon, err
}
func (s *QuestLog) setQuestLabel() { func (s *QuestLog) setQuestLabel() {
if s.selectedQuest == 0 { if s.selectedQuest == 0 {
s.questName.SetText("") s.questName.SetText("")
@ -419,7 +409,7 @@ func (s *QuestLog) setTab(tab int) {
s.quests[i].SetVisible(tab == i) s.quests[i].SetVisible(tab == i)
} }
for i := 0; i < questLogNumTabs; i++ { for i := 0; i < d2enum.ActsNumber; i++ {
s.tab[i].button.SetEnabled(i == tab) s.tab[i].button.SetEnabled(i == tab)
} }
} }