コード例 #1
0
ファイル: UFLiquid.cs プロジェクト: wardd64/UnityFaction
    private static void ApplyDPS(UFPlayerLife player, Room.LiquidProperties.LiquidType type)
    {
        switch (type)
        {
        case Room.LiquidProperties.LiquidType.Lava:
            player.TakeDamage(10f * Time.deltaTime, UFPlayerLife.DamageType.Fire, true);
            break;

        case Room.LiquidProperties.LiquidType.Acid:
            player.TakeDamage(5f * Time.deltaTime, UFPlayerLife.DamageType.Acid, true);
            break;
        }
    }
コード例 #2
0
    private void Update()
    {
        if (UFLevel.player == null)
        {
            return;
        }

        buttonAlert.SetBool("Visible", inButtonRange);
        inButtonRange = false;

        UFPlayerLife life = UFLevel.GetPlayer <UFPlayerLife>();

        float healthFrac = Mathf.Clamp01(life.GetHealth() / UFPlayerLife.MAX_HP);
        float armorFrac  = Mathf.Clamp01(life.GetArmor() / UFPlayerLife.MAX_HP);

        healthGauge.color = Color.Lerp(Color.red, Color.green, healthFrac);
        armorGauge.color  = Color.Lerp(Color.black, Color.yellow, armorFrac);
        healthGauge.transform.localScale = healthFrac * Vector3.one;
        armorGauge.fillAmount            = armorFrac;

        SetTimer(UFLevel.singleton.GetCountDownTime());

        if (weaponTagPanelTimer.TickTrigger())
        {
            weaponTagPanel.gameObject.SetActive(false);
        }

        matchTimerText.gameObject.SetActive(!PhotonNetwork.offlineMode);
        float matchTime = Global.match.timeLeft;

        if (matchTime < 10f)
        {
            matchTimerText.text = UFUtils.GetTimeString(matchTime, 1);
        }
        else
        {
            matchTimerText.text = UFUtils.GetTimeString(Mathf.FloorToInt(matchTime));
        }
    }
コード例 #3
0
    /// <summary>
    /// Perform effects of this event.
    /// Returns the type of IDRef that is used up when performing the event,
    /// these references do not get activated in the usual sense by this
    /// event type.
    /// </summary>
    private IDRef.Type DoEffect(bool positive)
    {
        //preperatory variables
        Transform        playerTr = UFLevel.GetPlayer <Transform>();
        UFPlayerLife     playerLi = UFLevel.GetPlayer <UFPlayerLife>();
        UFPlayerMovement playerMo = UFLevel.GetPlayer <UFPlayerMovement>();
        AudioSource      sound    = this.GetComponent <AudioSource>();

        //find effect type and do its effects. Return IDRefts that were used up.
        switch (type)
        {
        case UFLevelStructure.Event.EventType.Teleport:
            foreach (int link in links)
            {
                Transform t = UFLevel.GetByID(link).objectRef.transform;
                t.position = transform.position;
                t.rotation = transform.rotation;
            }
            return(IDRef.Type.None);

        case UFLevelStructure.Event.EventType.Teleport_Player:
            playerTr.position = transform.position;
            playerTr.GetComponent <CharacterController>().Move(Vector3.zero);
            playerMo.SetRotation(transform.rotation);
            return(IDRef.Type.None);

        case UFLevelStructure.Event.EventType.Music_Start:
            if (sound.clip == null)
            {
                Debug.LogWarning("Music event has no audio clip assigned: " + name);
            }
            sound.Play();
            return(IDRef.Type.None);

        case UFLevelStructure.Event.EventType.Play_Sound:
            sound.rolloffMode = AudioRolloffMode.Linear;
            if (float1 >= 0f)
            {
                sound.minDistance  = float1;
                sound.maxDistance  = float1 * 2f;
                sound.spatialBlend = 1f;
            }
            else
            {
                sound.spatialBlend = 0f;
            }
            if (sound.clip == null)
            {
                Debug.LogWarning("Play sound event has no audio clip assigned: " + name);
            }
            sound.loop = bool1;
            sound.Play();
            if (float2 > 0f && !bool1)
            {
                sound.SetScheduledEndTime(float2);
            }
            return(IDRef.Type.None);

        case UFLevelStructure.Event.EventType.Music_Stop:
            float fadeTime = float1;
            foreach (UFEvent e in GetEventsOfType(UFLevelStructure.Event.EventType.Music_Start))
            {
                StartCoroutine(e.FadeAudioSource(fadeTime, 0f));
            }
            return(IDRef.Type.None);

        case UFLevelStructure.Event.EventType.Particle_State:
            foreach (UFParticleEmitter pem in GetLinksOfType <UFParticleEmitter>(IDRef.Type.ParticleEmitter))
            {
                pem.Activate(positive);
            }
            return(IDRef.Type.ParticleEmitter);

        case UFLevelStructure.Event.EventType.Mover_Pause:
            foreach (UFMover mov in GetLinksOfType <UFMover>(IDRef.Type.Keyframe))
            {
                mov.Activate(!positive);
            }
            return(IDRef.Type.Keyframe);

        case UFLevelStructure.Event.EventType.Reverse_Mover:
            bool setForwardIfMoving = int1 != 0;
            foreach (UFMover mov in GetLinksOfType <UFMover>(IDRef.Type.Keyframe))
            {
                mov.Reverse(setForwardIfMoving);
            }
            return(IDRef.Type.Keyframe);

        case UFLevelStructure.Event.EventType.Modify_Rotating_Mover:
            bool  increase = string1.Equals("Increase");
            float factor   = increase ? 1f + (float1 / 100f) : 1f - (float1 / 100f);
            foreach (UFMover mov in GetLinksOfType <UFMover>(IDRef.Type.Keyframe))
            {
                mov.ChangeRotationSpeed(factor);
            }
            return(IDRef.Type.Keyframe);

        case UFLevelStructure.Event.EventType.Explode:
            float radius = float1;
            float damage = float2;
            bool  geo    = bool1;
            float dist   = (playerTr.position - transform.position).magnitude;
            if (dist < radius)
            {
                playerLi.TakeDamage(damage, UFPlayerLife.DamageType.Explosive, false);
            }
            if (geo)
            {
                Debug.LogWarning("Explosion " + name + " requested geo mod; this will not work as of now!");
            }
            GameObject explosionPrefab = obj as GameObject;
            if (explosionPrefab != null)
            {
                Vector3    explPos   = transform.position;
                Quaternion explRot   = transform.rotation;
                GameObject explosion = Instantiate(explosionPrefab, explPos, explRot, transform);
                explosion.transform.localScale = radius * 2f * Vector3.one;
            }
            else
            {
                Debug.LogWarning("Explosion prefab for event " + name + " was not provided!");
            }
            return(IDRef.Type.None);

        case UFLevelStructure.Event.EventType.Skybox_State:
            UFLevel.playerInfo.SetSkyboxRotation(string1, float1);
            return(IDRef.Type.None);

        case UFLevelStructure.Event.EventType.Bolt_State:
            foreach (UFBoltEmitter bem in GetLinksOfType <UFBoltEmitter>(IDRef.Type.BoltEmitter))
            {
                bem.Activate(positive);
            }
            return(IDRef.Type.BoltEmitter);

        case UFLevelStructure.Event.EventType.Push_Region_State:
            foreach (UFForceRegion pr in GetLinksOfType <UFForceRegion>(IDRef.Type.PushRegion))
            {
                pr.Activate(positive);
            }
            return(IDRef.Type.PushRegion);

        case UFLevelStructure.Event.EventType.Countdown_Begin:
            UFLevel.singleton.SetCountDown(int1);
            return(IDRef.Type.None);

        case UFLevelStructure.Event.EventType.Countdown_End:
            UFLevel.singleton.SetCountDown(0f);
            return(IDRef.Type.None);

        case UFLevelStructure.Event.EventType.Remove_Object:
            foreach (int link in links)
            {
                GameObject g = UFLevel.GetByID(link).objectRef;
                if (g == null)
                {
                    Debug.LogWarning("Trying to remove ID ref that does not exist: " + link);
                }
                else
                {
                    g.SetActive(false);
                }
            }
            return(IDRef.Type.All);

        case UFLevelStructure.Event.EventType.Heal:
            if (bool1)
            {
                UFLevel.GetPlayer <UFPlayerLife>().GainHealth(int1);
                return(IDRef.Type.None);
            }
            else
            {
                Debug.LogError("Entity heal not implemented");
                return(IDRef.Type.Entity);
            }

        case UFLevelStructure.Event.EventType.Set_Gravity:
            Physics.gravity = float1 * Vector3.down;
            return(IDRef.Type.None);

        default:
            Debug.LogError("Event type " + type + " not implemented");
            return(IDRef.Type.None);
        }
    }
コード例 #4
0
ファイル: UFItem.cs プロジェクト: wardd64/UnityFaction
    private bool PickUp()
    {
        UFPlayerLife life = UFLevel.GetPlayer <UFPlayerLife>();

        if (life.isDead)
        {
            return(false);
        }
        UFPlayerMoveSounds sound = life.GetComponentInChildren <UFPlayerMoveSounds>();

        switch (type)
        {
        case ItemType.Health:
            if (life.CanPickUpHealth())
            {
                life.GainHealth(count);
                sound.PickUpPowerup();
                return(true);
            }
            return(false);

        case ItemType.Armor:
            if (life.CanPickUpArmor())
            {
                life.GainArmor(count);
                sound.PickUpPowerup();
                return(true);
            }
            return(false);

        case ItemType.SuperHealth:
            sound.PickUpPowerup();
            life.SuperHealth();
            return(true);

        case ItemType.SuperArmor:
            sound.PickUpPowerup();
            life.SuperArmor();
            return(true);

        case ItemType.Invulnerability:
            sound.PickUpInvuln();
            life.Invulnerability();
            return(true);

        case ItemType.Explosive:
        case ItemType.Gun:
        case ItemType.SpecialWeapon:
            bool weapon = UFLevel.GetPlayer <UFPlayerWeapons>().PickupWeapon(this);
            if (weapon)
            {
                sound.PickUpWeapon();
            }
            return(weapon);

        case ItemType.ExplosiveAmmo:
        case ItemType.GunAmmo:
            bool ammo = UFLevel.GetPlayer <UFPlayerWeapons>().PickupAmmo(this);
            if (ammo)
            {
                sound.PickUpWeapon();
            }
            return(ammo);

        case ItemType.DamageAmp:
            UFLevel.GetPlayer <UFPlayerWeapons>().DamageAmp();
            sound.PickUpDamageAmp();
            return(true);

        default:
            Debug.LogWarning("Tried to collect unkown item type: " + type + " of item " + this.name);
            return(false);
        }
    }