Refactor (remove underscores) and improve cannon accuracy
authorTheSaminator <TheSaminator@users.noreply.github.com>
Sat, 12 Mar 2022 15:15:48 +0000 (10:15 -0500)
committerTheSaminator <TheSaminator@users.noreply.github.com>
Sat, 12 Mar 2022 15:15:48 +0000 (10:15 -0500)
src/commonMain/kotlin/starshipfights/game/ship_weapons.kt
src/jvmMain/kotlin/starshipfights/game/server_game.kt

index 3640a0dd7cab1fed04e2a864fcd6327933c8515c..66c4129149135116bc0f038787497177dd165cee 100644 (file)
@@ -3,6 +3,7 @@ package starshipfights.game
 import kotlinx.serialization.Serializable
 import starshipfights.data.Id
 import kotlin.math.expm1
+import kotlin.math.sqrt
 import kotlin.random.Random
 
 enum class FiringArc {
@@ -256,7 +257,7 @@ data class ShipInstanceArmaments(
 
 fun cannonChanceToHit(attacker: ShipInstance, targeted: ShipInstance): Double {
        val relativeDistance = attacker.position.location - targeted.position.location
-       return SHIP_BASE_SIZE / relativeDistance.length
+       return sqrt(SHIP_BASE_SIZE / relativeDistance.length)
 }
 
 sealed class ImpactResult {
index 4e24990dd72520b85dec14c4f9905dd756fe0469..936ad73bd4ac85ba6ff0c92c6a9c174a3dcb6da3 100644 (file)
@@ -81,14 +81,14 @@ class GameSession(gameState: GameState) {
                }
        }.also {
                if (it)
-                       _gameStart.complete()
+                       gameStartMutable.complete()
                else
                        onPacket(player.other, PlayerAction.TimeOut)
        }
        
-       private val _gameStart = Job()
+       private val gameStartMutable = Job()
        val gameStart: Job
-               get() = _gameStart
+               get() = gameStartMutable
        
        private val stateMutable = MutableStateFlow(gameState)
        private val stateMutex = Mutex()
@@ -108,24 +108,24 @@ class GameSession(gameState: GameState) {
                GlobalSide.GUEST -> guestErrorMessages
        }
        
-       private val _gameEnd = CompletableDeferred<GameEvent.GameEnd>()
+       private val gameEndMutable = CompletableDeferred<GameEvent.GameEnd>()
        val gameEnd: Deferred<GameEvent.GameEnd>
-               get() = _gameEnd
+               get() = gameEndMutable
        
        suspend fun onPacket(player: GlobalSide, packet: PlayerAction) {
                stateMutex.withLock {
                        when (val result = state.value.after(player, packet)) {
                                is GameEvent.StateChange -> {
                                        stateMutable.value = result.newState
-                                       result.newState.checkVictory()?.let { _gameEnd.complete(it) }
+                                       result.newState.checkVictory()?.let { gameEndMutable.complete(it) }
                                }
                                is GameEvent.InvalidAction -> {
                                        errorMessageChannel(player).send(result.message)
                                }
                                is GameEvent.GameEnd -> {
-                                       if (_gameStart.isActive)
-                                               _gameStart.cancel()
-                                       _gameEnd.complete(result)
+                                       if (gameStartMutable.isActive)
+                                               gameStartMutable.cancel()
+                                       gameEndMutable.complete(result)
                                }
                        }
                }