public ServerGameEntity Create(Vector3 position, ushort tmpPlayerId, int accountId, ViewTypeEnum viewTypeEnum, WarshipSO warshipSo) { warshipSoValidator.Validate(warshipSo); ServerGameEntity entity = gameContext.CreateEntity(); entity.AddPlayer(tmpPlayerId); entity.AddNickname("warship"); entity.AddAccount(accountId); entity.AddMaxSpeed(warshipSo.maxVelocity); entity.AddAngularVelocity(warshipSo.angularVelocity); if (warshipSo.maxHealth <= 0) { throw new Exception($"Нельзя спавнить корабли таких хп {warshipSo.maxHealth}"); } entity.AddHealthPoints(warshipSo.maxHealth); entity.AddMaxHealthPoints(warshipSo.maxHealth); entity.AddTeam((byte)(tmpPlayerId + 1)); entity.AddViewType(viewTypeEnum); entity.AddSpawnTransform(position, Quaternion.identity); return(entity); }
public ServerGameEntity CreateWarship(Vector3 position, ushort tmpPlayerId, int accountId, ViewTypeEnum viewTypeEnum) { WarshipSO warshipSo = warshipsCharacteristicsStorage.Get(viewTypeEnum); var entity = warshipEntityFactory.Create(position, tmpPlayerId, accountId, viewTypeEnum, warshipSo); log.Info($"accountId = {accountId} tmpPlayerId = {tmpPlayerId} id = {entity.id.value}"); return(entity); }
public void Validate(WarshipSO warshipSo) { if (warshipSo.prefab == null) { throw new Exception("3d модель не установлена"); } if (warshipSo.maxHealth <= 0) { throw new Exception("Недопустимый показатель здоровья " + warshipSo.maxHealth); } if (warshipSo.angularVelocity <= 0) { throw new Exception("Недопустимый показатель угловой скорости " + warshipSo.angularVelocity); } if (warshipSo.maxVelocity <= 0) { throw new Exception("Недопустимый показатель линейной скорости " + warshipSo.maxVelocity); } }