public void init(PVPPlayerSkillSlot aiSkillSlot, Player player) { _player = player; _playerTagIndex = player.playerTagIndex; chargingEffect.Stop(); chargingFullNoticeEffect.Stop(); chargingFullEffect.Stop(); _isFullCharging = false; skillSlot = aiSkillSlot; _lastClickState = false; lastClickedSlotIndex = -1; blockThis = false; isClicked = false; _isPress = false; isWaitingPress = false; isLocked = false; //Debug.Log(skillId); skillSlot.skillData.exeData.init(AttackData.AttackerType.Hero, AttackData.AttackType.Skill, skillSlot.skillData, skillSlot.skillInfo.transcendData, skillSlot.skillInfo.transcendLevel); chargingTimeLimit = skillSlot.skillData.getChargingTime(skillSlot.skillInfo.reinforceLevel).AsFloat(); lbLeftItemNum.text = Mathf.RoundToInt(skillSlot.useMp / player.maxMp * 100.0f).ToString(); //Mathf.CeilToInt(useMp).ToString(); tfItemName.text = skillSlot.skillData.name; spBackground.spriteName = RareType.getRareBgSprite(skillSlot.skillInfo.rare); spFrameBorder.spriteName = RareType.getRareLineSprite(skillSlot.skillInfo.rare); Icon.setSkillIcon(skillSlot.skillInfo.getSkillIcon(), spSkillIcon); spSkillIcon.MakePixelPerfect(); resetCoolTime(); btn.isEnabled = true; }
void updateSkillRuneAI() { if (_updateSkillDelay > 0.0f) { _updateSkillDelay -= GameManager.globalDeltaTime; return; } else { _updateSkillDelay += UPDATE_SKILL_DELAY; } if (nowPlayingSkillAni || nowChargingSkill != null) { return; } _nowSelectSkillSlot = null; bool canUse = false; // 사용 가능한지 검사한다. for (int i = 0; i < _skillSlotsNum; ++i) { _skillScoreCheckers[i].index = i; _skillScoreCheckers[i].canUse = skillSlots[i].canUse(); if (_skillScoreCheckers[i].canUse) { canUse = true; #if UNITY_EDITOR // if(BattleSimulator.nowSimulation == false) // { // Debug.LogError(" i : " + i + " " + skillSlots[i].skillData.id + " 는 일단 사용 가능하다!" ); // } #endif } } // 사용 할 수 있는 녀석이 하나라도 있음. if (canUse) { // 그럼 모든 슬롯에 대해 점수를 계산함. // 단 현재 소환 가능 개수가 1개 이상인 애들이어야함. for (i = 0; i < SKILL_SLOT_NUM; ++i) { if (i < _skillSlotsNum) { _skillScoreCheckers[i].score = skillSlots[i].pvpPoint(); if (skillSlots[i].skillData.targeting <= 1) { if (checkSkillType_0_1_BestTargetingPosition(skillSlots[i]) == false) { _skillScoreCheckers[i].score = -10000; } } #if UNITY_EDITOR if (BattleSimulator.nowSimulation == false) { //Debug.LogError(i + " " + skillSlots[i].skillData.id + " : _skillScoreCheckers[i].score : " + _skillScoreCheckers[i].score); } #endif } else { _skillScoreCheckers[i].canUse = false; _skillScoreCheckers[i].score = -10000; } } _skillScoreCheckers.Sort(_aIScoreSorter); // 1번 스킬이 즉시 소환가능하면 소환. if (_skillScoreCheckers[0].canUse) { if (_skillScoreCheckers[0].score > -999) { #if UNITY_EDITOR if (BattleSimulator.nowSimulation == false) { //Debug.LogError(" 1번 스킬 사용 가능! index: " + _skillScoreCheckers[0].index + " id: " + skillSlots[_skillScoreCheckers[0].index].skillData.id ); } #endif _nowSelectSkillSlot = (PVPPlayerSkillSlot)skillSlots[_skillScoreCheckers[0].index]; moveType = MoveType.SKILL; skillModeProgressTime = 0.0f; skillMoveIsNormal = true; _pvpTargetPosition = cTransformPosition; skillTargetingPositionMaxPoint = 0.0f; _updateSkillDelay += UPDATE_SKILL_DELAY; } } else { // 사용 가능 개수가 1개 이상인 애들 중 // 1등은 현재 사용을 할 수 없어. 쿨타임 & MP에 걸려서. // 그럼 후순위들을 계산해봄. // 만약 후순위 녀석을 소환한다고 치자. 그런데 얘를 소환해서 // mp를 써도 1순위 애를 몇초후에 그대로 소환할 수 있으면 소환한다. // 아니면 소환못한다. for (i = 1; i < SKILL_SLOT_NUM; ++i) { // Debug.Log(" <<<< " + i + " 번 스킬 체크!!!" ); if (_skillScoreCheckers[i].score > -999) { if (_skillScoreCheckers[i].canUse && skillSlots[_skillScoreCheckers[0].index].canUseAfterCoolTime(skillSlots[_skillScoreCheckers[i].index].useMp)) { _nowSelectSkillSlot = (PVPPlayerSkillSlot)skillSlots[_skillScoreCheckers[i].index]; #if UNITY_EDITOR if (BattleSimulator.nowSimulation == false) { // Debug.LogError(_skillScoreCheckers[i].index + " 번 스킬 사용!!!!" + " " + skillSlots[_skillScoreCheckers[0].index].skillData.id) ; } #endif moveType = MoveType.SKILL; skillModeProgressTime = 0.0f; skillMoveIsNormal = true; skillTargetingPositionMaxPoint = 0.0f; _pvpTargetPosition = cTransformPosition; _updateSkillDelay += UPDATE_SKILL_DELAY; return; } } } } } }
public void clear() { _player = null; skillSlot = null; }