private void SyncEntityEquip(SyncableVariable var, NetworkReader reader) { int count = reader.ReadInt32(); for (int i = 0; i < count; i++) { bool method = reader.ReadBoolean(); EntityEquipable eq = reader.ReadEntityEquipable(); UnsubscribeToEquipEvents(); if (method) { Equip(eq); } else { Unequip(eq); } SubscribeToEquipEvents(); if (References.NetworkIdentity.isServer == true && References.NetworkIdentity.hasAuthority == false) { _equipableSyncMethod.Add(method); _equipablesToSync.Add(eq); PinouNetworkManager.MainBehaviour.SetDirty(master.gameObject, SyncableVariable.EntityEquip); } } }
protected void SetEquipped(EntityEquipableType type, EntityEquipable equipable) { if (equipable != null && equipable.Type != type) { return; } switch (type) { case EntityEquipableType.Shell: equippedShell = equipable; break; case EntityEquipableType.Weapon: equippedWeapon = equipable; break; case EntityEquipableType.Aura: equippedAura = equipable; break; case EntityEquipableType.Reactor: equippedReactor = equipable; break; } }
private void OnUnequipNet(Entity master, EntityEquipable eq) { _equipableSyncMethod.Add(false); _equipablesToSync.Add(eq); PinouNetworkManager.MainBehaviour.SetDirty(master.gameObject, SyncableVariable.EntityEquip); }
public virtual void Unequip(EntityEquipable eq) { if (GetEquipped(eq.Type) == eq) { SetEquipped(eq.Type, null); OnUnequip.Invoke(master, eq); } }
public virtual void Unequip(EntityEquipableType type) { EntityEquipable oldEq = GetEquipped(type); if (oldEq != null) { SetEquipped(type, null); OnUnequip.Invoke(master, oldEq); } }
public virtual void Equip(EntityEquipable eq) { if (eq == null) { return; } if (GetEquipped(eq.Type) != null) { Unequip(eq.Type); } SetEquipped(eq.Type, eq); OnEquip.Invoke(master, eq); }
private void BuildDefaultEquipment() { Array eqValues = Enum.GetValues(typeof(EntityEquipableType)); for (int i = 1; i < eqValues.Length; i++) { EntityEquipableType eqType = (EntityEquipableType)i; EntityEquipableBuilder builder; if (builder = _data.GetDefaultEquipableBuilder(eqType)) { int eqLevel = (HasStats ? (Stats.HasMainLevel ? Stats.MainExperience.Level : 1) : 1); EntityEquipable eq = builder.BuildEquipable(eqLevel); Equip(eq); } } }
private void UnequipVisual(EntityEquipable eq) { if (eq == null || eq.HasVisual == false) { return; } if (_equippedVisuals.ContainsKey(eq) == false) { return; } GameObject[] eqVisuals = _equippedVisuals[eq]; for (int i = 0; i < eqVisuals.Length; i++) { PinouApp.Pooler.Store(eqVisuals[i]); } _equippedVisuals.Remove(eq); }
private void EquipVisual(EntityEquipable eq) { if (eq == null || eq.HasVisual == false) { return; } if (_equippedVisuals.ContainsKey(eq)) { UnequipVisual(eq); } GameObject[] eqVisuals = new GameObject[eq.Visual.Parts.Length]; for (int i = 0; i < eqVisuals.Length; i++) { eqVisuals[i] = PinouApp.Pooler.Retrieve(eq.Visual.Parts[i].Model, GetSocket(eq.Visual.Parts[i].Socket)).gameObject; eqVisuals[i].transform.localPosition = Vector3.zero; eqVisuals[i].transform.localRotation = Quaternion.Euler(0, 0, 0); eqVisuals[i].transform.localScale = Vector3.one; } _equippedVisuals.Add(eq, eqVisuals); }
public static void WriteEntityEquipable(this NetworkWriter writer, EntityEquipable equipable) { writer.WriteString(equipable.Name); writer.WriteInt32(equipable.ItemLevel); writer.WriteInt32((int)equipable.Type); int statsInfluencesLength = equipable.StatsInfluences == null ? 0 : equipable.StatsInfluences.Length; writer.WriteInt32(statsInfluencesLength); for (int i = 0; i < statsInfluencesLength; i++) { writer.WriteStatsInfluence(equipable.StatsInfluences[i]); } writer.WriteBoolean(equipable.HasEquippedAbility); if (equipable.HasEquippedAbility) { writer.WriteEntityEquipableAbility(equipable.EquippedAbility); } writer.WriteBoolean(equipable.HasVisual); if (equipable.HasVisual) { writer.WriteEntityEquipableVisual(equipable.Visual); } }
private void OnEquip(Entity ent, EntityEquipable eq) { EquipVisual(eq); }