DynamicSoldierClassDisplay
Tracking Issue: #106
Tags: ui, events
Mods may want to manipulate the way a soldier's class is displayed (in terms
of icon/name/description) in more dynamic ways. For example, RPGOverhaul
has a single soldier class and the way it is displayed depends on selected
skills and loadouts. There are three events with mostly self-explanatory names:
SoldierClassIcon event
| Param | 
Value | 
| EventID | 
SoldierClassIcon | 
| EventData | 
XComLWTuple | 
| EventSource | 
XComGameState_Unit | 
| NewGameState | 
none | 
Tuple contents
| Index | 
Name | 
Type | 
Direction | 
| 0 | 
IconImagePath | 
string | 
inout | 
Listener template
static function EventListenerReturn OnSoldierClassIcon(Object EventData, Object EventSource, XComGameState GameState, Name EventID, Object CallbackObject)
{
    local XComGameState_Unit UnitState;
    local XComLWTuple Tuple;
    local string IconImagePath;
    UnitState = XComGameState_Unit(EventSource);
    Tuple = XComLWTuple(EventData);
    IconImagePath = Tuple.Data[0].s;
    // Your code here
    Tuple.Data[0].s = IconImagePath;
    return ELR_NoInterrupt;
}
SoldierClassDisplayName event
| Param | 
Value | 
| EventID | 
SoldierClassDisplayName | 
| EventData | 
XComLWTuple | 
| EventSource | 
XComGameState_Unit | 
| NewGameState | 
none | 
Tuple contents
| Index | 
Name | 
Type | 
Direction | 
| 0 | 
DisplayName | 
string | 
inout | 
Listener template
static function EventListenerReturn OnSoldierClassDisplayName(Object EventData, Object EventSource, XComGameState GameState, Name EventID, Object CallbackObject)
{
    local XComGameState_Unit UnitState;
    local XComLWTuple Tuple;
    local string DisplayName;
    UnitState = XComGameState_Unit(EventSource);
    Tuple = XComLWTuple(EventData);
    DisplayName = Tuple.Data[0].s;
    // Your code here
    Tuple.Data[0].s = DisplayName;
    return ELR_NoInterrupt;
}
SoldierClassSummary event
| Param | 
Value | 
| EventID | 
SoldierClassSummary | 
| EventData | 
XComLWTuple | 
| EventSource | 
XComGameState_Unit | 
| NewGameState | 
none | 
Tuple contents
| Index | 
Name | 
Type | 
Direction | 
| 0 | 
DisplaySummary | 
string | 
inout | 
Listener template
static function EventListenerReturn OnSoldierClassSummary(Object EventData, Object EventSource, XComGameState GameState, Name EventID, Object CallbackObject)
{
    local XComGameState_Unit UnitState;
    local XComLWTuple Tuple;
    local string DisplaySummary;
    UnitState = XComGameState_Unit(EventSource);
    Tuple = XComLWTuple(EventData);
    DisplaySummary = Tuple.Data[0].s;
    // Your code here
    Tuple.Data[0].s = DisplaySummary;
    return ELR_NoInterrupt;
}
There is a sister feature DynamicSoldierRankDisplay
that extends this to rank icon/name.
Source code references