public void ClearMouseOverObject(AtavismNode node) { if (node.Equals(mouseOverObject)) { mouseOverObject = null; mouseOverCursor = null; } }
void Start() { node = GetComponent <AtavismNode>(); if (node != null) { if (node.PropertyExists("level")) { level = (int)node.GetProperty("level"); } node.RegisterObjectPropertyChangeHandler("level", LevelHandler); } }
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); } }
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); } }
// 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); } }
/// <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); }
// 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); } }
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); }
// 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()); }
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); }
/// <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); } } }
public void SetMouseOverObject(AtavismNode node, Texture2D cursor, float activeDistance) { mouseOverObject = node; mouseOverCursor = cursor; this.activeDistance = activeDistance; }
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); } } }
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); }
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(); } } }
/// <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); } } }