enum ChangeHenseiType: Int {
case append
+
case replace
+
case remove
+
case removeAllWithoutFlagship
}
let shipId = parameter["api_ship_id"].int,
let shipIndex = parameter["api_ship_idx"].int else {
- return Logger.shared.log("parameter is wrong")
+ Logger.shared.log("parameter is wrong")
+
+ return
}
if shipId == -1 {
- guard let shipId = removeShip(deckNumber: deckNumber, index: shipIndex) else { return }
+ guard let shipId = removeShip(deckNumber: deckNumber, index: shipIndex) else {
+
+ return
+ }
notify(type: .remove, fleetNumber: deckNumber, position: shipIndex, shipID: shipId)
+
return
}
excludeShipsWithoutFlagShip(deckNumber: deckNumber)
notify(type: .removeAllWithoutFlagship)
+
return
}
- guard case 0..<Deck.maxShipCount = shipIndex else { return }
+ guard case 0..<Deck.maxShipCount = shipIndex else {
+
+ return
+ }
let store = ServerDataStore.oneTimeEditor()
- guard let deck = store.sync(execute: { store.deck(by: deckNumber) }) else { return }
+ guard let deck = store.sync(execute: { store.deck(by: deckNumber) }) else {
+
+ return
+ }
// すでに編成されているか? どこに?
let (shipDeckNumber, shipDeckIndex) = position(of: shipId)
private func position(of shipId: Int) -> (deckNumber: Int?, shipId: Int) {
let store = ServerDataStore.default
+
return store.sync {
+
store
.decksSortedById()
.lazy
guard let deck = store.sync(execute: { store.deck(by: deckNumber) }) else {
- return Logger.shared.log("Deck not found", value: nil)
+ Logger.shared.log("Deck not found")
+
+ return nil
}
let shipId = store.sync { deck[index]?.id ?? -1 }
store.sync {
guard let deck = store.deck(by: deckNumber) else {
- return Logger.shared.log("Deck not found")
+ Logger.shared.log("Deck not found")
+
+ return
}
(1..<Deck.maxShipCount).forEach { deck.setShip(id: -1, for: $0) }
func set(_ ships: [Ship], at index: Int, in deck: Deck) {
- guard index < Deck.maxShipCount else { return }
+ guard index < Deck.maxShipCount else {
+
+ return
+ }
deck.setShip(id: ships.first?.id ?? -1, for: index)