State

Helo!
I started to study the bolt and cannot get it to work correctly load weapons from ListWeap
I'm trying to replace the weapon from the lesson that is in the prefab with load in runtime
static class ListWeap
{
public static GameObject[] weaponBases = new GameObject[]
{
Resources.Load<GameObject>("Bazooka1-Faceted"),
Resources.Load<GameObject>("Capsule"),
Resources.Load<GameObject>("Cylinder"),
Resources.Load<GameObject>("rifle-Faceted"),
Resources.Load<GameObject>("Sphere")
};

public class CubeBehavior : Bolt.EntityEventListener<ICubeState>
{
public GameObject[] WeaponObjects;

public override void Attached()
{

if (entity.IsOwner)
{
state.a= Random.Range(0, ListWeap.weaponBases.Length);
state.b = Random.Range(0, ListWeap.weaponBases.Length);
state.c = Random.Range(0, ListWeap.weaponBases.Length);

for (int i = 0; i < state.WeaponArray.Length; ++i)
{
state.WeaponArray.WeaponId = i;
}

state.WeaponActiveIndex = -1;
}
WeaponObjects = new GameObject[3];
WeaponObjects[0] = ListWeap.weaponBases[state.a];
WeaponObjects[0] = Instantiate<GameObject>(WeaponObjects[0].GetComponent<WeaponBase>().WeapPrefab, gameObject.transform);
WeaponObjects[0].transform.SetParent(gameObject.transform);


WeaponObjects[1] = ListWeap.weaponBases[state.b];
WeaponObjects[1] = Instantiate<GameObject>(WeaponObjects[1].GetComponent<WeaponBase>().WeapPrefab, gameObject.transform);
WeaponObjects[1].transform.SetParent(gameObject.transform);


WeaponObjects[2] = ListWeap.weaponBases[state.c];
WeaponObjects[2] = Instantiate<GameObject>(WeaponObjects[2].GetComponent<WeaponBase>().WeapPrefab, gameObject.transform);
WeaponObjects[2].transform.SetParent(gameObject.transform);

state.AddCallback("WeaponActiveIndex", WeaponActiveIndexChanged);
}

public override void SimulateOwner()
{

if (Input.GetKeyDown(KeyCode.Alpha1)) state.WeaponActiveIndex = 0;
if (Input.GetKeyDown(KeyCode.Alpha2)) state.WeaponActiveIndex = 1;
if (Input.GetKeyDown(KeyCode.Alpha3)) state.WeaponActiveIndex = 2;
if (Input.GetKeyDown(KeyCode.Alpha0)) state.WeaponActiveIndex = -1;

}

void WeaponActiveIndexChanged()
{
for (int i = 0; i < WeaponObjects.Length; ++i)
{
WeaponObjects.SetActive(false);
}

if (state.WeaponActiveIndex >= 0)
{
int objectId = state.WeaponArray[state.WeaponActiveIndex].WeaponId;
WeaponObjects[objectId].SetActive(true);
}
}

Comments

This discussion has been closed.