GmAction.go 1.88 KB
// GM系统API
package gmaction

import (
	"pro2d/models"
	"pro2d/pb"
	"strconv"
)

type GmAction struct{}

// GMParams GM系统API请求参数的基础类型
type GMParams map[string]string

/*
AddExp 增加经验
 exp 增加经验数量
*/
func (gm *GmAction) AddExp(role *models.RoleModel, params GMParams) {
	expIncrease, _ := strconv.Atoi(params["exp"])
	exp := role.IncrProperty("exp", int64(expIncrease))
	role.UpdateProperty("exp", exp, true)
}

/*
AddEquip 添加装备
 id: 装备id
*/
func (gm *GmAction) AddEquip(role *models.RoleModel, params GMParams) {
	//TODO 验证装备是否存在
	id := params["id"]
	tbId, _ := strconv.Atoi(id)

	equip := &pb.Equipment{
		Id:      role.IncreEquipByKey(1),
		RoleId:  role.Data.Id,
		TbId:    int32(tbId),
		Quality: 1,
	}
	role.AddEquip(equip)
}

/*
AddItem 添加物品
 id: 物品id
 count: 物品数量
*/
func (gm *GmAction) AddItem(role *models.RoleModel, params GMParams) {
	id := params["id"]
	count, _ := strconv.Atoi(params["count"])
	role.AddItem(id, int32(count))
}

/*
UpdatePackLimit 更新背包限制
	clotheslimit: 服饰限制数
	weaponslimit: 武器限制数
	jewelrylimit: 首饰限制数
	materiallimit: 材料限制数
	otherlimit: 其他限制数
*/
func (gm *GmAction) UpdatePackLimit(role *models.RoleModel, params GMParams) {
	update := make(map[string]interface{}, 5)
	c, ok := params["clotheslimit"]
	if ok {
		l, _ := strconv.Atoi(c)
		update["clotheslimit"] = uint32(l)
	}
	w, ok := params["weaponslimit"]
	if ok {
		l, _ := strconv.Atoi(w)
		update["weaponslimit"] = uint32(l)
	}
	o, ok := params["otherlimit"]
	if ok {
		l, _ := strconv.Atoi(o)
		update["otherlimit"] = uint32(l)
	}

	o, ok = params["jewelrylimit"]
	if ok {
		l, _ := strconv.Atoi(o)
		update["jewelrylimit"] = uint32(l)
	}

	o, ok = params["materiallimit"]
	if ok {
		l, _ := strconv.Atoi(o)
		update["materiallimit"] = uint32(l)
	}

	role.UpdateProperties(update, true)
}