From c1258cbb4c7957cdbaa2fd6b5925bc4aea1d0360 Mon Sep 17 00:00:00 2001 From: Alexander Batalov Date: Mon, 24 Jul 2023 08:43:27 +0300 Subject: [PATCH] Add proto_pick_ai_packet --- src/mapper/mp_proto.cc | 45 ++++++++++++++++++++++++++++++++++++++++++ src/mapper/mp_proto.h | 1 + 2 files changed, 46 insertions(+) diff --git a/src/mapper/mp_proto.cc b/src/mapper/mp_proto.cc index 7678d9c..10d36da 100644 --- a/src/mapper/mp_proto.cc +++ b/src/mapper/mp_proto.cc @@ -1,5 +1,12 @@ #include "mapper/mp_proto.h" +#include + +#include "color.h" +#include "combat_ai.h" +#include "memory.h" +#include "window_manager_private.h" + namespace fallout { // 0x559C60 @@ -11,4 +18,42 @@ void init_mapper_protos() // TODO: Incomplete. } +// 0x497568 +int proto_pick_ai_packet(int* value) +{ + int count; + char** names; + int index; + int rc; + + count = combat_ai_num(); + if (count <= 0) { + return -1; + } + + names = (char**)internal_malloc(sizeof(char*) * count); + for (index = 0; index < count; index++) { + names[index] = (char*)internal_malloc(strlen(combat_ai_name(index)) + 1); + strcpy(names[index], combat_ai_name(index)); + } + + rc = _win_list_select("AI Packet", + names, + count, + NULL, + 50, + 100, + _colorTable[15855]); + if (rc != -1) { + *value = rc; + } + + for (index = 0; index < count; index++) { + internal_free(names[index]); + } + + internal_free(names); + return 0; +} + } // namespace fallout diff --git a/src/mapper/mp_proto.h b/src/mapper/mp_proto.h index 63cda50..58a7277 100644 --- a/src/mapper/mp_proto.h +++ b/src/mapper/mp_proto.h @@ -6,6 +6,7 @@ namespace fallout { extern bool can_modify_protos; void init_mapper_protos(); +int proto_pick_ai_packet(int* value); } // namespace fallout