mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-09-26 10:16:14 +00:00
提交
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package cn.jisol.game.controller.game;
|
||||
|
||||
import cn.jisol.game.controller.argsresolver.CurrentPlayer;
|
||||
import cn.jisol.game.data.ResourceId;
|
||||
import cn.jisol.game.data.TD;
|
||||
import cn.jisol.game.entity.table.Player;
|
||||
import cn.jisol.game.entity.table.PlayerPet;
|
||||
@@ -8,7 +9,6 @@ import cn.jisol.game.service.PlayerPetService;
|
||||
import cn.jisol.game.service.ResourceService;
|
||||
import cn.jisol.game.vo.news.NewsResource;
|
||||
import cn.jisol.game.vo.news.ov.ResourceUpdateOV;
|
||||
import cn.jisol.game.vo.pet.PetUpStarOV;
|
||||
import cn.jisol.ngame.util.NewsContext;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import io.swagger.annotations.Api;
|
||||
@@ -23,6 +23,8 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static java.awt.SystemColor.info;
|
||||
|
||||
/**
|
||||
* 玩家宠物
|
||||
*/
|
||||
@@ -54,43 +56,30 @@ public class GPlayerPetController {
|
||||
//提升宠物星
|
||||
@ApiImplicitParams({})
|
||||
@ApiOperation(value = "提升宠物星")
|
||||
@PostMapping("/up/star")
|
||||
@PostMapping("/up/star/{petId}/{num}")
|
||||
@Transactional
|
||||
public NewsResource<PlayerPet> onUpStar(@RequestBody PetUpStarOV info, @CurrentPlayer Player player){
|
||||
public NewsResource<PlayerPet> onUpStar(@CurrentPlayer Player player, @PathVariable String petId, @PathVariable Integer num){
|
||||
|
||||
//判断参数
|
||||
if(info.getPets().size() <= 0 || Objects.isNull(info.getPetId())){
|
||||
if(Objects.isNull(num) || num <= 0 || Objects.isNull(petId)){
|
||||
return NewsResource.onFail("参数错误");
|
||||
}
|
||||
|
||||
//查询被合成的宠物列表
|
||||
//合成数量
|
||||
long petCount = playerPetService.count(
|
||||
Wrappers.lambdaQuery(PlayerPet.class)
|
||||
.eq(PlayerPet::getPetPlayerId, player.getPlayerId())
|
||||
.and(qr -> {
|
||||
//遍历被合成的宠物
|
||||
info.getPets().forEach(petId -> {
|
||||
qr.eq(PlayerPet::getPetId, petId);
|
||||
qr.or();
|
||||
});
|
||||
})
|
||||
);
|
||||
|
||||
if(info.getPets().size() != petCount){
|
||||
return NewsResource.onFail("合成宠物信息错误");
|
||||
}
|
||||
//整理刷新数据
|
||||
ArrayList<ResourceUpdateOV> resources = new ArrayList<>();
|
||||
|
||||
//查询被升级的宠物
|
||||
PlayerPet pet = playerPetService.getById(info.getPetId());
|
||||
PlayerPet pet = playerPetService.getById(petId);
|
||||
|
||||
//判断宠物是否是自己的
|
||||
if(!Objects.equals(pet.getPetPlayerId(), player.getPlayerId())){
|
||||
return NewsResource.onFail("宠物不是自己的");
|
||||
}
|
||||
|
||||
//扣除魂
|
||||
resources.add(ResourceUpdateOV.onUpdate(resourceService.addResourceValue(player.getPlayerId(), ResourceId.Q1S.id, (long) -num)));
|
||||
|
||||
//升级星
|
||||
pet.setPetStarExp(pet.getPetStarExp() + info.getPets().size());
|
||||
pet.setPetStarExp(pet.getPetStarExp() + num);
|
||||
|
||||
//判断是否可以升下一星 如果可以则 升
|
||||
int upStarExp;
|
||||
@@ -104,56 +93,11 @@ public class GPlayerPetController {
|
||||
//保存宠物信息 (保存失败则重试)
|
||||
if(!playerPetService.updateById(pet)) throw new RetryException("");
|
||||
|
||||
//删除被合成的宠物
|
||||
playerPetService.removeByIds(info.getPets());
|
||||
|
||||
//整理刷新数据
|
||||
ArrayList<ResourceUpdateOV> resources = new ArrayList<>();
|
||||
//刷新宠物
|
||||
resources.add(ResourceUpdateOV.onPet(ResourceUpdateOV.ResourceUpdateType.UPDATE,pet));
|
||||
//删除被合成的宠物
|
||||
info.getPets().forEach(item -> {
|
||||
resources.add(ResourceUpdateOV.onPet(ResourceUpdateOV.ResourceUpdateType.MINUS,PlayerPet.builder().petId(new Long(item)).build()));
|
||||
});
|
||||
|
||||
return NewsResource.onSuccess("升星成功",null, resources.toArray(new ResourceUpdateOV[0]));
|
||||
|
||||
}
|
||||
|
||||
// //提升宠物等级
|
||||
// @ApiImplicitParams({})
|
||||
// @ApiOperation(value = "提升宠物等级")
|
||||
// @PostMapping("/up/level/{petId}")
|
||||
// @Transactional
|
||||
// public NewsResource<PlayerPet> onUpLevel(@PathVariable Integer petId, @CurrentPlayer Player player){
|
||||
//
|
||||
//
|
||||
// //获取需要升级的宠物
|
||||
// PlayerPet pet = playerPetService.getById(petId);
|
||||
// if(Objects.isNull(pet) || !Objects.equals(pet.getPetPlayerId(), player.getPlayerId())){
|
||||
// return NewsResource.onFail("你未拥有这个宠物");
|
||||
// }
|
||||
//
|
||||
// TbGRoleUpLevel resource = TD.DATA.getTbGRoleUpLevel().get(pet.getPetLevel() + 1);
|
||||
//
|
||||
// if(Objects.isNull(resource)) return NewsResource.onFail("无法升级");
|
||||
//
|
||||
// //星级不够则 无法升级
|
||||
// if(pet.getPetStar() * 10 <= pet.getPetLevel()){
|
||||
// return NewsResource.onFail("突破星级 可升级");
|
||||
// }
|
||||
// //扣除玩家材料
|
||||
// ArrayList<ResourceUpdateOV> resources = new ArrayList<>(resourceService.deduct(player, resource.materials));
|
||||
//
|
||||
// //升级
|
||||
// pet.setPetLevel(pet.getPetLevel() + 1);
|
||||
//
|
||||
// //保存
|
||||
// if(!playerPetService.updateById(pet)) throw new RetryException("");
|
||||
// resources.add(ResourceUpdateOV.onPet(ResourceUpdateOV.ResourceUpdateType.UPDATE,pet)); //刷新宠物
|
||||
//
|
||||
// return NewsResource.onSuccess("升级成功",pet,resources.toArray(new ResourceUpdateOV[0]));
|
||||
//
|
||||
// }
|
||||
|
||||
}
|
||||
|
@@ -22,6 +22,7 @@ import cn.jisol.game.vo.mode.ModeOnHookRankingOV;
|
||||
import cn.jisol.game.vo.news.NewsResource;
|
||||
import cn.jisol.game.vo.news.ov.ResourceUpdateOV;
|
||||
import cn.jisol.ngame.util.NewsContext;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -228,7 +229,7 @@ public class GOnHookController {
|
||||
@ApiImplicitParams({})
|
||||
@ApiOperation(value = "捕捉野怪")
|
||||
@PostMapping("/onCatchCreeps/{creepId}")
|
||||
public NewsContext<PlayerPet> onCatchCreeps(@PathVariable String creepId,@CurrentPlayer Player player){
|
||||
public NewsResource<Boolean> onCatchCreeps(@PathVariable String creepId,@CurrentPlayer Player player){
|
||||
|
||||
//(目前测试阶段 捕捉概率 100%)
|
||||
|
||||
@@ -238,22 +239,22 @@ public class GOnHookController {
|
||||
//如果没有则生成类
|
||||
if(Objects.isNull(creeps)){
|
||||
CREEPS.put(player.getPlayerId(),creeps = new HashMap<>());
|
||||
return NewsContext.onFail("捕捉失败");
|
||||
return NewsResource.onFail("捕捉失败",false);
|
||||
}
|
||||
|
||||
GOnHookMessage.GOnHookPet onHookPet;
|
||||
if(Objects.isNull(onHookPet = creeps.remove(creepId))){
|
||||
return NewsContext.onFail("捕捉失败");
|
||||
return NewsResource.onFail("捕捉失败",false);
|
||||
}
|
||||
|
||||
//捕捉
|
||||
PlayerPet pet = PlayerPet.builder().petPlayerId(player.getPlayerId()).petTbId(onHookPet.getPetTbId()).build();
|
||||
if(playerPetService.save(pet)){
|
||||
return NewsContext.onSuccess("捕捉成功",pet);
|
||||
ResourceUpdateOV ov = playerPetService.addPlayerPet(player, pet);
|
||||
if (Objects.nonNull(ov)){
|
||||
return NewsResource.onSuccess("捕捉成功",true,ov);
|
||||
}else{
|
||||
return NewsContext.onFail("捕捉失败");
|
||||
return NewsResource.onSuccess("捕捉失败",false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//排行榜
|
||||
|
@@ -8,6 +8,12 @@ public enum ResourceId {
|
||||
ForgedStones(90002),
|
||||
//加速卷
|
||||
SpeedUp(90003),
|
||||
//钥匙:金币副本
|
||||
DungeonGold(90004),
|
||||
//钥匙:锻造石副本
|
||||
DungeonForgedStones(90005),
|
||||
//魂:一品宠物魂
|
||||
Q1S(90006),
|
||||
;
|
||||
|
||||
public int id;
|
||||
|
@@ -1,8 +1,13 @@
|
||||
package cn.jisol.game.service;
|
||||
|
||||
import cn.jisol.game.entity.table.Player;
|
||||
import cn.jisol.game.entity.table.PlayerPet;
|
||||
import cn.jisol.game.vo.news.ov.ResourceUpdateOV;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
public interface PlayerPetService extends IService<PlayerPet> {
|
||||
|
||||
//给指定的玩家添加宠物
|
||||
ResourceUpdateOV addPlayerPet(Player player, PlayerPet pet);
|
||||
|
||||
}
|
||||
|
@@ -1,12 +1,40 @@
|
||||
package cn.jisol.game.service.impl;
|
||||
|
||||
import cn.jisol.game.data.ResourceId;
|
||||
import cn.jisol.game.entity.table.Player;
|
||||
import cn.jisol.game.entity.table.PlayerPet;
|
||||
import cn.jisol.game.entity.table.Resource;
|
||||
import cn.jisol.game.mapper.PlayerPetMapper;
|
||||
import cn.jisol.game.service.PlayerPetService;
|
||||
import cn.jisol.game.service.ResourceService;
|
||||
import cn.jisol.game.vo.news.ov.ResourceUpdateOV;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class PlayerPetServiceImpl extends ServiceImpl<PlayerPetMapper, PlayerPet> implements PlayerPetService {
|
||||
|
||||
@Autowired
|
||||
ResourceService resourceService;
|
||||
|
||||
@Override
|
||||
public ResourceUpdateOV addPlayerPet(Player player, PlayerPet pet) {
|
||||
|
||||
//是否有这个宠物
|
||||
long count = this.count(Wrappers.lambdaQuery(PlayerPet.class)
|
||||
.eq(PlayerPet::getPetPlayerId,player.getPlayerId())
|
||||
.eq(PlayerPet::getPetTbId,pet.getPetTbId()));
|
||||
|
||||
if(count > 0){
|
||||
//如果有这个宠物则转换成材料
|
||||
return ResourceUpdateOV.onUpdate(resourceService.addResourceValue(player.getPlayerId(),ResourceId.Q1S.id, 1L));
|
||||
}else{
|
||||
if (this.save(pet)){
|
||||
return ResourceUpdateOV.onPet(ResourceUpdateOV.ResourceUpdateType.ADD,pet);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,21 +0,0 @@
|
||||
package cn.jisol.game.vo.pet;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@ApiModel(value = "升星请求体")
|
||||
@Builder
|
||||
@Data
|
||||
public class PetUpStarOV {
|
||||
|
||||
@ApiModelProperty(value = "需要升级的宠物Id", required = true)
|
||||
private Integer petId;
|
||||
|
||||
@ApiModelProperty(value = "被吸收的宠物列表", required = true)
|
||||
ArrayList<Integer> pets;
|
||||
|
||||
}
|
@@ -28,5 +28,11 @@
|
||||
"name": "钥匙:锻造石副本",
|
||||
"tig": "锻造石副本的钥匙",
|
||||
"args": ""
|
||||
},
|
||||
{
|
||||
"id": 90006,
|
||||
"name": "魂:一品宠物魂",
|
||||
"tig": "用于宠物升星",
|
||||
"args": ""
|
||||
}
|
||||
]
|
@@ -38,5 +38,85 @@
|
||||
{
|
||||
"grade": 10,
|
||||
"merge": 512
|
||||
},
|
||||
{
|
||||
"grade": 11,
|
||||
"merge": 1024
|
||||
},
|
||||
{
|
||||
"grade": 12,
|
||||
"merge": 2048
|
||||
},
|
||||
{
|
||||
"grade": 13,
|
||||
"merge": 4096
|
||||
},
|
||||
{
|
||||
"grade": 14,
|
||||
"merge": 8192
|
||||
},
|
||||
{
|
||||
"grade": 15,
|
||||
"merge": 16384
|
||||
},
|
||||
{
|
||||
"grade": 16,
|
||||
"merge": 32768
|
||||
},
|
||||
{
|
||||
"grade": 17,
|
||||
"merge": 65536
|
||||
},
|
||||
{
|
||||
"grade": 18,
|
||||
"merge": 131072
|
||||
},
|
||||
{
|
||||
"grade": 19,
|
||||
"merge": 262144
|
||||
},
|
||||
{
|
||||
"grade": 20,
|
||||
"merge": 524288
|
||||
},
|
||||
{
|
||||
"grade": 21,
|
||||
"merge": 1048576
|
||||
},
|
||||
{
|
||||
"grade": 22,
|
||||
"merge": 2097152
|
||||
},
|
||||
{
|
||||
"grade": 23,
|
||||
"merge": 4194304
|
||||
},
|
||||
{
|
||||
"grade": 24,
|
||||
"merge": 8388608
|
||||
},
|
||||
{
|
||||
"grade": 25,
|
||||
"merge": 16777216
|
||||
},
|
||||
{
|
||||
"grade": 26,
|
||||
"merge": 33554432
|
||||
},
|
||||
{
|
||||
"grade": 27,
|
||||
"merge": 67108864
|
||||
},
|
||||
{
|
||||
"grade": 28,
|
||||
"merge": 134217728
|
||||
},
|
||||
{
|
||||
"grade": 29,
|
||||
"merge": 268435456
|
||||
},
|
||||
{
|
||||
"grade": 30,
|
||||
"merge": 536870912
|
||||
}
|
||||
]
|
Reference in New Issue
Block a user