@@ -8,6 +8,8 @@ func init() {
88 globalRegistry .RegisterMap ("hz_rivers_bridges" , RiverAndBridgesMediumHazardsMap {})
99 globalRegistry .RegisterMap ("hz_rivers_bridges_lg" , RiverAndBridgesLargeHazardsMap {})
1010 globalRegistry .RegisterMap ("hz_rivers_bridges_xl" , RiverAndBridgesExtraLargeHazardsMap {})
11+ globalRegistry .RegisterMap ("hz_islands_bridges" , IslandsAndBridgesMediumHazardsMap {})
12+ globalRegistry .RegisterMap ("hz_islands_bridges_lg" , IslandsAndBridgesLargeHazardsMap {})
1113}
1214
1315func setupRiverAndBridgesBoard (startingPositions [][]rules.Point , hazards []rules.Point , lastBoardState * rules.BoardState , settings rules.Settings , editor Editor ) error {
@@ -103,11 +105,7 @@ func (m RiverAndBridgesMediumHazardsMap) SetupBoard(lastBoardState *rules.BoardS
103105 return rules .RulesetError ("This map can only be played on a 11x11 board" )
104106 }
105107
106- err := setupRiverAndBridgesBoard (riversAndBridgesMediumStartPositions , riversAndBridgesMediumHazards , lastBoardState , settings , editor )
107- if err != nil {
108- return err
109- }
110- return nil
108+ return setupRiverAndBridgesBoard (riversAndBridgesMediumStartPositions , riversAndBridgesMediumHazards , lastBoardState , settings , editor )
111109}
112110
113111func (m RiverAndBridgesMediumHazardsMap ) UpdateBoard (lastBoardState * rules.BoardState , settings rules.Settings , editor Editor ) error {
@@ -178,11 +176,7 @@ func (m RiverAndBridgesLargeHazardsMap) SetupBoard(lastBoardState *rules.BoardSt
178176 return rules .RulesetError ("This map can only be played on a 19x19 board" )
179177 }
180178
181- err := setupRiverAndBridgesBoard (riversAndBridgesLargeStartPositions , riversAndBridgesLargeHazards , lastBoardState , settings , editor )
182- if err != nil {
183- return err
184- }
185- return nil
179+ return setupRiverAndBridgesBoard (riversAndBridgesLargeStartPositions , riversAndBridgesLargeHazards , lastBoardState , settings , editor )
186180}
187181
188182func (m RiverAndBridgesLargeHazardsMap ) UpdateBoard (lastBoardState * rules.BoardState , settings rules.Settings , editor Editor ) error {
@@ -281,11 +275,7 @@ func (m RiverAndBridgesExtraLargeHazardsMap) SetupBoard(lastBoardState *rules.Bo
281275 return rules .RulesetError ("This map can only be played on a 25x25 board" )
282276 }
283277
284- err := setupRiverAndBridgesBoard (riversAndBridgesExtraLargeStartPositions , riversAndBridgesExtraLargeHazards , lastBoardState , settings , editor )
285- if err != nil {
286- return err
287- }
288- return nil
278+ return setupRiverAndBridgesBoard (riversAndBridgesExtraLargeStartPositions , riversAndBridgesExtraLargeHazards , lastBoardState , settings , editor )
289279}
290280
291281func (m RiverAndBridgesExtraLargeHazardsMap ) UpdateBoard (lastBoardState * rules.BoardState , settings rules.Settings , editor Editor ) error {
@@ -374,3 +364,139 @@ var riversAndBridgesExtraLargeHazards = []rules.Point{
374364 {X : 8 , Y : 12 },
375365 {X : 12 , Y : 16 },
376366}
367+
368+ type IslandsAndBridgesMediumHazardsMap struct {}
369+
370+ func (m IslandsAndBridgesMediumHazardsMap ) ID () string {
371+ return "hz_islands_bridges"
372+ }
373+
374+ func (m IslandsAndBridgesMediumHazardsMap ) Meta () Metadata {
375+ return Metadata {
376+ Name : "hz_islands_bridges" ,
377+ Description : `Creates fixed maps that have a lake of hazard in the middle with rivers going in the cardinal directions and around the edges of the map. Bridges across the rivers are provided at key points` ,
378+ Author : "Battlesnake" ,
379+ Version : 1 ,
380+ MinPlayers : 1 ,
381+ MaxPlayers : 4 ,
382+ BoardSizes : FixedSizes (Dimensions {11 , 11 }),
383+ Tags : []string {TAG_FOOD_PLACEMENT , TAG_HAZARD_PLACEMENT , TAG_SNAKE_PLACEMENT },
384+ }
385+ }
386+
387+ func (m IslandsAndBridgesMediumHazardsMap ) SetupBoard (lastBoardState * rules.BoardState , settings rules.Settings , editor Editor ) error {
388+ if ! m .Meta ().BoardSizes .IsAllowable (lastBoardState .Width , lastBoardState .Height ) {
389+ return rules .RulesetError ("This map can only be played on a 11x11 board" )
390+ }
391+
392+ return setupRiverAndBridgesBoard (islandsAndBridgesMediumStartPositions , islandsAndBridgesMediumHazards , lastBoardState , settings , editor )
393+ }
394+
395+ func (m IslandsAndBridgesMediumHazardsMap ) UpdateBoard (lastBoardState * rules.BoardState , settings rules.Settings , editor Editor ) error {
396+ return placeRiverAndBridgesFood (lastBoardState , settings , editor )
397+ }
398+
399+ var islandsAndBridgesMediumStartPositions = [][]rules.Point {
400+ {
401+ {X : 3 , Y : 1 }, {X : 1 , Y : 3 },
402+ },
403+ {
404+ {X : 9 , Y : 7 }, {X : 7 , Y : 9 },
405+ },
406+ {
407+ {X : 3 , Y : 9 }, {X : 1 , Y : 7 },
408+ },
409+ {
410+ {X : 7 , Y : 1 }, {X : 9 , Y : 3 },
411+ },
412+ }
413+
414+ var islandsAndBridgesMediumHazards = []rules.Point {
415+ {X : 5 , Y : 10 },
416+ {X : 5 , Y : 9 },
417+ {X : 5 , Y : 7 },
418+ {X : 5 , Y : 6 },
419+ {X : 5 , Y : 5 },
420+ {X : 5 , Y : 4 },
421+ {X : 5 , Y : 3 },
422+ {X : 5 , Y : 0 },
423+ {X : 5 , Y : 1 },
424+ {X : 6 , Y : 5 },
425+ {X : 7 , Y : 5 },
426+ {X : 9 , Y : 5 },
427+ {X : 10 , Y : 5 },
428+ {X : 4 , Y : 5 },
429+ {X : 3 , Y : 5 },
430+ {X : 1 , Y : 5 },
431+ {X : 0 , Y : 5 },
432+ {X : 1 , Y : 10 },
433+ {X : 9 , Y : 10 },
434+ {X : 1 , Y : 0 },
435+ {X : 9 , Y : 0 },
436+ {X : 10 , Y : 1 },
437+ {X : 10 , Y : 0 },
438+ {X : 10 , Y : 10 },
439+ {X : 10 , Y : 9 },
440+ {X : 0 , Y : 10 },
441+ {X : 0 , Y : 9 },
442+ {X : 0 , Y : 1 },
443+ {X : 0 , Y : 0 },
444+ {X : 0 , Y : 6 },
445+ {X : 0 , Y : 4 },
446+ {X : 10 , Y : 6 },
447+ {X : 10 , Y : 4 },
448+ {X : 6 , Y : 10 },
449+ {X : 4 , Y : 10 },
450+ {X : 6 , Y : 0 },
451+ {X : 4 , Y : 0 },
452+ }
453+
454+ type IslandsAndBridgesLargeHazardsMap struct {}
455+
456+ func (m IslandsAndBridgesLargeHazardsMap ) ID () string {
457+ return "hz_islands_bridges_lg"
458+ }
459+
460+ func (m IslandsAndBridgesLargeHazardsMap ) Meta () Metadata {
461+ return Metadata {
462+ Name : "hz_islands_bridges_lg" ,
463+ Description : `Creates fixed maps that have a lake of hazard in the middle with rivers going in the cardinal directions and around the edges of the map. Bridges across the rivers are provided at key points` ,
464+ Author : "Battlesnake" ,
465+ Version : 1 ,
466+ MinPlayers : 1 ,
467+ MaxPlayers : 16 ,
468+ BoardSizes : FixedSizes (Dimensions {19 , 19 }),
469+ Tags : []string {TAG_FOOD_PLACEMENT , TAG_HAZARD_PLACEMENT , TAG_SNAKE_PLACEMENT },
470+ }
471+ }
472+
473+ func (m IslandsAndBridgesLargeHazardsMap ) SetupBoard (lastBoardState * rules.BoardState , settings rules.Settings , editor Editor ) error {
474+ if ! m .Meta ().BoardSizes .IsAllowable (lastBoardState .Width , lastBoardState .Height ) {
475+ return rules .RulesetError ("This map can only be played on a 19x19 board" )
476+ }
477+
478+ return setupRiverAndBridgesBoard (islandsAndBridgesLargeStartPositions , islandsAndBridgesLargeHazards , lastBoardState , settings , editor )
479+ }
480+
481+ func (m IslandsAndBridgesLargeHazardsMap ) UpdateBoard (lastBoardState * rules.BoardState , settings rules.Settings , editor Editor ) error {
482+ return placeRiverAndBridgesFood (lastBoardState , settings , editor )
483+ }
484+
485+ var islandsAndBridgesLargeStartPositions = [][]rules.Point {
486+ {
487+ {X : 2 , Y : 2 }, {X : 2 , Y : 6 }, {X : 6 , Y : 2 }, {X : 6 , Y : 6 },
488+ },
489+ {
490+ {X : 12 , Y : 2 }, {X : 16 , Y : 2 }, {X : 16 , Y : 6 }, {X : 12 , Y : 6 },
491+ },
492+ {
493+ {X : 16 , Y : 16 }, {X : 16 , Y : 12 }, {X : 12 , Y : 12 }, {X : 12 , Y : 16 },
494+ },
495+ {
496+ {X : 2 , Y : 16 }, {X : 6 , Y : 16 }, {X : 6 , Y : 12 }, {X : 2 , Y : 12 },
497+ },
498+ }
499+
500+ var islandsAndBridgesLargeHazards = []rules.Point {
501+ {X : 9 , Y : 18 }, {X : 9 , Y : 0 }, {X : 9 , Y : 1 }, {X : 9 , Y : 2 }, {X : 9 , Y : 3 }, {X : 9 , Y : 5 }, {X : 9 , Y : 6 }, {X : 9 , Y : 8 }, {X : 9 , Y : 7 }, {X : 9 , Y : 9 }, {X : 9 , Y : 10 }, {X : 9 , Y : 11 }, {X : 9 , Y : 12 }, {X : 9 , Y : 13 }, {X : 9 , Y : 15 }, {X : 9 , Y : 16 }, {X : 9 , Y : 17 }, {X : 2 , Y : 9 }, {X : 1 , Y : 9 }, {X : 0 , Y : 9 }, {X : 3 , Y : 9 }, {X : 5 , Y : 9 }, {X : 6 , Y : 9 }, {X : 7 , Y : 9 }, {X : 8 , Y : 9 }, {X : 10 , Y : 9 }, {X : 16 , Y : 9 }, {X : 15 , Y : 9 }, {X : 13 , Y : 9 }, {X : 12 , Y : 9 }, {X : 11 , Y : 9 }, {X : 17 , Y : 9 }, {X : 18 , Y : 9 }, {X : 10 , Y : 8 }, {X : 8 , Y : 8 }, {X : 8 , Y : 10 }, {X : 10 , Y : 10 }, {X : 18 , Y : 8 }, {X : 18 , Y : 7 }, {X : 18 , Y : 6 }, {X : 18 , Y : 10 }, {X : 18 , Y : 11 }, {X : 18 , Y : 12 }, {X : 0 , Y : 10 }, {X : 0 , Y : 11 }, {X : 0 , Y : 12 }, {X : 0 , Y : 8 }, {X : 0 , Y : 7 }, {X : 0 , Y : 6 }, {X : 6 , Y : 0 }, {X : 7 , Y : 0 }, {X : 8 , Y : 0 }, {X : 10 , Y : 0 }, {X : 11 , Y : 0 }, {X : 12 , Y : 0 }, {X : 10 , Y : 18 }, {X : 11 , Y : 18 }, {X : 12 , Y : 18 }, {X : 8 , Y : 18 }, {X : 7 , Y : 18 }, {X : 6 , Y : 18 }, {X : 0 , Y : 18 }, {X : 0 , Y : 17 }, {X : 0 , Y : 16 }, {X : 0 , Y : 15 }, {X : 1 , Y : 18 }, {X : 2 , Y : 18 }, {X : 3 , Y : 18 }, {X : 1 , Y : 17 }, {X : 15 , Y : 18 }, {X : 16 , Y : 18 }, {X : 17 , Y : 18 }, {X : 18 , Y : 18 }, {X : 18 , Y : 17 }, {X : 18 , Y : 16 }, {X : 18 , Y : 15 }, {X : 17 , Y : 17 }, {X : 18 , Y : 3 }, {X : 18 , Y : 2 }, {X : 18 , Y : 1 }, {X : 18 , Y : 0 }, {X : 17 , Y : 0 }, {X : 16 , Y : 0 }, {X : 15 , Y : 0 }, {X : 17 , Y : 1 }, {X : 0 , Y : 0 }, {X : 1 , Y : 0 }, {X : 2 , Y : 0 }, {X : 3 , Y : 0 }, {X : 0 , Y : 1 }, {X : 0 , Y : 2 }, {X : 0 , Y : 3 }, {X : 1 , Y : 1 }, {X : 10 , Y : 1 }, {X : 8 , Y : 1 }, {X : 8 , Y : 17 }, {X : 10 , Y : 17 }, {X : 17 , Y : 10 }, {X : 17 , Y : 8 }, {X : 1 , Y : 8 }, {X : 1 , Y : 10 },
502+ }
0 commit comments