part of 'sitemode.dart'; extension PlayerParts on SiteMode { void playerMaintain() { playerTookAutomatedAction = false; var geo.Offset(:x, :y) = playerPosition; var tile = level.tiles.get(x, y); if (tile == LevelTile.closedDoor) { level.tiles.set(x, y, LevelTile.openDoor); } if (playerIntendedPath.isNotEmpty) { var nextPosition = playerIntendedPath.removeAt(0); playerPosition = nextPosition; playerTookAutomatedAction = true; } } // support the UI command here Future playerMoveTo(int cx, int cy) async { var ipath = dijkstraPath( geo.Offset(playerPosition.x, playerPosition.y), geo.Offset(cx, cy), _fovDijkstraNeighbors, ); if (ipath == null) { return; // don't move, I guess } playerIntendedPath.addAll(ipath); } }