Example #1
0
 public ParticleSystemMetadata()
 {
     this.m_system     = null;
     this.value        = 0.0f;
     this.CannonBarrel = null;
     this.type         = MetadataType.None;
 }
Example #2
0
        public static void ManipulateBarrels(List <TankBlock> blockList, string request, Dictionary <CannonBarrel, float> memory, float average)
        {
            FieldInfo field_NumCannonBarrels = typeof(ModuleWeaponGun) // Holy mess!
                                               .GetField("m_NumCannonBarrels", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo field_CannonBarrels = typeof(ModuleWeaponGun)
                                            .GetField("m_CannonBarrels", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo field_BarrelTransform = typeof(ModuleWeaponGun)
                                              .GetField("m_BarrelTransform", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo field_FiringData = typeof(ModuleWeaponGun)
                                         .GetField("m_FiringData", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo field_WeaponModule = typeof(ModuleWeaponGun)
                                           .GetField("m_WeaponModule", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo field_ShotCooldown = typeof(ModuleWeaponGun)
                                           .GetField("m_ShotCooldown", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo field_transform = typeof(Transform)
                                        .GetField("transform", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo field_AnimState = typeof(CannonBarrel)
                                        .GetField("animState", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);

            /*MethodInfo method_Setup = typeof(CannonBarrel)
             *  .GetMethod("Setup", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
             * MethodInfo method_CapRecoilDuration = typeof(CannonBarrel)
             *  .GetMethod("CapRecoilDuration", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);*/

            foreach (TankBlock block in blockList)
            {
                ModuleWeaponGun weapon = block.GetComponent <ModuleWeaponGun>();
                int             value_NumCannonBarrels = (int)field_NumCannonBarrels.GetValue(weapon);
                if (value_NumCannonBarrels != 0)
                {
                    Array value_CannonBarrels = (Array)field_CannonBarrels.GetValue(weapon);
                    for (int i = 0; i < value_CannonBarrels.Length; i++)
                    {
                        /*Transform value_BarrelTransform = (Transform)field_BarrelTransform.GetValue(weapon);
                         * if (value_BarrelTransform == null) // Will this ever check true?
                         * {
                         *  field_BarrelTransform.SetValue(weapon, field_transform.GetValue(value_CannonBarrels.GetValue(i)));
                         * }*/
                        CannonBarrel thisBarrel         = (CannonBarrel)value_CannonBarrels.GetValue(i);
                        FireData     value_FiringData   = (FireData)field_FiringData.GetValue(weapon);
                        ModuleWeapon value_WeaponModule = (ModuleWeapon)field_WeaponModule.GetValue(weapon);
                        float        value_ShotCooldown = (float)field_ShotCooldown.GetValue(weapon);
                        //method_Setup.Invoke(value_CannonBarrels.GetValue(i), new object[] { value_FiringData, value_WeaponModule });
                        //method_CapRecoilDuration.Invoke(value_CannonBarrels.GetValue(i), new object[] { value_ShotCooldown });
                        object value_AnimState = field_AnimState.GetValue(thisBarrel);
                        if (value_AnimState != null)
                        {
                            PropertyInfo prop_GetSpeed = value_AnimState.GetType()
                                                         .GetProperty("speed", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty);
                            PropertyInfo prop_SetSpeed = value_AnimState.GetType()
                                                         .GetProperty("speed", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetProperty);
                            PropertyInfo prop_GetLength = value_AnimState.GetType()
                                                          .GetProperty("length", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty);
                            PropertyInfo prop_SetLength = value_AnimState.GetType()
                                                          .GetProperty("length", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetProperty);
                            if (request == "SAVE")
                            {
                                memory.Add(thisBarrel, (float)prop_GetSpeed.GetValue(value_AnimState));
                            }
                            else if (request == "UPDATE")
                            {
                                prop_SetSpeed.SetValue(value_AnimState, memory[thisBarrel] / average);
                            }
                            else if (request == "CLEAN")
                            {
                                prop_SetSpeed.SetValue(value_AnimState, memory[thisBarrel]);
                                memory.Remove(thisBarrel);
                            }
                        }
                    }
                }
            }
        }
Example #3
0
        public void ManipulateBarrels(List <ModuleWeaponGun> weaponList, string request)
        {
            FieldInfo field_NumCannonBarrels = typeof(ModuleWeaponGun) // Holy mess!
                                               .GetField("m_NumCannonBarrels", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo field_CannonBarrels = typeof(ModuleWeaponGun)
                                            .GetField("m_CannonBarrels", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo field_BarrelTransform = typeof(ModuleWeaponGun)
                                              .GetField("m_BarrelTransform", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo field_FiringData = typeof(ModuleWeaponGun)
                                         .GetField("m_FiringData", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo field_WeaponModule = typeof(ModuleWeaponGun)
                                           .GetField("m_WeaponModule", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo field_ShotCooldown = typeof(ModuleWeaponGun)
                                           .GetField("m_ShotCooldown", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo field_transform = typeof(Transform)
                                        .GetField("transform", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo field_AnimState = typeof(CannonBarrel)
                                        .GetField("animState", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);

            /*MethodInfo method_Setup = typeof(CannonBarrel)
             *  .GetMethod("Setup", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
             * MethodInfo method_CapRecoilDuration = typeof(CannonBarrel)
             *  .GetMethod("CapRecoilDuration", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);*/

            foreach (ModuleWeaponGun weapon in weaponList)
            {
                int value_NumCannonBarrels = (int)field_NumCannonBarrels.GetValue(weapon);
                if (value_NumCannonBarrels != 0)
                {
                    Array value_CannonBarrels = (Array)field_CannonBarrels.GetValue(weapon);
                    for (int i = 0; i < value_CannonBarrels.Length; i++)
                    {
                        /*Transform value_BarrelTransform = (Transform)field_BarrelTransform.GetValue(weapon);
                         * if (value_BarrelTransform == null) // Will this ever check true?
                         * {
                         *  field_BarrelTransform.SetValue(weapon, field_transform.GetValue(value_CannonBarrels.GetValue(i)));
                         * }*/
                        CannonBarrel thisBarrel         = (CannonBarrel)value_CannonBarrels.GetValue(i);
                        FireData     value_FiringData   = (FireData)field_FiringData.GetValue(weapon);
                        ModuleWeapon value_WeaponModule = (ModuleWeapon)field_WeaponModule.GetValue(weapon);
                        float        value_ShotCooldown = (float)field_ShotCooldown.GetValue(weapon);
                        //method_Setup.Invoke(value_CannonBarrels.GetValue(i), new object[] { value_FiringData, value_WeaponModule });
                        //method_CapRecoilDuration.Invoke(value_CannonBarrels.GetValue(i), new object[] { value_ShotCooldown });
                        object value_AnimState = field_AnimState.GetValue(thisBarrel);
                        if (value_AnimState != null)
                        {
                            PropertyInfo prop_GetSpeed = value_AnimState.GetType()
                                                         .GetProperty("speed", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty);
                            PropertyInfo prop_SetSpeed = value_AnimState.GetType()
                                                         .GetProperty("speed", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetProperty);
                            PropertyInfo prop_GetLength = value_AnimState.GetType()
                                                          .GetProperty("length", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty);
                            PropertyInfo prop_SetLength = value_AnimState.GetType()
                                                          .GetProperty("length", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetProperty);
                            if (request == "SAVE")
                            {
                                this.weaponSpeedMemory.Add(thisBarrel, (float)prop_GetSpeed.GetValue(value_AnimState));
                            }
                            else if (request == "UPDATE")
                            {
                                prop_SetSpeed.SetValue(value_AnimState, this.weaponSpeedMemory[thisBarrel] / this.allSegments["WeaponCooldown"].GetAverages());
                            }
                            else if (request == "CLEAN")
                            {
                                prop_SetSpeed.SetValue(value_AnimState, this.weaponSpeedMemory[thisBarrel]);
                                this.weaponSpeedMemory.Remove(thisBarrel);
                            }
                            //float value_length = (float)prop_GetLength.GetValue(value_AnimState);
                            //Console.WriteLine("FFW! Pre. Length = " + (float)prop_GetLength.GetValue(value_AnimState) + " . Speed = " + (float)prop_GetSpeed.GetValue(value_AnimState));

                            /*float modifier = this.allSegments["WeaponCooldown"].GetAveragesByKey(weapon, 2);
                             * if (modifier == 0.0f)
                             * {
                             *  modifier = this.allSegments["WeaponCooldown"].GetAveragesByKey(weapon, 1);
                             * }
                             * if (value_length > modifier)
                             * {
                             *  //prop_SetSpeed.SetValue(value_AnimState, value_length / modifier);
                             * }*/
                            //Console.WriteLine("FFW! Post. Length = " + (float)prop_GetLength.GetValue(value_AnimState) + " . Speed = " + (float)prop_GetSpeed.GetValue(value_AnimState));

                            /*if (value_length > this.allSegments["WeaponCooldown"].GetAveragesByKey(weapon, 2))
                             * {
                             *  prop_SetSpeed.SetValue(value_AnimState, value_length / this.allSegments["WeaponCooldown"].GetAveragesByKey(weapon, 2));
                             * }*/
                        }
                    }
                }
            }
        }
Example #4
0
        // called from ModuleWeaponGun OnPool
        // Input: proper order of things
        // Anything not explicitly assigned a CannonBarrel defaults to the first CannonBarrel slot
        public bool AlignCannonBarrels(CannonBarrel[] m_CannonBarrels)
        {
            this.DebugPrint("<MPM> AlignCannonBarrels");

            if (this.initOnBarrelFired != null && this.initOnBarrelFired.Count > 0)
            {
                this.onBarrelFired = new List <List <ParticleSystem> >();
                this.onBarrelFired.Add(new List <ParticleSystem>());

                // initialize the structures
                for (int i = 1; i < m_CannonBarrels.Length; i++)
                {
                    this.onBarrelFired.Add(new List <ParticleSystem>());
                }

                for (int i = 0; i < this.initOnBarrelFired.Count; i++)
                {
                    CannonBarrel target_barrel = this.initCannonBarrelFiredList[i];
                    bool         match         = false;

                    for (int j = 0; j < m_CannonBarrels.Length; j++)
                    {
                        if (target_barrel == m_CannonBarrels[j])
                        {
                            this.DebugPrint("  entry [" + i.ToString() + "] has matched to barrel <" + j.ToString() + ">");
                            this.onBarrelFired[j].Add(this.initOnBarrelFired[i]);
                            this.DebugPrint("  dump1");
                            match = true;
                            break;
                        }
                    }
                    if (!match)
                    {
                        this.onBarrelFired[0].Add(this.initOnBarrelFired[i]);
                        this.DebugPrint("  dump1");
                    }
                }
            }

            if (this.initBeforeBarrelFired != null && this.initBeforeBarrelFired.Count > 0)
            {
                this.beforeBarrelFired = new List <List <ParticleSystem> >();
                this.defaultTimeNeeded = new List <List <float> >();
                this.beforeBarrelFired.Add(new List <ParticleSystem>());
                this.defaultTimeNeeded.Add(new List <float>());

                // initialize the structures
                for (int i = 1; i < m_CannonBarrels.Length; i++)
                {
                    this.beforeBarrelFired.Add(new List <ParticleSystem>());
                    this.defaultTimeNeeded.Add(new List <float>());
                }

                // we know they've been shoved in order.
                List <ParticleSystem> init_system_dump = this.initBeforeBarrelFired;
                List <float>          init_float_dump  = this.initTimeBeforeBarrelFired;
                // this.beforeBarrelFired[0] = new List<ParticleSystem>();
                // this.defaultTimeNeeded[0] = new List<float>();
                this.maxTimeNeeded = new float[m_CannonBarrels.Length];
                this.adjStartDelay = new float[m_CannonBarrels.Length];
                this.adjCycleDelay = new float[m_CannonBarrels.Length];

                this.DebugPrint("Stuff was initialized (CannonBarrelAlign)");

                // Identify proper barrel index, shove it in there. Shove into barrel 0 if no CannonBarrel provided
                for (int i = 0; i < init_system_dump.Count; i++)
                {
                    this.DebugPrint("Begin init entry " + i.ToString());
                    CannonBarrel target_barrel = this.initCannonBarrelList[i];
                    bool         match         = false;
                    for (int j = 0; j < m_CannonBarrels.Length; j++)
                    {
                        if (target_barrel == m_CannonBarrels[j])
                        {
                            this.DebugPrint("  entry [" + i.ToString() + "] has matched to barrel <" + j.ToString() + ">");
                            this.beforeBarrelFired[j].Add(init_system_dump[i]);
                            this.DebugPrint("  dump1");
                            this.defaultTimeNeeded[j].Add(init_float_dump[i]);
                            this.DebugPrint("  dump2");
                            this.maxTimeNeeded[j] = Mathf.Max(this.maxTimeNeeded[j], init_float_dump[i]);
                            this.DebugPrint("  dump3");
                            match = true;
                            break;
                        }
                    }
                    if (!match)
                    {
                        this.beforeBarrelFired[0].Add(init_system_dump[i]);
                        this.DebugPrint("  dump1");
                        this.defaultTimeNeeded[0].Add(init_float_dump[i]);
                        this.DebugPrint("  dump2");
                        this.maxTimeNeeded[0] = Mathf.Max(this.maxTimeNeeded[0], init_float_dump[i]);
                        this.DebugPrint("  dump3");
                    }
                }
                return(true);
            }

            // no longer need, free up for GC
            this.initCannonBarrelList = null;
            return(false);
        }