@@ -23,7 +23,6 @@ import verifyTiles from '@deities/athena/lib/verifyTiles.tsx';
2323import Building from '@deities/athena/map/Building.tsx' ;
2424import { getDecoratorLimit } from '@deities/athena/map/Configuration.tsx' ;
2525import Entity from '@deities/athena/map/Entity.tsx' ;
26- import { PlayerID , PlayerIDs } from '@deities/athena/map/Player.tsx' ;
2726import Unit from '@deities/athena/map/Unit.tsx' ;
2827import Vector from '@deities/athena/map/Vector.tsx' ;
2928import MapData from '@deities/athena/MapData.tsx' ;
@@ -49,7 +48,6 @@ import {
4948} from '../../Types.tsx' ;
5049import FlashFlyout from '../../ui/FlashFlyout.tsx' ;
5150import { FlyoutItem } from '../../ui/Flyout.tsx' ;
52- import getSymmetricPositions from '../lib/getSymmetricPositions.ts' ;
5351import updateUndoStack from '../lib/updateUndoStack.tsx' ;
5452import { EditorState } from '../Types.tsx' ;
5553
@@ -164,11 +162,7 @@ export default class DesignBehavior {
164162 subVector ?: Vector ,
165163 ) : StateLike | null {
166164 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 ) ;
172166 }
173167
174168 const { animations, map } = state ;
@@ -234,46 +228,11 @@ export default class DesignBehavior {
234228 return null ;
235229 }
236230
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-
271231 private put (
272232 vector : Vector ,
273233 state : State ,
274234 actions : Actions ,
275235 editor : EditorState ,
276- playerId : PlayerID ,
277236 ) : StateLike | null {
278237 if ( shouldPlaceDecorator ( editor ) ) {
279238 return null ;
@@ -340,14 +299,7 @@ export default class DesignBehavior {
340299 ) ;
341300 } else if ( selected . unit ) {
342301 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 ) ;
351303 } else if ( selected . building ) {
352304 this . previous = null ;
353305 return this . putBuilding (
@@ -356,7 +308,6 @@ export default class DesignBehavior {
356308 state ,
357309 actions ,
358310 editor ,
359- playerId ,
360311 ) ;
361312 }
362313 return null ;
@@ -552,7 +503,6 @@ export default class DesignBehavior {
552503 state : State ,
553504 actions : Actions ,
554505 editor : EditorState ,
555- playerId : PlayerID ,
556506 ) : StateLike | null {
557507 const { map } = state ;
558508 const { units } = map ;
@@ -571,7 +521,12 @@ export default class DesignBehavior {
571521 ...spawn (
572522 actions ,
573523 state ,
574- [ [ vector , unit . removeLeader ( ) . setPlayer ( playerId ) ] ] ,
524+ [
525+ [
526+ vector ,
527+ unit . removeLeader ( ) . setPlayer ( map . getCurrentPlayer ( ) . id ) ,
528+ ] ,
529+ ] ,
575530 null ,
576531 ( { map } ) => {
577532 updateUndoStack ( actions , editor , [
@@ -596,7 +551,6 @@ export default class DesignBehavior {
596551 state : State ,
597552 actions : Actions ,
598553 editor : EditorState ,
599- playerId : PlayerID ,
600554 ) : StateLike | null {
601555 const { animations, map } = state ;
602556 const { buildings, units } = map ;
@@ -614,13 +568,14 @@ export default class DesignBehavior {
614568 const config = map . config . copy ( {
615569 blocklistedBuildings : new Set ( ) ,
616570 } ) ;
571+ const player = map . getCurrentPlayer ( ) ;
617572 const isAlwaysNeutral = building . info . isStructure ( ) ;
618573
619574 const tryToPlaceBuilding = ( state : State ) : StateLike | null => {
620575 let { map } = state ;
621576 map = map . copy ( {
622577 active : getActivePlayers ( map ) ,
623- buildings : map . buildings . set ( vector , building . setPlayer ( playerId ) ) ,
578+ buildings : map . buildings . set ( vector , building . setPlayer ( player . id ) ) ,
624579 } ) ;
625580
626581 const { editorPlaceOn, placeOn } = building . info . configuration ;
@@ -663,7 +618,7 @@ export default class DesignBehavior {
663618 return canBuild (
664619 getTemporaryMapForBuilding ( temporaryMap , vector , building ) ,
665620 building . info ,
666- isAlwaysNeutral ? 0 : playerId ,
621+ isAlwaysNeutral ? 0 : player ,
667622 vector ,
668623 true ,
669624 ) && ! ( building . info . isHQ ( ) && map . currentPlayer === 0 )
@@ -681,7 +636,7 @@ export default class DesignBehavior {
681636 return newState ;
682637 } ,
683638 type : 'createBuilding' ,
684- variant : isAlwaysNeutral ? 0 : playerId ,
639+ variant : isAlwaysNeutral ? 0 : player . id ,
685640 } ) ,
686641 map : state . map . copy ( { buildings : buildings . delete ( vector ) } ) ,
687642 }
0 commit comments