Skip to content

Commit 6f4240f

Browse files
committed
Refactor maid enumeration
1 parent 2ba4d9f commit 6f4240f

2 files changed

Lines changed: 31 additions & 28 deletions

File tree

DressCode.cs

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -229,28 +229,41 @@ private static void RemoveTemporaryCostume(Maid maid) {
229229
}
230230

231231
internal static Maid GetHeadMaid() {
232-
var characterMgr = GameMain.Instance.CharacterMgr;
233232
Maid firstMaid = null;
234233
Maid firstStockMaid = null;
234+
foreach (var maid in GetMaids()) {
235+
firstMaid ??= maid;
236+
if (maid.status.leader) {
237+
return maid;
238+
}
239+
}
240+
foreach (var maid in GetStockMaids()) {
241+
firstStockMaid ??= maid;
242+
if (maid.status.leader) {
243+
return maid;
244+
}
245+
}
246+
return firstMaid ?? firstStockMaid;
247+
}
248+
249+
internal static IEnumerable<Maid> GetMaids() {
250+
var characterMgr = GameMain.Instance.CharacterMgr;
235251
for (var i = 0; i < characterMgr.GetMaidCount(); i++) {
236252
var maid = characterMgr.GetMaid(i);
237253
if (maid != null) {
238-
firstMaid ??= maid;
239-
if (maid.status.leader) {
240-
return maid;
241-
}
254+
yield return maid;
242255
}
243256
}
257+
}
258+
259+
internal static IEnumerable<Maid> GetStockMaids() {
260+
var characterMgr = GameMain.Instance.CharacterMgr;
244261
for (var i = 0; i < characterMgr.GetStockMaidCount(); i++) {
245262
var maid = characterMgr.GetStockMaid(i);
246263
if (maid != null) {
247-
firstStockMaid ??= maid;
248-
if (maid.status.leader) {
249-
return maid;
250-
}
264+
yield return maid;
251265
}
252266
}
253-
return firstMaid ?? firstStockMaid;
254267
}
255268

256269
internal static IEnumerator WaitMaidPropBusy(Maid maid, Action callback) {
@@ -357,12 +370,8 @@ private static void OnSceneUnloaded(Scene scene) {
357370

358371
// reset costumes if no scene is active
359372
if (_activeCostumeScene == CostumeScene.None) {
360-
var numMaids = GameMain.Instance.CharacterMgr.GetMaidCount();
361-
for (var i = 0; i < numMaids; i++) {
362-
var maid = GameMain.Instance.CharacterMgr.GetMaid(i);
363-
if (maid != null && maid.body0) {
364-
ResetCostume(maid);
365-
}
373+
foreach (var maid in GetMaids().Where(e => e.body0)) {
374+
ResetCostume(maid);
366375
}
367376
_originalCostume.Clear();
368377
_temporaryCostume.Clear();
@@ -376,16 +385,12 @@ private static void OnSceneUnloaded(Scene scene) {
376385
}
377386

378387
if (nextCostumeScene != CostumeScene.None) {
379-
var numMaids = GameMain.Instance.CharacterMgr.GetMaidCount();
380-
for (var i = 0; i < numMaids; i++) {
381-
var maid = GameMain.Instance.CharacterMgr.GetMaid(i);
382-
if (maid != null && maid.body0) {
383-
// allow honeymoon costume to load properly on startup
384-
if (nextCostumeScene == CostumeScene.Honeymoon) {
385-
maid.Visible = true;
386-
}
387-
SetCostume(maid, nextCostumeScene, TemporaryCostumeScenes.Contains(nextCostumeScene));
388+
foreach (var maid in GetMaids().Where(e => e.body0)) {
389+
// allow honeymoon costume to load properly on startup
390+
if (nextCostumeScene == CostumeScene.Honeymoon) {
391+
maid.Visible = true;
388392
}
393+
SetCostume(maid, nextCostumeScene, TemporaryCostumeScenes.Contains(nextCostumeScene));
389394
}
390395
}
391396
}

Panels/MaidSelectPanel.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ protected virtual void OnMaidSelected(MaidSelectedEventArgs e) {
3232
public void SelectMaid(Maid maid) => _characterSelectManager.SelectMaid(maid);
3333

3434
private void GetMaidList(List<Maid> drawMaidList) {
35-
var characterManager = GameMain.Instance.CharacterMgr;
36-
for (var i = 0; i < characterManager.GetStockMaidCount(); i++) {
37-
var maid = characterManager.GetStockMaid(i);
35+
foreach (var maid in DressCode.GetStockMaids()) {
3836
if (!CharacterSelectMain.compatibilityMode || maid.status.isCompatiblePersonality) {
3937
drawMaidList.Add(maid);
4038
}

0 commit comments

Comments
 (0)