[fields] refactor: FTC/FRC separation, better naming scheme (#8034)
Closes #8018 - Adds the 2024-2025 and 2025-2026 FTC field image data - Used a better naming scheme of `<year> F{R,T}C <gamename>` * Also removed generic `field` verbiage from PNG file names - JSON and PNG files moved into respective `frc` and `ftc` directories - Rotated fields for the new red-left scheme Signed-off-by: crueter <swurl@swurl.xyz>
@@ -10,17 +10,27 @@ if(WITH_JAVA)
|
||||
|
||||
file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java)
|
||||
file(
|
||||
GLOB_RECURSE JAVA_RESOURCES
|
||||
GLOB_RECURSE JAVA_FRC_RESOURCES
|
||||
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
src/main/native/resources/*.json
|
||||
src/main/native/resources/*.png
|
||||
src/main/native/resources/*.jpg
|
||||
src/main/native/resources/frc/*.json
|
||||
src/main/native/resources/frc/*.png
|
||||
src/main/native/resources/frc/*.jpg
|
||||
)
|
||||
|
||||
file(
|
||||
GLOB_RECURSE JAVA_FTC_RESOURCES
|
||||
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
src/main/native/resources/ftc/*.json
|
||||
src/main/native/resources/ftc/*.png
|
||||
src/main/native/resources/ftc/*.jpg
|
||||
)
|
||||
|
||||
add_jar(
|
||||
field_images_jar
|
||||
SOURCES ${JAVA_SOURCES}
|
||||
RESOURCES
|
||||
NAMESPACE "org/wpilib/fields" ${JAVA_RESOURCES}
|
||||
NAMESPACE "org/wpilib/fields/frc" ${JAVA_FRC_RESOURCES}
|
||||
NAMESPACE "org/wpilib/fields/ftc" ${JAVA_FTC_RESOURCES}
|
||||
INCLUDE_JARS ${AVAJE_JARS}
|
||||
OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest}
|
||||
OUTPUT_NAME fields
|
||||
@@ -31,7 +41,7 @@ if(WITH_JAVA)
|
||||
endif()
|
||||
|
||||
generate_resources(
|
||||
src/main/native/resources/org/wpilib/fields
|
||||
src/main/native/resources/org/wpilib/fields/*
|
||||
${CMAKE_CURRENT_BINARY_DIR}/generated/main/cpp
|
||||
FIELDS
|
||||
wpi::fields
|
||||
|
||||
@@ -38,14 +38,18 @@ public class FieldConfig {
|
||||
@Json.Property("field-unit")
|
||||
public String m_fieldUnit;
|
||||
|
||||
@Json.Property("program")
|
||||
public String m_program;
|
||||
|
||||
public FieldConfig() {}
|
||||
|
||||
public URL getImageUrl() {
|
||||
return getClass().getResource(Fields.kBaseResourceDir + m_fieldImage);
|
||||
return getClass().getResource(Fields.BASE_RESOURCE_DIR + m_program + "/" + m_fieldImage);
|
||||
}
|
||||
|
||||
public InputStream getImageAsStream() {
|
||||
return getClass().getResourceAsStream(Fields.kBaseResourceDir + m_fieldImage);
|
||||
return getClass()
|
||||
.getResourceAsStream(Fields.BASE_RESOURCE_DIR + m_program + "/" + m_fieldImage);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -56,7 +60,7 @@ public class FieldConfig {
|
||||
* @throws IOException Throws if the file could not be loaded
|
||||
*/
|
||||
public static FieldConfig loadField(Fields field) throws IOException {
|
||||
return loadFromResource(field.m_resourceFile);
|
||||
return loadFromResource(field.resourceFile);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -5,29 +5,29 @@
|
||||
package org.wpilib.fields;
|
||||
|
||||
public enum Fields {
|
||||
k2018PowerUp("2018-powerup.json"),
|
||||
k2019DeepSpace("2019-deepspace.json"),
|
||||
k2020InfiniteRecharge("2020-infiniterecharge.json"),
|
||||
k2021InfiniteRecharge("2021-infiniterecharge.json"),
|
||||
k2021Barrel("2021-barrelracingpath.json"),
|
||||
k2021Bounce("2021-bouncepath.json"),
|
||||
k2021GalacticSearchA("2021-galacticsearcha.json"),
|
||||
k2021GalacticSearchB("2021-galacticsearchb.json"),
|
||||
k2021Slalom("2021-slalompath.json"),
|
||||
k2022RapidReact("2022-rapidreact.json"),
|
||||
k2023ChargedUp("2023-chargedup.json"),
|
||||
k2024Crescendo("2024-crescendo.json"),
|
||||
k2025Reefscape("2025-reefscape.json"),
|
||||
k2026Rebuilt("2026-rebuilt.json");
|
||||
FRC_2018_POWER_UP("frc/2018-powerup.json"),
|
||||
FRC_2019_DEEP_SPACE("frc/2019-deepspace.json"),
|
||||
FRC_2020_INFINITE_RECHARGE("frc/2020-infiniterecharge.json"),
|
||||
FRC_2021_INFINITE_RECHARGE("frc/2021-infiniterecharge.json"),
|
||||
FRC_2021_BARREL("frc/2021-barrelracingpath.json"),
|
||||
FRC_2021_BOUNCE("frc/2021-bouncepath.json"),
|
||||
FRC_2021_GALACTIC_SEARCH_A("frc/2021-galacticsearcha.json"),
|
||||
FRC_2021_GALACTIC_SEARCH_B("frc/2021-galacticsearchb.json"),
|
||||
FRC_2021_SLALOM("frc/2021-slalompath.json"),
|
||||
FRC_2022_RAPID_REACT("frc/2022-rapidreact.json"),
|
||||
FRC_2023_CHARGED_UP("frc/2023-chargedup.json"),
|
||||
FRC_2024_CRESCENDO("frc/2024-crescendo.json"),
|
||||
FTC_2024_2025_INTO_THE_DEEP("ftc/2024-2025-intothedeep.json"),
|
||||
FRC_2025_REEFSCAPE("frc/2025-reefscape.json"),
|
||||
FTC_2025_2026_DECODE("ftc/2025-2026-decode.json"),
|
||||
FRC_2026_REBUILT("frc/2026-rebuilt.json");
|
||||
|
||||
public static final String kBaseResourceDir = "/org/wpilib/fields/";
|
||||
public static final String BASE_RESOURCE_DIR = "/org/wpilib/fields/";
|
||||
|
||||
/** Alias to the current game. */
|
||||
public static final Fields kDefaultField = k2026Rebuilt;
|
||||
|
||||
public final String m_resourceFile;
|
||||
@SuppressWarnings("MemberName")
|
||||
public final String resourceFile;
|
||||
|
||||
Fields(String resourceFile) {
|
||||
m_resourceFile = kBaseResourceDir + resourceFile;
|
||||
this.resourceFile = BASE_RESOURCE_DIR + resourceFile;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,51 +4,58 @@
|
||||
|
||||
#include "wpi/fields/fields.hpp"
|
||||
|
||||
#include "wpi/fields/2018-powerup.hpp"
|
||||
#include "wpi/fields/2019-deepspace.hpp"
|
||||
#include "wpi/fields/2020-infiniterecharge.hpp"
|
||||
#include "wpi/fields/2021-barrel.hpp"
|
||||
#include "wpi/fields/2021-bounce.hpp"
|
||||
#include "wpi/fields/2021-galacticsearcha.hpp"
|
||||
#include "wpi/fields/2021-galacticsearchb.hpp"
|
||||
#include "wpi/fields/2021-infiniterecharge.hpp"
|
||||
#include "wpi/fields/2021-slalom.hpp"
|
||||
#include "wpi/fields/2022-rapidreact.hpp"
|
||||
#include "wpi/fields/2023-chargedup.hpp"
|
||||
#include "wpi/fields/2024-crescendo.hpp"
|
||||
#include "wpi/fields/2025-reefscape.hpp"
|
||||
#include "wpi/fields/2026-rebuilt.hpp"
|
||||
#include "wpi/fields/frc/2018-powerup.hpp"
|
||||
#include "wpi/fields/frc/2019-deepspace.hpp"
|
||||
#include "wpi/fields/frc/2020-infiniterecharge.hpp"
|
||||
#include "wpi/fields/frc/2021-barrelracingpath.hpp"
|
||||
#include "wpi/fields/frc/2021-bouncepath.hpp"
|
||||
#include "wpi/fields/frc/2021-galacticsearcha.hpp"
|
||||
#include "wpi/fields/frc/2021-galacticsearchb.hpp"
|
||||
#include "wpi/fields/frc/2021-infiniterecharge.hpp"
|
||||
#include "wpi/fields/frc/2021-slalompath.hpp"
|
||||
#include "wpi/fields/frc/2022-rapidreact.hpp"
|
||||
#include "wpi/fields/frc/2023-chargedup.hpp"
|
||||
#include "wpi/fields/frc/2024-crescendo.hpp"
|
||||
#include "wpi/fields/frc/2025-reefscape.hpp"
|
||||
#include "wpi/fields/frc/2026-rebuilt.hpp"
|
||||
#include "wpi/fields/ftc/2024-2025-intothedeep.hpp"
|
||||
#include "wpi/fields/ftc/2025-2026-decode.hpp"
|
||||
|
||||
using namespace wpi::fields;
|
||||
|
||||
static const Field kFields[] = {
|
||||
{"2026 Rebuilt", GetResource_2026_rebuilt_json, GetResource_2026_field_png},
|
||||
{"2025 Reefscape", GetResource_2025_reefscape_json,
|
||||
GetResource_2025_field_png},
|
||||
{"2024 Crescendo", GetResource_2024_crescendo_json,
|
||||
GetResource_2024_field_png},
|
||||
{"2023 Charged Up", GetResource_2023_chargedup_json,
|
||||
GetResource_2023_field_png},
|
||||
{"2022 Rapid React", GetResource_2022_rapidreact_json,
|
||||
GetResource_2022_field_png},
|
||||
{"2021 Barrel Racing Path", GetResource_2021_barrelracingpath_json,
|
||||
GetResource_2021_barrel_png},
|
||||
{"2021 Bounce Path", GetResource_2021_bouncepath_json,
|
||||
GetResource_2021_bounce_png},
|
||||
{"2021 Galactic Search A", GetResource_2021_galacticsearcha_json,
|
||||
{"2026 FRC Rebuilt", GetResource_2026_rebuilt_json,
|
||||
GetResource_2026_rebuilt_png},
|
||||
{"2025-2026 FTC DECODE", GetResource_2025_2026_decode_json,
|
||||
GetResource_2025_2026_decode_png},
|
||||
{"2025 FRC Reefscape", GetResource_2025_reefscape_json,
|
||||
GetResource_2025_reefscape_png},
|
||||
{"2024-2025 FTC Into The Deep", GetResource_2024_2025_intothedeep_json,
|
||||
GetResource_2024_2025_intothedeep_png},
|
||||
{"2024 FRC Crescendo", GetResource_2024_crescendo_json,
|
||||
GetResource_2024_crescendo_png},
|
||||
{"2023 FRC Charged Up", GetResource_2023_chargedup_json,
|
||||
GetResource_2023_chargedup_png},
|
||||
{"2022 FRC Rapid React", GetResource_2022_rapidreact_json,
|
||||
GetResource_2022_rapidreact_png},
|
||||
{"2021 FRC Barrel Racing Path", GetResource_2021_barrelracingpath_json,
|
||||
GetResource_2021_barrelracingpath_png},
|
||||
{"2021 FRC Bounce Path", GetResource_2021_bouncepath_json,
|
||||
GetResource_2021_bouncepath_png},
|
||||
{"2021 FRC Galactic Search A", GetResource_2021_galacticsearcha_json,
|
||||
GetResource_2021_galacticsearcha_png},
|
||||
{"2021 Galactic Search B", GetResource_2021_galacticsearchb_json,
|
||||
{"2021 FRC Galactic Search B", GetResource_2021_galacticsearchb_json,
|
||||
GetResource_2021_galacticsearchb_png},
|
||||
{"2021 Infinite Recharge", GetResource_2021_infiniterecharge_json,
|
||||
GetResource_2021_field_png},
|
||||
{"2021 Slalom Path", GetResource_2021_slalompath_json,
|
||||
GetResource_2021_slalom_png},
|
||||
{"2020 Infinite Recharge", GetResource_2020_infiniterecharge_json,
|
||||
GetResource_2020_field_png},
|
||||
{"2019 Destination: Deep Space", GetResource_2019_deepspace_json,
|
||||
GetResource_2019_field_jpg},
|
||||
{"2018 Power Up", GetResource_2018_powerup_json,
|
||||
GetResource_2018_field_jpg},
|
||||
{"2021 FRC Infinite Recharge", GetResource_2021_infiniterecharge_json,
|
||||
GetResource_2021_infiniterecharge_png},
|
||||
{"2021 FRC Slalom Path", GetResource_2021_slalompath_json,
|
||||
GetResource_2021_slalompath_png},
|
||||
{"2020 FRC Infinite Recharge", GetResource_2020_infiniterecharge_json,
|
||||
GetResource_2020_infiniterecharge_png},
|
||||
{"2019 FRC Destination: Deep Space", GetResource_2019_deepspace_json,
|
||||
GetResource_2019_deepspace_jpg},
|
||||
{"2018 FRC Power Up", GetResource_2018_powerup_json,
|
||||
GetResource_2018_powerup_jpg},
|
||||
};
|
||||
|
||||
std::span<const Field> wpi::fields::GetFields() {
|
||||
|
||||
@@ -8,5 +8,5 @@
|
||||
|
||||
namespace wpi::fields {
|
||||
std::string_view GetResource_2018_powerup_json();
|
||||
std::string_view GetResource_2018_field_jpg();
|
||||
std::string_view GetResource_2018_powerup_jpg();
|
||||
} // namespace wpi::fields
|
||||
@@ -5,8 +5,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <string_view>
|
||||
|
||||
namespace wpi::fields {
|
||||
std::string_view GetResource_2019_deepspace_json();
|
||||
std::string_view GetResource_2019_field_jpg();
|
||||
std::string_view GetResource_2019_deepspace_jpg();
|
||||
} // namespace wpi::fields
|
||||
@@ -8,5 +8,5 @@
|
||||
|
||||
namespace wpi::fields {
|
||||
std::string_view GetResource_2020_infiniterecharge_json();
|
||||
std::string_view GetResource_2020_field_png();
|
||||
std::string_view GetResource_2020_infiniterecharge_png();
|
||||
} // namespace wpi::fields
|
||||
@@ -8,5 +8,5 @@
|
||||
|
||||
namespace wpi::fields {
|
||||
std::string_view GetResource_2021_barrelracingpath_json();
|
||||
std::string_view GetResource_2021_barrel_png();
|
||||
std::string_view GetResource_2021_barrelracingpath_png();
|
||||
} // namespace wpi::fields
|
||||
@@ -8,5 +8,5 @@
|
||||
|
||||
namespace wpi::fields {
|
||||
std::string_view GetResource_2021_bouncepath_json();
|
||||
std::string_view GetResource_2021_bounce_png();
|
||||
std::string_view GetResource_2021_bouncepath_png();
|
||||
} // namespace wpi::fields
|
||||
@@ -7,6 +7,6 @@
|
||||
#include <string_view>
|
||||
|
||||
namespace wpi::fields {
|
||||
std::string_view GetResource_2021_field_png();
|
||||
std::string_view GetResource_2021_infiniterecharge_json();
|
||||
std::string_view GetResource_2021_infiniterecharge_png();
|
||||
} // namespace wpi::fields
|
||||
@@ -8,5 +8,5 @@
|
||||
|
||||
namespace wpi::fields {
|
||||
std::string_view GetResource_2021_slalompath_json();
|
||||
std::string_view GetResource_2021_slalom_png();
|
||||
std::string_view GetResource_2021_slalompath_png();
|
||||
} // namespace wpi::fields
|
||||
@@ -8,5 +8,5 @@
|
||||
|
||||
namespace wpi::fields {
|
||||
std::string_view GetResource_2022_rapidreact_json();
|
||||
std::string_view GetResource_2022_field_png();
|
||||
std::string_view GetResource_2022_rapidreact_png();
|
||||
} // namespace wpi::fields
|
||||
@@ -8,5 +8,5 @@
|
||||
|
||||
namespace wpi::fields {
|
||||
std::string_view GetResource_2023_chargedup_json();
|
||||
std::string_view GetResource_2023_field_png();
|
||||
std::string_view GetResource_2023_chargedup_png();
|
||||
} // namespace wpi::fields
|
||||
@@ -8,5 +8,5 @@
|
||||
|
||||
namespace wpi::fields {
|
||||
std::string_view GetResource_2024_crescendo_json();
|
||||
std::string_view GetResource_2024_field_png();
|
||||
std::string_view GetResource_2024_crescendo_png();
|
||||
} // namespace wpi::fields
|
||||
@@ -8,5 +8,5 @@
|
||||
|
||||
namespace wpi::fields {
|
||||
std::string_view GetResource_2025_reefscape_json();
|
||||
std::string_view GetResource_2025_field_png();
|
||||
std::string_view GetResource_2025_reefscape_png();
|
||||
} // namespace wpi::fields
|
||||
@@ -8,5 +8,5 @@
|
||||
|
||||
namespace wpi::fields {
|
||||
std::string_view GetResource_2026_rebuilt_json();
|
||||
std::string_view GetResource_2026_field_png();
|
||||
std::string_view GetResource_2026_rebuilt_png();
|
||||
} // namespace wpi::fields
|
||||
@@ -0,0 +1,12 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string_view>
|
||||
|
||||
namespace wpi::fields {
|
||||
std::string_view GetResource_2024_2025_intothedeep_json();
|
||||
std::string_view GetResource_2024_2025_intothedeep_png();
|
||||
} // namespace wpi::fields
|
||||
@@ -0,0 +1,12 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string_view>
|
||||
|
||||
namespace wpi::fields {
|
||||
std::string_view GetResource_2025_2026_decode_json();
|
||||
std::string_view GetResource_2025_2026_decode_png();
|
||||
} // namespace wpi::fields
|
||||
|
Before Width: | Height: | Size: 191 KiB |
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"game": "FIRST Power Up",
|
||||
"field-image": "2018-field.jpg",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
125,
|
||||
20
|
||||
],
|
||||
"bottom-right": [
|
||||
827,
|
||||
370
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
54,
|
||||
27
|
||||
],
|
||||
"field-unit": "feet"
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"game": "Destination: Deep Space",
|
||||
"field-image": "2019-field.jpg",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
217,
|
||||
40
|
||||
],
|
||||
"bottom-right": [
|
||||
1372,
|
||||
615
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
54,
|
||||
27
|
||||
],
|
||||
"field-unit": "foot"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 257 KiB |
|
Before Width: | Height: | Size: 747 KiB |
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"game": "Infinite Recharge",
|
||||
"field-image": "2020-field.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
96,
|
||||
25
|
||||
],
|
||||
"bottom-right": [
|
||||
1040,
|
||||
514
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
52.4375,
|
||||
26.9375
|
||||
],
|
||||
"field-unit": "foot"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 16 KiB |
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"game": "Infinite Recharge 2021",
|
||||
"field-image": "2021-field.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
127,
|
||||
34
|
||||
],
|
||||
"bottom-right": [
|
||||
1323,
|
||||
649
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
52.4375,
|
||||
26.9375
|
||||
],
|
||||
"field-unit": "foot"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 1.8 MiB |
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"game": "Rapid React",
|
||||
"field-image": "2022-field.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
74,
|
||||
50
|
||||
],
|
||||
"bottom-right": [
|
||||
1774,
|
||||
900
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
54,
|
||||
27
|
||||
],
|
||||
"field-unit": "foot"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.1 MiB |
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"game": "Crescendo",
|
||||
"field-image": "2024-field.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
150,
|
||||
79
|
||||
],
|
||||
"bottom-right": [
|
||||
2961,
|
||||
1476
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
54.27083,
|
||||
26.9375
|
||||
],
|
||||
"field-unit": "foot"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 2.2 MiB |
|
Before Width: | Height: | Size: 921 KiB |
|
Before Width: | Height: | Size: 742 KiB |
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"game": "Rebuilt",
|
||||
"field-image": "2026-field.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
245,
|
||||
118
|
||||
],
|
||||
"bottom-right": [
|
||||
3942,
|
||||
1914
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
54.269,
|
||||
26.474
|
||||
],
|
||||
"field-unit": "foot"
|
||||
}
|
||||
|
After Width: | Height: | Size: 187 KiB |
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"game": "2018 FRC Power Up",
|
||||
"field-image": "2018-powerup.jpg",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
133,
|
||||
23
|
||||
],
|
||||
"bottom-right": [
|
||||
835,
|
||||
373
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
54,
|
||||
27
|
||||
],
|
||||
"field-unit": "foot",
|
||||
"program": "frc"
|
||||
}
|
||||
|
After Width: | Height: | Size: 266 KiB |
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"game": "2019 FRC Destination: Deep Space",
|
||||
"field-image": "2019-deepspace.jpg",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
220,
|
||||
41
|
||||
],
|
||||
"bottom-right": [
|
||||
1375,
|
||||
616
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
54,
|
||||
27
|
||||
],
|
||||
"field-unit": "foot",
|
||||
"program": "frc"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"game": "2020 FRC Infinite Recharge",
|
||||
"field-image": "2020-infiniterecharge.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
94,
|
||||
26
|
||||
],
|
||||
"bottom-right": [
|
||||
1038,
|
||||
515
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
52.4375,
|
||||
26.9375
|
||||
],
|
||||
"field-unit": "foot",
|
||||
"program": "frc"
|
||||
}
|
||||
|
After Width: | Height: | Size: 667 KiB |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"game": "Barrel Racing Path",
|
||||
"field-image": "2021-barrel.png",
|
||||
"game": "2021 FRC Barrel Racing Path",
|
||||
"field-image": "2021-barrelracingpath.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
20,
|
||||
@@ -15,5 +15,6 @@
|
||||
30,
|
||||
15
|
||||
],
|
||||
"field-unit": "feet"
|
||||
"field-unit": "foot",
|
||||
"program": "frc"
|
||||
}
|
||||
|
After Width: | Height: | Size: 26 KiB |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"game": "Bounce Path",
|
||||
"field-image": "2021-bounce.png",
|
||||
"game": "2021 FRC Bounce Path",
|
||||
"field-image": "2021-bouncepath.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
20,
|
||||
@@ -15,5 +15,6 @@
|
||||
30,
|
||||
15
|
||||
],
|
||||
"field-unit": "feet"
|
||||
"field-unit": "foot",
|
||||
"program": "frc"
|
||||
}
|
||||
|
After Width: | Height: | Size: 32 KiB |
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"game": "Galactic Search A",
|
||||
"game": "2021 FRC Galactic Search A",
|
||||
"field-image": "2021-galacticsearcha.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
@@ -15,5 +15,6 @@
|
||||
30,
|
||||
15
|
||||
],
|
||||
"field-unit": "feet"
|
||||
"field-unit": "foot",
|
||||
"program": "frc"
|
||||
}
|
||||
|
After Width: | Height: | Size: 16 KiB |
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"game": "Galactic Search B",
|
||||
"game": "2021 FRC Galactic Search B",
|
||||
"field-image": "2021-galacticsearchb.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
@@ -15,5 +15,6 @@
|
||||
30,
|
||||
15
|
||||
],
|
||||
"field-unit": "feet"
|
||||
"field-unit": "foot",
|
||||
"program": "frc"
|
||||
}
|
||||
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"game": "2021 FRC Infinite Recharge",
|
||||
"field-image": "2021-infiniterecharge.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
133,
|
||||
35
|
||||
],
|
||||
"bottom-right": [
|
||||
1329,
|
||||
650
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
52.4375,
|
||||
26.9375
|
||||
],
|
||||
"field-unit": "foot",
|
||||
"program": "frc"
|
||||
}
|
||||
|
After Width: | Height: | Size: 989 KiB |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"game": "Slalom Path",
|
||||
"field-image": "2021-slalom.png",
|
||||
"game": "2021 FRC Slalom Path",
|
||||
"field-image": "2021-slalompath.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
20,
|
||||
@@ -15,5 +15,6 @@
|
||||
30,
|
||||
15
|
||||
],
|
||||
"field-unit": "feet"
|
||||
"field-unit": "foot",
|
||||
"program": "frc"
|
||||
}
|
||||
|
After Width: | Height: | Size: 28 KiB |
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"game": "2022 FRC Rapid React",
|
||||
"field-image": "2022-rapidreact.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
85,
|
||||
49
|
||||
],
|
||||
"bottom-right": [
|
||||
1785,
|
||||
899
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
54,
|
||||
27
|
||||
],
|
||||
"field-unit": "foot",
|
||||
"program": "frc"
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.0 MiB |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"game": "Charged Up",
|
||||
"field-image": "2023-field.png",
|
||||
"game": "2023 FRC Charged Up",
|
||||
"field-image": "2023-chargedup.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
46,
|
||||
@@ -15,5 +15,6 @@
|
||||
54.27083,
|
||||
26.2916
|
||||
],
|
||||
"field-unit": "foot"
|
||||
"field-unit": "foot",
|
||||
"program": "frc"
|
||||
}
|
||||
|
After Width: | Height: | Size: 813 KiB |
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"game": "2024 FRC Crescendo",
|
||||
"field-image": "2024-crescendo.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
151,
|
||||
80
|
||||
],
|
||||
"bottom-right": [
|
||||
2962,
|
||||
1477
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
54.27083,
|
||||
26.9375
|
||||
],
|
||||
"field-unit": "foot",
|
||||
"program": "frc"
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.6 MiB |
@@ -1,19 +1,20 @@
|
||||
{
|
||||
"game": "Reefscape",
|
||||
"field-image": "2025-field.png",
|
||||
"game": "2025 FRC Reefscape",
|
||||
"field-image": "2025-reefscape.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
534,
|
||||
291
|
||||
289
|
||||
],
|
||||
"bottom-right": [
|
||||
3466,
|
||||
1638
|
||||
1636
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
57.573,
|
||||
26.417
|
||||
],
|
||||
"field-unit": "foot"
|
||||
"field-unit": "foot",
|
||||
"program": "frc"
|
||||
}
|
||||
|
After Width: | Height: | Size: 847 KiB |
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"game": "2026 FRC Rebuilt",
|
||||
"field-image": "2026-rebuilt.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
254,
|
||||
121
|
||||
],
|
||||
"bottom-right": [
|
||||
3951,
|
||||
1917
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
54.269,
|
||||
26.474
|
||||
],
|
||||
"field-unit": "foot",
|
||||
"program": "frc"
|
||||
}
|
||||
|
After Width: | Height: | Size: 766 KiB |
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"game": "2024-2025 FTC Into The Deep",
|
||||
"field-image": "2024-2025-intothedeep.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"bottom-right": [
|
||||
2214,
|
||||
2214
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
11.93183333,
|
||||
11.93183333
|
||||
],
|
||||
"field-unit": "foot",
|
||||
"program": "ftc"
|
||||
}
|
||||
|
After Width: | Height: | Size: 356 KiB |
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"game": "2025-2026 FTC DECODE",
|
||||
"field-image": "2025-2026-decode.png",
|
||||
"field-corners": {
|
||||
"top-left": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"bottom-right": [
|
||||
2445,
|
||||
2445
|
||||
]
|
||||
},
|
||||
"field-size": [
|
||||
11.93183333,
|
||||
11.93183333
|
||||
],
|
||||
"field-unit": "foot",
|
||||
"program": "ftc"
|
||||
}
|
||||
|
After Width: | Height: | Size: 306 KiB |
@@ -11,7 +11,7 @@ import org.junit.jupiter.params.provider.EnumSource;
|
||||
class LoadConfigTest {
|
||||
@ParameterizedTest
|
||||
@EnumSource(Fields.class)
|
||||
void testLoad(Fields field) {
|
||||
void testLoadFields(Fields field) {
|
||||
FieldConfig config = Assertions.assertDoesNotThrow(() -> FieldConfig.loadField(field));
|
||||
|
||||
Assertions.assertNotNull(config.getImageUrl());
|
||||
|
||||