@@ -23,7 +23,6 @@ import verifyTiles from '@deities/athena/lib/verifyTiles.tsx';
23
23
import Building from '@deities/athena/map/Building.tsx' ;
24
24
import { getDecoratorLimit } from '@deities/athena/map/Configuration.tsx' ;
25
25
import Entity from '@deities/athena/map/Entity.tsx' ;
26
- import { PlayerID , PlayerIDs } from '@deities/athena/map/Player.tsx' ;
27
26
import Unit from '@deities/athena/map/Unit.tsx' ;
28
27
import Vector from '@deities/athena/map/Vector.tsx' ;
29
28
import MapData from '@deities/athena/MapData.tsx' ;
@@ -49,7 +48,6 @@ import {
49
48
} from '../../Types.tsx' ;
50
49
import FlashFlyout from '../../ui/FlashFlyout.tsx' ;
51
50
import { FlyoutItem } from '../../ui/Flyout.tsx' ;
52
- import getSymmetricPositions from '../lib/getSymmetricPositions.ts' ;
53
51
import updateUndoStack from '../lib/updateUndoStack.tsx' ;
54
52
import { EditorState } from '../Types.tsx' ;
55
53
@@ -164,11 +162,7 @@ export default class DesignBehavior {
164
162
subVector ?: Vector ,
165
163
) : StateLike | null {
166
164
if ( editor ?. isDrawing && editor . selected ) {
167
- const vectors = [
168
- vector ,
169
- ...getSymmetricPositions ( vector , editor . drawingMode , state . map . size ) ,
170
- ] ;
171
- return this . draw ( vectors , state , actions , editor ) ;
165
+ return this . put ( vector , state , actions , editor ) ;
172
166
}
173
167
174
168
const { animations, map } = state ;
@@ -234,46 +228,11 @@ export default class DesignBehavior {
234
228
return null ;
235
229
}
236
230
237
- private draw (
238
- vectors : Array < Vector > ,
239
- state : State ,
240
- actions : Actions ,
241
- editor : EditorState ,
242
- ) : StateLike | null {
243
- let newState : StateLike | null = null ;
244
- const players = Array . from (
245
- new Set ( [ ...state . map . active , ...PlayerIDs . filter ( ( id ) => id !== 0 ) ] ) ,
246
- ) . slice ( 0 , vectors . length ) ;
247
- vectors . forEach ( ( vector , index ) => {
248
- const currentPlayerIndex = players . indexOf (
249
- state . map . getCurrentPlayer ( ) . id ,
250
- ) ;
251
- const playerId =
252
- players [
253
- ( ( currentPlayerIndex >= 0 ? currentPlayerIndex : 0 ) + index ) %
254
- players . length
255
- ] ;
256
-
257
- newState = {
258
- ...newState ,
259
- ...this . put (
260
- vector ,
261
- { ...state , ...newState } ,
262
- actions ,
263
- editor ,
264
- playerId ,
265
- ) ,
266
- } ;
267
- } ) ;
268
- return newState ;
269
- }
270
-
271
231
private put (
272
232
vector : Vector ,
273
233
state : State ,
274
234
actions : Actions ,
275
235
editor : EditorState ,
276
- playerId : PlayerID ,
277
236
) : StateLike | null {
278
237
if ( shouldPlaceDecorator ( editor ) ) {
279
238
return null ;
@@ -340,14 +299,7 @@ export default class DesignBehavior {
340
299
) ;
341
300
} else if ( selected . unit ) {
342
301
this . previous = null ;
343
- return this . putUnit (
344
- selected . unit ,
345
- vector ,
346
- state ,
347
- actions ,
348
- editor ,
349
- playerId ,
350
- ) ;
302
+ return this . putUnit ( selected . unit , vector , state , actions , editor ) ;
351
303
} else if ( selected . building ) {
352
304
this . previous = null ;
353
305
return this . putBuilding (
@@ -356,7 +308,6 @@ export default class DesignBehavior {
356
308
state ,
357
309
actions ,
358
310
editor ,
359
- playerId ,
360
311
) ;
361
312
}
362
313
return null ;
@@ -552,7 +503,6 @@ export default class DesignBehavior {
552
503
state : State ,
553
504
actions : Actions ,
554
505
editor : EditorState ,
555
- playerId : PlayerID ,
556
506
) : StateLike | null {
557
507
const { map } = state ;
558
508
const { units } = map ;
@@ -571,7 +521,12 @@ export default class DesignBehavior {
571
521
...spawn (
572
522
actions ,
573
523
state ,
574
- [ [ vector , unit . removeLeader ( ) . setPlayer ( playerId ) ] ] ,
524
+ [
525
+ [
526
+ vector ,
527
+ unit . removeLeader ( ) . setPlayer ( map . getCurrentPlayer ( ) . id ) ,
528
+ ] ,
529
+ ] ,
575
530
null ,
576
531
( { map } ) => {
577
532
updateUndoStack ( actions , editor , [
@@ -596,7 +551,6 @@ export default class DesignBehavior {
596
551
state : State ,
597
552
actions : Actions ,
598
553
editor : EditorState ,
599
- playerId : PlayerID ,
600
554
) : StateLike | null {
601
555
const { animations, map } = state ;
602
556
const { buildings, units } = map ;
@@ -614,13 +568,14 @@ export default class DesignBehavior {
614
568
const config = map . config . copy ( {
615
569
blocklistedBuildings : new Set ( ) ,
616
570
} ) ;
571
+ const player = map . getCurrentPlayer ( ) ;
617
572
const isAlwaysNeutral = building . info . isStructure ( ) ;
618
573
619
574
const tryToPlaceBuilding = ( state : State ) : StateLike | null => {
620
575
let { map } = state ;
621
576
map = map . copy ( {
622
577
active : getActivePlayers ( map ) ,
623
- buildings : map . buildings . set ( vector , building . setPlayer ( playerId ) ) ,
578
+ buildings : map . buildings . set ( vector , building . setPlayer ( player . id ) ) ,
624
579
} ) ;
625
580
626
581
const { editorPlaceOn, placeOn } = building . info . configuration ;
@@ -663,7 +618,7 @@ export default class DesignBehavior {
663
618
return canBuild (
664
619
getTemporaryMapForBuilding ( temporaryMap , vector , building ) ,
665
620
building . info ,
666
- isAlwaysNeutral ? 0 : playerId ,
621
+ isAlwaysNeutral ? 0 : player ,
667
622
vector ,
668
623
true ,
669
624
) && ! ( building . info . isHQ ( ) && map . currentPlayer === 0 )
@@ -681,7 +636,7 @@ export default class DesignBehavior {
681
636
return newState ;
682
637
} ,
683
638
type : 'createBuilding' ,
684
- variant : isAlwaysNeutral ? 0 : playerId ,
639
+ variant : isAlwaysNeutral ? 0 : player . id ,
685
640
} ) ,
686
641
map : state . map . copy ( { buildings : buildings . delete ( vector ) } ) ,
687
642
}
0 commit comments