mirror of
https://github.com/PorktoberRevolution/ReStocked
synced 2024-09-01 17:34:42 +00:00
Add ISRU and custom animation module
This commit is contained in:
parent
93b4b46735
commit
6871021b8a
@ -1 +1 @@
|
|||||||
Subproject commit d8d49e303bdd463c3f8d5e2d8c6c3f8718d2eeec
|
Subproject commit f8b6ab64ffbe90f0e5c2ce6a5eacc568715978a6
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,22 @@
|
|||||||
|
// Patches applying art changes to ISRUs
|
||||||
|
// Contents:
|
||||||
|
// - Convert-O-Tron 125 (MiniISRU)
|
||||||
|
|
||||||
|
// Convert-O-Tron 125
|
||||||
|
@PART[MiniISRU]
|
||||||
|
{
|
||||||
|
@author = Andrew Cassidy
|
||||||
|
|
||||||
|
!MODEL {}
|
||||||
|
MODEL
|
||||||
|
{
|
||||||
|
model = ReStock/Assets/Resource/restock-isru-125-1
|
||||||
|
scale = 1.0, 1.0, 1.0
|
||||||
|
}
|
||||||
|
|
||||||
|
MODULE
|
||||||
|
{
|
||||||
|
name = ModuleRestockISRUAnimation
|
||||||
|
deployAnimationName = heater
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
110
Source/Restock/ModuleRestockISRUAnimation.cs
Normal file
110
Source/Restock/ModuleRestockISRUAnimation.cs
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Restock
|
||||||
|
{
|
||||||
|
public class ModuleRestockISRUAnimation: PartModule
|
||||||
|
{
|
||||||
|
[KSPField] public string activeAnimationName = "";
|
||||||
|
|
||||||
|
[KSPField] public string deployAnimationName = "";
|
||||||
|
|
||||||
|
public bool isDeployed = false;
|
||||||
|
|
||||||
|
public Animation DeployAnimation
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
private set;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<BaseConverter> _modules;
|
||||||
|
|
||||||
|
private bool _deployAnimationPresent = false;
|
||||||
|
|
||||||
|
public void Start()
|
||||||
|
{
|
||||||
|
if (base.vessel == null) return;
|
||||||
|
_modules = base.part.FindModulesImplementing<BaseConverter>();
|
||||||
|
|
||||||
|
_deployAnimationPresent = (deployAnimationName != string.Empty);
|
||||||
|
DeployAnimation = ((_deployAnimationPresent) ? base.part.FindModelAnimators(deployAnimationName)[0] : null);
|
||||||
|
|
||||||
|
foreach (var a in base.part.FindModelAnimators()) a.Stop();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnLoad(ConfigNode node)
|
||||||
|
{
|
||||||
|
if (isDeployed)
|
||||||
|
{
|
||||||
|
PlayDeployAnimation(1000);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PlayDeployAnimation(-1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update()
|
||||||
|
{
|
||||||
|
if (!HighLogic.LoadedSceneIsFlight || base.vessel == null) return;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!CheatOptions.InfiniteElectricity)
|
||||||
|
{
|
||||||
|
var ecHash = PartResourceLibrary.ElectricityHashcode;
|
||||||
|
base.vessel.GetConnectedResourceTotals(ecHash, out var ecAmount, out _, true);
|
||||||
|
Debug.Log(ecAmount);
|
||||||
|
if (ecAmount < 0.1)
|
||||||
|
{
|
||||||
|
if (isDeployed) RetractModule();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int enabledCount = 0;
|
||||||
|
foreach (var m in _modules)
|
||||||
|
{
|
||||||
|
if (m.ModuleIsActive()) enabledCount++;
|
||||||
|
}
|
||||||
|
if (isDeployed && enabledCount == 0) RetractModule();
|
||||||
|
else if (!isDeployed && enabledCount != 0) DeployModule();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
this.LogException("Failed to update animation module", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeployModule()
|
||||||
|
{
|
||||||
|
isDeployed = true;
|
||||||
|
PlayDeployAnimation(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RetractModule()
|
||||||
|
{
|
||||||
|
isDeployed = false;
|
||||||
|
PlayDeployAnimation(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PlayDeployAnimation(int speed)
|
||||||
|
{
|
||||||
|
if (_deployAnimationPresent)
|
||||||
|
{
|
||||||
|
var deployAnimationState = DeployAnimation[deployAnimationName];
|
||||||
|
if (speed < 0 && deployAnimationState.time < Mathf.Epsilon)
|
||||||
|
{
|
||||||
|
deployAnimationState.time = deployAnimationState.length;
|
||||||
|
}
|
||||||
|
else if (speed > 0 && deployAnimationState.time > deployAnimationState.length - Mathf.Epsilon)
|
||||||
|
{
|
||||||
|
deployAnimationState.time = 0.0f;
|
||||||
|
}
|
||||||
|
deployAnimationState.speed = speed;
|
||||||
|
DeployAnimation.Play(deployAnimationName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -47,6 +47,7 @@
|
|||||||
<Compile Include="MaterialModifiers\IMaterialModifier.cs" />
|
<Compile Include="MaterialModifiers\IMaterialModifier.cs" />
|
||||||
<Compile Include="MaterialModifiers\MaterialModifierParser.cs" />
|
<Compile Include="MaterialModifiers\MaterialModifierParser.cs" />
|
||||||
<Compile Include="MaterialModifiers\TexturePropertyMaterialModifier.cs" />
|
<Compile Include="MaterialModifiers\TexturePropertyMaterialModifier.cs" />
|
||||||
|
<Compile Include="ModuleRestockISRUAnimation.cs" />
|
||||||
<Compile Include="ModuleRestockModifyFairingMaterials.cs" />
|
<Compile Include="ModuleRestockModifyFairingMaterials.cs" />
|
||||||
<Compile Include="ModuleRestockModifyMaterials.cs" />
|
<Compile Include="ModuleRestockModifyMaterials.cs" />
|
||||||
<Compile Include="PartModuleExtensions.cs" />
|
<Compile Include="PartModuleExtensions.cs" />
|
||||||
|
Loading…
Reference in New Issue
Block a user