-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCustomBloon.cs
More file actions
95 lines (89 loc) · 2.88 KB
/
CustomBloon.cs
File metadata and controls
95 lines (89 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
using BloonFactory.Handlers;
using BloonFactory.Modules;
using BloonFactory.Modules.Core;
using BloonFactory.Modules.Display;
using BTD_Mod_Helper.Api;
using BTD_Mod_Helper.Api.Bloons;
using FactoryCore.API;
using Il2CppAssets.Scripts.Models.Bloons;
using Il2CppAssets.Scripts.Models.Rounds;
using Il2CppNinjaKiwi.Common.ResourceUtils;
using MelonLoader;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BloonFactory
{
internal class CustomBloon : ModBloon
{
public static List<CustomBloon> Bloons = new List<CustomBloon>();
public override bool UseIconAsDisplay => false;
public override string Name => $"{BloonTemplate.Guid}";
public override string BaseBloon => "Red";
public BloonTemplate BloonTemplate;
public CustomBloon()
{
}
public CustomBloon(BloonTemplate template)
{
BloonTemplate = template;
}
public override void ModifyBaseBloonModel(BloonModel bloonModel)
{
bloonModel.name = BloonTemplate.Name;
bloonModel.id = BloonTemplate.TemplateId;
}
public void ModifyExistingBloonModel(BloonModel model, RoundSetModel roundset)
{
BloonTemplate.LoadModules();
model.icon = new SpriteReference() { guidRef = "" };
foreach (var module in BloonTemplate.GetModulesOfType<BloonModule>())
{
try
{
module.currentModel = model;
module.currentRoundSet = roundset;
module.ProcessModule();
}
catch (Exception ex)
{
MelonLogger.Error(ex);
}
}
foreach (var module in BloonTemplate.GetModulesOfType<TriggerModule>())
{
try
{
module.currentModel = model;
module.ProcessModule();
}
catch (Exception ex)
{
MelonLogger.Error(ex);
}
}
DamageStateDisplayModule.DamageStateFix(model, BloonTemplate);
model.dontShowInSandbox = true;
}
public override IEnumerable<ModContent> Load()
{
if (!SerializationHandler.HasLoaded)
SerializationHandler.LoadAllTemplates();
MelonLogger.Msg("STARTING LOAD");
foreach (var template in SerializationHandler.Templates)
{
MelonLogger.Msg($"Loading {template.Name} bloon...");
yield return new CustomBloon(template);
}
}
public override void Register()
{
base.Register();
Bloons.Add(this);
}
}
}