public override void Start() { base.Start(); m_sets.Add("players"); HandleSets(true); // to be replaced m_players.Add(this); m_rewiredPlayer = ReInput.players.GetPlayer(m_playerId); m_mouse = GetComponent <PlayerCursor>(); m_mouse.Init(m_playerId); m_playerController = GetComponent <PlayerController>(); m_playerController.m_player = this; m_feedbackColor = Constants.TRANSPARENT; // TODO: TEMP int hotkey = 1; foreach (Ability ability in Ability.m_abilities) { AbilityWrapper wrapper = new AbilityWrapper(); wrapper.AbilityName = ability.m_name; wrapper.Learned = true; wrapper.TrainingLevel = 1; wrapper.HotkeySlot = hotkey; m_abilities.Add(wrapper); hotkey++; } }
public IEnumerator UpdateView() { while (true) { AbilityWrapper wrapper = m_entity.m_abilities.Find(a => a.HotkeySlot == m_hotkey); if (wrapper != null && (m_wrapper == null || wrapper.AbilityName != m_wrapper.AbilityName)) { m_wrapper = wrapper; m_icon.enabled = true; m_backgroundIcon.enabled = true; m_icon.sprite = wrapper.GetAbility().m_icon; m_backgroundIcon.sprite = wrapper.GetAbility().m_icon; } else if (wrapper == null) { m_wrapper = null; m_icon.enabled = false; m_backgroundIcon.enabled = false; } string hotkeyText = ""; if (m_entity is Player) { Rewired.Player player = ((Player)m_entity).m_rewiredPlayer; Rewired.Controller lastActive = player.controllers.GetLastActiveController(); if (lastActive != null && lastActive.type == Rewired.ControllerType.Mouse) { lastActive = player.controllers.Keyboard; } Rewired.ActionElementMap elementMap = player.controllers.maps.GetFirstElementMapWithAction( lastActive, "Hotkey " + m_hotkey, false); if (elementMap != null) { hotkeyText = elementMap.elementIdentifierName; } else { elementMap = player.controllers.maps.GetFirstElementMapWithAction("Hotkey " + m_hotkey, false); if (elementMap != null) { hotkeyText = elementMap.elementIdentifierName; } } } m_hotkeyText.text = hotkeyText; yield return(new WaitForSeconds(Constants.ABILITY_VIEW_REFRESH)); } }
public void SetHotkey() { AbilityWrapper existingBind = m_selectedAbility.m_loader.m_entity.m_abilities.Find(a => a.HotkeySlot == m_dropdown.value); if (existingBind != null) { existingBind.HotkeySlot = 0; m_selectedAbility.m_loader.m_loadedAbilities.Find(a => a.m_ability == existingBind).m_selectionBorder.gameObject.SetActive(false); } m_selectedAbility.m_ability.HotkeySlot = m_dropdown.value; m_selectedAbility.m_selectionBorder.gameObject.SetActive(m_dropdown.value > 0); m_hotkeySetEvent.Raise(); }
public void UseAbility(string p_ability) { AbilityWrapper wrapper = m_abilities.Find(a => a.AbilityName == p_ability); if (wrapper == null && wrapper.Learned) { return; } Ability ability = wrapper.GetAbility(); int cost = ability.m_manaCosts.Find(m => m.TrainingLevel == wrapper.TrainingLevel).Value; int leftoverMana = m_stats.GetStat(Stats.MP) - cost; if (leftoverMana >= 0 && wrapper.Use()) { m_stats.AddModifier(Stats.MP, -cost, 0); ability.Use(this, wrapper.TrainingLevel); if (wrapper.ChainedAbilities != null && wrapper.ChainedAbilities.Count > 0) { foreach (string chain in wrapper.ChainedAbilities) { AbilityWrapper chainWrapper = m_abilities.Find(a => a.AbilityName == chain); if (chainWrapper == null && chainWrapper.Learned) { continue; } Ability chainAbility = Ability.Get(chain); cost = chainAbility.m_manaCosts.Find(m => m.TrainingLevel == chainWrapper.TrainingLevel).Value; leftoverMana = m_stats.GetStat(Stats.MP) - cost; if (leftoverMana >= 0 && chainWrapper.Use()) { m_stats.AddModifier(Stats.MP, -cost, 0); chainAbility.Use(this, chainWrapper.TrainingLevel); } } } } }
public AbilitySkillWrapper(AbilityWrapper p_wrapper) { AbilityWrapper = p_wrapper; }
void LateUpdate() { bool leftClick = true; bool fire = false; GameObject hover = Game.m_rewiredEventSystem.GetGameObjectUnderPointer(m_playerId); bool mouseOverGameObject = hover || UIItem.HeldItem; if (HideUIOnEvent.ObjectsHidden.Contains(hover)) { mouseOverGameObject = UIItem.HeldItem; } if (UIItem.HeldItem && this == UIItem.Holder) { UIItem.HeldItem.MoveItem(m_mouse.GetPosition()); } if (MenuHandler.Instance.m_openedMenus.Count > 0 || m_interactingWithNPC || Time.time - m_lastNPCInteract <= 0.5f) { if (m_interactingWithNPC) { m_lastNPCInteract = Time.time; } return; } if (m_rewiredPlayer.GetButtonDown("SpawnNPC")) { Game.m_npcGenerator.GenerateRandom(1); } if (m_rewiredPlayer.GetButtonDown("SpawnEnemy")) { Game.m_enemyGenerator.Generate("TestEnemy"); } if (m_rewiredPlayer.GetButton("Primary Fire")) { fire = true; } else if (m_rewiredPlayer.GetButton("Secondary Fire")) { fire = true; leftClick = false; } if (mouseOverGameObject) // make sure we can't fire when we hover outside of ui elements when dragging items { m_wasHoldingLeftClick = m_rewiredPlayer.GetButton("Primary Fire"); m_wasHoldingRightClick = m_rewiredPlayer.GetButton("Secondary Fire"); } else if (m_wasHoldingLeftClick || m_wasHoldingRightClick) { fire = false; } if (m_rewiredPlayer.GetButtonUp("Primary Fire")) { m_wasHoldingLeftClick = false; } if (m_rewiredPlayer.GetButtonUp("Secondary Fire")) { m_wasHoldingRightClick = false; } if (fire && !mouseOverGameObject) { Weapon weapon = m_equipment.GetWeaponHandlingClick(leftClick); string toFire = m_equipment.GetShotPatternHandlingClick(leftClick); if (weapon == null) { return; } if (string.IsNullOrEmpty(toFire)) { return; } weapon.Use(this, new string[] { weapon.m_leftClickPattern == toFire ? "true" : "false", "true" }); // using weapon in case it has specific code to execute } for (int i = 1; i <= 6; i++) { if (m_rewiredPlayer.GetButtonDown("Hotkey " + i)) { AbilityWrapper wrapper = m_abilities.Find(a => a.HotkeySlot == i); if (wrapper != null) { UseAbility(wrapper.AbilityName); } } } }