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);
                    }
                }
            }
Пример #2
0
            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);
            }
Пример #4
0
 public virtual void Unequip(EntityEquipable eq)
 {
     if (GetEquipped(eq.Type) == eq)
     {
         SetEquipped(eq.Type, null);
         OnUnequip.Invoke(master, eq);
     }
 }
Пример #5
0
            public virtual void Unequip(EntityEquipableType type)
            {
                EntityEquipable oldEq = GetEquipped(type);

                if (oldEq != null)
                {
                    SetEquipped(type, null);
                    OnUnequip.Invoke(master, oldEq);
                }
            }
Пример #6
0
            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);
            }
Пример #7
0
            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);
                    }
                }
            }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
            }
        }
Пример #11
0
 private void OnEquip(Entity ent, EntityEquipable eq)
 {
     EquipVisual(eq);
 }