示例#1
0
 public void ClearMouseOverObject(AtavismNode node)
 {
     if (node.Equals(mouseOverObject))
     {
         mouseOverObject = null;
         mouseOverCursor = null;
     }
 }
示例#2
0
 void Start()
 {
     node = GetComponent <AtavismNode>();
     if (node != null)
     {
         if (node.PropertyExists("level"))
         {
             level = (int)node.GetProperty("level");
         }
         node.RegisterObjectPropertyChangeHandler("level", LevelHandler);
     }
 }
示例#3
0
        void OnDestroy()
        {
            AtavismNode aNode = GetComponent <AtavismNode>();

            if (aNode == null && transform != null && transform.parent != null)
            {
                aNode = transform.parent.GetComponent <AtavismNode>();
            }
            if (aNode != null)
            {
                aNode.RemoveObjectPropertyChangeHandler("deadstate", HandleDeadState);
            }
        }
示例#4
0
        public void HandleDeadState(object sender, PropertyChangeEventArgs args)
        {
            //Debug.Log ("Got dead update: " + oid);
            AtavismNode an = GetComponent <AtavismNode>();

            if (an == null && transform != null && transform.parent != null)
            {
                an = transform.parent.GetComponent <AtavismNode>();
            }
            long oid  = an.Oid;
            bool dead = (bool)AtavismClient.Instance.WorldManager.GetObjectNode(oid).GetProperty("deadstate");

            if (dead)
            {
                PlaySoundEvent(MobSoundEvent.Death);
            }
        }
示例#5
0
 // Update is called once per frame
 void Update()
 {
     if (Input.GetKeyDown(KeyCode.Escape))
     {
         NetworkAPI.SendAttackMessage(ClientAPI.GetTargetOid(), "strike", false);
         ClientAPI.ClearTarget();
     }
     if (mouseOverObject == null && Camera.main != null)
     {
         AtavismNode hoverObject = null;
         GameObject  mouseOver   = null;
         Ray         ray         = Camera.main.ScreenPointToRay(Input.mousePosition);
         RaycastHit  hit;
         // Casts the ray and get the first game object hit
         if (Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask))
         {
             mouseOver = hit.transform.gameObject;
         }
         // Get objectnode from object
         if (mouseOver != null)
         {
             hoverObject = mouseOver.GetComponent <AtavismNode>();
         }
         _UpdateContextCursor(hoverObject);
         // Handle mouse clicks
         if (Input.GetMouseButtonDown(0) && !IsMouseOverUI())
         {
             OnLeftClick(true, hoverObject);
         }
         if (Input.GetMouseButtonUp(0) && !IsMouseOverUI())
         {
             OnLeftClick(false, hoverObject);
         }
         if (Input.GetMouseButtonDown(1) && !IsMouseOverUI())
         {
             OnRightClick(true, hoverObject);
         }
         if (Input.GetMouseButtonUp(1) && !IsMouseOverUI())
         {
             OnRightClick(false, hoverObject);
         }
     }
 }
        void OnDestroy()
        {
            AtavismNode aNode = GetComponent <AtavismNode>();

            if (aNode != null)
            {
                aNode.RemoveObjectPropertyChangeHandler("weaponType", HandleWeaponType);
                aNode.RemoveObjectPropertyChangeHandler("weapon2Type", HandleWeapon2Type);
                aNode.RemoveObjectPropertyChangeHandler("deadstate", HandleDeadState);
                aNode.RemoveObjectPropertyChangeHandler("combatstate", HandleCombatState);
                aNode.RemoveObjectPropertyChangeHandler("movement_state", MovementStateHandler);
                aNode.RemoveObjectPropertyChangeHandler("mount", HandleMount);
                aNode.RemoveObjectPropertyChangeHandler("waterHeight", HandleWaterHeight);
                aNode.RemoveObjectPropertyChangeHandler("state", HandleState);
                aNode.RemoveObjectPropertyChangeHandler("aggressive", HandleAggressive);
            }
            if (mount != null)
            {
                Destroy(mount);
            }
        }
示例#7
0
 /// <summary>
 /// Loads the portrait for a player/mob in-game.
 /// </summary>
 /// <returns>The portrait.</returns>
 /// <param name="node">Node.</param>
 public Sprite LoadPortrait(AtavismNode node)
 {
     if (node == null)
     {
         return(null);
     }
     if (portraitType == PortraitType.Class && node.PropertyExists("portrait"))
     {
         // Class portraits will currently be saved on the player
         string portraitName   = (string)node.GetProperty("portrait");
         Sprite portraitSprite = Resources.Load <Sprite>("Portraits/" + portraitName);
         return(portraitSprite);
     }
     else if (portraitType == PortraitType.Prefab || portraitType == PortraitType.Class)
     {
         // If the target doesn't have a portrait property, fall back to prefab
         if (node.GameObject != null && node.GameObject.GetComponent <AtavismMobAppearance>() != null)
         {
             return(node.GameObject.GetComponent <AtavismMobAppearance>().portraitIcon);
         }
     }
     else if (portraitType == PortraitType.Custom)
     {
         // TODO: Add your code here?
         if (node.PropertyExists("portrait"))
         {
             string portraitName   = (string)node.GetProperty("portrait");
             Sprite portraitSprite = Resources.Load <Sprite>("Portraits/" + portraitName);
             return(portraitSprite);
         }
         if (node.GameObject != null && node.GameObject.GetComponent <AtavismMobAppearance>() != null)
         {
             return(node.GameObject.GetComponent <AtavismMobAppearance>().portraitIcon);
         }
     }
     return(null);
 }
示例#8
0
        // Update is called once per frame
        void Update()
        {
            if (node == null)
            {
                node = GetComponent <AtavismNode>();
                if (node != null)
                {
                    node.RegisterObjectPropertyChangeHandler("title", LevelHandler);
                    node.RegisterObjectPropertyChangeHandler("level", LevelHandler);
                    node.RegisterObjectPropertyChangeHandler("reaction", TargetTypeHandler);
                    node.RegisterObjectPropertyChangeHandler("aggressive", TargetTypeHandler);
                    node.RegisterObjectPropertyChangeHandler("adminLevel", AdminLevelHandler);
                    node.RegisterObjectPropertyChangeHandler("questavailable", QuestAvailableHandler);
                    node.RegisterObjectPropertyChangeHandler("questinprogress", QuestInProgressHandler);
                    node.RegisterObjectPropertyChangeHandler("questconcludable", QuestConcludableHandler);
                    node.RegisterObjectPropertyChangeHandler("dialogue_available", DialogueAvailableHandler);
                    node.RegisterObjectPropertyChangeHandler("itemstosell", ItemsToSellHandler);
                    node.RegisterObjectPropertyChangeHandler("nameDisplay", NameDisplayHandler);
                    node.RegisterObjectPropertyChangeHandler("guildName", GuildNameDisplayHandler);
                    node.RegisterObjectPropertyChangeHandler("deadstate", HandleDeadState);
                    node.RegisterObjectPropertyChangeHandler("bankteller", HandleDeadState);
                }
            }
            if (mob == null)
            {
                mob       = new GameObject("mob");
                mob.layer = LayerMask.NameToLayer(AtavismCursor.Instance.layerForTexts);
                mob.transform.SetParent(transform, false);
                mobName       = new GameObject("mobName");
                mobName.layer = LayerMask.NameToLayer(AtavismCursor.Instance.layerForTexts);
                mobName.transform.SetParent(mob.transform, false);
                if (transform.gameObject.GetComponent <CharacterController>() != null)
                {
                    height = transform.gameObject.GetComponent <CharacterController>().height > 2 * transform.gameObject.GetComponent <CharacterController>().radius ? transform.gameObject.GetComponent <CharacterController>().height : transform.gameObject.GetComponent <CharacterController>().radius * 2;
                }
                else
                {
                    height = textheight;
                }
                mob.transform.localPosition = new Vector3(0f, height, 0f);


                mobName.transform.localPosition = AtavismSettings.Instance.MobNamePosition;
                TextMeshPro textMeshPro = mobName.AddComponent <TextMeshPro>();
                textMeshPro.alignment = AtavismSettings.Instance.MobNameAlignment;// TextAlignmentOptions.Midline;
                textMeshPro.margin    = AtavismSettings.Instance.MobNameMargin;
                textMeshPro.fontSize  = AtavismSettings.Instance.MobNameFontSize;

                textMeshPro.color = AtavismSettings.Instance.MobNameDefaultColor;
                if (AtavismSettings.Instance.MobNameFont == null)
                {
                    TMP_FontAsset font1 = Resources.Load("Lato-BoldSDFNames", typeof(TMP_FontAsset)) as TMP_FontAsset;
                    mobName.GetComponent <TextMeshPro>().font = font1;
                }
                else
                {
                    mobName.GetComponent <TextMeshPro>().font = AtavismSettings.Instance.MobNameFont;
                }
                mobName.GetComponent <TextMeshPro>().outlineWidth = AtavismSettings.Instance.MobNameOutlineWidth;
                mobQuest       = new GameObject("mobQuest");
                mobQuest.layer = LayerMask.NameToLayer(AtavismCursor.Instance.layerForTexts);
                mobQuest.transform.SetParent(mobName.transform, false);
                mobQuest.transform.localPosition = AtavismSettings.Instance.GetNpcInfoTextPosition;
                TextMeshPro textMeshProQuest = mobQuest.AddComponent <TextMeshPro>();
                textMeshProQuest.alignment   = TextAlignmentOptions.Midline;
                textMeshProQuest.fontSize    = AtavismSettings.Instance.GetNpcInfoTextSize;
                textMeshProQuest.color       = AtavismSettings.Instance.GetNpcInfoTextColor;
                textMeshProQuest.text        = "";
                textMeshProQuest.spriteAsset = AtavismSettings.Instance.GetSpriteAsset;
            }
            if (showTitle != AtavismSettings.Instance.GetGeneralSettings().showTitle)
            {
                showTitle = AtavismSettings.Instance.GetGeneralSettings().showTitle;
                UpdateNameDisplay(true);
            }
        }
示例#9
0
        public void OnLeftClick(bool down, AtavismNode mouseOverObject)
        {
            // Item delete check first
            if (mouseOverObject == null && _mouseDownObject1 == null)
            {
                if (_cursorItem != null && !down && !AtavismUiSystem.IsMouseOverFrame())
                {
                    StartItemThrowaway();
                }
                return;
            }

            if (down)
            {
                // ClientAPI.Write("Mouse down object = " + str(worldObj))
                // store the mouse down object
                _mouseDownObject1 = mouseOverObject;
                return;
            }
            else
            {
                if (mouseOverObject != _mouseDownObject1)
                {
                    return;
                }
                _mouseDownObject1 = null;
            }
            if (ClientAPI.GetPlayerObject() == null)
            {
                return;
            }

            // mouse up over the same object as the mouse down
            // that means this is a 'click' on the object
            float dist = (mouseOverObject.Position - ClientAPI.GetPlayerObject().Position).magnitude;

            // First check if this is an arena object
            if (mouseOverObject.PropertyExists("arena_portal"))
            {
                if (dist < 6.0)
                {
#if AT_I2LOC_PRESET
                    ClientAPI.Write(I2.Loc.LocalizationManager.GetTranslation("Retrieving available arenas..."));
#else
                    ClientAPI.Write("Retrieving available arenas...");
#endif
                    long playerOid = ClientAPI.GetPlayerObject().Oid;
                    Dictionary <string, object> props = new Dictionary <string, object>();
                    props.Add("playerOid", playerOid);
                    props.Add("type", (int)mouseOverObject.GetProperty("arena_portal"));
                    NetworkAPI.SendExtensionMessage(0, false, "arena.getTypes", props);
                }
                else
                {
#if AT_I2LOC_PRESET
                    ClientAPI.Write(I2.Loc.LocalizationManager.GetTranslation("That object is too far away (") + dist + " " + I2.Loc.LocalizationManager.GetTranslation("meters)"));
#else
                    ClientAPI.Write("That object is too far away (" + dist + " meters)");
#endif
                }
            }
            else if (mouseOverObject.PropertyExists("itemstosell"))
            {
                /*if (dist < 6.0)
                 *  MarsContainer.GetMerchantTable ((mouseOverObject.GetProperty ("itemstosell")));
                 * else
                 *  ClientAPI.Write ("That object is too far away (" + dist + " meters)");*/
            }
            else if (mouseOverObject.PropertyExists("arena_flag"))
            {
                if (dist < 6.0)
                {
                    long playerOid = ClientAPI.GetPlayerObject().Oid;
                    Dictionary <string, object> props = new Dictionary <string, object>();
                    props.Add("playerOid", playerOid);
                    props.Add("team", mouseOverObject.GetProperty("arena_flag"));
                    NetworkAPI.SendExtensionMessage(0, false, "arena.pickupFlag", props);
                }
                else
                {
#if AT_I2LOC_PRESET
                    ClientAPI.Write(I2.Loc.LocalizationManager.GetTranslation("That object is too far away (") + dist + " " + I2.Loc.LocalizationManager.GetTranslation("meters)"));
#else
                    ClientAPI.Write("That object is too far away (" + dist + " meters)");
#endif
                }
            }
            else if (mouseOverObject.PropertyExists("specialUse"))
            {
                string use = (string)mouseOverObject.GetProperty("specialUse");
                if (use == "Intro")
                {
                    if (dist < 6.0)
                    {
                        AtavismEventSystem.DispatchEvent("SHOW_INTRO", null);
                    }
                }
            }
            else if (mouseOverObject.PropertyExists("DomeWarden"))
            {
                //	int dome = (int)mouseOverObject.GetProperty ("DomeWarden");
                if (dist < 6.0)
                {
                    long playerOid = ClientAPI.GetPlayerObject().Oid;
                    Dictionary <string, object> props = new Dictionary <string, object>();
                    props.Add("domeID", mouseOverObject.GetProperty("DomeWarden"));
                    NetworkAPI.SendExtensionMessage(playerOid, false, "ao.DOME_ENQUIRY", props);
                }
            }
            else if (mouseOverObject.CheckBooleanProperty("Usable"))
            {
                if (dist < 6.0)
                {
                    long playerOid = ClientAPI.GetPlayerObject().Oid;
                    Dictionary <string, object> props = new Dictionary <string, object>();
                    props.Add("object", mouseOverObject.Oid);
                    NetworkAPI.SendExtensionMessage(playerOid, false, "ao.OBJECT_ACTIVATED", props);
                }
            }
            if (mouseOverObject.PropertyExists("targetable"))
            {
                if ((bool)mouseOverObject.GetProperty("targetable") == false || (string)mouseOverObject.GetProperty("targetable") == "False")
                {
                    return;
                }
            }
            if (mouseOverObject.Oid != ClientAPI.GetTargetOid())
            {
                ClientAPI.SetTarget(mouseOverObject.Oid);
                MobSoundSet soundSet = mouseOverObject.gameObject.GetComponent <MobSoundSet>();
                if (soundSet != null && ClientAPI.GetTargetOid() != ClientAPI.GetPlayerOid())
                {
                    soundSet.PlaySoundEvent(MobSoundEvent.Response);
                }
            }
            //MarsTarget.TargetByOID (mouseOverObject.OID);
        }
示例#10
0
        // Use this for initialization
        void Start()
        {
            node      = GetComponent <AtavismNode>();
            mob       = new GameObject("mob");
            mob.layer = LayerMask.NameToLayer(AtavismCursor.Instance.layerForTexts);
            mob.transform.SetParent(transform, false);
            mobName       = new GameObject("mobName");
            mobName.layer = LayerMask.NameToLayer(AtavismCursor.Instance.layerForTexts);
            mobName.transform.SetParent(mob.transform, false);
            if (transform.gameObject.GetComponent <CharacterController>() != null)
            {
                height = transform.gameObject.GetComponent <CharacterController>().height > 2 * transform.gameObject.GetComponent <CharacterController>().radius ? transform.gameObject.GetComponent <CharacterController>().height : transform.gameObject.GetComponent <CharacterController>().radius * 2;
            }
            else
            {
                height = textheight;
            }
            mob.transform.localPosition     = new Vector3(0f, height, 0f);
            mobName.transform.localPosition = AtavismSettings.Instance.MobNamePosition;
            TextMeshPro textMeshPro = mobName.AddComponent <TextMeshPro>();

            textMeshPro.alignment = AtavismSettings.Instance.MobNameAlignment;// TextAlignmentOptions.Midline;
            textMeshPro.margin    = AtavismSettings.Instance.MobNameMargin;
            textMeshPro.fontSize  = AtavismSettings.Instance.MobNameFontSize;

            textMeshPro.color = AtavismSettings.Instance.MobNameDefaultColor;
            if (AtavismSettings.Instance.MobNameFont == null)
            {
                TMP_FontAsset font1 = Resources.Load("Lato-BoldSDFNames", typeof(TMP_FontAsset)) as TMP_FontAsset;
                mobName.GetComponent <TextMeshPro>().font = font1;
            }
            else
            {
                mobName.GetComponent <TextMeshPro>().font = AtavismSettings.Instance.MobNameFont;
            }
            mobName.GetComponent <TextMeshPro>().outlineWidth = AtavismSettings.Instance.MobNameOutlineWidth;
            mobQuest       = new GameObject("mobQuest");
            mobQuest.layer = LayerMask.NameToLayer(AtavismCursor.Instance.layerForTexts);
            mobQuest.transform.SetParent(mobName.transform, false);
            mobQuest.transform.localPosition = AtavismSettings.Instance.GetNpcInfoTextPosition;
            TextMeshPro textMeshProQuest = mobQuest.AddComponent <TextMeshPro>();

            textMeshProQuest.alignment   = TextAlignmentOptions.Midline;
            textMeshProQuest.fontSize    = AtavismSettings.Instance.GetNpcInfoTextSize;
            textMeshProQuest.color       = AtavismSettings.Instance.GetNpcInfoTextColor;
            textMeshProQuest.text        = "";
            textMeshProQuest.spriteAsset = AtavismSettings.Instance.GetSpriteAsset;


            node = GetComponent <AtavismNode>();
            if (node != null)
            {
                node.RegisterObjectPropertyChangeHandler("title", LevelHandler);
                node.RegisterObjectPropertyChangeHandler("subTitle", LevelHandler);
                node.RegisterObjectPropertyChangeHandler("level", LevelHandler);
                node.RegisterObjectPropertyChangeHandler("reaction", TargetTypeHandler);
                node.RegisterObjectPropertyChangeHandler("aggressive", TargetTypeHandler);
                node.RegisterObjectPropertyChangeHandler("adminLevel", AdminLevelHandler);
                node.RegisterObjectPropertyChangeHandler("questavailable", QuestAvailableHandler);
                node.RegisterObjectPropertyChangeHandler("questinprogress", QuestInProgressHandler);
                node.RegisterObjectPropertyChangeHandler("questconcludable", QuestConcludableHandler);
                node.RegisterObjectPropertyChangeHandler("dialogue_available", DialogueAvailableHandler);
                node.RegisterObjectPropertyChangeHandler("itemstosell", ItemsToSellHandler);
                node.RegisterObjectPropertyChangeHandler("nameDisplay", NameDisplayHandler);
                node.RegisterObjectPropertyChangeHandler("guildName", GuildNameDisplayHandler);
                node.RegisterObjectPropertyChangeHandler("deadstate", HandleDeadState);
                node.RegisterObjectPropertyChangeHandler("bankteller", BankHandler);
#if AT_I2LOC_PRESET
                if (GetComponent <AtavismNode>().PropertyExists("displayName"))
                {
                    if (!string.IsNullOrEmpty(I2.Loc.LocalizationManager.GetTranslation("Mobs/" + GetComponent <AtavismNode>().GetProperty("displayName"))))
                    {
                        mName = I2.Loc.LocalizationManager.GetTranslation("Mobs/" + GetComponent <AtavismNode>().GetProperty("displayName"));
                    }
                    else
                    {
                        mName = (string)GetComponent <AtavismNode>().GetProperty("displayName");
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(I2.Loc.LocalizationManager.GetTranslation("Mobs/" + GetComponent <AtavismNode>().name)))
                    {
                        mName = I2.Loc.LocalizationManager.GetTranslation("Mobs/" + GetComponent <AtavismNode>().name);
                    }
                    else
                    {
                        mName = GetComponent <AtavismNode>().name;
                    }
                }
#else
                if (GetComponent <AtavismNode>().PropertyExists("displayName") && !string.IsNullOrEmpty((string)GetComponent <AtavismNode>().GetProperty("displayName")))
                {
                    mName = (string)GetComponent <AtavismNode>().GetProperty("displayName");
                }
                else
                {
                    mName = GetComponent <AtavismNode>().name;
                }
#endif
            }
            AtavismEventSystem.RegisterEvent("UPDATE_LANGUAGE", this);
            UpdateNameDisplay(true);
            if (!AtavismSettings.Instance.NameVisable)
            {
                textMeshPro.enabled      = false;
                textMeshProQuest.enabled = false;
            }
            StartCoroutine(UpdateTimer());
            StartCoroutine(UpdateIcon());
        }
示例#11
0
        public void PlaySoundEvent(MobSoundEvent soundEvent)
        {
            // Play sound clip on the mob
            AtavismMobAppearance ama = GetComponent <AtavismMobAppearance>();

            if (ama == null && transform != null && transform.parent != null)
            {
                ama = transform.parent.GetComponent <AtavismMobAppearance>();
            }
            Transform  slotTransform = ama.GetSocketTransform(AttachmentSocket.Root);
            GameObject soundObject   = new GameObject();

            soundObject.transform.position = slotTransform.position;
            soundObject.transform.parent   = slotTransform;
            float       duration = 2;
            AtavismNode an       = GetComponent <AtavismNode>();

            if (an == null && transform != null && transform.parent != null)
            {
                an = transform.parent.GetComponent <AtavismNode>();
            }
            AtavismObjectNode aNode = ClientAPI.WorldManager.GetObjectNode(an.Oid);

            if (soundEvent == MobSoundEvent.Aggro)
            {
                if (aggroSound.Count > 0 || aggroSoundFemale.Count > 0)
                {
                    AudioSource audioSource = soundObject.AddComponent <AudioSource>();
                    if (aNode.Properties.ContainsKey("gender") && aNode.Properties["gender"].Equals("Female") && aggroSoundFemale.Count > 0)
                    {
                        audioSource.clip = aggroSoundFemale[(int)Random.Range(0, aggroSoundFemale.Count)];
                    }
                    else if (aggroSound.Count > 0)
                    {
                        audioSource.clip = aggroSound[(int)Random.Range(0, aggroSound.Count)];
                    }
                    audioSource.spatialBlend = 1.0f;
                    audioSource.rolloffMode  = AudioRolloffMode.Linear;
                    audioSource.maxDistance  = maxDistance;
                    audioSource.volume       = 1f;// SoundSystem.SoundEffectVolume;
                    if (AtavismSettings.Instance.masterMixer != null)
                    {
                        audioSource.outputAudioMixerGroup = AtavismSettings.Instance.masterMixer.FindMatchingGroups(mixerGroupName)[0];
                    }
                    audioSource.Play();
                    if (audioSource.clip != null)
                    {
                        duration = audioSource.clip.length + 1f;
                    }
                    else
                    {
                        duration = 1f;
                    }
                }
#if AT_MASTERAUDIO_PRESET
                if (aNode.Properties.ContainsKey("gender") && aNode.Properties["gender"].Equals("Female"))
                {
                    if (aggroSoundFemaleName.Count > 0)
                    {
                        MasterAudio.PlaySound3DAtTransform(aggroSoundFemaleName[Random.Range(0, aggroSoundFemaleName.Count)], slotTransform, 1f);
                    }
                }
                else if (aggroSoundName.Count > 0)
                {
                    MasterAudio.PlaySound3DAtTransform(aggroSoundName[Random.Range(0, aggroSoundName.Count)], slotTransform, 1f);
                }
#endif
            }
            else if (soundEvent == MobSoundEvent.Attack)
            {
                if (attackSound.Count > 0 || attackSoundFemale.Count > 0)
                {
                    AudioSource audioSource = soundObject.AddComponent <AudioSource>();
                    if (aNode.Properties.ContainsKey("gender") && aNode.Properties["gender"].Equals("Female") && attackSoundFemale.Count > 0)
                    {
                        audioSource.clip = attackSoundFemale[(int)Random.Range(0, attackSoundFemale.Count)];
                    }
                    else if (attackSound.Count > 0)
                    {
                        audioSource.clip = attackSound[(int)Random.Range(0, attackSound.Count)];
                    }
                    audioSource.spatialBlend = 1.0f;
                    audioSource.rolloffMode  = AudioRolloffMode.Linear;
                    audioSource.maxDistance  = maxDistance;
                    audioSource.volume       = 1f;//SoundSystem.SoundEffectVolume;
                    if (AtavismSettings.Instance.masterMixer != null)
                    {
                        audioSource.outputAudioMixerGroup = AtavismSettings.Instance.masterMixer.FindMatchingGroups(mixerGroupName)[0];
                    }
                    audioSource.Play();
                    if (audioSource.clip != null)
                    {
                        duration = audioSource.clip.length + 1f;
                    }
                    else
                    {
                        duration = 1f;
                    }
                }
#if AT_MASTERAUDIO_PRESET
                if (aNode.Properties.ContainsKey("gender") && aNode.Properties["gender"].Equals("Female"))
                {
                    if (attackSoundFemaleName.Count > 0)
                    {
                        MasterAudio.PlaySound3DAtTransform(attackSoundFemaleName[Random.Range(0, attackSoundFemaleName.Count)], slotTransform, 1f);
                    }
                }
                else if (attackSoundName.Count > 0)
                {
                    MasterAudio.PlaySound3DAtTransform(attackSoundName[Random.Range(0, attackSoundName.Count)], slotTransform, 1f);
                }
#endif
            }
            else if (soundEvent == MobSoundEvent.Death)
            {
                if (deathSound.Count > 0 || deathSoundFemale.Count > 0)
                {
                    AudioSource audioSource = soundObject.AddComponent <AudioSource>();
                    if (aNode.Properties.ContainsKey("gender") && aNode.Properties["gender"].Equals("Female") && deathSoundFemale.Count > 0)
                    {
                        audioSource.clip = deathSoundFemale[(int)Random.Range(0, deathSoundFemale.Count)];
                    }
                    else if (deathSound.Count > 0)
                    {
                        audioSource.clip = deathSound[(int)Random.Range(0, deathSound.Count)];
                    }
                    audioSource.spatialBlend = 1.0f;
                    audioSource.rolloffMode  = AudioRolloffMode.Linear;
                    audioSource.maxDistance  = maxDistance;
                    audioSource.volume       = 1f;//SoundSystem.SoundEffectVolume;
                    if (AtavismSettings.Instance.masterMixer != null)
                    {
                        audioSource.outputAudioMixerGroup = AtavismSettings.Instance.masterMixer.FindMatchingGroups(mixerGroupName)[0];
                    }
                    audioSource.Play();
                    if (audioSource.clip != null)
                    {
                        duration = audioSource.clip.length + 1f;
                    }
                    else
                    {
                        duration = 1f;
                    }
                }
#if AT_MASTERAUDIO_PRESET
                if (aNode.Properties.ContainsKey("gender") && aNode.Properties["gender"].Equals("Female"))
                {
                    if (deathSoundFemaleName.Count > 0)
                    {
                        MasterAudio.PlaySound3DAtTransform(deathSoundFemaleName[Random.Range(0, deathSoundFemaleName.Count)], slotTransform, 1f);
                    }
                }
                else if (deathSoundName.Count > 0)
                {
                    MasterAudio.PlaySound3DAtTransform(deathSoundName[Random.Range(0, deathSoundName.Count)], slotTransform, 1f);
                }
#endif
            }
            else if (soundEvent == MobSoundEvent.Response)
            {
                if (responseSound.Count > 0 || responseSoundFemale.Count > 0)
                {
                    AudioSource audioSource = soundObject.AddComponent <AudioSource>();
                    //int soundChoice = Random.Range(0, responseSound.Count);
                    if (aNode.Properties.ContainsKey("gender") && aNode.Properties["gender"].Equals("Female") && responseSoundFemale.Count > 0)
                    {
                        audioSource.clip = responseSoundFemale[(int)Random.Range(0, responseSoundFemale.Count)];
                    }
                    else if (responseSound.Count > 0)
                    {
                        audioSource.clip = responseSound[(int)Random.Range(0, responseSound.Count)];
                    }
                    audioSource.spatialBlend = 1.0f;
                    audioSource.rolloffMode  = AudioRolloffMode.Linear;
                    audioSource.maxDistance  = maxDistance;
                    audioSource.volume       = 1f;// SoundSystem.SoundEffectVolume;
                    if (AtavismSettings.Instance.masterMixer != null)
                    {
                        audioSource.outputAudioMixerGroup = AtavismSettings.Instance.masterMixer.FindMatchingGroups(mixerGroupName)[0];
                    }
                    audioSource.Play();
                    if (audioSource.clip != null)
                    {
                        duration = audioSource.clip.length + 1f;
                    }
                    else
                    {
                        duration = 1f;
                    }
                }
#if AT_MASTERAUDIO_PRESET
                if (aNode.Properties.ContainsKey("gender") && aNode.Properties["gender"].Equals("Female"))
                {
                    if (responseSoundFemaleName.Count > 0)
                    {
                        MasterAudio.PlaySound3DAtTransform(responseSoundFemaleName[Random.Range(0, responseSoundFemaleName.Count)], slotTransform, 1f);
                    }
                }
                else if (responseSoundName.Count > 0)
                {
                    MasterAudio.PlaySound3DAtTransform(responseSoundName[Random.Range(0, responseSoundName.Count)], slotTransform, 1f);
                }
#endif
            }
            else if (soundEvent == MobSoundEvent.Jump)
            {
                if (jumpSound.Count > 0 || jumpSoundFemale.Count > 0)
                {
                    AudioSource audioSource = soundObject.AddComponent <AudioSource>();

                    if (aNode.Properties.ContainsKey("gender") && aNode.Properties["gender"].Equals("Female") && jumpSoundFemale.Count > 0)
                    {
                        audioSource.clip = jumpSoundFemale[(int)Random.Range(0, jumpSoundFemale.Count)];
                    }
                    else if (jumpSound.Count > 0)
                    {
                        audioSource.clip = jumpSound[(int)Random.Range(0, jumpSound.Count)];
                    }
                    audioSource.spatialBlend = 1.0f;
                    audioSource.rolloffMode  = AudioRolloffMode.Linear;
                    audioSource.maxDistance  = maxDistance;
                    audioSource.volume       = 1f;// SoundSystem.SoundEffectVolume;
                    if (AtavismSettings.Instance.masterMixer != null)
                    {
                        audioSource.outputAudioMixerGroup = AtavismSettings.Instance.masterMixer.FindMatchingGroups(mixerGroupName)[0];
                    }
                    audioSource.Play();

                    if (audioSource.clip != null)
                    {
                        duration = audioSource.clip.length + 1f;
                    }
                    else
                    {
                        duration = 1f;
                    }
                }
#if AT_MASTERAUDIO_PRESET
                if (aNode.Properties.ContainsKey("gender") && aNode.Properties["gender"].Equals("Female"))
                {
                    if (jumpSoundFemaleName.Count > 0)
                    {
                        int soundChoice = Random.Range(0, jumpSoundFemaleName.Count);
                        MasterAudio.PlaySound3DAtTransform(jumpSoundFemaleName[soundChoice], slotTransform, 1f);
                    }
                }
                else if (jumpSoundName.Count > 0)
                {
                    MasterAudio.PlaySound3DAtTransform(jumpSoundName[Random.Range(0, jumpSoundName.Count)], slotTransform, 1f);
                }
#endif
            }
            Destroy(soundObject, duration);
        }
示例#12
0
 /// <summary>
 /// Works out what cursor should be displayed based on the properties of the object it is over
 /// </summary>
 /// <param name="mouseOverObject">Mouse over object.</param>
 private void _UpdateContextCursor(AtavismNode mouseOverObject)
 {
     // Update the context cursor based on what object it is currently over."""
     if (ClientAPI.mouseLook)
     {
         return;
     }
     if (IsMouseOverUI())
     {
         SetCursor(CursorState.Default);
         return;
     }
     if (mouseOverObject == null)
     {
         SetCursor(CursorState.Default);
         return;
     }
     else
     {
         if (ClientAPI.GetPlayerObject() == null)
         {
             return;
         }
         float dist = (mouseOverObject.Position - ClientAPI.GetPlayerObject().Position).magnitude;
         if (mouseOverObject.CheckBooleanProperty("lootable"))
         {
             if (dist < 4.0)
             {
                 SetCursor(CursorState.Loot);
             }
             else
             {
                 SetCursor(CursorState.Loot_Error);
             }
         }
         else if (mouseOverObject.CheckBooleanProperty("questconcludable"))
         {
             //ClientAPI.Log ("questconcludable");
             if (dist < 6.0)
             {
                 SetCursor(CursorState.Speak);
             }
             else
             {
                 SetCursor(CursorState.Speak_Error);
             }
         }
         else if (mouseOverObject.CheckBooleanProperty("questavailable"))
         {
             //ClientAPI.Log ("questavailable");
             if (dist < 6.0)
             {
                 SetCursor(CursorState.Speak);
             }
             else
             {
                 SetCursor(CursorState.Speak_Error);
             }
         }
         else if (mouseOverObject.CheckBooleanProperty("questinprogress"))
         {
             //ClientAPI.Log ("questavailable");
             if (dist < 6.0)
             {
                 SetCursor(CursorState.Speak);
             }
             else
             {
                 SetCursor(CursorState.Speak_Error);
             }
         }
         else if (mouseOverObject.CheckBooleanProperty("itemstosell"))
         {
             if (dist < 6.0)
             {
                 SetCursor(CursorState.Speak);
             }
             else
             {
                 SetCursor(CursorState.Speak_Error);
             }
         }
         else if (mouseOverObject.CheckBooleanProperty("bankteller"))
         {
             if (dist < 6.0)
             {
                 SetCursor(CursorState.Speak);
             }
             else
             {
                 SetCursor(CursorState.Speak_Error);
             }
         }
         else if (mouseOverObject.PropertyExists("specialUse"))
         {
             string use = (string)mouseOverObject.GetProperty("specialUse");
             if (use == "arenaMaster")
             {
                 if (dist < 6.0)
                 {
                     SetCursor(CursorState.Speak);
                 }
                 else
                 {
                     SetCursor(CursorState.Speak_Error);
                 }
             }
             if (use == "Intro")
             {
                 if (dist < 6.0)
                 {
                     SetCursor(CursorState.Speak);
                 }
                 else
                 {
                     SetCursor(CursorState.Speak_Error);
                 }
             }
         }
         else if (mouseOverObject.PropertyExists("arena_portal"))
         {
             if (dist < 6.0)
             {
                 SetCursor(CursorState.Loot);
             }
             else
             {
                 SetCursor(CursorState.Loot_Error);
             }
         }
         else if (mouseOverObject.PropertyExists("arena_flag"))
         {
             if (dist < 6.0)
             {
                 SetCursor(CursorState.Loot);
             }
             else
             {
                 SetCursor(CursorState.Loot_Error);
             }
         }
         else if (mouseOverObject.PropertyExists("DomeWarden"))
         {
             if (dist < 6.0)
             {
                 SetCursor(CursorState.Speak);
             }
             else
             {
                 SetCursor(CursorState.Speak_Error);
             }
         }
         else if (mouseOverObject.PropertyExists("dialogue_available"))
         {
             int use = (int)mouseOverObject.GetProperty("dialogue_available");
             if (use > 0)
             {
                 if (dist < 6.0)
                 {
                     SetCursor(CursorState.Speak);
                 }
                 else
                 {
                     SetCursor(CursorState.Speak_Error);
                 }
             }
         }
         else if (mouseOverObject.PropertyExists("Usable"))
         {
             if (dist < 6.0)
             {
                 SetCursor(CursorState.Speak);
             }
             else
             {
                 SetCursor(CursorState.Speak_Error);
             }
         }
         else if (mouseOverObject.PropertyExists("itemavailable"))
         {
             if (dist < 6.0)
             {
                 SetCursor(CursorState.Loot);
             }
             else
             {
                 SetCursor(CursorState.Loot_Error);
             }
         }
         else if (mouseOverObject.PropertyExists("skinnableLevel"))
         {
             if (dist < 6.0)
             {
                 SetCursor(CursorState.Skin);
             }
             else
             {
                 SetCursor(CursorState.Skin_Error);
             }
         }
         else if (mouseOverObject.CheckBooleanProperty("attackable"))
         {
             if (mouseOverObject.PropertyExists("targetType"))
             {
                 int targetType = (int)mouseOverObject.GetProperty("targetType");
                 if (!mouseOverObject.IsPlayer() && targetType < 1)
                 {
                     if (dist < 4.0)
                     {
                         SetCursor(CursorState.Attack);
                     }
                     else
                     {
                         SetCursor(CursorState.Attack_Error);
                     }
                 }
             }
         }
         else
         {
             SetCursor(CursorState.Default);
         }
     }
 }
示例#13
0
 public void SetMouseOverObject(AtavismNode node, Texture2D cursor, float activeDistance)
 {
     mouseOverObject     = node;
     mouseOverCursor     = cursor;
     this.activeDistance = activeDistance;
 }
示例#14
0
        public void OnRightClick(bool down, AtavismNode mouseOverObject)
        {
            if (ClientAPI.GetPlayerObject() == null)
            {
                return;
            }
            // Handle the right click event (perhaps over an object).
            // For now, we can just always reset the cursor on a right click.
            // At some point, perhaps picking up an item or ability and right clicking
            // on an object in the world will do something, but it doesn't now.
            // Make right mouse up reset the cursor
            if (!down && !AtavismUiSystem.IsMouseOverFrame())
            {
                ResetCursor();
            }
            if (down)
            {
                // ClientAPI.Write("Mouse down object = " + str(objNode))
                // store the mouse down object
                _mouseDownObject2 = mouseOverObject;
                return;
            }
            if (mouseOverObject == null)
            {
                return;
            }
            if (mouseOverObject != _mouseDownObject2)
            {
                return;
            }
            if (mouseOverObject.PropertyExists("targetable"))
            {
                if ((bool)mouseOverObject.GetProperty("targetable") == true)
                {
                    ClientAPI.SetTarget(mouseOverObject.Oid);
                    bool dead = false;
                    if (mouseOverObject.PropertyExists("deadstate"))
                    {
                        dead = (bool)mouseOverObject.GetProperty("deadstate");
                    }
                    MobSoundSet soundSet = mouseOverObject.gameObject.GetComponent <MobSoundSet>();
                    if (!dead && soundSet != null && ClientAPI.GetTargetOid() != ClientAPI.GetPlayerOid())
                    {
                        soundSet.PlaySoundEvent(MobSoundEvent.Response);
                    }
                }
            }
            else
            {
                ClientAPI.SetTarget(mouseOverObject.Oid);
                bool dead = false;
                if (mouseOverObject.PropertyExists("deadstate"))
                {
                    dead = (bool)mouseOverObject.GetProperty("deadstate");
                }
                MobSoundSet soundSet = mouseOverObject.gameObject.GetComponent <MobSoundSet>();
                if (!dead && soundSet != null && ClientAPI.GetTargetOid() != ClientAPI.GetPlayerOid())
                {
                    soundSet.PlaySoundEvent(MobSoundEvent.Response);
                }
            }
            float dist = (mouseOverObject.Position - ClientAPI.GetPlayerObject().Position).magnitude;

            // On a right click, do the context sensitive action
            if (mouseOverObject.PropertyExists("click_handler"))
            {
                //ClientAPI.Write ("Invoking custom click handler for object");
                //mouseOverObject.GetProperty ("click_handler") (mouseOverObject, None);
            }
            else if (mouseOverObject.CheckBooleanProperty("lootable"))
            {
                if (dist < 4.0)
                {
                    NetworkAPI.SendTargetedCommand(mouseOverObject.Oid, "/getLootList");
                }
                else
#if AT_I2LOC_PRESET
                { ClientAPI.Write(I2.Loc.LocalizationManager.GetTranslation("That object is too far away (") + dist + " " + I2.Loc.LocalizationManager.GetTranslation("meters)")); }
#else
                { ClientAPI.Write("That object is too far away (" + dist + " meters)"); }
#endif
            }
            else if (mouseOverObject.CheckBooleanProperty("questconcludable"))
            {
                AtavismLogger.LogDebugMessage("questconcludable");
                //NetworkAPI.SendQuestConcludeRequestMessage (mouseOverObject.Oid);
                if (dist < 6.0)
                {
                    NpcInteraction.Instance.GetInteractionOptionsForNpc(mouseOverObject.Oid);
                }
                else
#if AT_I2LOC_PRESET
                { ClientAPI.Write(I2.Loc.LocalizationManager.GetTranslation("That object is too far away (") + dist + " " + I2.Loc.LocalizationManager.GetTranslation("meters)")); }
#else
                { ClientAPI.Write("That object is too far away (" + dist + " meters)"); }
#endif
            }
            else if (mouseOverObject.CheckBooleanProperty("questavailable"))
            {
                AtavismLogger.LogDebugMessage("questavailable");
                // NetworkAPI.SendQuestInfoRequestMessage (mouseOverObject.Oid);
                if (dist < 6.0)
                {
                    NpcInteraction.Instance.GetInteractionOptionsForNpc(mouseOverObject.Oid);
                }
                else
#if AT_I2LOC_PRESET
                { ClientAPI.Write(I2.Loc.LocalizationManager.GetTranslation("That object is too far away (") + dist + " " + I2.Loc.LocalizationManager.GetTranslation("meters)")); }
#else
                { ClientAPI.Write("That object is too far away (" + dist + " meters)"); }
#endif
            }
            else if (mouseOverObject.CheckBooleanProperty("questinprogress"))
            {
                AtavismLogger.LogDebugMessage("questinprogress");
                // NetworkAPI.SendQuestInfoRequestMessage (mouseOverObject.Oid);
                if (dist < 6.0)
                {
                    NpcInteraction.Instance.GetInteractionOptionsForNpc(mouseOverObject.Oid);
                }
                else
#if AT_I2LOC_PRESET
                { ClientAPI.Write(I2.Loc.LocalizationManager.GetTranslation("That object is too far away (") + dist + " " + I2.Loc.LocalizationManager.GetTranslation("meters)")); }
#else
                { ClientAPI.Write("That object is too far away (" + dist + " meters)"); }
#endif
            }
            else if (mouseOverObject.CheckBooleanProperty("itemstosell"))
            {
                if (dist < 6.0)
                {
                    NpcInteraction.Instance.GetInteractionOptionsForNpc(mouseOverObject.Oid);
                }
                else
#if AT_I2LOC_PRESET
                { ClientAPI.Write(I2.Loc.LocalizationManager.GetTranslation("That object is too far away (") + dist + " " + I2.Loc.LocalizationManager.GetTranslation("meters)")); }
#else
                { ClientAPI.Write("That object is too far away (" + dist + " meters)"); }
#endif
            }
            else if (mouseOverObject.PropertyExists("dialogue_available"))
            {
                int dialogueID = (int)mouseOverObject.GetProperty("dialogue_available");
                if (dialogueID > 0)
                {
                    if (dist < 6.0)
                    {
                        NpcInteraction.Instance.GetInteractionOptionsForNpc(mouseOverObject.Oid);
                    }
                }
            }
            else if (mouseOverObject.CheckBooleanProperty("bankteller"))
            {
                if (dist < 6.0)
                {
                    NpcInteraction.Instance.GetInteractionOptionsForNpc(mouseOverObject.Oid);
                }
                else
#if AT_I2LOC_PRESET
                { ClientAPI.Write(I2.Loc.LocalizationManager.GetTranslation("That object is too far away (") + dist + " " + I2.Loc.LocalizationManager.GetTranslation("meters)")); }
#else
                { ClientAPI.Write("That object is too far away (" + dist + " meters)"); }
#endif
            }
            else if (mouseOverObject.CheckBooleanProperty("attackable"))
            {
                int targetType = -1;
                if (mouseOverObject.PropertyExists("targetType"))
                {
                    targetType = (int)mouseOverObject.GetProperty("targetType");
                }
                if (!mouseOverObject.IsPlayer() && targetType < 1)
                {
                    NetworkAPI.SendAttackMessage(mouseOverObject.Oid, "strike", true);
                }
            }
            else if (mouseOverObject.PropertyExists("specialUse"))
            {
                string use = "";
                if (mouseOverObject.PropertyExists("specialUse"))
                {
                    use = (string)mouseOverObject.GetProperty("specialUse");
                }
                if (use == "arenaMaster")
                {
                    if (dist < 6.0)
                    {
                        AtavismEventSystem.DispatchEvent("ARENA_MASTER_CLICK", null);
                    }
                    else
#if AT_I2LOC_PRESET
                    { ClientAPI.Write(I2.Loc.LocalizationManager.GetTranslation("That object is too far away (") + dist + " " + I2.Loc.LocalizationManager.GetTranslation("meters)")); }
#else
                    { ClientAPI.Write("That object is too far away (" + dist + " meters)"); }
#endif
                }
                else if (use == "Intro")
                {
                    if (dist < 6.0)
                    {
                        AtavismEventSystem.DispatchEvent("SHOW_INTRO", null);
                    }
                }
            }
            else if (mouseOverObject.PropertyExists("arena_portal"))
            {
                if (dist < 6.0)
                {
                    //ClientAPI.Write ("Retrieving available arenas...");
                    long playerOid = ClientAPI.GetPlayerObject().Oid;
                    Dictionary <string, object> props = new Dictionary <string, object>();
                    props.Add("playerOid", playerOid);
                    props.Add("type", (int)mouseOverObject.GetProperty("arena_portal"));
                    NetworkAPI.SendExtensionMessage(0, false, "arena.getTypes", props);
                }
                else
                {
#if AT_I2LOC_PRESET
                    ClientAPI.Write(I2.Loc.LocalizationManager.GetTranslation("That object is too far away (") + dist + " " + I2.Loc.LocalizationManager.GetTranslation("meters)"));
#else
                    ClientAPI.Write("You need to be closer to the portal to activate it");
#endif
                }
            }
            else if (mouseOverObject.PropertyExists("arena_flag"))
            {
                if (dist < 6.0)
                {
                    long playerOid = ClientAPI.GetPlayerObject().Oid;
                    Dictionary <string, object> props = new Dictionary <string, object>();
                    props.Add("playerOid", playerOid);
                    props.Add("team", mouseOverObject.GetProperty("arena_flag"));
                    NetworkAPI.SendExtensionMessage(0, false, "arena.pickupFlag", props);
                }
                else
                {
#if AT_I2LOC_PRESET
                    ClientAPI.Write(I2.Loc.LocalizationManager.GetTranslation("That object is too far away (") + dist + " " + I2.Loc.LocalizationManager.GetTranslation("meters)"));
#else
                    ClientAPI.Write("That object is too far away (" + dist + " meters)");
#endif
                }
            }
            else if (mouseOverObject.CheckBooleanProperty("Usable"))
            {
                if (dist < 6.0)
                {
                    long playerOid = ClientAPI.GetPlayerObject().Oid;
                    Dictionary <string, object> props = new Dictionary <string, object>();
                    props.Add("object", mouseOverObject.Oid);
                    NetworkAPI.SendExtensionMessage(playerOid, false, "ao.OBJECT_ACTIVATED", props);
                }
            }
            else if (mouseOverObject.CheckBooleanProperty("itemavailable"))
            {
                if (dist < 6.0)
                {
                    NetworkAPI.SendTargetedCommand(mouseOverObject.Oid, "/openMob");
                }
            }
            else if (mouseOverObject.PropertyExists("skinnableLevel"))
            {
                if (dist < 6.0)
                {
                    int id = (int)mouseOverObject.Oid * -1;
                    Crafting.Instance.HarvestResource(id);
                }
            }
        }
示例#15
0
 public void OnLeftClick(bool down, AtavismNode mouseOverObject)
 {
     if (down) {
         // ClientAPI.Write("Mouse down object = " + str(worldObj))
         // store the mouse down object
         _mouseDownObject1 = mouseOverObject;
         return;
     }
     if (mouseOverObject == null) {
         if (_cursorItem != null && !down && !AtavismUiSystem.IsMouseOverFrame ()) {
             StartItemThrowaway();
         }
         return;
     }
     // ClientAPI.Write("Mouse up object = " + str(worldObj))
     if (mouseOverObject != _mouseDownObject1)
         return;
     // mouse up over the same object as the mouse down
     // that means this is a 'click' on the object
     float dist = (mouseOverObject.Position - ClientAPI.GetPlayerObject ().Position).magnitude;
     // First check if this is an arena object
     if (mouseOverObject.PropertyExists ("arena_portal")) {
         if (dist < 6.0) {
             ClientAPI.Write ("Retrieving available arenas...");
             long playerOid = ClientAPI.GetPlayerObject ().Oid;
             Dictionary<string, object> props = new Dictionary<string, object> ();
             props.Add ("playerOid", playerOid);
             props.Add ("type", (int)mouseOverObject.GetProperty ("arena_portal"));
             NetworkAPI.SendExtensionMessage (0, false, "arena.getTypes", props);
         } else {
             ClientAPI.Write ("That object is too far away (" + dist + " meters)");
         }
     } else if (mouseOverObject.PropertyExists ("itemstosell")) {
         /*if (dist < 6.0)
             MarsContainer.GetMerchantTable ((mouseOverObject.GetProperty ("itemstosell")));
         else
             ClientAPI.Write ("That object is too far away (" + dist + " meters)");*/
     } else if (mouseOverObject.PropertyExists ("arena_flag")) {
         if (dist < 6.0) {
             long playerOid = ClientAPI.GetPlayerObject ().Oid;
             Dictionary<string, object> props = new Dictionary<string, object> ();
             props.Add ("playerOid", playerOid);
             props.Add ("team", mouseOverObject.GetProperty ("arena_flag"));
             NetworkAPI.SendExtensionMessage (0, false, "arena.pickupFlag", props);
         } else {
             ClientAPI.Write ("That object is too far away (" + dist + " meters)");
         }
     } else if (mouseOverObject.PropertyExists ("specialUse")) {
         string use = (string)mouseOverObject.GetProperty ("specialUse");
         if (use == "Intro") {
             if (dist < 6.0)
                 AtavismEventSystem.DispatchEvent ("SHOW_INTRO", null);
         }
     } else if (mouseOverObject.PropertyExists ("DomeWarden")) {
         int dome = (int)mouseOverObject.GetProperty ("DomeWarden");
         if (dist < 6.0) {
             long playerOid = ClientAPI.GetPlayerObject ().Oid;
             Dictionary<string, object> props = new Dictionary<string, object> ();
             props.Add ("domeID", mouseOverObject.GetProperty ("DomeWarden"));
             NetworkAPI.SendExtensionMessage (playerOid, false, "ao.DOME_ENQUIRY", props);
         }
     } else if (mouseOverObject.CheckBooleanProperty ("Usable")) {
         if (dist < 6.0) {
             long playerOid = ClientAPI.GetPlayerObject ().Oid;
             Dictionary<string, object> props = new Dictionary<string, object> ();
             props.Add ("object", mouseOverObject.Oid);
             NetworkAPI.SendExtensionMessage (playerOid, false, "ao.OBJECT_ACTIVATED", props);
         }
     }
     if (mouseOverObject.PropertyExists ("targetable")) {
         if ((bool)mouseOverObject.GetProperty ("targetable") == false || (string)mouseOverObject.GetProperty ("targetable") == "False")
             return;
     }
     if (mouseOverObject.Oid != ClientAPI.GetTargetOid()) {
         ClientAPI.SetTarget (mouseOverObject.Oid);
         MobSoundSet soundSet = mouseOverObject.gameObject.GetComponent<MobSoundSet>();
         if (soundSet != null && ClientAPI.GetTargetOid() != ClientAPI.GetPlayerOid()) {
             soundSet.PlaySoundEvent(MobSoundEvent.Response);
         }
     }
     //MarsTarget.TargetByOID (mouseOverObject.OID);
 }
示例#16
0
 public void OnRightClick(bool down, AtavismNode mouseOverObject)
 {
     // Handle the right click event (perhaps over an object).
     // For now, we can just always reset the cursor on a right click.
     // At some point, perhaps picking up an item or ability and right clicking
     // on an object in the world will do something, but it doesn't now.
     // Make right mouse up reset the cursor
     if (!down && !AtavismUiSystem.IsMouseOverFrame ())
         ResetCursor ();
     if (down) {
         // ClientAPI.Write("Mouse down object = " + str(objNode))
         // store the mouse down object
         _mouseDownObject2 = mouseOverObject;
         return;
     }
     if (mouseOverObject == null)
         return;
     if (mouseOverObject != _mouseDownObject2)
         return;
     if (mouseOverObject.PropertyExists ("targetable")) {
         if ((bool)mouseOverObject.GetProperty ("targetable") == true) {
             ClientAPI.SetTarget (mouseOverObject.Oid);
             bool dead = false;
             if (mouseOverObject.PropertyExists ("deadstate")) {
                 dead = (bool)mouseOverObject.GetProperty("deadstate");
             }
             MobSoundSet soundSet = mouseOverObject.gameObject.GetComponent<MobSoundSet>();
             if (!dead && soundSet != null && ClientAPI.GetTargetOid() != ClientAPI.GetPlayerOid()) {
                 soundSet.PlaySoundEvent(MobSoundEvent.Response);
             }
         }
     } else {
         ClientAPI.SetTarget (mouseOverObject.Oid);
         bool dead = false;
         if (mouseOverObject.PropertyExists ("deadstate")) {
             dead = (bool)mouseOverObject.GetProperty("deadstate");
         }
         MobSoundSet soundSet = mouseOverObject.gameObject.GetComponent<MobSoundSet>();
         if (!dead && soundSet != null && ClientAPI.GetTargetOid() != ClientAPI.GetPlayerOid()) {
             soundSet.PlaySoundEvent(MobSoundEvent.Response);
         }
     }
     float dist = (mouseOverObject.Position - ClientAPI.GetPlayerObject ().Position).magnitude;
     // On a right click, do the context sensitive action
     if (mouseOverObject.PropertyExists ("click_handler")) {
         ClientAPI.Write ("Invoking custom click handler for object");
         //mouseOverObject.GetProperty ("click_handler") (mouseOverObject, None);
     } else if (mouseOverObject.CheckBooleanProperty ("lootable")) {
         if (dist < 4.0)
             NetworkAPI.SendTargetedCommand (mouseOverObject.Oid, "/getLootList");
         else
             ClientAPI.Write ("That object is too far away (" + dist + " meters)");
     } else if (mouseOverObject.CheckBooleanProperty ("questconcludable")) {
         AtavismLogger.LogDebugMessage ("questconcludable");
         //NetworkAPI.SendQuestConcludeRequestMessage (mouseOverObject.Oid);
         if (dist < 6.0)
             ClientAPI.ScriptObject.GetComponent<NpcInteraction> ().GetInteractionOptionsForNpc (mouseOverObject.Oid);
         else
             ClientAPI.Write ("That object is too far away (" + dist + " meters)");
     } else if (mouseOverObject.CheckBooleanProperty ("questavailable")) {
         AtavismLogger.LogDebugMessage ("questavailable");
         // NetworkAPI.SendQuestInfoRequestMessage (mouseOverObject.Oid);
         if (dist < 6.0)
             ClientAPI.ScriptObject.GetComponent<NpcInteraction> ().GetInteractionOptionsForNpc (mouseOverObject.Oid);
         else
             ClientAPI.Write ("That object is too far away (" + dist + " meters)");
     } else if (mouseOverObject.CheckBooleanProperty ("questinprogress")) {
         AtavismLogger.LogDebugMessage ("questinprogress");
         // NetworkAPI.SendQuestInfoRequestMessage (mouseOverObject.Oid);
         if (dist < 6.0)
             ClientAPI.ScriptObject.GetComponent<NpcInteraction> ().GetInteractionOptionsForNpc (mouseOverObject.Oid);
         else
             ClientAPI.Write ("That object is too far away (" + dist + " meters)");
     } else if (mouseOverObject.CheckBooleanProperty ("itemstosell")) {
         if (dist < 6.0)
             ClientAPI.ScriptObject.GetComponent<NpcInteraction> ().GetInteractionOptionsForNpc (mouseOverObject.Oid);
         else
             ClientAPI.Write ("That object is too far away (" + dist + " meters)");
     }
     else if (mouseOverObject.PropertyExists ("dialogue_available")) {
         int dialogueID = (int)mouseOverObject.GetProperty ("dialogue_available");
         if (dialogueID > 0) {
             if (dist < 6.0) {
                 ClientAPI.ScriptObject.GetComponent<NpcInteraction> ().GetInteractionOptionsForNpc (mouseOverObject.Oid);
             }
         }
     } else if (mouseOverObject.CheckBooleanProperty ("attackable")) {
         int targetType = (int)mouseOverObject.GetProperty("targetType");
         if (!mouseOverObject.IsPlayer () && targetType < 1) {
             if (dist < 8.0) { // should be 4?
                 NetworkAPI.SendAttackMessage (mouseOverObject.Oid, "strike", true);
                 ClientAPI.Write ("Sent 'strike' attack for " + mouseOverObject.Oid);
             } else {
                 ClientAPI.Write ("That object is too far away (" + dist + " meters)");
             }
         }
     } else if (mouseOverObject.PropertyExists ("specialUse")) {
         string use = (string)mouseOverObject.GetProperty ("specialUse");
         if (use == "arenaMaster") {
             if (dist < 6.0)
                 AtavismEventSystem.DispatchEvent ("ARENA_MASTER_CLICK", null);
             else
                 ClientAPI.Write ("That object is too far away (" + dist + " meters)");
         } else if (use == "Intro") {
             if (dist < 6.0)
                 AtavismEventSystem.DispatchEvent ("SHOW_INTRO", null);
         }
     } else if (mouseOverObject.PropertyExists ("arena_portal")) {
         if (dist < 6.0) {
             ClientAPI.Write ("Retrieving available arenas...");
             long playerOid = ClientAPI.GetPlayerObject ().Oid;
             Dictionary<string, object> props = new Dictionary<string, object> ();
             props.Add ("playerOid", playerOid);
             props.Add ("type", (int)mouseOverObject.GetProperty ("arena_portal"));
             NetworkAPI.SendExtensionMessage (0, false, "arena.getTypes", props);
         } else {
             ClientAPI.Write ("You need to be closer to the portal to activate it");
         }
     } else if (mouseOverObject.PropertyExists ("arena_flag")) {
         if (dist < 6.0) {
             long playerOid = ClientAPI.GetPlayerObject ().Oid;
             Dictionary<string, object> props = new Dictionary<string, object> ();
             props.Add ("playerOid", playerOid);
             props.Add ("team", mouseOverObject.GetProperty ("arena_flag"));
             NetworkAPI.SendExtensionMessage (0, false, "arena.pickupFlag", props);
         } else {
             ClientAPI.Write ("That object is too far away (" + dist + " meters)");
         }
     } else if (mouseOverObject.CheckBooleanProperty ("Usable")) {
         if (dist < 6.0) {
             long playerOid = ClientAPI.GetPlayerObject ().Oid;
             Dictionary<string, object> props = new Dictionary<string, object> ();
             props.Add ("object", mouseOverObject.Oid);
             NetworkAPI.SendExtensionMessage (playerOid, false, "ao.OBJECT_ACTIVATED", props);
         }
     } else if (mouseOverObject.CheckBooleanProperty ("itemavailable")) {
         if (dist < 6.0) {
             NetworkAPI.SendTargetedCommand (mouseOverObject.Oid, "/openMob");
         }
     } else if (mouseOverObject.PropertyExists ("harvestType")) {
         if (mouseOverObject.CheckBooleanProperty("active") && dist < 6.0) {
             mouseOverObject.gameObject.GetComponent<ResourceNode>().HarvestResource();
         }
     }
 }
示例#17
0
 /// <summary>
 /// Works out what cursor should be displayed based on the properties of the object it is over
 /// </summary>
 /// <param name="mouseOverObject">Mouse over object.</param>
 private void _UpdateContextCursor(AtavismNode mouseOverObject)
 {
     // Update the context cursor based on what object it is currently over."""
     if (ClientAPI.mouseLook)
         return;
     if (_IsMouseOverUIButton ())
         return;
     if (mouseOverObject == null) {
         SetCursor (CursorState.Default);
         return;
     } else {
         float dist = (mouseOverObject.Position - ClientAPI.GetPlayerObject ().Position).magnitude;
         if (mouseOverObject.CheckBooleanProperty ("lootable")) {
             if (dist < 4.0)
                 SetCursor (CursorState.Loot);
             else
                 SetCursor (CursorState.Loot_Error);
         } else if (mouseOverObject.CheckBooleanProperty ("questconcludable")) {
             //ClientAPI.Log ("questconcludable");
             if (dist < 6.0)
                 SetCursor (CursorState.Speak);
             else
                 SetCursor (CursorState.Speak_Error);
         } else if (mouseOverObject.CheckBooleanProperty ("questavailable")) {
             //ClientAPI.Log ("questavailable");
             if (dist < 6.0)
                 SetCursor (CursorState.Speak);
             else
                 SetCursor (CursorState.Speak_Error);
         } else if (mouseOverObject.CheckBooleanProperty ("questinprogress")) {
             //ClientAPI.Log ("questavailable");
             if (dist < 6.0)
                 SetCursor (CursorState.Speak);
             else
                 SetCursor (CursorState.Speak_Error);
         } else if (mouseOverObject.CheckBooleanProperty ("itemstosell")) {
             if (dist < 6.0)
                 SetCursor (CursorState.Speak);
             else
                 SetCursor (CursorState.Speak_Error);
         } else if (mouseOverObject.PropertyExists ("specialUse")) {
             string use = (string)mouseOverObject.GetProperty ("specialUse");
             if (use == "arenaMaster") {
                 if (dist < 6.0)
                     SetCursor (CursorState.Speak);
                 else
                     SetCursor (CursorState.Speak_Error);
             }
             if (use == "Intro") {
                 if (dist < 6.0)
                     SetCursor (CursorState.Speak);
                 else
                     SetCursor (CursorState.Speak_Error);
             }
         } else if (mouseOverObject.PropertyExists ("arena_portal")) {
             if (dist < 6.0)
                 SetCursor (CursorState.Loot);
             else
                 SetCursor (CursorState.Loot_Error);
         } else if (mouseOverObject.PropertyExists ("arena_flag")) {
             if (dist < 6.0)
                 SetCursor (CursorState.Loot);
             else
                 SetCursor (CursorState.Loot_Error);
         } else if (mouseOverObject.PropertyExists ("DomeWarden")) {
             if (dist < 6.0)
                 SetCursor (CursorState.Speak);
             else
                 SetCursor (CursorState.Speak_Error);
         } else if (mouseOverObject.PropertyExists ("dialogue_available")) {
             int use = (int)mouseOverObject.GetProperty ("dialogue_available");
             if (use > 0) {
                 if (dist < 6.0)
                     SetCursor (CursorState.Speak);
                 else
                     SetCursor (CursorState.Speak_Error);
             }
         } else if (mouseOverObject.PropertyExists ("Usable")) {
             if (dist < 6.0)
                 SetCursor (CursorState.Speak);
             else
                 SetCursor (CursorState.Speak_Error);
         } else if (mouseOverObject.PropertyExists ("itemavailable")) {
             if (dist < 6.0)
                 SetCursor (CursorState.Loot);
             else
                 SetCursor (CursorState.Loot_Error);
         } else if (mouseOverObject.CheckBooleanProperty ("attackable")) {
             if (mouseOverObject.PropertyExists ("targetType")) {
                 int targetType = (int)mouseOverObject.GetProperty("targetType");
                 if (!mouseOverObject.IsPlayer () && targetType < 1) {
                     if (dist < 4.0)
                         SetCursor (CursorState.Attack);
                     else
                         SetCursor (CursorState.Attack_Error);
                 }
             }
         } else if (mouseOverObject.PropertyExists("harvestType")) {
             if (mouseOverObject.CheckBooleanProperty("active")) {
                 hoverObject = mouseOverObject.gameObject;
                 if (dist < 4.0)
                 {
                     mouseOverObject.gameObject.SendMessage("Highlight", SendMessageOptions.DontRequireReceiver);
                     SetCursor(CursorState.Loot);
                 }
                 else
                     SetCursor(CursorState.Loot_Error);
             }
         } else if (mouseOverObject.PropertyExists("craftingStation")) {
             if (dist < 6.0)
                 SetCursor(CursorState.Loot);
             else
                 SetCursor(CursorState.Loot_Error);
         } else {
             SetCursor(CursorState.Default);
         }
     }
 }