Пример #1
0
 public void SetFailureInfo(BaseFailure thisFailure)
 {
     if (this.thisFailure == null)
     {
         this.thisFailure = thisFailure;
     }
 }
Пример #2
0
        public void OnTriggerEnter(Collider thingICollidedWith)
        {
            if (thingICollidedWith.transform.root == playersVehicle.transform)
            {
                Health health = Traverse.Create(playeractor).Field("h").GetValue() as Health;
                if (health.currentHealth > 10)
                {
                    playeractor.health.Damage(birdDamage, new Vector3(0, 0, 0), Health.DamageTypes.Impact, birdActor, "Bird Strike");
                }

                Debug.Log("Bird Strike!!");
                squawk.Play();
                BaseFailure   fail   = getRandomFailure();
                System.Random rand   = new System.Random();
                double        chance = rand.NextDouble();

                if (fail.failureName.Contains("Engine Failure") && chance <= engineFailureRate)
                {
                    fail.runFailure();
                }
                else
                {
                    Debug.Log($"Is {chance} <= {fail.failureRate * failureRateMultiplier}?");
                    if (chance <= fail.failureRate * failureRateMultiplier)
                    {
                        Debug.Log($"Triggering failure {fail.failureName}");
                        fail.runFailure(null, true);
                    }
                }
            }
        }
Пример #3
0
        private Dictionary <string, List <BaseFailure> > GetFailures()
        {
            // Getting standard asset bundle which contains some warning sounds and etc

            string      assetPath = Path.Combine(Application.dataPath, "Managed", "basefailure.dll");
            AssetBundle baseFailureAssetBundle = AssetBundle.LoadFromFile(assetPath);
            AudioClip   genericWarning         = baseFailureAssetBundle.LoadAsset <AudioClip>("ttsw_warning");



            // The parent object we want to get the objects from
            Type parentType = typeof(BaseFailure);

            // Getting list of all subtypes of BaseFailure
            Assembly assembly = Assembly.GetExecutingAssembly();

            Type[]             types      = assembly.GetTypes();
            IEnumerable <Type> subclasses = types.Where(t => t.BaseType == parentType);

            // List of failures after theyre created
            Dictionary <string, List <BaseFailure> > failures = new Dictionary <string, List <BaseFailure> >();

            Log("Getting available failures...");

            foreach (Type source in subclasses)
            {
                Log($"Creating Game Object {source.Name}");
                GameObject newFailure = new GameObject(source.Name, source);

                Log($"Creating BaseFailure");
                BaseFailure failure = newFailure.GetComponent <BaseFailure>();
                failure.warningAudio           = genericWarning;
                failure.baseFailureAssetBundle = baseFailureAssetBundle;

                DontDestroyOnLoad(failure);
                Log($"Done loading.");

                if (failures.ContainsKey(failure.failureCategory))
                {
                    failures[failure.failureCategory].Add(failure);
                }
                else
                {
                    List <BaseFailure> newlist = new List <BaseFailure>(1)
                    {
                        failure
                    };
                    failures.Add(failure.failureCategory, newlist);
                }
            }

            Log("Done getting Failures!");

            return(failures);
        }