load("//tools:copts.bzl", "COPTS")

# Abstract base class for score calculators
cc_library(
    name = "abstract_ai_score_calculator",
    srcs = ["AbstractAIScoreCalculator.cpp"],
    hdrs = ["AbstractAIScoreCalculator.hpp"],
    copts = COPTS,
    visibility = ["//src/main/cpp/net/eagle0/shardok/ai/score:__pkg__"],  # Private to score package
    deps = [
        ":ai_score_calculator_shared_utilities",
        "//src/main/cpp/net/eagle0/shardok/ai:ai_attack_groups",
        "//src/main/cpp/net/eagle0/shardok/ai:ai_attack_locations",
        "//src/main/cpp/net/eagle0/shardok/ai:ai_score_utilities",
        "//src/main/cpp/net/eagle0/shardok/ai:ai_strategy",
        "//src/main/cpp/net/eagle0/shardok/ai:ai_unit_score_calculator",
        "//src/main/cpp/net/eagle0/shardok/ai:ai_water_crossing_calculator",
        "//src/main/cpp/net/eagle0/shardok/ai/score:ai_score_calculator_interface",
        "//src/main/cpp/net/eagle0/shardok/ai/score:ai_victory_condition_score_calculator",
        "//src/main/cpp/net/eagle0/shardok/library:battalion_type",
        "//src/main/cpp/net/eagle0/shardok/library:game_state_w",
        "//src/main/cpp/net/eagle0/shardok/library:shardok_c_types",
        "//src/main/cpp/net/eagle0/shardok/library/action_point_distances:action_point_distances_cache",
        "//src/main/cpp/net/eagle0/shardok/library/map:coords_set",
        "//src/main/cpp/net/eagle0/shardok/library/util:hex_map_utils",
        "//src/main/flatbuffer/net/eagle0/shardok/storage:game_state_cc_fbs",
    ],
)

# Private utilities shared between score calculators
cc_library(
    name = "ai_score_calculator_shared_utilities",
    srcs = ["AIScoreCalculatorSharedUtilities.cpp"],
    hdrs = ["AIScoreCalculatorSharedUtilities.hpp"],
    copts = COPTS,
    visibility = ["//src/main/cpp/net/eagle0/shardok/ai/score:__pkg__"],  # Private to score package
    deps = [
        "//src/main/cpp/net/eagle0/shardok/ai:ai_attack_groups",
        "//src/main/cpp/net/eagle0/shardok/ai:ai_score_utilities",
        "//src/main/cpp/net/eagle0/shardok/library:battalion_type",
        "//src/main/cpp/net/eagle0/shardok/library:game_state_w",
        "//src/main/cpp/net/eagle0/shardok/library:shardok_c_types",
        "//src/main/cpp/net/eagle0/shardok/library/action_point_distances",
        "//src/main/cpp/net/eagle0/shardok/library/map:coords_set",
        "//src/main/flatbuffer/net/eagle0/shardok/storage:game_state_cc_fbs",
        "//src/main/flatbuffer/net/eagle0/shardok/storage:hex_map_cc_fbs",
        "//src/main/flatbuffer/net/eagle0/shardok/storage:unit_cc_fbs",
        "@gtl",
    ],
)
