openmohaa/code/client/cl_uiplayermodelpicker.cpp

233 lines
8.8 KiB
C++
Raw Normal View History

2016-03-27 11:49:47 +02:00
/*
===========================================================================
2023-12-29 14:25:35 +01:00
Copyright (C) 2023 the OpenMoHAA team
2016-03-27 11:49:47 +02:00
This file is part of OpenMoHAA source code.
OpenMoHAA source code is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
OpenMoHAA source code is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OpenMoHAA source code; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
===========================================================================
*/
#include "cl_ui.h"
2023-12-29 14:25:35 +01:00
class PMPickerItem : public UIListCtrlItem
2016-03-27 11:49:47 +02:00
{
2023-12-29 14:25:35 +01:00
str m_string;
public:
int getListItemValue(int which) const override;
griditemtype_t getListItemType(int which) const override;
str getListItemString(int which) const override;
void DrawListItem(int iColumn, const UIRect2D& drawRect, bool bSelected, UIFont *pFont) override;
qboolean IsHeaderEntry() const override;
};
typedef struct {
const char *fileName;
const char *displayName;
} PMPickerModel_t;
static const PMPickerModel_t pickerModels[] = {
// 2.0 skins
{"allied_101st_captain", "US - 101st Airborne Captain" },
{"allied_101st_infantry", "US - 101st Airborne Private 1" },
{"allied_101st_scout", "US - 101st Airborne Private 2" },
{"allied_501st_pir_scout", "US - 501st Paratrooper 1" },
{"allied_501st_pir_soldier", "US - 501st Paratrooper 2" },
// 1.0 skins
{"allied_airborne", "US - 501st Paratrooper 3" },
// Readded in OPM (was removed in 2.0)
{"allied_manon", "US - Manon" },
// 2.0 skins
{"allied_british_6th_airborne_captain", "UK - 6th Airborne Captain" },
{"allied_british_6th_airborne_paratrooper", "UK - 6th Airborne Paratrooper" },
// 1.0 skins
{"allied_pilot", "US - Army Pilot" },
// 2.0 skins
{"allied_russian_corporal", "RA - Corporal" },
{"allied_russian_crazy_boris", "RA - Crazy Boris" },
{"allied_russian_recon_scout", "RA - Junior Lieutenant" },
{"allied_russian_recon_soldier", "RA - Black Sea Petty Officer" },
// 1.0 skins
{"allied_sas", "UK - SAS Officer" },
{"american_army", "US - Soldier" },
{"american_ranger", "US - Ranger" },
// 1.0 skins
{"german_afrika_officer", "DE - Afrika Officer" },
{"german_afrika_private", "DE - Afrika Private" },
// 2.0 skins
{"german_ardennes_artillery_commander", "DE - Artillery Commander" },
{"german_dday_colonel", "DE - Normandy Colonel" },
// 1.0 skins
{"german_elite_officer", "DE - Elite Officer" },
{"german_elite_sentry", "DE - Elite Sentry" },
{"german_kradshutzen", "DE - Kradshutzen" },
{"german_panzer_grenadier", "DE - Panzer Grenadier" },
{"german_panzer_obershutze", "DE - Panzer Obershutze" },
{"german_panzer_shutze", "DE - Panzer Shutze" },
{"german_panzer_tankcommander", "DE - Panzer Tank Commander" },
{"german_scientist", "DE - German Scientist" },
// Those skins were superseded by german_waffenss
{"german_waffen_officer", "DE - Waffen Officer" },
{"german_waffen_shutze", "DE - Waffen Shutze" },
// 1.0 skins
{"german_waffenss_officer", "DE - Waffen Officer" },
{"german_waffenss_shutze", "DE - Waffen Shutze" },
{"german_wehrmacht_officer", "DE - Wehrmacht Officer" },
{"german_wehrmacht_soldier", "DE - Wehrmacht Soldier" },
{"german_winter_1", "DE - Winter Infantry 1" },
{"german_winter_2", "DE - Winter Infantry 2" },
{"german_worker", "DE - German Mechanic" },
// 2.11 skins
{"allied_british_tank_corporal", "UK - 6th Royal Tank Regiment" },
{"allied_russian_seaman", "RA - Red Navy Seaman" },
{"german_Panzer_Corporal", "DE - 1st Panzer Regiment" },
{"allied_technician", "US - Air Force Technician" },
{"german_stukageschwader", "DE - Stukageschwader" },
// 2.30 skins
{"It_AX_Ital_Vol", "IT - 10th Army XXI Corps" },
{"SC_AX_Ital_Inf", "IT - 6th Army 202nd Coastal Div"},
{"SC_AX_Ital_Inf2", "IT - 114th Inf Regiment" },
{"SC_AX_ITAL_PARA", "IT - Paracadutista Militare" },
// 2.40 skins
{"allied_Wheathers", "US - General Wheathers" },
{"allied_US_Tank", "US - II Corps Tank Commander" },
{"allied_US_Mask", "US - II Corps Infantry" },
{"allied_british_Cmd", "UK - 10th Corps" },
{"allied_british_Tank", "UK - 8th Army" },
{NULL, NULL }
};
static const char *PM_FilenameToDisplayname(const char *fileName)
{
int i;
for (i = 0; pickerModels[i].fileName; i++) {
const PMPickerModel_t& model = pickerModels[i];
if (!Q_stricmp(model.fileName, fileName)) {
return model.displayName;
}
}
return fileName;
}
static const char *PM_DisplaynameToFilename(const char *displayName)
{
int i;
for (i = 0; pickerModels[i].fileName; i++) {
const PMPickerModel_t& model = pickerModels[i];
if (!Q_stricmp(model.displayName, displayName)) {
return model.fileName;
}
}
return displayName;
}
2023-12-29 14:25:35 +01:00
CLASS_DECLARATION(USignal, PlayerModelPickerClass, NULL) {
{&EV_UIListBase_ItemSelected, &PlayerModelPickerClass::FileSelected },
{&EV_UIListBase_ItemDoubleClicked, &PlayerModelPickerClass::FileChosen },
{&UIFloatingWindow::W_ClosePressed, &PlayerModelPickerClass::OnDeactivated},
{&W_Deactivated, &PlayerModelPickerClass::OnDeactivated},
{NULL, NULL }
2016-03-27 11:49:47 +02:00
};
PlayerModelPickerClass::PlayerModelPickerClass()
{
// FIXME: unimplemented
2016-03-27 11:49:47 +02:00
}
PlayerModelPickerClass::~PlayerModelPickerClass()
{
// FIXME: unimplemented
2023-12-29 14:25:35 +01:00
}
void PlayerModelPickerClass::Setup(const char *root_directory, const char *current_directory, qboolean bGermanModels)
{
// FIXME: unimplemented
2023-12-29 14:25:35 +01:00
}
void PlayerModelPickerClass::Initialize(
const char *root_directory, const char *current_directory, qboolean bGermanModels
)
{
// FIXME: unimplemented
2023-12-29 14:25:35 +01:00
}
void PlayerModelPickerClass::SetupFiles(void)
{
// FIXME: unimplemented
2023-12-29 14:25:35 +01:00
}
void PlayerModelPickerClass::FileSelected(
const str& name, const str& currentDirectory, const str& partialName, const str& fullname
)
2023-12-29 14:25:35 +01:00
{
// FIXME: unimplemented
2023-12-29 14:25:35 +01:00
}
void PlayerModelPickerClass::FileSelected(Event *ev)
2023-12-29 14:25:35 +01:00
{
// FIXME: unimplemented
2016-03-27 11:49:47 +02:00
}
void PlayerModelPickerClass::FileChosen(
const str& name, const str& currentDirectory, const str& partialName, const str& fullname
)
2016-03-27 11:49:47 +02:00
{
// FIXME: unimplemented
2016-03-27 11:49:47 +02:00
}
2023-12-29 14:25:35 +01:00
void PlayerModelPickerClass::FileChosen(Event *ev)
2016-03-27 11:49:47 +02:00
{
// FIXME: unimplemented
2016-03-27 11:49:47 +02:00
}
2023-12-29 14:25:35 +01:00
void PlayerModelPickerClass::CloseWindow(void)
2016-03-27 11:49:47 +02:00
{
// FIXME: unimplemented
2016-03-27 11:49:47 +02:00
}
2023-12-29 14:25:35 +01:00
void PlayerModelPickerClass::OnDeactivated(Event *ev)
2016-03-27 11:49:47 +02:00
{
// FIXME: unimplemented
2016-03-27 11:49:47 +02:00
}
2023-12-29 14:25:35 +01:00
int PMPickerItem::getListItemValue(int which) const
2016-03-27 11:49:47 +02:00
{
return atoi(m_string);
2016-03-27 11:49:47 +02:00
}
2023-12-29 14:25:35 +01:00
griditemtype_t PMPickerItem::getListItemType(int which) const
2016-03-27 11:49:47 +02:00
{
2023-12-29 14:25:35 +01:00
return griditemtype_t::TYPE_STRING;
2016-03-27 11:49:47 +02:00
}
2023-12-29 14:25:35 +01:00
str PMPickerItem::getListItemString(int which) const
2016-03-27 11:49:47 +02:00
{
return m_string;
2016-03-27 11:49:47 +02:00
}
void PMPickerItem::DrawListItem(int iColumn, const UIRect2D& drawRect, bool bSelected, UIFont *pFont) {}
2016-03-27 11:49:47 +02:00
2023-12-29 14:25:35 +01:00
qboolean PMPickerItem::IsHeaderEntry() const
2016-03-27 11:49:47 +02:00
{
2023-12-29 14:25:35 +01:00
return qfalse;
2016-03-27 11:49:47 +02:00
}