``feat(item): 新增物品出售价格属性(SellPrice)并实现物品出售功能,优化宠物面板计算和时区判断逻辑``
This commit is contained in:
@@ -1,23 +0,0 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service/item"
|
||||
"blazing/logic/service/player"
|
||||
)
|
||||
|
||||
func (h Controller) PlayerGoldCount(data *item.GoldOnlineRemainInboundInfo, c *player.Player) (result *item.GoldOnlineRemainOutboundInfo, err errorcode.ErrorCode) {
|
||||
|
||||
return &item.GoldOnlineRemainOutboundInfo{
|
||||
|
||||
GoldNumber: c.User.GetGold(uint(c.Info.UserID)),
|
||||
Coin: c.Info.Coins,
|
||||
}, 0
|
||||
}
|
||||
func (h Controller) PlayerExp(data *item.ExpTotalRemainInboundInfo, c *player.Player) (result *item.ExpTotalRemainOutboundInfo, err errorcode.ErrorCode) {
|
||||
|
||||
return &item.ExpTotalRemainOutboundInfo{
|
||||
|
||||
TotalExp: uint32(c.Info.ExpPool),
|
||||
}, 0
|
||||
}
|
||||
21
logic/controller/item_sale.go
Normal file
21
logic/controller/item_sale.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"blazing/common/data/xmlres"
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service/fight"
|
||||
"blazing/logic/service/item"
|
||||
"blazing/logic/service/player"
|
||||
)
|
||||
|
||||
func (h Controller) ITEM_SALE(data *item.C2S_ITEM_SALE, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||
if c.Service.Item.CheakItem(data.ItemId) < data.Amount {
|
||||
return nil, errorcode.ErrorCodes.ErrSystemError
|
||||
}
|
||||
|
||||
if xmlres.ItemsMAP[int(data.ItemId)].SellPrice != 0 {
|
||||
c.Info.Coins += uint32(int64(data.Amount) * int64(xmlres.ItemsMAP[int(data.ItemId)].SellPrice))
|
||||
|
||||
}
|
||||
return result, 0
|
||||
}
|
||||
@@ -11,7 +11,6 @@ import (
|
||||
|
||||
"blazing/logic/service/player"
|
||||
"blazing/logic/service/space"
|
||||
"blazing/modules/base/service"
|
||||
blservice "blazing/modules/blazing/service"
|
||||
"context"
|
||||
"time"
|
||||
@@ -19,16 +18,6 @@ import (
|
||||
"github.com/panjf2000/gnet/v2"
|
||||
)
|
||||
|
||||
func IsToday(t time.Time) bool {
|
||||
// 获取当前时间
|
||||
now := time.Now()
|
||||
|
||||
// 比较年、月、日是否相同
|
||||
return t.Year() == now.Year() &&
|
||||
t.Month() == now.Month() &&
|
||||
t.Day() == now.Day()
|
||||
}
|
||||
|
||||
// 处理命令: 1001
|
||||
func (h *Controller) Login(data *user.MAIN_LOGIN_IN, c gnet.Conn) (result *user.LoginMSInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
tt := data.CheakSession()
|
||||
@@ -38,15 +27,13 @@ func (h *Controller) Login(data *user.MAIN_LOGIN_IN, c gnet.Conn) (result *user.
|
||||
return
|
||||
}
|
||||
|
||||
cool.Loger.Info(context.TODO(), "准备踢人")
|
||||
err1 := h.RPCClient.Kick(data.Head.UserID) //先踢人
|
||||
if err1 != nil {
|
||||
fmt.Println("踢人失败", err)
|
||||
}
|
||||
//player.KickPlayer(data.Head.UserID)
|
||||
|
||||
cool.Loger.Info(context.TODO(), "踢人请求完成,继续登录流程")
|
||||
|
||||
// <-time.After(time.Millisecond * 3000)
|
||||
share.ShareManager.SetUserOnline(data.Head.UserID, h.Port) //设置用户登录服务器
|
||||
t := player.GetPlayer(c, data.Head.UserID)
|
||||
if t == nil {
|
||||
@@ -56,7 +43,7 @@ func (h *Controller) Login(data *user.MAIN_LOGIN_IN, c gnet.Conn) (result *user.
|
||||
return
|
||||
}
|
||||
t.Service = blservice.NewUserService(data.Head.UserID)
|
||||
t.User = service.NewBaseSysUserService()
|
||||
|
||||
t.Info = t.Service.Info.Personself()
|
||||
|
||||
if t.Info == nil {
|
||||
@@ -65,6 +52,7 @@ func (h *Controller) Login(data *user.MAIN_LOGIN_IN, c gnet.Conn) (result *user.
|
||||
}
|
||||
t.Info.UserID = data.Head.UserID
|
||||
t.Logintime = uint32(time.Now().Unix()) //保存时间戳
|
||||
|
||||
|
||||
t.CompleteLogin() //通知客户端登录成功
|
||||
|
||||
@@ -6,15 +6,15 @@ import (
|
||||
|
||||
"blazing/logic/service/fight"
|
||||
"blazing/logic/service/maphot"
|
||||
"blazing/logic/service/maps"
|
||||
"blazing/logic/service/maps/info"
|
||||
"blazing/logic/service/space/info"
|
||||
|
||||
"blazing/logic/service/player"
|
||||
"blazing/logic/service/space"
|
||||
|
||||
"github.com/jinzhu/copier"
|
||||
)
|
||||
|
||||
func (h *Controller) MapEnter(data *maps.InInfo, c *player.Player) (result *info.OutInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
func (h *Controller) MapEnter(data *space.InInfo, c *player.Player) (result *info.OutInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
|
||||
c.Info.MapID = data.MapId //登录地图
|
||||
c.GetSpace().User.Store(c.Info.UserID, c) //添加玩家
|
||||
@@ -36,7 +36,7 @@ func (h Controller) MapHot(data *maphot.InInfo, c *player.Player) (result *mapho
|
||||
|
||||
return
|
||||
}
|
||||
func (h *Controller) MapLeave(data *maps.LeaveMapInboundInfo, c *player.Player) (result *info.LeaveMapOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
func (h *Controller) MapLeave(data *space.LeaveMapInboundInfo, c *player.Player) (result *info.LeaveMapOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
|
||||
//data.Broadcast(c.Info.MapID, info.LeaveMapOutboundInfo{UserID: c.Info.UserID}) //同步广播
|
||||
result = &info.LeaveMapOutboundInfo{
|
||||
@@ -49,7 +49,7 @@ func (h *Controller) MapLeave(data *maps.LeaveMapInboundInfo, c *player.Player)
|
||||
//c.Info.MapID = 0 // 重置当前地图
|
||||
return
|
||||
}
|
||||
func (h *Controller) MapList(data *maps.ListMapPlayerInboundInfo, c *player.Player) (result *info.ListMapPlayerOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
func (h *Controller) MapList(data *space.ListMapPlayerInboundInfo, c *player.Player) (result *info.ListMapPlayerOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
atomic.StoreUint32(&c.Canmon, 2)
|
||||
|
||||
result = &info.ListMapPlayerOutboundInfo{
|
||||
@@ -58,7 +58,7 @@ func (h *Controller) MapList(data *maps.ListMapPlayerInboundInfo, c *player.Play
|
||||
|
||||
return
|
||||
}
|
||||
func (h *Controller) Attack_Boss(data *maps.AttackBossInboundInfo, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
func (h *Controller) Attack_Boss(data *space.AttackBossInboundInfo, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
|
||||
if atomic.LoadInt32(&c.GetSpace().MapBossInfo.Hp) > 0 {
|
||||
atomic.AddInt32(&c.GetSpace().MapBossInfo.Hp, -1)
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"github.com/jinzhu/copier"
|
||||
)
|
||||
|
||||
// 处理命令: 105
|
||||
|
||||
func (h *Controller) NonoFollowOrHome(data *nono.NonoFollowOrHomeInInfo, c *player.Player) (result *nono.NonoFollowOutInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
c.Info.NONO.Flag = data.Flag
|
||||
result = &nono.NonoFollowOutInfo{
|
||||
|
||||
@@ -237,6 +237,7 @@ func (h Controller) SetPetExp(data *pet.PetSetExpInboundInfo, c *player.Player)
|
||||
}, 0
|
||||
}
|
||||
|
||||
//精灵图鉴
|
||||
func (h Controller) PetBargeList(data *pet.PetBargeListInboundInfo, c *player.Player) (result *pet.PetBargeListOutboundInfo, err errorcode.ErrorCode) {
|
||||
|
||||
return &pet.PetBargeListOutboundInfo{
|
||||
@@ -8,34 +8,8 @@ import (
|
||||
"blazing/logic/service/player"
|
||||
"blazing/logic/service/user"
|
||||
"blazing/modules/blazing/model"
|
||||
|
||||
"github.com/jinzhu/copier"
|
||||
)
|
||||
|
||||
// UserSimInfo 根据用户ID获取模拟用户信息
|
||||
// data: 包含用户ID的输入信息
|
||||
// c: 玩家对象
|
||||
// 返回: 模拟用户信息及错误码
|
||||
func (h Controller) UserSimInfo(data *user.SimUserInfoInboundInfo, c *player.Player) (result *user.SimUserInfoOutboundInfo, err errorcode.ErrorCode) {
|
||||
ret := &user.SimUserInfoOutboundInfo{}
|
||||
|
||||
copier.Copy(ret, c.Service.Info.Person(data.UserId))
|
||||
return ret, 0
|
||||
}
|
||||
|
||||
// UserMoreInfo 获取用户的更多信息。
|
||||
// data: 包含用户ID的输入信息。
|
||||
// c: 当前玩家对象。
|
||||
// 返回: 包含用户更多信息的输出结果和错误码。
|
||||
func (h Controller) UserMoreInfo(data *user.MoreUserInfoInboundInfo, c *player.Player) (result *user.MoreUserInfoOutboundInfo, err errorcode.ErrorCode) {
|
||||
ret := &user.MoreUserInfoOutboundInfo{}
|
||||
info := c.Service.Info.Person(data.UserId)
|
||||
copier.CopyWithOption(ret, info, copier.Option{IgnoreEmpty: true, DeepCopy: true})
|
||||
|
||||
//todo 待实现
|
||||
return ret, 0
|
||||
}
|
||||
|
||||
// 射击
|
||||
func (h Controller) Aimat(data *user.AimatInboundInfo, c *player.Player) (result *user.AimatOutboundInfo, err errorcode.ErrorCode) {
|
||||
result = &user.AimatOutboundInfo{
|
||||
50
logic/controller/user_info.go
Normal file
50
logic/controller/user_info.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service/item"
|
||||
"blazing/logic/service/player"
|
||||
"blazing/logic/service/user"
|
||||
|
||||
"github.com/jinzhu/copier"
|
||||
)
|
||||
|
||||
// UserSimInfo 根据用户ID获取模拟用户信息
|
||||
// data: 包含用户ID的输入信息
|
||||
// c: 玩家对象
|
||||
// 返回: 模拟用户信息及错误码
|
||||
func (h Controller) UserSimInfo(data *user.SimUserInfoInboundInfo, c *player.Player) (result *user.SimUserInfoOutboundInfo, err errorcode.ErrorCode) {
|
||||
ret := &user.SimUserInfoOutboundInfo{}
|
||||
|
||||
copier.Copy(ret, c.Service.Info.Person(data.UserId))
|
||||
return ret, 0
|
||||
}
|
||||
|
||||
// UserMoreInfo 获取用户的更多信息。
|
||||
// data: 包含用户ID的输入信息。
|
||||
// c: 当前玩家对象。
|
||||
// 返回: 包含用户更多信息的输出结果和错误码。
|
||||
func (h Controller) UserMoreInfo(data *user.MoreUserInfoInboundInfo, c *player.Player) (result *user.MoreUserInfoOutboundInfo, err errorcode.ErrorCode) {
|
||||
ret := &user.MoreUserInfoOutboundInfo{}
|
||||
info := c.Service.Info.Person(data.UserId)
|
||||
copier.CopyWithOption(ret, info, copier.Option{IgnoreEmpty: true, DeepCopy: true})
|
||||
|
||||
//todo 待实现
|
||||
return ret, 0
|
||||
}
|
||||
|
||||
func (h Controller) PlayerGoldCount(data *item.GoldOnlineRemainInboundInfo, c *player.Player) (result *item.GoldOnlineRemainOutboundInfo, err errorcode.ErrorCode) {
|
||||
|
||||
return &item.GoldOnlineRemainOutboundInfo{
|
||||
|
||||
GoldNumber: c.User.GetGold(uint(c.Info.UserID)),
|
||||
Coin: c.Info.Coins,
|
||||
}, 0
|
||||
}
|
||||
func (h Controller) PlayerExp(data *item.ExpTotalRemainInboundInfo, c *player.Player) (result *item.ExpTotalRemainOutboundInfo, err errorcode.ErrorCode) {
|
||||
|
||||
return &item.ExpTotalRemainOutboundInfo{
|
||||
|
||||
TotalExp: uint32(c.Info.ExpPool),
|
||||
}, 0
|
||||
}
|
||||
@@ -2,12 +2,12 @@ package controller
|
||||
|
||||
import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service/maps"
|
||||
"blazing/logic/service/maps/info"
|
||||
"blazing/logic/service/player"
|
||||
"blazing/logic/service/space"
|
||||
"blazing/logic/service/space/info"
|
||||
)
|
||||
|
||||
func (h Controller) Walk(data *maps.WalkInInfo, c *player.Player) (result *info.WalkOutInfo, err errorcode.ErrorCode) {
|
||||
func (h Controller) Walk(data *space.WalkInInfo, c *player.Player) (result *info.WalkOutInfo, err errorcode.ErrorCode) {
|
||||
result = &info.WalkOutInfo{
|
||||
Flag: data.Flag,
|
||||
Point: data.Point,
|
||||
|
||||
Reference in New Issue
Block a user