mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2024-09-25 20:55:55 -04:00
party panel: rearranged constants (moved part of them into d2enum)
This commit is contained in:
parent
57bf4078b6
commit
07eeec4827
11
d2common/d2enum/party_buttons.go
Normal file
11
d2common/d2enum/party_buttons.go
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package d2enum
|
||||||
|
|
||||||
|
// Frames of party Buttons
|
||||||
|
const (
|
||||||
|
PartyButtonListeningFrame = iota * 4
|
||||||
|
PartyButtonRelationshipsFrame
|
||||||
|
PartyButtonSeeingFrame
|
||||||
|
PartyButtonCorpsLootingFrame
|
||||||
|
|
||||||
|
PartyButtonNextButtonFrame = 2
|
||||||
|
)
|
@ -9,3 +9,11 @@ const (
|
|||||||
PlayerRelationFriend
|
PlayerRelationFriend
|
||||||
PlayerRelationEnemy
|
PlayerRelationEnemy
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PlayersHostileLevel = 9
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
MaxPlayersInGame = 8
|
||||||
|
)
|
||||||
|
@ -22,10 +22,6 @@ const (
|
|||||||
orange = 0xffa800ff
|
orange = 0xffa800ff
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
playerHostileLevel = 9
|
|
||||||
)
|
|
||||||
|
|
||||||
const ( // for the dc6 frames
|
const ( // for the dc6 frames
|
||||||
partyPanelTopLeft = iota
|
partyPanelTopLeft = iota
|
||||||
partyPanelTopRight
|
partyPanelTopRight
|
||||||
@ -33,6 +29,11 @@ const ( // for the dc6 frames
|
|||||||
partyPanelBottomRight
|
partyPanelBottomRight
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const ( // for bar's dc6 frames
|
||||||
|
barLeft = iota
|
||||||
|
barRight
|
||||||
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
partyPanelOffsetX, partyPanelOffsetY = 80, 64
|
partyPanelOffsetX, partyPanelOffsetY = 80, 64
|
||||||
)
|
)
|
||||||
@ -42,40 +43,20 @@ const (
|
|||||||
partyPanelHeroNameX, partyPanelHeroNameY = 180, 80
|
partyPanelHeroNameX, partyPanelHeroNameY = 180, 80
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
listeningButtonFrame = iota * 4
|
|
||||||
relationshipsFrame
|
|
||||||
seeingButtonFrame
|
|
||||||
// nolint:deadcode,varcheck,unused // will be used
|
|
||||||
lockButtonFrame
|
|
||||||
|
|
||||||
nextButtonFrame = 2
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
buttonSize = 19
|
buttonSize = 19
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
maxPlayersInGame = 8
|
barX, baseBarY = 90, 134
|
||||||
barX = 90
|
relationshipSwitcherX, baseRelationshipSwitcherY = 95, 150
|
||||||
relationshipSwitcherX = 95
|
listeningSwitcherX, baseListeningSwitcherY = 342, 140
|
||||||
listeningSwitcherX = 345
|
seeingSwitcherX, baseSeeingSwitcherY = 365, 140
|
||||||
seeingSwitcherX = 365
|
nameLabelX, baseNameLabelY = 115, 144
|
||||||
nameLabelX = 115
|
nameTooltipX, baseNameTooltipY = 100, 120
|
||||||
nameTooltipX = 100
|
classLabelX, baseClassLabelY = 115, 158
|
||||||
classLabelX = 115
|
levelLabelX, baseLevelLabelY = 386, 160
|
||||||
levelLabelX = 383
|
inviteAcceptButtonX, baseInviteAcceptButtonY = 265, 147
|
||||||
inviteAcceptButtonX = 250
|
|
||||||
baseBarY = 134
|
|
||||||
baseRelationshipSwitcherY = 150
|
|
||||||
baseSeeingSwitcherY = 140
|
|
||||||
baseListeningSwitcherY = 140
|
|
||||||
baseNameLabelY = 144
|
|
||||||
baseNameTooltipY = 120
|
|
||||||
baseClassLabelY = 158
|
|
||||||
baseLevelLabelY = 160
|
|
||||||
baseInviteAcceptButtonY = 140
|
|
||||||
indexOffset = 52
|
indexOffset = 52
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -99,7 +80,7 @@ func (s *PartyPanel) newPartyIndex() *partyIndex {
|
|||||||
levelLabel.Alignment = d2ui.HorizontalAlignRight
|
levelLabel.Alignment = d2ui.HorizontalAlignRight
|
||||||
result.level = levelLabel
|
result.level = levelLabel
|
||||||
|
|
||||||
relationships := s.createSwitcher(relationshipsFrame)
|
relationships := s.createSwitcher(d2enum.PartyButtonRelationshipsFrame)
|
||||||
relationships.SetDisabledColor(lightRed)
|
relationships.SetDisabledColor(lightRed)
|
||||||
|
|
||||||
result.relationshipsActiveTooltip = s.uiManager.NewTooltip(d2resource.Font16, d2resource.PaletteSky, d2ui.TooltipXCenter, d2ui.TooltipYTop)
|
result.relationshipsActiveTooltip = s.uiManager.NewTooltip(d2resource.Font16, d2resource.PaletteSky, d2ui.TooltipXCenter, d2ui.TooltipYTop)
|
||||||
@ -113,7 +94,7 @@ func (s *PartyPanel) newPartyIndex() *partyIndex {
|
|||||||
|
|
||||||
result.relationshipSwitcher = relationships
|
result.relationshipSwitcher = relationships
|
||||||
|
|
||||||
seeing := s.createSwitcher(seeingButtonFrame)
|
seeing := s.createSwitcher(d2enum.PartyButtonSeeingFrame)
|
||||||
|
|
||||||
result.seeingActiveTooltip = s.uiManager.NewTooltip(d2resource.Font16, d2resource.PaletteSky, d2ui.TooltipXCenter, d2ui.TooltipYTop)
|
result.seeingActiveTooltip = s.uiManager.NewTooltip(d2resource.Font16, d2resource.PaletteSky, d2ui.TooltipXCenter, d2ui.TooltipYTop)
|
||||||
result.seeingActiveTooltip.SetText(s.asset.TranslateString("strParty19"))
|
result.seeingActiveTooltip.SetText(s.asset.TranslateString("strParty19"))
|
||||||
@ -125,7 +106,7 @@ func (s *PartyPanel) newPartyIndex() *partyIndex {
|
|||||||
|
|
||||||
result.seeingSwitcher = seeing
|
result.seeingSwitcher = seeing
|
||||||
|
|
||||||
listening := s.createSwitcher(listeningButtonFrame)
|
listening := s.createSwitcher(d2enum.PartyButtonListeningFrame)
|
||||||
|
|
||||||
result.listeningActiveTooltip = s.uiManager.NewTooltip(d2resource.Font16, d2resource.PaletteSky, d2ui.TooltipXCenter, d2ui.TooltipYTop)
|
result.listeningActiveTooltip = s.uiManager.NewTooltip(d2resource.Font16, d2resource.PaletteSky, d2ui.TooltipXCenter, d2ui.TooltipYTop)
|
||||||
result.listeningActiveTooltip.SetText(s.asset.TranslateString("strParty17") + "\n" + s.asset.TranslateString("strParty18"))
|
result.listeningActiveTooltip.SetText(s.asset.TranslateString("strParty17") + "\n" + s.asset.TranslateString("strParty18"))
|
||||||
@ -243,147 +224,7 @@ func (pi *partyIndex) setPositions(idx int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (pi *partyIndex) CanGoHostile() bool {
|
func (pi *partyIndex) CanGoHostile() bool {
|
||||||
return pi.hero.Stats.Level >= playerHostileLevel && pi.me.Stats.Level >= playerHostileLevel
|
return pi.hero.Stats.Level >= d2enum.PlayersHostileLevel && pi.me.Stats.Level >= d2enum.PlayersHostileLevel
|
||||||
}
|
|
||||||
|
|
||||||
// AddPlayer adds a new player to the party panel
|
|
||||||
func (s *PartyPanel) AddPlayer(player *d2mapentity.Player, relations d2enum.PlayersRelationships) {
|
|
||||||
idx := 0
|
|
||||||
|
|
||||||
// search for free index
|
|
||||||
for n, i := range s.partyIndexes {
|
|
||||||
if i.hero == nil {
|
|
||||||
idx = n
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
s.partyIndexes[idx].hero = player
|
|
||||||
|
|
||||||
s.partyIndexes[idx].name.SetText(player.Name())
|
|
||||||
|
|
||||||
s.partyIndexes[idx].class.SetText(s.asset.TranslateString(player.Class.String()))
|
|
||||||
|
|
||||||
s.partyIndexes[idx].level.SetText(s.asset.TranslateString("Level") + ":" + strconv.Itoa(player.Stats.Level))
|
|
||||||
|
|
||||||
s.partyIndexes[idx].relationships = relations
|
|
||||||
|
|
||||||
s.partyIndexes[idx].setColor(relations)
|
|
||||||
s.partyIndexes[idx].setPositions(idx)
|
|
||||||
|
|
||||||
s.partyIndexes[idx].setNameTooltipText()
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeletePlayer deletes player from PartyIndexes
|
|
||||||
func (s *PartyPanel) DeletePlayer(player *d2mapentity.Player) bool {
|
|
||||||
for n, i := range s.partyIndexes {
|
|
||||||
if i.hero == player {
|
|
||||||
s.Debugf("removing player at index %d", n)
|
|
||||||
|
|
||||||
s.partyIndexes[n].hero = nil
|
|
||||||
s.Sort()
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sort sorts party indexes
|
|
||||||
func (s *PartyPanel) Sort() {
|
|
||||||
var emptySlots []*partyIndex
|
|
||||||
|
|
||||||
var emptySlotsNumbers []int
|
|
||||||
|
|
||||||
var fullSlots []*partyIndex
|
|
||||||
|
|
||||||
var fullSlotsNumbers []int
|
|
||||||
|
|
||||||
// split s.partyIndexes to empty and non-empty
|
|
||||||
for n, i := range s.partyIndexes {
|
|
||||||
if i.hero == nil {
|
|
||||||
emptySlots = append(emptySlots, i)
|
|
||||||
emptySlotsNumbers = append(emptySlotsNumbers, n)
|
|
||||||
} else {
|
|
||||||
fullSlots = append(fullSlots, i)
|
|
||||||
fullSlotsNumbers = append(fullSlotsNumbers, n)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// adds non-empty indexes befor empty indexes
|
|
||||||
for n, i := range fullSlots {
|
|
||||||
s.partyIndexes[n] = i
|
|
||||||
}
|
|
||||||
|
|
||||||
// adds empty indexes
|
|
||||||
for n, i := range emptySlots {
|
|
||||||
s.partyIndexes[len(fullSlots)+n] = i
|
|
||||||
}
|
|
||||||
|
|
||||||
// sorts widget groups
|
|
||||||
var sortedWG [maxPlayersInGame]*d2ui.WidgetGroup
|
|
||||||
// first add non empty WG's
|
|
||||||
for n, i := range fullSlotsNumbers {
|
|
||||||
sortedWG[n] = s.indexes[i]
|
|
||||||
}
|
|
||||||
|
|
||||||
// after that, adds empty WG's
|
|
||||||
for n, i := range emptySlotsNumbers {
|
|
||||||
sortedWG[len(fullSlotsNumbers)+n] = s.indexes[i]
|
|
||||||
}
|
|
||||||
|
|
||||||
// overwrite existing order
|
|
||||||
s.indexes = sortedWG
|
|
||||||
|
|
||||||
// sets appropriate positions
|
|
||||||
for n, i := range s.partyIndexes {
|
|
||||||
if i.hero != nil {
|
|
||||||
i.setPositions(n)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsInPanel returns true if player given already exists in panel
|
|
||||||
func (s *PartyPanel) IsInPanel(player *d2mapentity.Player) bool {
|
|
||||||
for _, i := range s.partyIndexes {
|
|
||||||
if i.hero == player {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsMe returns true if player given is "me"
|
|
||||||
func (s *PartyPanel) IsMe(player *d2mapentity.Player) bool {
|
|
||||||
return player == s.me
|
|
||||||
}
|
|
||||||
|
|
||||||
// setBarPosition sets party-panel bar's position
|
|
||||||
func (s *PartyPanel) setBarPosition() {
|
|
||||||
for n, i := range s.partyIndexes {
|
|
||||||
currentN := n
|
|
||||||
|
|
||||||
if i.hero == nil {
|
|
||||||
s.barX, s.barY = barX, baseBarY+currentN*indexOffset
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UpdatePanel updates panel indexes with players list
|
|
||||||
func (s *PartyPanel) UpdatePanel() {
|
|
||||||
for _, i := range s.players {
|
|
||||||
if !s.IsInPanel(i) && !s.IsMe(i) {
|
|
||||||
s.AddPlayer(i, d2enum.PlayerRelationNeutral)
|
|
||||||
|
|
||||||
// we need to switch all hidden widgets to be visible
|
|
||||||
if s.IsOpen() {
|
|
||||||
s.Open()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewPartyPanel creates a new party panel
|
// NewPartyPanel creates a new party panel
|
||||||
@ -413,11 +254,11 @@ func NewPartyPanel(asset *d2asset.AssetManager,
|
|||||||
me: me,
|
me: me,
|
||||||
}
|
}
|
||||||
|
|
||||||
var partyIndexes [maxPlayersInGame]*partyIndex
|
var partyIndexes [d2enum.MaxPlayersInGame]*partyIndex
|
||||||
|
|
||||||
var indexes [maxPlayersInGame]*d2ui.WidgetGroup
|
var indexes [d2enum.MaxPlayersInGame]*d2ui.WidgetGroup
|
||||||
|
|
||||||
for i := 0; i < maxPlayersInGame; i++ {
|
for i := 0; i < d2enum.MaxPlayersInGame; i++ {
|
||||||
partyIndexes[i] = pp.newPartyIndex()
|
partyIndexes[i] = pp.newPartyIndex()
|
||||||
indexes[i] = pp.uiManager.NewWidgetGroup(d2ui.RenderPriorityHeroStatsPanel)
|
indexes[i] = pp.uiManager.NewWidgetGroup(d2ui.RenderPriorityHeroStatsPanel)
|
||||||
}
|
}
|
||||||
@ -443,8 +284,8 @@ type PartyPanel struct {
|
|||||||
onCloseCb func()
|
onCloseCb func()
|
||||||
panelGroup *d2ui.WidgetGroup
|
panelGroup *d2ui.WidgetGroup
|
||||||
|
|
||||||
partyIndexes [maxPlayersInGame]*partyIndex
|
partyIndexes [d2enum.MaxPlayersInGame]*partyIndex
|
||||||
indexes [maxPlayersInGame]*d2ui.WidgetGroup
|
indexes [d2enum.MaxPlayersInGame]*d2ui.WidgetGroup
|
||||||
|
|
||||||
players map[string]*d2mapentity.Player
|
players map[string]*d2mapentity.Player
|
||||||
me *d2mapentity.Player
|
me *d2mapentity.Player
|
||||||
@ -466,7 +307,7 @@ func (s *PartyPanel) Load() {
|
|||||||
|
|
||||||
// create widgetGroups
|
// create widgetGroups
|
||||||
s.panelGroup = s.uiManager.NewWidgetGroup(d2ui.RenderPriorityHeroStatsPanel)
|
s.panelGroup = s.uiManager.NewWidgetGroup(d2ui.RenderPriorityHeroStatsPanel)
|
||||||
for i := 0; i < maxPlayersInGame; i++ {
|
for i := 0; i < d2enum.MaxPlayersInGame; i++ {
|
||||||
s.indexes[i] = s.uiManager.NewWidgetGroup(d2ui.RenderPriorityHeroStatsPanel)
|
s.indexes[i] = s.uiManager.NewWidgetGroup(d2ui.RenderPriorityHeroStatsPanel)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -531,7 +372,7 @@ func (s *PartyPanel) Load() {
|
|||||||
// createSwitcher creates party-panel switcher using frame given
|
// createSwitcher creates party-panel switcher using frame given
|
||||||
func (s *PartyPanel) createSwitcher(frame int) *d2ui.SwitchableButton {
|
func (s *PartyPanel) createSwitcher(frame int) *d2ui.SwitchableButton {
|
||||||
active := s.uiManager.NewCustomButton(d2resource.PartyBoxes, frame)
|
active := s.uiManager.NewCustomButton(d2resource.PartyBoxes, frame)
|
||||||
inactive := s.uiManager.NewCustomButton(d2resource.PartyBoxes, frame+nextButtonFrame)
|
inactive := s.uiManager.NewCustomButton(d2resource.PartyBoxes, frame+d2enum.PartyButtonNextButtonFrame)
|
||||||
switcher := s.uiManager.NewSwitchableButton(active, inactive, true)
|
switcher := s.uiManager.NewSwitchableButton(active, inactive, true)
|
||||||
switcher.SetVisible(false)
|
switcher.SetVisible(false)
|
||||||
|
|
||||||
@ -579,6 +420,153 @@ func (s *PartyPanel) SetOnCloseCb(cb func()) {
|
|||||||
s.onCloseCb = cb
|
s.onCloseCb = cb
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddPlayer adds a new player to the party panel
|
||||||
|
func (s *PartyPanel) AddPlayer(player *d2mapentity.Player, relations d2enum.PlayersRelationships) {
|
||||||
|
idx := 0
|
||||||
|
|
||||||
|
// search for free index
|
||||||
|
for n, i := range s.partyIndexes {
|
||||||
|
if i.hero == nil {
|
||||||
|
idx = n
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
s.partyIndexes[idx].hero = player
|
||||||
|
|
||||||
|
s.partyIndexes[idx].name.SetText(player.Name())
|
||||||
|
|
||||||
|
s.partyIndexes[idx].class.SetText(s.asset.TranslateString(player.Class.String()))
|
||||||
|
|
||||||
|
s.partyIndexes[idx].level.SetText(s.asset.TranslateString("Level") + ":" + strconv.Itoa(player.Stats.Level))
|
||||||
|
|
||||||
|
s.partyIndexes[idx].relationships = relations
|
||||||
|
|
||||||
|
s.partyIndexes[idx].setColor(relations)
|
||||||
|
|
||||||
|
s.partyIndexes[idx].setPositions(idx)
|
||||||
|
|
||||||
|
s.partyIndexes[idx].setNameTooltipText()
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeletePlayer deletes player from PartyIndexes
|
||||||
|
func (s *PartyPanel) DeletePlayer(player *d2mapentity.Player) bool {
|
||||||
|
for n, i := range s.partyIndexes {
|
||||||
|
if i.hero == player {
|
||||||
|
s.Debugf("removing player at index %d", n)
|
||||||
|
|
||||||
|
s.partyIndexes[n].hero = nil
|
||||||
|
s.Sort()
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sort sorts party indexes
|
||||||
|
func (s *PartyPanel) Sort() {
|
||||||
|
var emptySlots []*partyIndex
|
||||||
|
|
||||||
|
var emptySlotsNumbers []int
|
||||||
|
|
||||||
|
var fullSlots []*partyIndex
|
||||||
|
|
||||||
|
var fullSlotsNumbers []int
|
||||||
|
|
||||||
|
// split s.partyIndexes to empty and non-empty
|
||||||
|
for n, i := range s.partyIndexes {
|
||||||
|
if i.hero == nil {
|
||||||
|
emptySlots = append(emptySlots, i)
|
||||||
|
emptySlotsNumbers = append(emptySlotsNumbers, n)
|
||||||
|
} else {
|
||||||
|
fullSlots = append(fullSlots, i)
|
||||||
|
fullSlotsNumbers = append(fullSlotsNumbers, n)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// adds non-empty indexes befor empty indexes
|
||||||
|
for n, i := range fullSlots {
|
||||||
|
s.partyIndexes[n] = i
|
||||||
|
}
|
||||||
|
|
||||||
|
// adds empty indexes
|
||||||
|
for n, i := range emptySlots {
|
||||||
|
s.partyIndexes[len(fullSlots)+n] = i
|
||||||
|
}
|
||||||
|
|
||||||
|
// sorts widget groups
|
||||||
|
var sortedWG [d2enum.MaxPlayersInGame]*d2ui.WidgetGroup
|
||||||
|
// first add non empty WG's
|
||||||
|
for n, i := range fullSlotsNumbers {
|
||||||
|
sortedWG[n] = s.indexes[i]
|
||||||
|
}
|
||||||
|
|
||||||
|
// after that, adds empty WG's
|
||||||
|
for n, i := range emptySlotsNumbers {
|
||||||
|
sortedWG[len(fullSlotsNumbers)+n] = s.indexes[i]
|
||||||
|
}
|
||||||
|
|
||||||
|
// overwrite existing order
|
||||||
|
s.indexes = sortedWG
|
||||||
|
|
||||||
|
// sets appropriate positions
|
||||||
|
for n, i := range s.partyIndexes {
|
||||||
|
if i.hero != nil {
|
||||||
|
i.setPositions(n)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsInPanel returns true if player given already exists in panel
|
||||||
|
func (s *PartyPanel) IsInPanel(player *d2mapentity.Player) bool {
|
||||||
|
for _, i := range s.partyIndexes {
|
||||||
|
if i.hero == player {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsMe returns true if player given is "me"
|
||||||
|
func (s *PartyPanel) IsMe(player *d2mapentity.Player) bool {
|
||||||
|
return player == s.me
|
||||||
|
}
|
||||||
|
|
||||||
|
// setBarPosition sets party-panel bar's position
|
||||||
|
func (s *PartyPanel) setBarPosition() {
|
||||||
|
for n, i := range s.partyIndexes {
|
||||||
|
currentN := n
|
||||||
|
|
||||||
|
if i.hero == nil {
|
||||||
|
s.barX, s.barY = barX, baseBarY+currentN*indexOffset
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdatePanel updates panel indexes with players list
|
||||||
|
func (s *PartyPanel) UpdatePanel() {
|
||||||
|
for _, i := range s.players {
|
||||||
|
if !s.IsInPanel(i) && !s.IsMe(i) {
|
||||||
|
s.AddPlayer(i, d2enum.PlayerRelationNeutral)
|
||||||
|
|
||||||
|
// we need to switch all hidden widgets to be visible
|
||||||
|
// s.Open contains appropriate code to do that.
|
||||||
|
if s.IsOpen() {
|
||||||
|
s.Open()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdatePlayersList updates internal players list
|
||||||
|
func (s *PartyPanel) UpdatePlayersList(list map[string]*d2mapentity.Player) {
|
||||||
|
s.players = list
|
||||||
|
}
|
||||||
|
|
||||||
// Advance advances panel
|
// Advance advances panel
|
||||||
func (s *PartyPanel) Advance(_ float64) {
|
func (s *PartyPanel) Advance(_ float64) {
|
||||||
if !s.IsOpen() {
|
if !s.IsOpen() {
|
||||||
@ -588,11 +576,6 @@ func (s *PartyPanel) Advance(_ float64) {
|
|||||||
s.UpdatePanel()
|
s.UpdatePanel()
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdatePlayersList updates internal players list
|
|
||||||
func (s *PartyPanel) UpdatePlayersList(list map[string]*d2mapentity.Player) {
|
|
||||||
s.players = list
|
|
||||||
}
|
|
||||||
|
|
||||||
// OnMouseMove handles mouse movement events
|
// OnMouseMove handles mouse movement events
|
||||||
func (s *PartyPanel) OnMouseMove(event d2interface.MouseMoveEvent) bool {
|
func (s *PartyPanel) OnMouseMove(event d2interface.MouseMoveEvent) bool {
|
||||||
mx, my := event.X(), event.Y()
|
mx, my := event.X(), event.Y()
|
||||||
@ -648,8 +631,8 @@ func (s *PartyPanel) renderStaticPanelFrames(target d2interface.Surface) {
|
|||||||
// renderBar renders party panel's bar
|
// renderBar renders party panel's bar
|
||||||
func (s *PartyPanel) renderBar(target d2interface.Surface) {
|
func (s *PartyPanel) renderBar(target d2interface.Surface) {
|
||||||
frames := []int{
|
frames := []int{
|
||||||
partyPanelTopLeft,
|
barLeft,
|
||||||
partyPanelTopRight,
|
barRight,
|
||||||
}
|
}
|
||||||
|
|
||||||
currentX := s.originX + s.barX
|
currentX := s.originX + s.barX
|
||||||
|
Loading…
Reference in New Issue
Block a user