/
componentmgr.go
139 lines (121 loc) · 4.88 KB
/
componentmgr.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package lowcode
import (
"log/slog"
"github.com/zhs007/goutils"
"google.golang.org/protobuf/types/known/anypb"
)
type ComponentMgr struct {
MapComponent map[string]FuncNewComponent
MapComponentData map[string]FuncNewComponentData // 未写完,写了一半,觉得clone效率更高,后续如果确定需要要再写
}
func (mgr *ComponentMgr) Reg(component string, funcNew FuncNewComponent) {
mgr.MapComponent[component] = funcNew
}
func (mgr *ComponentMgr) RegComponentData(pbtype string, funcNewComponentData FuncNewComponentData) {
mgr.MapComponentData[pbtype] = funcNewComponentData
}
func (mgr *ComponentMgr) NewComponent(cfgComponent *ComponentConfig) IComponent {
funcNew, isok := mgr.MapComponent[cfgComponent.Type]
if isok {
return funcNew(cfgComponent.Name)
}
goutils.Error("ComponentMgr.NewComponent",
slog.String("component", cfgComponent.Type),
goutils.Err(ErrInvalidComponent))
return nil
}
// LoadPB
func (mgr *ComponentMgr) LoadPB(pb *anypb.Any) (IComponentData, error) {
funcCD, isok := mgr.MapComponentData[pb.TypeUrl]
if isok {
icd := funcCD()
if icd == nil {
goutils.Error("ComponentMgr.LoadPB",
goutils.Err(ErrInvalidFuncNewComponentData))
return nil, ErrInvalidFuncNewComponentData
}
err := icd.LoadPB(pb)
if icd == nil {
goutils.Error("ComponentMgr.LoadPB:LoadPB",
goutils.Err(err))
return nil, err
}
return icd, nil
}
goutils.Error("ComponentMgr.LoadPB",
goutils.Err(ErrInvalidAnypbTypeURL))
return nil, ErrInvalidAnypbTypeURL
}
func NewComponentMgr() *ComponentMgr {
mgr := &ComponentMgr{
MapComponent: make(map[string]FuncNewComponent),
MapComponentData: make(map[string]FuncNewComponentData),
}
mgr.Reg(BasicReelsTypeName, NewBasicReels)
// mgr.Reg(MysteryTypeName, NewMystery)
// mgr.Reg(BasicWinsTypeName, NewBasicWins)
// mgr.Reg(LightningTypeName, NewLightning)
// mgr.Reg(MultiLevelReelsTypeName, NewMultiLevelReels)
mgr.Reg(CollectorTypeName, NewCollector)
// mgr.Reg(MultiLevelMysteryTypeName, NewMultiLevelMystery)
// mgr.Reg(BookOfTypeName, NewBookOf)
mgr.Reg(SymbolMultiTypeName, NewSymbolMulti)
mgr.Reg(SymbolValTypeName, NewSymbolVal)
mgr.Reg(SymbolValWinsTypeName, NewSymbolValWins)
mgr.Reg(SymbolVal2TypeName, NewSymbolVal2)
mgr.Reg(OverlaySymbolTypeName, NewOverlaySymbol)
// mgr.Reg(ReelSetMysteryTypeName, NewReelSetMystery)
mgr.Reg(WeightTriggerTypeName, NewWeightTrigger)
mgr.Reg(ChgSymbolTypeName, NewChgSymbol)
mgr.Reg(RespinTypeName, NewRespin)
mgr.Reg(MultiRespinTypeName, NewMultiRespin)
mgr.Reg(ReplaceSymbolTypeName, NewReplaceSymbol)
mgr.Reg(MaskTypeName, NewMask)
// mgr.Reg(MultiLevelReplaceReelTypeName, NewMultiLevelReplaceReel)
mgr.Reg(FixSymbolsTypeName, NewFixSymbols)
// mgr.Reg(SymbolCollectionTypeName, NewSymbolCollection)
mgr.Reg(WeightChgSymbolTypeName, NewWeightChgSymbol)
// mgr.Reg(BookOf2TypeName, NewBookOf2)
// mgr.Reg(SymbolTriggerTypeName, NewSymbolTrigger)
mgr.Reg(ReplaceReelTypeName, NewReplaceReel)
mgr.Reg(MoveSymbolTypeName, NewMoveSymbol)
mgr.Reg(MoveReelTypeName, NewMoveReel)
mgr.Reg(MergeSymbolTypeName, NewMergeSymbol)
mgr.Reg(ReRollReelTypeName, NewReRollReel)
mgr.Reg(MultiWeightAwardsTypeName, NewMultiWeightAwards)
mgr.Reg(MaskBranchTypeName, NewMaskBranch)
// mgr.Reg(Respin2TypeName, NewRespin2)
mgr.Reg(WeightTrigger2TypeName, NewWeightTrigger2)
mgr.Reg(SymbolModifierTypeName, NewSymbolModifier)
mgr.Reg(ComponentTriggerTypeName, NewComponentTrigger)
mgr.Reg(ComponentValTriggerTypeName, NewComponentValTrigger)
mgr.Reg(ReelModifierTypeName, NewReelModifier)
mgr.Reg(WeightReelsTypeName, NewWeightReels)
mgr.Reg(ScatterTriggerTypeName, NewScatterTrigger)
mgr.Reg(LinesTriggerTypeName, NewLinesTrigger)
mgr.Reg(WaysTriggerTypeName, NewWaysTrigger)
mgr.Reg(WeightAwardsTypeName, NewWeightAwards)
mgr.Reg(ClusterTriggerTypeName, NewClusterTrigger)
mgr.Reg(RemoveSymbolsTypeName, NewRemoveSymbols)
mgr.Reg(WinResultMultiTypeName, NewWinResultMulti)
mgr.Reg(DropDownSymbolsTypeName, NewDropDownSymbols)
mgr.Reg(RefillSymbolsTypeName, NewRefillSymbols)
mgr.Reg(ReplaceSymbolGroupTypeName, NewReplaceSymbolGroup)
mgr.Reg(RollSymbolTypeName, NewRollSymbol)
mgr.Reg(QueueBranchTypeName, NewQueueBranch)
mgr.Reg(SymbolCollection2TypeName, NewSymbolCollection2)
mgr.Reg(ReplaceReelWithMaskTypeName, NewReplaceReelWithMask)
mgr.Reg(PiggyBankTypeName, NewPiggyBank)
mgr.Reg(AddSymbolsTypeName, NewAddSymbols)
mgr.Reg(IntValMappingTypeName, NewIntValMapping)
mgr.Reg(WeightBranchTypeName, NewWeightBranch)
mgr.Reg(GenGigaSymbolTypeName, NewGenGigaSymbol)
mgr.Reg(WinResultCacheTypeName, NewWinResultCache)
mgr.Reg(GenSymbolValsWithPosTypeName, NewGenSymbolValsWithPos)
mgr.Reg(CheckSymbolValsTypeName, NewCheckSymbolVals)
mgr.Reg(PositionCollectionTypeName, NewPositionCollection)
mgr.Reg(ChgSymbolValsTypeName, NewChgSymbolVals)
mgr.Reg(ChgSymbolsTypeName, NewChgSymbols)
mgr.Reg(GenSymbolValsWithSymbolTypeName, NewGenSymbolValsWithSymbol)
return mgr
}