250501 커밋
This commit is contained in:
@@ -1,4 +1,11 @@
|
||||
using Google.Protobuf;
|
||||
using GameServer.Contents.GameMode.Manage;
|
||||
using GameServer.Contents.GameMode.Manage.LeaveManage;
|
||||
using GameServer.Contents.GameMode.Manage.PlayManage;
|
||||
using GameServer.Contents.GameMode.Mode_Battle.Manage;
|
||||
using GameServer.Contents.GameMode.Mode_Battle.ModeFreeForAll.Manage;
|
||||
using GameServer.Contents.GameMode.Mode_Running.Manage;
|
||||
using GameServer.Contents.GameMode.Mode_Running.ModeRace.Manage;
|
||||
using Google.Protobuf;
|
||||
using Google.Protobuf.WellKnownTypes;
|
||||
|
||||
|
||||
@@ -15,57 +22,243 @@ namespace GameServer;
|
||||
|
||||
public class GameModeHelper
|
||||
{
|
||||
public static (Result, IGameModeJoinHandler) getGameModeJoinHandler(InstanceRoom instanceRoom, EPlaceType placeType)
|
||||
public static (Result, IGameModeJoinHandler) getGameModeJoinHandler(InstanceRoom instanceRoom, int gameModeId, string roomId)
|
||||
{
|
||||
(var genre_type, var mode_type) = getGameModeMeta(gameModeId, roomId);
|
||||
var result = new Result();
|
||||
switch (placeType)
|
||||
switch (mode_type)
|
||||
{
|
||||
case EPlaceType.BattleRoom:
|
||||
return (result, new BattleInstanceJoinHandler(instanceRoom));
|
||||
case EPlaceType.ArcadeRunning:
|
||||
return (result, new ArcadeRunningInstanceJoinHandler(instanceRoom));
|
||||
case EPlaceType.GameRoom:
|
||||
return (result, new GameRoomJoinHandler(instanceRoom));
|
||||
case GameModeType.TPS_FFA:
|
||||
return (result, new TPSFreeForAllJoinHandler(instanceRoom));
|
||||
case GameModeType.TPS_TDM:
|
||||
return (result, new TPSTeamDeathMatchJoinHandler(instanceRoom));
|
||||
case GameModeType.RUN_ADV:
|
||||
return (result, new RunAdventureJoinHandler(instanceRoom));
|
||||
case GameModeType.RUN_RACE:
|
||||
return (result, new RunRaceJoinHandler(instanceRoom));
|
||||
//case GameModeType.DANCE_:
|
||||
// return (result, new (instanceRoom));
|
||||
default:
|
||||
var err_msg = $"invalid placeType in this mode!!!! placeType : {placeType}";
|
||||
var err_msg = $"invalid gameMode !!! gameModeId : {gameModeId}";
|
||||
result.setFail(ServerErrorCode.GameModeJoinHandlerNotExist, err_msg);
|
||||
return (result, new BattleInstanceJoinHandler(instanceRoom));
|
||||
return (result, new TPSFreeForAllJoinHandler(instanceRoom));
|
||||
}
|
||||
}
|
||||
|
||||
public static (Result, IGameModeInitHandler) getGameModeInitHandler(InstanceRoom instanceRoom, EPlaceType placeType)
|
||||
public static (Result, IGameModeInitHandler) getGameModeInitHandler(InstanceRoom instanceRoom, int gameModeId, string roomId)
|
||||
{
|
||||
(var genre_type, var mode_type) = getGameModeMeta(gameModeId, roomId);
|
||||
var result = new Result();
|
||||
switch (placeType)
|
||||
switch (mode_type)
|
||||
{
|
||||
case EPlaceType.BattleRoom:
|
||||
return (result, new BattleInstanceInitHandler(instanceRoom));
|
||||
case EPlaceType.ArcadeRunning:
|
||||
return (result, new ArcadeRunningInstanceInitHandler(instanceRoom));
|
||||
case EPlaceType.GameRoom:
|
||||
return (result, new GameRoomInitHandler(instanceRoom));
|
||||
case GameModeType.TPS_FFA:
|
||||
return (result, new TPSFreeForAllInitHandler(instanceRoom));
|
||||
case GameModeType.TPS_TDM:
|
||||
return (result, new TPSTeamDeathMatchInitHandler(instanceRoom));
|
||||
case GameModeType.RUN_ADV:
|
||||
return (result, new RunAdventureInitHandler(instanceRoom));
|
||||
case GameModeType.RUN_RACE:
|
||||
return (result, new RunRaceInitHandler(instanceRoom));
|
||||
default:
|
||||
var err_msg = $"getGameModeInitHandler not!!!! placeType : {placeType}";
|
||||
var err_msg = $"getGameModeInitHandler not exist!!!! mode_type : {mode_type}";
|
||||
result.setFail(ServerErrorCode.GameModeInitHandlerNotExist, err_msg);
|
||||
return (result, new BattleInstanceInitHandler(instanceRoom));
|
||||
return (result, new TPSFreeForAllInitHandler(instanceRoom));
|
||||
}
|
||||
}
|
||||
|
||||
public static (Result, IGameModeJoinSuccessHandler?) getGameModeJoinSuccessHandler(Player player, InstanceRoom instanceRoom, EPlaceType placeType)
|
||||
public static (Result, IGameModeJoinSuccessHandler?) getGameModeJoinSuccessHandler(Player player, InstanceRoom instanceRoom, int gameModeId, string roomId)
|
||||
{
|
||||
var result = new Result();
|
||||
switch (placeType)
|
||||
(var genre_type, var mode_type) = getGameModeMeta(gameModeId, roomId);
|
||||
switch (mode_type)
|
||||
{
|
||||
case EPlaceType.BattleRoom:
|
||||
return (result, new BattleInstanceJoinSuccessHandler(player, instanceRoom));
|
||||
case EPlaceType.ArcadeRunning:
|
||||
return (result, new ArcadeRunningInstanceJoinSuccessHandler(player, instanceRoom));
|
||||
case EPlaceType.GameRoom:
|
||||
return (result, new GameRoomJoinSuccessHandler(player, instanceRoom));
|
||||
case GameModeType.TPS_FFA:
|
||||
return (result, new TPSFreeForAllJoinSuccessHandler(player, instanceRoom));
|
||||
case GameModeType.TPS_TDM:
|
||||
return (result, new TPSTeamDeathMatchJoinSuccessHandler(player, instanceRoom));
|
||||
case GameModeType.RUN_ADV:
|
||||
return (result, new RunAdventureJoinSuccessHandler(player, instanceRoom));
|
||||
case GameModeType.RUN_RACE:
|
||||
return (result, new RunRaceJoinSuccessHandler(player, instanceRoom));
|
||||
default:
|
||||
var err_msg = $"getGameModeInitHandler not!!!! placeType : {placeType}";
|
||||
var err_msg = $"getGameModeInitHandler not exist !!!! mode_type : {mode_type}";
|
||||
result.setFail(ServerErrorCode.GameModeJoinSuccessHandlerNotExist, err_msg);
|
||||
return (result, null);
|
||||
}
|
||||
}
|
||||
|
||||
public static (Result, IGameMode?) createGameMode(InstanceRoom instanceRoom, GameModeType modeType)
|
||||
{
|
||||
var result = new Result();
|
||||
switch (modeType)
|
||||
{
|
||||
case GameModeType.TPS_FFA:
|
||||
return (result, new GameModeTPSFreeForAll<GameModeTPSFreeForAllData>(new GameModeTPSFreeForAllData(), instanceRoom));
|
||||
case GameModeType.TPS_TDM:
|
||||
return (result, new GameModeTPSTeamDeathMatch<GameModeTPSTeamDeathMatchData>(new GameModeTPSTeamDeathMatchData(), instanceRoom));
|
||||
case GameModeType.RUN_ADV:
|
||||
return (result, new GameModeRunAdventure<GameModeRunAdventureData>(new GameModeRunAdventureData(), instanceRoom));
|
||||
case GameModeType.RUN_RACE:
|
||||
return (result, new GameModeRunRace<GameModeRunRaceData>(new GameModeRunRaceData(), instanceRoom));
|
||||
default:
|
||||
var err_msg = $"createGameMode not exist !!!! mode_type : {modeType}";
|
||||
result.setFail(ServerErrorCode.GameModeCreateFail, err_msg);
|
||||
return (result, null);
|
||||
}
|
||||
}
|
||||
|
||||
public static (Result, IGameModeLeaveHandler?) getGameModeLeaveHandler(Player player, string roomId)
|
||||
{
|
||||
var result = new Result();
|
||||
(var genre_type, var mode_type) = getGameModeMeta(1, roomId);
|
||||
switch (mode_type)
|
||||
{
|
||||
case GameModeType.TPS_FFA:
|
||||
return (result, new TPSFreeForAllLeaveHandler(player, roomId));
|
||||
case GameModeType.TPS_TDM:
|
||||
return (result, new TPSTeamDeathMatchLeaveHandler(player, roomId));
|
||||
case GameModeType.RUN_ADV:
|
||||
return (result, new RunAdventureLeaveHandler(player, roomId));
|
||||
case GameModeType.RUN_RACE:
|
||||
return (result, new RunRaceLeaveHandler(player, roomId));
|
||||
default:
|
||||
var err_msg = $"getGameModeInitHandler not exist !!!! mode_type : {mode_type}";
|
||||
result.setFail(ServerErrorCode.GameModeJoinSuccessHandlerNotExist, err_msg);
|
||||
return (result, null);
|
||||
}
|
||||
}
|
||||
|
||||
public static (Result, IGameModeDestroyHandler?) getGameModeDestroyHandler(string roomId)
|
||||
{
|
||||
var result = new Result();
|
||||
(var genre_type, var mode_type) = getGameModeMeta(1, roomId);
|
||||
switch (mode_type)
|
||||
{
|
||||
case GameModeType.TPS_FFA:
|
||||
return (result, new TPSFreeForAllDestroyHandler(roomId));
|
||||
case GameModeType.TPS_TDM:
|
||||
return (result, new TPSTeamDeathMatchDestroyHandler(roomId));
|
||||
case GameModeType.RUN_ADV:
|
||||
return (result, new RunAdventureDestroyHandler(roomId));
|
||||
case GameModeType.RUN_RACE:
|
||||
return (result, new RunRaceDestroyHandler(roomId));
|
||||
default:
|
||||
var err_msg = $"getGameModeInitHandler not exist !!!! mode_type : {mode_type}";
|
||||
result.setFail(ServerErrorCode.GameModeJoinSuccessHandlerNotExist, err_msg);
|
||||
return (result, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static IHostMigrator createHostMigrator(int gameModeId)
|
||||
{
|
||||
var result = new Result();
|
||||
(var genre_type, var mode_type) = getGameModeMeta(gameModeId, "battle"); //kihoon 임시 마이그레이터 나중에 수정 필요
|
||||
switch (mode_type)
|
||||
{
|
||||
case GameModeType.TPS_FFA:
|
||||
//return HostMigrationFactory.createCommonHostMigrator((int) BattlePlayMode.PodCombat, GameServerApp.getServerLogic());
|
||||
return new BattleFFAModeHostMigrator();
|
||||
default:
|
||||
Log.getLogger().error($"createHostMigrator Not implements mode : {mode_type}");
|
||||
return new BattleFFAModeHostMigrator();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static (GameGenreType genreType, GameModeType modeType) getGameModeMeta(int gameModeId, string roomid)
|
||||
{
|
||||
// kihoon todo : Meta에서 데이터 가져와야 한다.
|
||||
// kihoon todo : Meta가 없을경우의 result 처리 필요
|
||||
|
||||
//kihoon todo : roomid 는 임시 나중에 mode id로 넣어서 처리 해줘야 된다.
|
||||
if (roomid.Contains("battle"))
|
||||
{
|
||||
return (GameGenreType.TPS, GameModeType.TPS_FFA);
|
||||
}
|
||||
else if (roomid.Contains("1017101"))
|
||||
{
|
||||
return (GameGenreType.Running, GameModeType.RUN_RACE);
|
||||
}
|
||||
|
||||
return (GameGenreType.TPS, GameModeType.TPS_FFA);
|
||||
}
|
||||
|
||||
public static GameModeBase toGameModeBase(IGameMode gameMode)
|
||||
{
|
||||
var game_mode_base = gameMode as GameModeBase;
|
||||
NullReferenceCheckHelper.throwIfNull(game_mode_base, () => $"game_mode_base is null !!!");
|
||||
return game_mode_base;
|
||||
}
|
||||
|
||||
public static async Task<Result> leaveGameInstanceRoom(string userGuid, string roomId)
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
var server_logic = GameServerApp.getServerLogic();
|
||||
|
||||
var instance_room_storage = new InstanceRoomStorage();
|
||||
instance_room_storage.Init(server_logic.getRedisDb(), "");
|
||||
|
||||
await instance_room_storage.leaveInstanceRoom(userGuid, roomId);
|
||||
|
||||
var instance_room_id_base = getInstanceRoomIdBaseFromInstanceRoomId(roomId);
|
||||
await instance_room_storage.decreaseInstanceRoomScore(instance_room_id_base, roomId);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string getInstanceRoomIdBaseFromInstanceRoomId(string instanceRoomId)
|
||||
{
|
||||
var instance_room_Id_element = instanceRoomId.Split(":");
|
||||
|
||||
if (instance_room_Id_element.Length >= 2)
|
||||
{
|
||||
return $"{instance_room_Id_element[0]}:{instance_room_Id_element[1]}";
|
||||
}
|
||||
Log.getLogger().error($"Instance room id weired : {instanceRoomId}");
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
public static IGameObject? getObjectInteractAction(GameModeBase gameModeBase, Anchor anchor)
|
||||
{
|
||||
var entity_type = gameModeBase.getEntityType();
|
||||
|
||||
switch (entity_type)
|
||||
{
|
||||
case EntityType.GameModeTpsfreeForAll:
|
||||
//kihoon todo : table id 넘겨서 pickup, combat, weapon, buff, 인지 전달 받아야 된다.
|
||||
return getTpsFreeForAllInteractAction(gameModeBase, anchor);
|
||||
case EntityType.GameModeTpsteamDeathMatch:
|
||||
return getTpsTeamDeathMatchInteractAction(gameModeBase, anchor);
|
||||
case EntityType.GameModeRunAdventure:
|
||||
return getRunAcventureInteractAction(gameModeBase, anchor);
|
||||
case EntityType.GameModeRunRace:
|
||||
return getRunRaceInteractAction(gameModeBase, anchor);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static IGameObject? getRunRaceInteractAction(GameModeBase gameModeBase, Anchor anchor)
|
||||
{
|
||||
//kihoon todo :현재 savePoint 밖에 없어서 그거 넘긴다.
|
||||
return gameModeBase.getEntityAction<RaceGameObjectSavePointInteractAction>();
|
||||
}
|
||||
|
||||
public static IGameObject? getTpsFreeForAllInteractAction(GameModeBase gameModeBase, Anchor anchor)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public static IGameObject? getTpsTeamDeathMatchInteractAction(GameModeBase gameModeBase, Anchor anchor)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public static IGameObject? getRunAcventureInteractAction(GameModeBase gameModeBase, Anchor anchor)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user