属性实现
This commit is contained in:
parent
4ad6ad3f9b
commit
56577b1bdf
|
@ -0,0 +1,59 @@
|
||||||
|
package game
|
||||||
|
|
||||||
|
import "minotaur/utils/huge"
|
||||||
|
|
||||||
|
// Attrs 属性
|
||||||
|
type Attrs interface {
|
||||||
|
SetAttrInt(id int, value int)
|
||||||
|
SetAttrInt8(id int, value int8)
|
||||||
|
SetAttrInt16(id int, value int16)
|
||||||
|
SetAttrInt32(id int, value int32)
|
||||||
|
SetAttrInt64(id int, value int64)
|
||||||
|
SetAttrUint(id int, value uint)
|
||||||
|
SetAttrUint8(id int, value uint8)
|
||||||
|
SetAttrUint16(id int, value uint16)
|
||||||
|
SetAttrUint32(id int, value uint32)
|
||||||
|
SetAttrUint64(id int, value uint64)
|
||||||
|
SetAttrFloat32(id int, value float32)
|
||||||
|
SetAttrFloat64(id int, value float64)
|
||||||
|
SetAttrHugeInt(id int, value *huge.Int)
|
||||||
|
|
||||||
|
GetAttrInt(id int) int
|
||||||
|
GetAttrInt8(id int) int8
|
||||||
|
GetAttrInt16(id int) int16
|
||||||
|
GetAttrInt32(id int) int32
|
||||||
|
GetAttrInt64(id int) int64
|
||||||
|
GetAttrUint(id int) uint
|
||||||
|
GetAttrUint8(id int) uint8
|
||||||
|
GetAttrUint16(id int) uint16
|
||||||
|
GetAttrUint32(id int) uint32
|
||||||
|
GetAttrUint64(id int) uint64
|
||||||
|
GetAttrFloat32(id int) float32
|
||||||
|
GetAttrFloat64(id int) float64
|
||||||
|
GetAttrHugeInt(id int) *huge.Int
|
||||||
|
|
||||||
|
ChangeAttrInt(id int, value int)
|
||||||
|
ChangeAttrInt8(id int, value int8)
|
||||||
|
ChangeAttrInt16(id int, value int16)
|
||||||
|
ChangeAttrInt32(id int, value int32)
|
||||||
|
ChangeAttrInt64(id int, value int64)
|
||||||
|
ChangeAttrUint(id int, value uint)
|
||||||
|
ChangeAttrUint8(id int, value uint8)
|
||||||
|
ChangeAttrUint16(id int, value uint16)
|
||||||
|
ChangeAttrUint32(id int, value uint32)
|
||||||
|
ChangeAttrUint64(id int, value uint64)
|
||||||
|
ChangeAttrFloat32(id int, value float32)
|
||||||
|
ChangeAttrFloat64(id int, value float64)
|
||||||
|
ChangeAttrHugeInt(id int, value *huge.Int)
|
||||||
|
|
||||||
|
// RegAttrChangeEvent 任一属性发生变化将立即执行被注册的事件处理函数
|
||||||
|
RegAttrChangeEvent(handle AttrChangeEventHandle)
|
||||||
|
OnAttrChangeEvent(id int)
|
||||||
|
// RegAttrIdChangeEvent 特定属性发生变化将立即执行被注册的事件处理函数
|
||||||
|
RegAttrIdChangeEvent(id int, handle AttrChangeEventHandle)
|
||||||
|
OnAttrIdChangeEvent(id int)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
AttrChangeEventHandle func(id int, attrs Attrs)
|
||||||
|
)
|
|
@ -0,0 +1,641 @@
|
||||||
|
package builtin
|
||||||
|
|
||||||
|
import (
|
||||||
|
"minotaur/game"
|
||||||
|
"minotaur/utils/huge"
|
||||||
|
"minotaur/utils/synchronization"
|
||||||
|
)
|
||||||
|
|
||||||
|
func NewAttrs() *Attrs {
|
||||||
|
return &Attrs{
|
||||||
|
attrs: synchronization.NewMap[int, any](),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type Attrs struct {
|
||||||
|
attrs *synchronization.Map[int, any]
|
||||||
|
|
||||||
|
attrChangeEventHandles []game.AttrChangeEventHandle
|
||||||
|
attrIdChangeEventHandles map[int][]game.AttrChangeEventHandle
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) SetAttrInt(id int, value int) {
|
||||||
|
slf.attrs.Set(id, value)
|
||||||
|
slf.OnAttrChangeEvent(id)
|
||||||
|
slf.OnAttrIdChangeEvent(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) SetAttrInt8(id int, value int8) {
|
||||||
|
slf.attrs.Set(id, value)
|
||||||
|
slf.OnAttrChangeEvent(id)
|
||||||
|
slf.OnAttrIdChangeEvent(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) SetAttrInt16(id int, value int16) {
|
||||||
|
slf.attrs.Set(id, value)
|
||||||
|
slf.OnAttrChangeEvent(id)
|
||||||
|
slf.OnAttrIdChangeEvent(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) SetAttrInt32(id int, value int32) {
|
||||||
|
slf.attrs.Set(id, value)
|
||||||
|
slf.OnAttrChangeEvent(id)
|
||||||
|
slf.OnAttrIdChangeEvent(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) SetAttrInt64(id int, value int64) {
|
||||||
|
slf.attrs.Set(id, value)
|
||||||
|
slf.OnAttrChangeEvent(id)
|
||||||
|
slf.OnAttrIdChangeEvent(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) SetAttrUint(id int, value uint) {
|
||||||
|
slf.attrs.Set(id, value)
|
||||||
|
slf.OnAttrChangeEvent(id)
|
||||||
|
slf.OnAttrIdChangeEvent(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) SetAttrUint8(id int, value uint8) {
|
||||||
|
slf.attrs.Set(id, value)
|
||||||
|
slf.OnAttrChangeEvent(id)
|
||||||
|
slf.OnAttrIdChangeEvent(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) SetAttrUint16(id int, value uint16) {
|
||||||
|
slf.attrs.Set(id, value)
|
||||||
|
slf.OnAttrChangeEvent(id)
|
||||||
|
slf.OnAttrIdChangeEvent(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) SetAttrUint32(id int, value uint32) {
|
||||||
|
slf.attrs.Set(id, value)
|
||||||
|
slf.OnAttrChangeEvent(id)
|
||||||
|
slf.OnAttrIdChangeEvent(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) SetAttrUint64(id int, value uint64) {
|
||||||
|
slf.attrs.Set(id, value)
|
||||||
|
slf.OnAttrChangeEvent(id)
|
||||||
|
slf.OnAttrIdChangeEvent(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) SetAttrFloat32(id int, value float32) {
|
||||||
|
slf.attrs.Set(id, value)
|
||||||
|
slf.OnAttrChangeEvent(id)
|
||||||
|
slf.OnAttrIdChangeEvent(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) SetAttrFloat64(id int, value float64) {
|
||||||
|
slf.attrs.Set(id, value)
|
||||||
|
slf.OnAttrChangeEvent(id)
|
||||||
|
slf.OnAttrIdChangeEvent(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) SetAttrHugeInt(id int, value *huge.Int) {
|
||||||
|
slf.attrs.Set(id, value)
|
||||||
|
slf.OnAttrChangeEvent(id)
|
||||||
|
slf.OnAttrIdChangeEvent(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) GetAttrInt(id int) int {
|
||||||
|
v, exist := slf.attrs.GetExist(id)
|
||||||
|
if !exist {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
switch value := v.(type) {
|
||||||
|
case float32:
|
||||||
|
return int(value)
|
||||||
|
case float64:
|
||||||
|
return int(value)
|
||||||
|
case *huge.Int:
|
||||||
|
return int(value.Int64())
|
||||||
|
case uint:
|
||||||
|
return int(value)
|
||||||
|
case uint8:
|
||||||
|
return int(value)
|
||||||
|
case uint16:
|
||||||
|
return int(value)
|
||||||
|
case uint32:
|
||||||
|
return int(value)
|
||||||
|
case uint64:
|
||||||
|
return int(value)
|
||||||
|
case int:
|
||||||
|
return value
|
||||||
|
case int8:
|
||||||
|
return int(value)
|
||||||
|
case int16:
|
||||||
|
return int(value)
|
||||||
|
case int32:
|
||||||
|
return int(value)
|
||||||
|
case int64:
|
||||||
|
return int(value)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) GetAttrInt8(id int) int8 {
|
||||||
|
v, exist := slf.attrs.GetExist(id)
|
||||||
|
if !exist {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
switch value := v.(type) {
|
||||||
|
case float32:
|
||||||
|
return int8(value)
|
||||||
|
case float64:
|
||||||
|
return int8(value)
|
||||||
|
case *huge.Int:
|
||||||
|
return int8(value.Int64())
|
||||||
|
case uint:
|
||||||
|
return int8(value)
|
||||||
|
case uint8:
|
||||||
|
return int8(value)
|
||||||
|
case uint16:
|
||||||
|
return int8(value)
|
||||||
|
case uint32:
|
||||||
|
return int8(value)
|
||||||
|
case uint64:
|
||||||
|
return int8(value)
|
||||||
|
case int:
|
||||||
|
return int8(value)
|
||||||
|
case int8:
|
||||||
|
return value
|
||||||
|
case int16:
|
||||||
|
return int8(value)
|
||||||
|
case int32:
|
||||||
|
return int8(value)
|
||||||
|
case int64:
|
||||||
|
return int8(value)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) GetAttrInt16(id int) int16 {
|
||||||
|
v, exist := slf.attrs.GetExist(id)
|
||||||
|
if !exist {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
switch value := v.(type) {
|
||||||
|
case float32:
|
||||||
|
return int16(value)
|
||||||
|
case float64:
|
||||||
|
return int16(value)
|
||||||
|
case *huge.Int:
|
||||||
|
return int16(value.Int64())
|
||||||
|
case uint:
|
||||||
|
return int16(value)
|
||||||
|
case uint8:
|
||||||
|
return int16(value)
|
||||||
|
case uint16:
|
||||||
|
return int16(value)
|
||||||
|
case uint32:
|
||||||
|
return int16(value)
|
||||||
|
case uint64:
|
||||||
|
return int16(value)
|
||||||
|
case int:
|
||||||
|
return int16(value)
|
||||||
|
case int8:
|
||||||
|
return int16(value)
|
||||||
|
case int16:
|
||||||
|
return value
|
||||||
|
case int32:
|
||||||
|
return int16(value)
|
||||||
|
case int64:
|
||||||
|
return int16(value)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) GetAttrInt32(id int) int32 {
|
||||||
|
v, exist := slf.attrs.GetExist(id)
|
||||||
|
if !exist {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
switch value := v.(type) {
|
||||||
|
case float32:
|
||||||
|
return int32(value)
|
||||||
|
case float64:
|
||||||
|
return int32(value)
|
||||||
|
case *huge.Int:
|
||||||
|
return int32(value.Int64())
|
||||||
|
case uint:
|
||||||
|
return int32(value)
|
||||||
|
case uint8:
|
||||||
|
return int32(value)
|
||||||
|
case uint16:
|
||||||
|
return int32(value)
|
||||||
|
case uint32:
|
||||||
|
return int32(value)
|
||||||
|
case uint64:
|
||||||
|
return int32(value)
|
||||||
|
case int:
|
||||||
|
return int32(value)
|
||||||
|
case int8:
|
||||||
|
return int32(value)
|
||||||
|
case int16:
|
||||||
|
return int32(value)
|
||||||
|
case int32:
|
||||||
|
return value
|
||||||
|
case int64:
|
||||||
|
return int32(value)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) GetAttrInt64(id int) int64 {
|
||||||
|
v, exist := slf.attrs.GetExist(id)
|
||||||
|
if !exist {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
switch value := v.(type) {
|
||||||
|
case float32:
|
||||||
|
return int64(value)
|
||||||
|
case float64:
|
||||||
|
return int64(value)
|
||||||
|
case *huge.Int:
|
||||||
|
return value.Int64()
|
||||||
|
case uint:
|
||||||
|
return int64(value)
|
||||||
|
case uint8:
|
||||||
|
return int64(value)
|
||||||
|
case uint16:
|
||||||
|
return int64(value)
|
||||||
|
case uint32:
|
||||||
|
return int64(value)
|
||||||
|
case uint64:
|
||||||
|
return int64(value)
|
||||||
|
case int:
|
||||||
|
return int64(value)
|
||||||
|
case int8:
|
||||||
|
return int64(value)
|
||||||
|
case int16:
|
||||||
|
return int64(value)
|
||||||
|
case int32:
|
||||||
|
return int64(value)
|
||||||
|
case int64:
|
||||||
|
return int64(value)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) GetAttrUint(id int) uint {
|
||||||
|
v, exist := slf.attrs.GetExist(id)
|
||||||
|
if !exist {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
switch value := v.(type) {
|
||||||
|
case float32:
|
||||||
|
return uint(value)
|
||||||
|
case float64:
|
||||||
|
return uint(value)
|
||||||
|
case *huge.Int:
|
||||||
|
return uint(value.Int64())
|
||||||
|
case uint:
|
||||||
|
return value
|
||||||
|
case uint8:
|
||||||
|
return uint(value)
|
||||||
|
case uint16:
|
||||||
|
return uint(value)
|
||||||
|
case uint32:
|
||||||
|
return uint(value)
|
||||||
|
case uint64:
|
||||||
|
return uint(value)
|
||||||
|
case int:
|
||||||
|
return uint(value)
|
||||||
|
case int8:
|
||||||
|
return uint(value)
|
||||||
|
case int16:
|
||||||
|
return uint(value)
|
||||||
|
case int32:
|
||||||
|
return uint(value)
|
||||||
|
case int64:
|
||||||
|
return uint(value)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) GetAttrUint8(id int) uint8 {
|
||||||
|
v, exist := slf.attrs.GetExist(id)
|
||||||
|
if !exist {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
switch value := v.(type) {
|
||||||
|
case float32:
|
||||||
|
return uint8(value)
|
||||||
|
case float64:
|
||||||
|
return uint8(value)
|
||||||
|
case *huge.Int:
|
||||||
|
return uint8(value.Int64())
|
||||||
|
case uint:
|
||||||
|
return uint8(value)
|
||||||
|
case uint8:
|
||||||
|
return value
|
||||||
|
case uint16:
|
||||||
|
return uint8(value)
|
||||||
|
case uint32:
|
||||||
|
return uint8(value)
|
||||||
|
case uint64:
|
||||||
|
return uint8(value)
|
||||||
|
case int:
|
||||||
|
return uint8(value)
|
||||||
|
case int8:
|
||||||
|
return uint8(value)
|
||||||
|
case int16:
|
||||||
|
return uint8(value)
|
||||||
|
case int32:
|
||||||
|
return uint8(value)
|
||||||
|
case int64:
|
||||||
|
return uint8(value)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) GetAttrUint16(id int) uint16 {
|
||||||
|
v, exist := slf.attrs.GetExist(id)
|
||||||
|
if !exist {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
switch value := v.(type) {
|
||||||
|
case float32:
|
||||||
|
return uint16(value)
|
||||||
|
case float64:
|
||||||
|
return uint16(value)
|
||||||
|
case *huge.Int:
|
||||||
|
return uint16(value.Int64())
|
||||||
|
case uint:
|
||||||
|
return uint16(value)
|
||||||
|
case uint8:
|
||||||
|
return uint16(value)
|
||||||
|
case uint16:
|
||||||
|
return value
|
||||||
|
case uint32:
|
||||||
|
return uint16(value)
|
||||||
|
case uint64:
|
||||||
|
return uint16(value)
|
||||||
|
case int:
|
||||||
|
return uint16(value)
|
||||||
|
case int8:
|
||||||
|
return uint16(value)
|
||||||
|
case int16:
|
||||||
|
return uint16(value)
|
||||||
|
case int32:
|
||||||
|
return uint16(value)
|
||||||
|
case int64:
|
||||||
|
return uint16(value)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) GetAttrUint32(id int) uint32 {
|
||||||
|
v, exist := slf.attrs.GetExist(id)
|
||||||
|
if !exist {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
switch value := v.(type) {
|
||||||
|
case float32:
|
||||||
|
return uint32(value)
|
||||||
|
case float64:
|
||||||
|
return uint32(value)
|
||||||
|
case *huge.Int:
|
||||||
|
return uint32(value.Int64())
|
||||||
|
case uint:
|
||||||
|
return uint32(value)
|
||||||
|
case uint8:
|
||||||
|
return uint32(value)
|
||||||
|
case uint16:
|
||||||
|
return uint32(value)
|
||||||
|
case uint32:
|
||||||
|
return value
|
||||||
|
case uint64:
|
||||||
|
return uint32(value)
|
||||||
|
case int:
|
||||||
|
return uint32(value)
|
||||||
|
case int8:
|
||||||
|
return uint32(value)
|
||||||
|
case int16:
|
||||||
|
return uint32(value)
|
||||||
|
case int32:
|
||||||
|
return uint32(value)
|
||||||
|
case int64:
|
||||||
|
return uint32(value)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) GetAttrUint64(id int) uint64 {
|
||||||
|
v, exist := slf.attrs.GetExist(id)
|
||||||
|
if !exist {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
switch value := v.(type) {
|
||||||
|
case float32:
|
||||||
|
return uint64(value)
|
||||||
|
case float64:
|
||||||
|
return uint64(value)
|
||||||
|
case *huge.Int:
|
||||||
|
return uint64(value.Int64())
|
||||||
|
case uint:
|
||||||
|
return uint64(value)
|
||||||
|
case uint8:
|
||||||
|
return uint64(value)
|
||||||
|
case uint16:
|
||||||
|
return uint64(value)
|
||||||
|
case uint32:
|
||||||
|
return uint64(value)
|
||||||
|
case uint64:
|
||||||
|
return value
|
||||||
|
case int:
|
||||||
|
return uint64(value)
|
||||||
|
case int8:
|
||||||
|
return uint64(value)
|
||||||
|
case int16:
|
||||||
|
return uint64(value)
|
||||||
|
case int32:
|
||||||
|
return uint64(value)
|
||||||
|
case int64:
|
||||||
|
return uint64(value)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) GetAttrFloat32(id int) float32 {
|
||||||
|
v, exist := slf.attrs.GetExist(id)
|
||||||
|
if !exist {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
switch value := v.(type) {
|
||||||
|
case float32:
|
||||||
|
return value
|
||||||
|
case float64:
|
||||||
|
return float32(value)
|
||||||
|
case *huge.Int:
|
||||||
|
return float32(value.Int64())
|
||||||
|
case uint:
|
||||||
|
return float32(value)
|
||||||
|
case uint8:
|
||||||
|
return float32(value)
|
||||||
|
case uint16:
|
||||||
|
return float32(value)
|
||||||
|
case uint32:
|
||||||
|
return float32(value)
|
||||||
|
case uint64:
|
||||||
|
return float32(value)
|
||||||
|
case int:
|
||||||
|
return float32(value)
|
||||||
|
case int8:
|
||||||
|
return float32(value)
|
||||||
|
case int16:
|
||||||
|
return float32(value)
|
||||||
|
case int32:
|
||||||
|
return float32(value)
|
||||||
|
case int64:
|
||||||
|
return float32(value)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) GetAttrFloat64(id int) float64 {
|
||||||
|
v, exist := slf.attrs.GetExist(id)
|
||||||
|
if !exist {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
switch value := v.(type) {
|
||||||
|
case float32:
|
||||||
|
return float64(value)
|
||||||
|
case float64:
|
||||||
|
return value
|
||||||
|
case *huge.Int:
|
||||||
|
return float64(value.Int64())
|
||||||
|
case uint:
|
||||||
|
return float64(value)
|
||||||
|
case uint8:
|
||||||
|
return float64(value)
|
||||||
|
case uint16:
|
||||||
|
return float64(value)
|
||||||
|
case uint32:
|
||||||
|
return float64(value)
|
||||||
|
case uint64:
|
||||||
|
return float64(value)
|
||||||
|
case int:
|
||||||
|
return float64(value)
|
||||||
|
case int8:
|
||||||
|
return float64(value)
|
||||||
|
case int16:
|
||||||
|
return float64(value)
|
||||||
|
case int32:
|
||||||
|
return float64(value)
|
||||||
|
case int64:
|
||||||
|
return float64(value)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) GetAttrHugeInt(id int) *huge.Int {
|
||||||
|
v, exist := slf.attrs.GetExist(id)
|
||||||
|
if !exist {
|
||||||
|
return huge.IntZero.Copy()
|
||||||
|
}
|
||||||
|
switch value := v.(type) {
|
||||||
|
case float32:
|
||||||
|
return huge.NewInt(int64(value))
|
||||||
|
case float64:
|
||||||
|
return huge.NewInt(int64(value))
|
||||||
|
case *huge.Int:
|
||||||
|
return value.Copy()
|
||||||
|
case uint:
|
||||||
|
return huge.NewInt(int64(value))
|
||||||
|
case uint8:
|
||||||
|
return huge.NewInt(int64(value))
|
||||||
|
case uint16:
|
||||||
|
return huge.NewInt(int64(value))
|
||||||
|
case uint32:
|
||||||
|
return huge.NewInt(int64(value))
|
||||||
|
case uint64:
|
||||||
|
return huge.NewInt(int64(value))
|
||||||
|
case int:
|
||||||
|
return huge.NewInt(int64(value))
|
||||||
|
case int8:
|
||||||
|
return huge.NewInt(int64(value))
|
||||||
|
case int16:
|
||||||
|
return huge.NewInt(int64(value))
|
||||||
|
case int32:
|
||||||
|
return huge.NewInt(int64(value))
|
||||||
|
case int64:
|
||||||
|
return huge.NewInt(value)
|
||||||
|
}
|
||||||
|
return huge.IntZero.Copy()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) ChangeAttrInt(id int, value int) {
|
||||||
|
slf.SetAttrInt(id, slf.GetAttrInt(id)+value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) ChangeAttrInt8(id int, value int8) {
|
||||||
|
slf.SetAttrInt8(id, slf.GetAttrInt8(id)+value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) ChangeAttrInt16(id int, value int16) {
|
||||||
|
slf.SetAttrInt16(id, slf.GetAttrInt16(id)+value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) ChangeAttrInt32(id int, value int32) {
|
||||||
|
slf.SetAttrInt32(id, slf.GetAttrInt32(id)+value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) ChangeAttrInt64(id int, value int64) {
|
||||||
|
slf.SetAttrInt64(id, slf.GetAttrInt64(id)+value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) ChangeAttrUint(id int, value uint) {
|
||||||
|
slf.SetAttrUint(id, slf.GetAttrUint(id)+value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) ChangeAttrUint8(id int, value uint8) {
|
||||||
|
slf.SetAttrUint8(id, slf.GetAttrUint8(id)+value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) ChangeAttrUint16(id int, value uint16) {
|
||||||
|
slf.SetAttrUint16(id, slf.GetAttrUint16(id)+value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) ChangeAttrUint32(id int, value uint32) {
|
||||||
|
slf.SetAttrUint32(id, slf.GetAttrUint32(id)+value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) ChangeAttrUint64(id int, value uint64) {
|
||||||
|
slf.SetAttrUint64(id, slf.GetAttrUint64(id)+value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) ChangeAttrFloat32(id int, value float32) {
|
||||||
|
slf.SetAttrFloat32(id, slf.GetAttrFloat32(id)+value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) ChangeAttrFloat64(id int, value float64) {
|
||||||
|
slf.SetAttrFloat64(id, slf.GetAttrFloat64(id)+value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) ChangeAttrHugeInt(id int, value *huge.Int) {
|
||||||
|
slf.SetAttrHugeInt(id, slf.GetAttrHugeInt(id).Add(value))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) RegAttrChangeEvent(handle game.AttrChangeEventHandle) {
|
||||||
|
slf.attrChangeEventHandles = append(slf.attrChangeEventHandles, handle)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) OnAttrChangeEvent(id int) {
|
||||||
|
for _, handle := range slf.attrChangeEventHandles {
|
||||||
|
handle(id, slf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) RegAttrIdChangeEvent(id int, handle game.AttrChangeEventHandle) {
|
||||||
|
if slf.attrIdChangeEventHandles == nil {
|
||||||
|
slf.attrIdChangeEventHandles = map[int][]game.AttrChangeEventHandle{}
|
||||||
|
}
|
||||||
|
slf.attrIdChangeEventHandles[id] = append(slf.attrIdChangeEventHandles[id], handle)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *Attrs) OnAttrIdChangeEvent(id int) {
|
||||||
|
for _, handle := range slf.attrIdChangeEventHandles[id] {
|
||||||
|
handle(id, slf)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue