修改非空断言可能会导致的崩溃错误
This commit is contained in:
@@ -36,6 +36,7 @@ class GameManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
claculateRanking(aPlayers) {
|
claculateRanking(aPlayers) {
|
||||||
|
var _a, _b;
|
||||||
let sortPlayers = [];
|
let sortPlayers = [];
|
||||||
for (const player of aPlayers.values()) {
|
for (const player of aPlayers.values()) {
|
||||||
if (player.mHp <= 0) {
|
if (player.mHp <= 0) {
|
||||||
@@ -51,21 +52,23 @@ class GameManager {
|
|||||||
if (sortPlayers[i].mCharacterName != "") {
|
if (sortPlayers[i].mCharacterName != "") {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
let characterName = this.mCharacterNames.pop();
|
let characterName = (_a = this.mCharacterNames.pop()) !== null && _a !== void 0 ? _a : "";
|
||||||
sortPlayers[i].mCharacterName = characterName;
|
sortPlayers[i].mCharacterName = characterName;
|
||||||
if (characterName == "飞鸟千寻") {
|
if (characterName == "飞鸟千寻") {
|
||||||
let player = aPlayers.get(sortPlayers[i].mCurrentEnemy);
|
let player = aPlayers.get(sortPlayers[i].mCurrentEnemy);
|
||||||
|
if (player) {
|
||||||
player.mCharacterName = "高桥林佑";
|
player.mCharacterName = "高桥林佑";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
//计算最后一个存活玩家的排名
|
//计算最后一个存活玩家的排名
|
||||||
if (this.mAlivePlayerCount == 1) {
|
if (this.mAlivePlayerCount == 1) {
|
||||||
for (const player of aPlayers.values()) {
|
for (const player of aPlayers.values()) {
|
||||||
if (player.mHp > 0) {
|
if (player.mHp > 0) {
|
||||||
player.mRank = 1;
|
player.mRank = 1;
|
||||||
if (this.mCharacterNames.length > 0) {
|
if (this.mCharacterNames.length > 0) {
|
||||||
player.mCharacterName = this.mCharacterNames.pop();
|
player.mCharacterName = (_b = this.mCharacterNames.pop()) !== null && _b !== void 0 ? _b : "";
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -73,22 +76,30 @@ class GameManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
calcuteGameFightResult() {
|
calcuteGameFightResult() {
|
||||||
|
var _a;
|
||||||
let temp = new Map(this.mGameFightPlayer);
|
let temp = new Map(this.mGameFightPlayer);
|
||||||
let restRound = null;
|
let restRound = null;
|
||||||
while (temp.size > 0) {
|
while (temp.size > 0) {
|
||||||
const iterator = temp.keys();
|
const iterator = temp.keys();
|
||||||
const playerID = iterator.next().value;
|
const playerID = (_a = iterator.next().value) !== null && _a !== void 0 ? _a : "";
|
||||||
let player = temp.get(playerID);
|
let player = temp.get(playerID);
|
||||||
if (!player) {
|
if (!player) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (player.mIsResting) {
|
if (player.mIsResting) {
|
||||||
restRound = [player, this.mGameFightPlayer.get(player.mCurrentEnemy)],
|
let enemy = this.mGameFightPlayer.get(player.mCurrentEnemy);
|
||||||
|
if (!enemy) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
restRound = [player, enemy],
|
||||||
temp.delete(playerID);
|
temp.delete(playerID);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
let enemy = temp.get(player.mCurrentEnemy);
|
let enemy = temp.get(player.mCurrentEnemy);
|
||||||
|
if (!enemy) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (player.mAgile >= enemy.mAgile) //palyer 敏捷高
|
if (player.mAgile >= enemy.mAgile) //palyer 敏捷高
|
||||||
{
|
{
|
||||||
this.claculatePlayerHp(player, enemy);
|
this.claculatePlayerHp(player, enemy);
|
||||||
|
@@ -68,15 +68,18 @@ export class GameManager
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
let characterName = this.mCharacterNames.pop()!;
|
let characterName = this.mCharacterNames.pop() ?? "";
|
||||||
sortPlayers[i].mCharacterName = characterName;
|
sortPlayers[i].mCharacterName = characterName;
|
||||||
if(characterName == "飞鸟千寻")
|
if(characterName == "飞鸟千寻")
|
||||||
{
|
{
|
||||||
let player = aPlayers.get(sortPlayers[i].mCurrentEnemy)!;
|
let player = aPlayers.get(sortPlayers[i].mCurrentEnemy);
|
||||||
|
if(player)
|
||||||
|
{
|
||||||
player.mCharacterName = "高桥林佑";
|
player.mCharacterName = "高桥林佑";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
//计算最后一个存活玩家的排名
|
//计算最后一个存活玩家的排名
|
||||||
if(this.mAlivePlayerCount == 1)
|
if(this.mAlivePlayerCount == 1)
|
||||||
{
|
{
|
||||||
@@ -87,7 +90,7 @@ export class GameManager
|
|||||||
player.mRank = 1;
|
player.mRank = 1;
|
||||||
if(this.mCharacterNames.length > 0)
|
if(this.mCharacterNames.length > 0)
|
||||||
{
|
{
|
||||||
player.mCharacterName = this.mCharacterNames.pop()!;
|
player.mCharacterName = this.mCharacterNames.pop() ?? "";
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -102,7 +105,7 @@ export class GameManager
|
|||||||
while (temp.size > 0)
|
while (temp.size > 0)
|
||||||
{
|
{
|
||||||
const iterator = temp.keys();
|
const iterator = temp.keys();
|
||||||
const playerID = iterator.next().value!;
|
const playerID = iterator.next().value ?? "";
|
||||||
let player = temp.get(playerID);
|
let player = temp.get(playerID);
|
||||||
if(!player)
|
if(!player)
|
||||||
{
|
{
|
||||||
@@ -110,13 +113,22 @@ export class GameManager
|
|||||||
}
|
}
|
||||||
if(player.mIsResting)
|
if(player.mIsResting)
|
||||||
{
|
{
|
||||||
restRound = [player, this.mGameFightPlayer.get(player.mCurrentEnemy)!],
|
let enemy = this.mGameFightPlayer.get(player.mCurrentEnemy);
|
||||||
|
if(!enemy)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
restRound = [player, enemy],
|
||||||
temp.delete(playerID);
|
temp.delete(playerID);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
let enemy = temp.get(player.mCurrentEnemy)!;
|
let enemy = temp.get(player.mCurrentEnemy);
|
||||||
|
if(!enemy)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
if(player.mAgile >= enemy.mAgile)//palyer 敏捷高
|
if(player.mAgile >= enemy.mAgile)//palyer 敏捷高
|
||||||
{
|
{
|
||||||
this.claculatePlayerHp(player, enemy);
|
this.claculatePlayerHp(player, enemy);
|
||||||
|
@@ -33,8 +33,9 @@ class Room {
|
|||||||
generatePairings() {
|
generatePairings() {
|
||||||
let tempPlayers = new Map;
|
let tempPlayers = new Map;
|
||||||
for (const key of this.mPlayers.keys()) {
|
for (const key of this.mPlayers.keys()) {
|
||||||
if (this.mPlayers.get(key).mHp > 0) {
|
const player = this.mPlayers.get(key);
|
||||||
tempPlayers.set(key, this.mPlayers.get(key));
|
if (player && player.mHp > 0) {
|
||||||
|
tempPlayers.set(key, player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.mMatchMaker.updatePlayers(tempPlayers);
|
this.mMatchMaker.updatePlayers(tempPlayers);
|
||||||
@@ -100,16 +101,21 @@ class RoomManager {
|
|||||||
return this.mInstance;
|
return this.mInstance;
|
||||||
}
|
}
|
||||||
join(aRoomID, aName, aSocket) {
|
join(aRoomID, aName, aSocket) {
|
||||||
if (!this.mRooms.has(aRoomID)) {
|
const room = this.mRooms.get(aRoomID);
|
||||||
|
if (!room) {
|
||||||
return [false, "No room Id", null, null];
|
return [false, "No room Id", null, null];
|
||||||
}
|
}
|
||||||
let room = this.mRooms.get(aRoomID);
|
|
||||||
if (room.mPlayers.has(aName)) {
|
if (room.mPlayers.has(aName)) {
|
||||||
let player = room.mPlayers.get(aName);
|
let player = room.mPlayers.get(aName);
|
||||||
|
if (player) {
|
||||||
player.setPlayerSocketId(aSocket.id);
|
player.setPlayerSocketId(aSocket.id);
|
||||||
aSocket.join(aRoomID);
|
aSocket.join(aRoomID);
|
||||||
return [true, "", room.mStatus, player];
|
return [true, "", room.mStatus, player];
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
return [false, "unKnow error", null, null];
|
||||||
|
}
|
||||||
|
}
|
||||||
if (room.mPlayers.size < GameDefine_1.ALL_PLAYER_NUM) {
|
if (room.mPlayers.size < GameDefine_1.ALL_PLAYER_NUM) {
|
||||||
let player = new Player_1.Player(aName, aSocket.id);
|
let player = new Player_1.Player(aName, aSocket.id);
|
||||||
aSocket.join(aRoomID);
|
aSocket.join(aRoomID);
|
||||||
|
@@ -57,9 +57,10 @@ class Room
|
|||||||
let tempPlayers:Map<string, Player> = new Map<string, Player>;
|
let tempPlayers:Map<string, Player> = new Map<string, Player>;
|
||||||
for(const key of this.mPlayers.keys())
|
for(const key of this.mPlayers.keys())
|
||||||
{
|
{
|
||||||
if(this.mPlayers.get(key)!.mHp > 0)
|
const player = this.mPlayers.get(key);
|
||||||
|
if(player && player.mHp > 0)
|
||||||
{
|
{
|
||||||
tempPlayers.set(key, this.mPlayers.get(key)!);
|
tempPlayers.set(key, player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.mMatchMaker.updatePlayers(tempPlayers);
|
this.mMatchMaker.updatePlayers(tempPlayers);
|
||||||
@@ -145,18 +146,24 @@ export class RoomManager
|
|||||||
|
|
||||||
join(aRoomID:string, aName:string, aSocket:Socket):[boolean, string, number | null, Player | null]
|
join(aRoomID:string, aName:string, aSocket:Socket):[boolean, string, number | null, Player | null]
|
||||||
{
|
{
|
||||||
if(!this.mRooms.has(aRoomID))
|
const room = this.mRooms.get(aRoomID);
|
||||||
|
if (!room)
|
||||||
{
|
{
|
||||||
return [false, "No room Id", null, null];
|
return [false, "No room Id", null, null];
|
||||||
}
|
}
|
||||||
|
|
||||||
let room = this.mRooms.get(aRoomID)!;
|
|
||||||
if(room.mPlayers.has(aName))
|
if(room.mPlayers.has(aName))
|
||||||
{
|
{
|
||||||
let player = room.mPlayers.get(aName);
|
let player = room.mPlayers.get(aName);
|
||||||
player!.setPlayerSocketId(aSocket.id);
|
if(player)
|
||||||
|
{
|
||||||
|
player.setPlayerSocketId(aSocket.id);
|
||||||
aSocket.join(aRoomID);
|
aSocket.join(aRoomID);
|
||||||
return [true, "", room.mStatus, player!];
|
return [true, "", room.mStatus, player];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return [false, "unKnow error", null, null];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(room.mPlayers.size < ALL_PLAYER_NUM)
|
if(room.mPlayers.size < ALL_PLAYER_NUM)
|
||||||
|
Reference in New Issue
Block a user