1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-09-28 06:06:29 -04:00

code clean up

This commit is contained in:
M. Sz 2020-12-07 19:07:20 +01:00
parent 5c9d4a80e2
commit 1d5516c374

View File

@ -29,12 +29,11 @@ const (
const ( const (
iconOffsetY = 88 iconOffsetY = 88
questOffsetX, questOffsetY = 4, 4 questOffsetX, questOffsetY = 4, 4
q1SocketX, q1SocketY = 100, 95 socket1X = 100
q2SocketX, q2SocketY = 200, 95 socket2X = 200
q3SocketX, q3SocketY = 300, 95 socket3X = 300
q4SocketX, q4SocketY = 100, 190 socketUpY = 95
q5SocketX, q5SocketY = 200, 190 socketDownY = 190
q6SocketX, q6SocketY = 300, 190
) )
const ( const (
@ -46,8 +45,9 @@ const (
const ( const (
questTabY = 66 questTabY = 66
questTabBaseX = 85 questTabYOffset = 31
questTabXOffset = 58 questTabBaseX = 86
questTabXOffset = 61
) )
func (s *QuestLog) getPositionForSocket(number int) (x, y int) { func (s *QuestLog) getPositionForSocket(number int) (x, y int) {
@ -55,12 +55,12 @@ func (s *QuestLog) getPositionForSocket(number int) (x, y int) {
x int x int
y int y int
}{ }{
{q1SocketX, q1SocketY}, {socket1X, socketUpY},
{q2SocketX, q2SocketY}, {socket2X, socketUpY},
{q3SocketX, q3SocketY}, {socket3X, socketUpY},
{q4SocketX, q4SocketY}, {socket1X, socketDownY},
{q5SocketX, q5SocketY}, {socket2X, socketDownY},
{q6SocketX, q6SocketY}, {socket3X, socketDownY},
} }
return pos[number].x, pos[number].y return pos[number].x, pos[number].y
@ -103,6 +103,12 @@ func NewQuestLog(asset *d2asset.AssetManager,
24: 0, 24: 0,
25: 0, 25: 0,
26: 0, 26: 0,
27: 0,
28: 0,
29: 0,
30: 0,
31: 0,
32: 1,
} }
var quests [d2enum.ActsNumber]*d2ui.WidgetGroup var quests [d2enum.ActsNumber]*d2ui.WidgetGroup
@ -110,19 +116,18 @@ func NewQuestLog(asset *d2asset.AssetManager,
quests[i] = ui.NewWidgetGroup(d2ui.RenderPriorityQuestLog) quests[i] = ui.NewWidgetGroup(d2ui.RenderPriorityQuestLog)
} }
var tabs [d2enum.ActsNumber]questLogTab
for i := 0; i < d2enum.ActsNumber; i++ {
tabs[i] = questLogTab{}
}
ql := &QuestLog{ ql := &QuestLog{
asset: asset, asset: asset,
uiManager: ui, uiManager: ui,
originX: originX, originX: originX,
originY: originY, originY: originY,
act: act, act: act,
tab: [d2enum.ActsNumber]*questLogTab{ tab: tabs,
{},
{},
{},
{},
{},
},
quests: quests, quests: quests,
questStatus: qs, questStatus: qs,
} }
@ -144,7 +149,7 @@ type QuestLog struct {
selectedTab int selectedTab int
selectedQuest int selectedQuest int
act int act int
tab [d2enum.ActsNumber]*questLogTab tab [d2enum.ActsNumber]questLogTab
questName *d2ui.Label questName *d2ui.Label
questDescr *d2ui.Label questDescr *d2ui.Label
@ -175,7 +180,7 @@ const (
const questDescriptionLenght = 30 const questDescriptionLenght = 30
type questLogTab struct { type questLogTab struct {
button *d2ui.Button sprite *d2ui.Sprite
invisibleButton *d2ui.Button invisibleButton *d2ui.Button
} }
@ -231,25 +236,33 @@ func (s *QuestLog) Load() {
} }
func (s *QuestLog) loadTabs() { func (s *QuestLog) loadTabs() {
var buttonTypes = []d2ui.ButtonType{ var err error
d2ui.ButtonTypeTab1,
d2ui.ButtonTypeTab2, tabsResource := d2resource.WPTabs
d2ui.ButtonTypeTab3,
d2ui.ButtonTypeTab4,
d2ui.ButtonTypeTab5,
d2ui.ButtonTypeTab1,
}
for i := 0; i < d2enum.ActsNumber; i++ { for i := 0; i < d2enum.ActsNumber; i++ {
currentValue := i currentValue := i
s.tab[i].button = s.uiManager.NewButton(buttonTypes[i], "")
s.tab[i].button.SetPosition(questTabBaseX+i*questTabXOffset, questTabY) s.tab[i].sprite, err = s.uiManager.NewSprite(tabsResource, d2resource.PaletteSky)
if err != nil {
s.Error(err.Error())
}
// nolint:gomnd // it's constant
frame := 2 * currentValue
err := s.tab[i].sprite.SetCurrentFrame(frame)
if err != nil {
s.Errorf("Tabs sprite (%s) hasn't frame %d. %s", tabsResource, frame, err.Error())
}
s.tab[i].sprite.SetPosition(questTabBaseX+i*questTabXOffset, questTabY+questTabYOffset)
s.tab[i].invisibleButton = s.uiManager.NewButton(d2ui.ButtonTypeTabBlank, "") s.tab[i].invisibleButton = s.uiManager.NewButton(d2ui.ButtonTypeTabBlank, "")
s.tab[i].invisibleButton.SetPosition(questTabBaseX+i*questTabXOffset, questTabY) s.tab[i].invisibleButton.SetPosition(questTabBaseX+i*questTabXOffset, questTabY)
s.tab[i].invisibleButton.OnActivated(func() { s.setTab(currentValue) }) s.tab[i].invisibleButton.OnActivated(func() { s.setTab(currentValue) })
s.panelGroup.AddWidget(s.tab[i].button) s.panelGroup.AddWidget(s.tab[i].sprite)
s.panelGroup.AddWidget(s.tab[i].invisibleButton) s.panelGroup.AddWidget(s.tab[i].invisibleButton)
} }
@ -289,7 +302,7 @@ func (s *QuestLog) loadQuestIconsForAct(act int) *d2ui.WidgetGroup {
icon, err = s.makeQuestIconForAct(act, n) icon, err = s.makeQuestIconForAct(act, n)
if err != nil { if err != nil {
s.Fatal(err.Error()) s.Error(err.Error())
} }
icon.SetPosition(x+questOffsetX, y+questOffsetY+iconOffsetY) icon.SetPosition(x+questOffsetX, y+questOffsetY+iconOffsetY)
@ -330,9 +343,11 @@ func (s *QuestLog) loadQuestIconsForAct(act int) *d2ui.WidgetGroup {
} }
func (s *QuestLog) makeQuestIconForAct(act, n int) (*d2ui.Sprite, error) { func (s *QuestLog) makeQuestIconForAct(act, n int) (*d2ui.Sprite, error) {
icon, err := s.uiManager.NewSprite(s.questIconsTable(act, n), d2resource.PaletteSky) iconResource := s.questIconsTable(act, n)
icon, err := s.uiManager.NewSprite(iconResource, d2resource.PaletteSky)
if err != nil { if err != nil {
s.Fatalf("during creating new quest icons for act %d. %s", act, err.Error()) s.Fatalf("during creating new quest icons for act %d (icon sprite %s doesn't exist). %s", act, iconResource, err.Error())
} }
switch s.questStatus[s.cordsToQuestID(act, n)] { switch s.questStatus[s.cordsToQuestID(act, n)] {
@ -393,6 +408,8 @@ func (s *QuestLog) setQuestLabel() {
} }
func (s *QuestLog) setTab(tab int) { func (s *QuestLog) setTab(tab int) {
var mod int
s.selectedTab = tab s.selectedTab = tab
s.selectedQuest = d2enum.QuestNone s.selectedQuest = d2enum.QuestNone
s.setQuestLabel() s.setQuestLabel()
@ -402,7 +419,18 @@ func (s *QuestLog) setTab(tab int) {
} }
for i := 0; i < d2enum.ActsNumber; i++ { for i := 0; i < d2enum.ActsNumber; i++ {
s.tab[i].button.SetEnabled(i == tab) cv := i
if cv == s.selectedTab {
mod = 0
} else {
mod = 1
}
err := s.tab[cv].sprite.SetCurrentFrame(2*cv + mod)
if err != nil {
s.Error(err.Error())
}
} }
} }