private void InitCard(ref List <CardDeckSettingData> settingDataList, ref List <CharacterCard> inGameDataList, bool isPlayerTeam) { ObjectPoolManager objectPoolMgr = GameObject.Find("CharacterCardPool").GetComponent <ObjectPoolManager>(); for (int i = 0; i < settingDataList.Count; ++i) { CharacterCard settingCardPrefab = settingDataList[i].CardPrefab.GetComponent <CharacterCard>(); CharacterCard inGameCardObject = objectPoolMgr.GetObject().GetComponent <CharacterCard>(); // 카드에 나오는 캐릭터 스프라이트를 바꿔준다. SpriteRenderer settingPortraitSpr = settingCardPrefab.m_PortraitRenderer; SpriteRenderer inGamePortraitSpr = inGameCardObject.m_PortraitRenderer; SpriteRenderer inGameBackgroundSpr = inGameCardObject.m_BackgroundRenderer; inGamePortraitSpr.sprite = settingPortraitSpr.sprite; inGameBackgroundSpr.color = new Color(1.0f, 1.0f, 1.0f, 0.0f); inGameCardObject.IsPlayerTeam = isPlayerTeam; inGameCardObject.m_HealthPoint = settingCardPrefab.m_HealthPoint; inGameCardObject.m_AttackPoint = (settingDataList[i].IsDefensiveCard) ? (int)(settingCardPrefab.m_AttackPoint * 0.5f) : settingCardPrefab.m_AttackPoint; inGameCardObject.m_Speed = settingCardPrefab.m_Speed; inGameCardObject.IsDefensiveCard = settingDataList[i].IsDefensiveCard; inGameCardObject.ResetStatus(); StartCoroutine(inGameCardObject.UpdateCardStatus()); inGameDataList.Add(inGameCardObject); } }
private void SyncCardWithSlot(ref List <CharacterCard> targetCardList, ref List <CardSlot> cardSlotList) { for (int i = 0; i < targetCardList.Count; ++i) { CharacterCard targetCardObject = targetCardList[i]; for (int j = 0; j < cardSlotList.Count; ++j) { int rowOfSlot = (j / 2) + 1; CardSlot cardSlotObject = cardSlotList[j]; if (cardSlotObject.SlotObject == null) { targetCardObject.transform.position = cardSlotObject.SlotPosition; cardSlotObject.SlotObject = targetCardObject; break; } else { if (targetCardObject == cardSlotObject.SlotObject) { targetCardObject.transform.position = cardSlotObject.SlotPosition; break; } } } } }
private void GoingToNextTurn() { AdjustExecuteOrder(); if (m_CurrentTurnCard.CurrentCardStatus == CharacterCard.CardStatus.TurnActionEnded) { if (m_CurrentCardIndex < m_TurnExecuteOrder.Count - 1) { m_CurrentTurnCard.ForceQuitVisualizeEffect(); m_CurrentTurnCard = m_TurnExecuteOrder[++m_CurrentCardIndex]; m_ActionListener(OccuredActionState.TurnActionEnd); } else { // 하나의 페이즈가 끝날 때마다, 턴에 관련된 모든 상태를 초기화한다. // 추후, 디버프나, 버프 같은 상태이상의 지속시간 소비부분도 이 부분에서 결정한다. for (int i = 0; i < m_TurnExecuteOrder.Count; ++i) { m_TurnExecuteOrder[i].PhaseEndAction(); m_CurrentTurnCard.ForceQuitVisualizeEffect(); } m_CurrentTurnCard = m_TurnExecuteOrder[0]; m_CurrentCardIndex = 0; m_ActionListener(OccuredActionState.PhaseEnded); } } }
public override void Cancel(BaseScene.INPUT_TYPE type, JoystickManager.JOYSTICK_KEY_STATE keyState, JoystickManager.PLAYER_INDEX player) { Sounder.instance.Play("返回按键"); if (keyState != JoystickManager.JOYSTICK_KEY_STATE.KEY_DOWN) { return; } if (alert.gameObject.activeSelf) { alert.gameObject.SetActive(false); return; } Sounder.instance.Play("返回按键"); if (downloading) { confirm.Show(() => { if (info != null) { JLoader.instance.Remove(info); info = null; CharacterCard card = cards[characterIndex]; card.UpdateProgress(-1); downloading = false; } }, "正在下载,要取消吗?"); } else { BackToSongList(); } }
public void ConfirmEnhance() { int totalExp = 0; string finalString = ""; for (int i = 0; i < cards.Length; i++) { CharacterCard tempCard = cards[i].GetComponent <AddCardButtonHandler>().Card; if (tempCard != null) { totalExp += GlobalManager.LocalUser.ComputeTotalExpFromCard(tempCard); finalString = finalString == "" ? finalString += tempCard.UID : finalString += "," + tempCard.UID; } } if (totalExp > 0) { base.parent.tabParent.OpenMainLoader(true); WWWForm form = new WWWForm(); //here you create a new form connection form.AddField("userId", GlobalManager.LocalUser.UID); form.AddField("cardId", parent.enhanceBaseCard.UID); form.AddField("enhanceCardIdList", finalString); form.AddField("goldReduce", 200); NetworkHandler.self.ResultDelegate += ServerRequestCallback; NetworkHandler.self.ErrorDelegate += ServerRequestError; NetworkHandler.self.ServerRequest(GlobalManager.NetworkSettings.GetFullURL(GlobalManager.RequestType.ENHANCE), form); } else { // show popup -- no card to enhance } }
public Crime (CharacterCard characterC, LocationCard locationC, ObjectCard objectC) { this.characterCard = characterC; this.locationCard = locationC; this.objectCard = objectC; }
private IEnumerator DoDamage() { // Get all cards currently in play. Card[] allCardsInPlay = GameObject.FindObjectsOfType <Card>(); // This while loop will run FOREVER until this coroutine is stopped. while (true) { // Wait so many seconds before this character attacks (again) yield return(new WaitForSeconds(this.stats.timeBetweenAttacks)); // Tell other card(s) to take damage from this card. for (int i = 0; i < allCardsInPlay.Length; i++) { CharacterCard characterCard = allCardsInPlay[i] as CharacterCard; // If characterCard is null then is a non-character so don't tell it to take damage. if (characterCard == null) { continue; } // Don't damage self! if (characterCard == this) { continue; } // Tell other character that this character wants to damage it. characterCard.TakeDamage(this); } } }
public void Set(string name, Card.Factions faction, Player p, int def) { //allows the card to not need to be played //may move to intermitent "token character" class //also kinda depricated card = new CharacterCard(name, 0, 0, faction, p, 0, 0, 0, def); }
public static int SortByName(CharacterCard go1, CharacterCard go2) { string name1 = GlobalManager.GameSettings.csObj.characterProperties[go1.cardNumber - 1].characterName; string name2 = GlobalManager.GameSettings.csObj.characterProperties[go2.cardNumber - 1].characterName; return(name1.CompareTo(name2)); }
public override void Cancel(BaseScene.INPUT_TYPE type, JoystickManager.JOYSTICK_KEY_STATE keyState, JoystickManager.PLAYER_INDEX player) { if (hasSelect) { return; } Sounder.instance.Play("返回按键"); if (downloading) { confirm.Show(() => { if (info != null) { JLoader.instance.Remove(info); info = null; CharacterCard card = cards[index - 1]; card.UpdateProgress(-1); downloading = false; } }, "正在下载,要取消吗?"); } else { LoadLevel("Prop", false); } }
public static int ComputeTotalExpFromCard(CharacterCard card) { int baseExp = 0; if (GameSettings.csObj.characterProperties[card.cardNumber - 1].rarity == 1) { baseExp = 500; } else if (GameSettings.csObj.characterProperties[card.cardNumber - 1].rarity == 2) { baseExp = 1000; } else if (GameSettings.csObj.characterProperties[card.cardNumber - 1].rarity == 3) { baseExp = 5000; } else if (GameSettings.csObj.characterProperties[card.cardNumber - 1].rarity == 4) { baseExp = 10000; } else if (GameSettings.csObj.characterProperties[card.cardNumber - 1].rarity == 5) { baseExp = 20000; } int currentExp = card.experience + ComputeCardLevelTotalExp(card.level - 1); return(baseExp + (int)((float)currentExp * 0.1f)); }
public static int SortByCost(CharacterCard go1, CharacterCard go2) { int cost1 = (int)GlobalManager.GameSettings.csObj.characterProperties[go1.cardNumber - 1].unitCost; int cost2 = (int)GlobalManager.GameSettings.csObj.characterProperties[go2.cardNumber - 1].unitCost; return(cost1.CompareTo(cost2)); }
public static int SortByHitPoint(CharacterCard go1, CharacterCard go2) { int totalHitPoint1 = (int)GlobalManager.GameSettings.csObj.characterProperties[go1.cardNumber - 1].maxHitPoint + (int)(go1.level * GlobalManager.GameSettings.csObj.characterProperties[go1.cardNumber - 1].hitPointIncreament); int totalHitPoint2 = (int)GlobalManager.GameSettings.csObj.characterProperties[go2.cardNumber - 1].maxHitPoint + (int)(go2.level * GlobalManager.GameSettings.csObj.characterProperties[go2.cardNumber - 1].hitPointIncreament); return(totalHitPoint1.CompareTo(totalHitPoint2)); }
private void SpawnLocalUserInventory() { Transform parent = this.transform.Find("ScrollView/Inventory List Holder"); int currentRow = 0; int currentCol = 0; GlobalManager.SortInventory(); for (int i = 0; i < GlobalManager.UICard.localUserCardInventory.Count + 1; i++) { Vector3 pos = Vector3.zero; GameObject holder = Instantiate(deckObj, Vector3.zero, Quaternion.identity) as GameObject; holder.name = "Inventory_" + (i + 1); holder.transform.parent = parent; if (i % totalCol == 0 && i != 0) { currentRow++; } pos.x = ((currentCol * deckDimension.x) + (deckDimension.x / 2)) + (currentCol * 25f); pos.y = (((currentRow * deckDimension.y) + (deckDimension.y / 2)) + (currentRow * 40f)) * -1; holder.transform.localPosition = pos; holder.transform.localScale = holder.transform.lossyScale; holder.AddComponent <UIDragScrollView>(); UIEventListener.Get(holder).onClick += ButtonHandler; if (i == 0) { holder.GetComponent <UICardScript>().Card = null; } else { CharacterCard tempCardObj = GlobalManager.UICard.localUserCardInventory[i - 1]; holder.GetComponent <UICardScript>().Card = tempCardObj; holder.GetComponent <UICardScript>().inventoryIndex = i - 1; holder.GetComponent <UICardScript>().SortType = GlobalManager.cardSorting; for (int j = 0; j < 6; j++) { if (GlobalManager.UICard.localUserCardDeck[j] != null) { if (tempCardObj.UID == GlobalManager.UICard.localUserCardDeck[j].UID) { holder.GetComponent <UIButton>().isEnabled = false; break; } } } } currentCol++; if (currentCol >= totalCol) { currentCol = 0; } } parent.GetComponent <UIWidget>().SetDimensions((int)scrollPanel.bounds.size.x, (int)scrollPanel.bounds.size.y); }
// sorting functions public static int SortByDamage(CharacterCard go1, CharacterCard go2) { int totalDamage1 = (int)GlobalManager.GameSettings.csObj.characterProperties[go1.cardNumber - 1].damage + (int)(go1.level * GlobalManager.GameSettings.csObj.characterProperties[go1.cardNumber - 1].damageIncreament); int totalDamage2 = (int)GlobalManager.GameSettings.csObj.characterProperties[go2.cardNumber - 1].damage + (int)(go2.level * GlobalManager.GameSettings.csObj.characterProperties[go2.cardNumber - 1].damageIncreament); return(totalDamage1.CompareTo(totalDamage2)); }
void Start() { Global.init(() => { List <int> random = new List <int>(); for (int i = 0; i < cards.Length; i++) { CharacterCard card = cards[i]; card.data = Global.CHARACTER_TABLE[i + 1]; card.gameObject.SetActive(true); card.SetIndex(i + 1); if (card.GetCanSelect() && (i + 1) != DataUtils.characterID) { random.Add(i + 1); } } int r = random[Random.Range(0, random.Count)]; string filter = ""; for (int i = 0; i < random.Count; i++) { filter += random[i] + ","; } SelectCard(r); okBtnSelectFrame.gameObject.SetActive(true); if (DataUtils.runingAutoMode) { Invoke("AutoGoNext", 3); } }); }
private void InventoryServerRequestCallback(string result) { NetworkHandler.self.ResultDelegate -= InventoryServerRequestCallback; NetworkHandler.self.ErrorDelegate -= InventoryServerRequestError; parent.tabParent.OpenMainLoader(false); var N = JSONNode.Parse(result); //Debug.Log("callback: " + N["userId"]); if (N["cardDeck"].AsArray.Count > 0) { // save all inventory details GlobalManager.UICard.localUserCardInventory.Clear(); for (int i = 0; i < N["cardDeck"].AsArray.Count; i++) { CharacterCard cardObj = new CharacterCard(); cardObj.UID = N["cardDeck"][i]["cardId"].AsInt; cardObj.experience = N["cardDeck"][i]["cardExperience"].AsInt; cardObj.cardNumber = N["cardDeck"][i]["cardNumber"].AsInt + 1; cardObj.level = N["cardDeck"][i]["cardLevel"].AsInt; cardObj.rarity = GlobalManager.GameSettings.csObj.characterProperties[cardObj.cardNumber - 1].rarity; cardObj.inventoryIndex = i; GlobalManager.UICard.localUserCardInventory.Add(cardObj); } parent.OpenSubPage(3); } else { // no user -- show register popup //loader.SetActive(false); } }
protected override void DoChanceCardEffect() { // Get all cards currently in play. Card[] allCardsInPlay = GameObject.FindObjectsOfType <Card>(); // Set health to 0 on each (If a character card) for (int i = 0; i < allCardsInPlay.Length; i++) { CharacterCard characterCard = allCardsInPlay[i] as CharacterCard; if (characterCard != null) { // Multiply stats. characterCard.stats.power *= this.powerModifier; characterCard.stats.health *= this.healthModifer; characterCard.stats.timeBetweenAttacks *= this.timeBetweenAttacksModifier; // Clamp stats. characterCard.stats.power = Mathf.Max(characterCard.stats.power, 0f); characterCard.stats.health = Mathf.Max(characterCard.stats.health, 0f); characterCard.stats.timeBetweenAttacks = Mathf.Max(characterCard.stats.timeBetweenAttacks, 0.1f); // Leave a little time between attacks? // Set card effect color. characterCard.SetCardColor(this.colorCharacterCard); } } }
public override void OnEquiped(CharacterCard toCharacterCard) { //告知角色被装备该装备,如果已有装备则删除以后装备和BUFF toCharacterCard.RequestEquipWeapon(this); //添加BUFF toCharacterCard.AddState(equipmentState, this); }
public void Set(CharacterCard card) { this.card = card; ClearBuffs(); wounds = 0; GetComponent <CharacterDisp>().Start(); GetComponent <CharacterDisp>().Disp(); }
public override void OnUse(CharacterCard toCard, string skillAppendData) { JsonData skillData = JsonMapper.ToObject(skillAppendData); int damage = Convert.ToInt32(skillData["damage"].ToString()); int energy = Convert.ToInt32(skillData["energy"].ToString()); toCard.ExpendEnergy(energy);//消耗能量 toCard.GetDamage(damage);//造成伤害 }
public void SetCharacter(int character) { this.character = (CharacterCard)character; Hashtable table = new Hashtable(); table[(byte)1] = myID; table[(byte)2] = character; gameManager.gameClient.SendEvent(10, table, true, false); }
// Use this for initialization void Awake() { _currentScreen = CurrentScreen.None; _creditsPanel = GetComponentInChildren <CreditsPanelScript>(true); _broughtPanel = GetComponentInChildren <BroughtPanelScript>(true); _characterCard = GetComponentInChildren <CharacterCard>(true); _titleScreen = GetComponentInChildren <TitleScreenGraphic>(true); _timeLeft = _titleScreenDuration; _audioSource = GetComponent <AudioSource>(); }
public void SpawnNewCards(List <BattleCharacter> characters) { foreach (BattleCharacter c in characters) { CharacterCard card = Instantiate(characterCardPrefab, playerCardPanel).GetComponent <CharacterCard>(); card.InitCard(c); card.UpdateCardColor(balancedColor); characterCards.Add(card); } }
private void DownloadVideo() { if (downloading) { return; } CharacterCard card = cards[characterIndex]; card.undownload.gameObject.SetActive(false); if (Global.isAllResLocal) { downloading = false; if (confirm.gameObject.activeSelf) { confirm.gameObject.SetActive(false); } SetCharacter(characterIndex, true); return; } if (!Global.instance.CheckVideoDownload(card.data)) { downloading = true; info = Global.instance.DownloadVideo(card.data, (per) => { if (per == -1) { downloading = false; alert.Show("网络异常或磁盘容量不足"); Sounder.instance.Play("BAD音效"); if (confirm.gameObject.activeSelf) { confirm.gameObject.SetActive(false); } } else if (per == 1) { downloading = false; alert.Show("加载成功!"); if (confirm.gameObject.activeSelf) { confirm.gameObject.SetActive(false); } } card.UpdateProgress(per); }); } else { SetCharacter(characterIndex, true); } }
void InstantiateDollCard(DollData.DollInfo doll) { CharacterCard newButton = Instantiate(dollButtonPrefab, container); string productID = doll.productID; string nameKey = doll.nameKey; Sprite image = doll.previewImage; newButton.Init(doll.dollType, nameKey, productID, image); newButton.Setup(); normalDollCards.Add(newButton); }
// Use this for initialization void Start() { okBtnFrame.SetActive(true); DataUtils.isAutoMode = false; DataUtils.runingAutoMode = false; curItem = okBtn; //初始化设置 Global.init(() => { for (int i = 0; i < propCards.Length; i++) { if (Global.PROP_TABLE.ContainsKey(i + 1)) { propCards[i].SetData(Global.PROP_TABLE[i + 1]); switch (i) { case 0: case 1: case 2: propCards[i].SetBuy(DataUtils.correntPropCount == ((i + 1) * 5)); //纠正道具 break; case 3: case 4: case 5: propCards[i].SetBuy(DataUtils.lifeType == (Global.LIFE_TYPE)(i - 2)); //血量道具 break; } } } //===================character for (int i = 0; i < cards.Length; i++) { CharacterCard card = cards[i]; card.data = Global.CHARACTER_TABLE[i + 1]; card.gameObject.SetActive(true); card.SetIndex(i); } //随机操作丢到了DataUtils里去了..从SongList过来之前已经随机好了.确保每次进游戏都是选的不同的人. int r = DataUtils.characterID; characterIndex = r - 1; SetCharacter(r - 1); if (Guide.instance != null) { Guide.instance.Show(); } }); }
public void ShouldAssignCharacterCardToPlayer() { const CharactersEnum expectedResult = CharactersEnum.Pacifist; var player = new Player(); Assert.IsNull(player.CharacterCard); var characterCard = new CharacterCard(CharactersEnum.Pacifist); player.AssignCharacterCard(characterCard); Assert.AreEqual(expectedResult, player.CharacterCard.Character); }
// Use this for initialization void Awake() { int a = Random.Range(1, 13); character = CharacterCard.CharacterCards.Find((x) => { return(x.cardId == a); }); GameObject.Find("Canvas/Card/Name").GetComponent <Text> ().text = character.name; GameObject.Find("Canvas/Card/Alias").GetComponent <Text> ().text = character.alias; GameObject.Find("Canvas/Card/Quality").GetComponent <Text> ().text = character.quality.ToString(); }
public override void OnEquiped(CharacterCard toCharacterCard) { //告知角色被装备该装备,如果已有装备则删除以后装备和BUFF toCharacterCard.RequestEquipJewelry(this); //添加BUFF if (equipmentState != null) { toCharacterCard.AddState(equipmentState, this); } }
public void GetIconClasses_Should_ReturnCorrectClasses_When_ClanIsPhoenix_And_TypeIsCharacter() { const string expected = "d-none d-sm-inline-block fa fa-fw fa-user fg-dark-phoenix"; var card = new CharacterCard { Clan = Clan.Phoenix }; var viewModel = new CardsListViewModel(); var result = viewModel.GetIconClasses(card); result.Should().Be(expected); }
public void GetCost_Should_ReturnCostOfCard_When_CardHasCosts() { const int cost = 2; var card = new CharacterCard { Cost = cost }; var viewModel = new CardsListViewModel(); var result = viewModel.GetCost(card); result.Should().Be(cost.ToString()); }
public Player(CharacterCard card, Vector2 pos, int[] loyalty, string deckUrl) { //cards deck = new Deck(deckUrl, new XmlCardLoader("Cards.xml"), this); hand = new List <Card>(); //resources manaPerTurn = baseManaPerTurn; this.loyalty = loyalty; //avatar card.Owner = this; this.card = card; MakeAvatar(pos); }
/// <summary> /// 设置该状态的所有者 /// </summary> public void SetOwnerCard(CharacterCard ownerCard) { this.ownerCard = ownerCard; }
public override void OnUse(CharacterCard toCard, string skillAppendData) { ApplyAppendData(skillAppendData); toCard.AddState(this, null); }
/// <summary> /// 召唤选中的角色卡 /// </summary> public void SummonCharacterUp(CharacterCard card, GameManager.GameSide side) { LogsSystem.Instance.Print(string.Format("{0}召唤{1}上场", side.ToString(), card.GetCardName())); //召唤卡片到场上 string path = string.Format("UI Root/Background/GamePanel/{0}side/CardGrid", side.ToString()); GameObject parent = GameObject.Find(path); GameObject prefab = Resources.Load<GameObject>("CharacterCard"); GameObject go = NGUITools.AddChild(parent, prefab); CardContainer container = go.GetComponent<CardContainer>(); container.SetCardData(card, true); parent.GetComponent<UIGrid>().Reposition(); }
public void AddCharacterCard(CharacterCard card, GameSide side) { if (side == GameSide.Our) { OurCharacterCard.Add(card.GetCardInfo().cardUUID, card); } else { EnemyCharacterCard.Add(card.GetCardInfo().cardUUID, card); } }
public void RequestUseSkill(Skill skill, CharacterCard from, CharacterCard to) { //构建封包 UseSkillData detailData = new UseSkillData(); detailData.operatePlayerPosition = playerRoomData.allocPosition; detailData.operatePlayerUid = this.playerInfo.uid; detailData.operatePlayerUUID = this.playerInfo.UUID; detailData.fromCardUUID = from.GetCardUUID(); detailData.toCardUUID = to.GetCardUUID(); detailData.skillID = skill.GetSkillID(); detailData.skillCommonName = skill.GetSkillCommonName(); detailData.skillAppendData = skill.GetSkillAppendData();//----------暂时没有任何内容 GameData data = new GameData(); data.operateCode = OperateCode.UseSkill; data.roomID = playerRoomData.roomID; data.operateData = JsonCoding<UseSkillData>.encode(detailData); GameClient.Instance.SendToServer(data); }
/// <summary> /// 向服务器发送普通攻击请求 /// </summary> public void RequestCharacterAttack(CharacterCard from, CharacterCard to) { string fromCardUUID = from.GetCardUUID(); string toCardUUID = to.GetCardUUID(); AttackData detailData = new AttackData(); detailData.fromCardUUID = fromCardUUID; detailData.toCardUUID = toCardUUID; detailData.operatePlayerPosition = playerRoomData.allocPosition; detailData.operatePlayerUid = Global.Instance.playerInfo.uid; detailData.operatePlayerUUID = Global.Instance.playerInfo.UUID; GameData data = new GameData(); data.operateCode = OperateCode.Attack; data.roomID = playerRoomData.roomID; data.operateData = JsonCoding<AttackData>.encode(detailData); GameClient.Instance.SendToServer(data); }
/// <summary> /// 向服务器请求添加英雄卡到场上 /// </summary> public void RequestAddCharacterCard(CharacterCard character, GameSide side, string cardUUID) { //发送到远程服务器 SummonCharacterData detailData = new SummonCharacterData(); detailData.cardInfo = character.GetCardInfo();//获取卡片信息 detailData.cardUUID = cardUUID; detailData.operatePlayerPosition = playerRoomData.allocPosition; detailData.operatePlayerUid = Global.Instance.playerInfo.uid; detailData.operatePlayerUUID = Global.Instance.playerInfo.UUID; GameData data = new GameData(); data.operateCode = OperateCode.SummonCharacter; data.roomID = playerRoomData.roomID; data.operateData = JsonCoding<SummonCharacterData>.encode(detailData); GameClient.Instance.SendToServer(data); }
/// <summary> /// 当角色发动普通攻击时 /// </summary> /// <param name="targetCharacter">攻击对象</param> /// <param name="damage">伤害值</param> public void OnCharacterAttack(CharacterCard targetCharacter, int damage) { GameObject target = targetCharacter.container.gameObject; //播放动画 Hashtable args = new Hashtable(); args.Add("amount", target.transform.position - container.transform.position); args.Add("time", 1f); iTween.PunchPosition(container.gameObject, args); targetCharacter.GetDamage(damage); //状态回调 if (cardState.Count != 0) { foreach (KeyValuePair<StateSkill, Card> pair in cardState) { pair.Key.OnCharacterAttack();//向下调用事件 if (cardState.Count == 0) { break; } } } }
/// <summary> /// 只能被服务器返回的响应调用 /// 技能来源必为技能拥有者(skillOwner) /// toCard为施法对象可以为null, /// skillAppendData为附加数据(伤害等,格式为JSON) /// </summary> public abstract void OnUse(CharacterCard toCard, string skillAppendData);
/// <summary> /// 当装备被装备时调用该函数 /// 因为装备类型不一定所以需要由装备发起调用 /// </summary> public virtual void OnEquiped(CharacterCard toCharacterCard) { }
/// <summary> /// 当装备被卸下时调用 /// 删除buff /// </summary> public virtual void OnUnequiped(CharacterCard toCharacterCard) { if (this.equipmentState != null) toCharacterCard.RemoveState(this.equipmentState); }