public void AddObtainedAbility(AbstractAbility ability) { AbstractAbilityCooldown aac = GameManager.instance.player.AddComponent(ability.GetCooldownType()) as AbstractAbilityCooldown; obtainedAbilities.Add(ability); abilityCooldowns.Add(aac); // Get next ability index int index = obtainedAbilities.Count - 1; IconManager.instance.SetAbilityIconByIndex(index, ability.abilityIcon); if (index < activeAbilities.Length) { activeAbilities[index] = index; aac.SetKeyCode(GameManager.instance.player.GetComponent <InputManager>().GetKeyCodeByInt(index)); } else { inactiveAbilities[index - activeAbilities.Length] = index; aac.enabled = false; } aac.Initialise(ability, GameManager.instance.player); }
public void UseAbility(AbstractAbility AbilitySelected) { ActionSelected = Actions.Ability; SELECTIONMODE = true; ActiveSelector(); AbilityToUse = AbilitySelected; }
public void Initialise(AbstractAbility selectedAbility, GameObject abilityHolder) { ability = selectedAbility; coolDownDuration = ability.aBaseCoolDown; ability.Initialise(abilityHolder); triggerable = ability.triggerable; }
void handleNetworkedAbilityInput(IncomingNetworkStreamMessage m, int index, AbstractAbility ability, AbilityType type) { switch (players[index].networkMode) { case NetworkMode.REMOTESERVER: { Vector2 direction = m.reader.ReadVector2(); activateAndSend(m.packetType, direction, (byte)(players[index].playerID), ability); //no response when failed; client uses RTT to realize this break; } case NetworkMode.LOCALCLIENT: case NetworkMode.REMOTECLIENT: { //server sent it, so it's 100% valid Vector2 direction = m.reader.ReadVector2(); bool activated = false; if (m.reader.ReadBoolean() && _abilitiesEnabled) //if it is a IRandomAbility { activated = ((IRandomAbility)ability).Fire(direction, m.reader.ReadInt32()); } else if (_abilitiesEnabled) { activated = ability.Fire(direction); } switch (type) { case AbilityType.MOVEMENT: movementAbilityObservable.Post(new MovementAbilityFiredMessage(direction)); break; case AbilityType.GENERIC: genericAbilityObservable.Post(new GenericAbilityFiredMessage(direction)); break; case AbilityType.SUPER: superAbilityObservable.Post(new SuperAbilityFiredMessage()); break; default: Debug.Log("Invalid Ability Type"); break; } //maybe call a ForceFire method? Assert.IsTrue(activated); break; } default: Debug.Log("Unauthorized ability input"); break; } }
private void lsMasters_DrawItem(object sender, DrawItemEventArgs e) { e.Graphics.FillRectangle(new SolidBrush(e.BackColor), e.Bounds); if (e.Index >= 0) { AbstractAbility ability = ((ListBox)sender).Items[e.Index] as AbstractAbility; StringFormat sStringFormat = new StringFormat(); sStringFormat.LineAlignment = StringAlignment.Center; e.Graphics.DrawString(ability.TypeName + "-" + ability.UnitName, e.Font, new SolidBrush(e.ForeColor), e.Bounds, sStringFormat); } e.DrawFocusRectangle(); }
public void SpawnAbilityPickup(Vector3 position) { AbstractAbility ability = LootManager.instance.GetNewAbility(); if (ability) { GameObject pickup = Instantiate(ability.pickupPrefab, position, Quaternion.identity); pickup.GetComponent <AbilityLoot>().ability = ability; } }
public AbstractActor() { RemoveStates = new Dictionary <string, Dictionary <string, AbstractState> >(); Stats = new Attribute(); MainHand = new AbstractWeapon(); Helmet = new AbstractArmor(); Body = new AbstractArmor(); Feet = new AbstractArmor(); Ring = new AbstractArmor(); Necklace = new AbstractArmor(); Job = new AbstractJob(); AbstractAbility aux = new AbstractAbility(); }
public AbstractAbility GetNewAbility() { AbstractAbility returnedAbility = null; if (unobtainedAbilities.Count > 0) { int randomIndex = Random.Range(0, unobtainedAbilities.Count); returnedAbility = unobtainedAbilities[randomIndex]; unobtainedAbilities.Remove(returnedAbility); } return(returnedAbility); }
// Start is called before the first frame update void Start() { if (itemData != null) { Ability = gameController.GetRandomAbility(itemData.ItemType, itemData.ItemPower); } //Assign display values if (itemData != null) { var spriteRenderer = GetComponentInChildren <SpriteRenderer>(); spriteRenderer.sprite = itemData.sprite; } }
private void btnCopy_Click(object sender, EventArgs e) { AbstractAbility ability = lsAbility.SelectedItem as AbstractAbility; if (ability != null) { file.CopyAndCreate(ability); reload(); lsAbility.SelectedItem = abilitys[abilitys.Count - 1]; MessageBox.Show("创建成功,请修改数据", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
/// <summary> /// /// </summary> /// <param name="selected"></param> public override void On(AbstractAbility selected) { AbilitySelected = selected; switch (MenuSelection) { case 0: break; case 1: GameObject.Find("Description").GetComponent <Text>().text = "MP Cost " + AbilitySelected.MPCost + ", Power " + AbilitySelected.AttackPower + " " + AbilitySelected.Type.ToString() + "." + AbilitySelected.Description; break; default: break; } }
public void CollectAbility(AbstractAbility ability) { var count1 = AbilitiesSlot1.Count; var count2 = AbilitiesSlot2.Count; var rand = Random.Range(0, 2); var abilityGO = Instantiate(ability.gameObject); var clonedAbility = abilityGO.GetComponent <AbstractAbility>(); if (count1 > count2 || count1 == count2 && rand == 0) { AbilitiesSlot2.Add(clonedAbility); } else { AbilitiesSlot1.Add(clonedAbility); } }
public void CopyAndCreate(AbstractAbility ability) { if (ability is XiaoGuoAbility) { copyAndCreate((XiaoGuoAbility)ability); } else { byte[] data = new byte[ability.Data.Length]; ability.Data.CopyTo(data, 0); int index = -1; int count = -1; if (ability is GundamAbility) { count = addText("自创机体能力"); base.Write(8, BitConverter.GetBytes(MachineAbilityCount + 1)); index = GGCRStaticConfig.GundamAbilityStart + GGCRStaticConfig.GundamAbilityLength * MachineAbilityCount; } else if (ability is OPInfo) { count = addText("自创OP"); base.Write(12, BitConverter.GetBytes(OPCount + 1)); index = GGCRStaticConfig.GundamAbilityStart + GGCRStaticConfig.GundamAbilityLength * MachineAbilityCount + GGCRStaticConfig.OPAbilityLength * OPCount; } else if (ability is PersonAbility) { count = addText("自创人物技能"); base.Write(16, BitConverter.GetBytes(PersonAbilityCount + 1)); index = GGCRStaticConfig.GundamAbilityStart + GGCRStaticConfig.GundamAbilityLength * MachineAbilityCount + GGCRStaticConfig.OPAbilityLength * OPCount + GGCRStaticConfig.PeopleAbilityLength * PersonAbilityCount; } else { throw new Exception("不支持此物品复制"); } BitConverter.GetBytes((short)(count - 1)).CopyTo(data, 2); this.Insert(index, data); } }
private AbstractAbility DrawAbilityUI(Rect position, AbstractAbility Ability) { if (Ability == null) { Ability = new AbstractAbility(); } GUI.enabled = false; GUI.TextField(new Rect(position.x, position.y, position.width - 100, position.height), Ability.Ability); GUI.enabled = true; if (GUI.Button(new Rect(position.width - 100, position.y, 100, position.height), "Select Ability")) { var window = EditorWindow.GetWindow <AbilityUI>(); window.Selected = true; window.Initialize(ref Ability); window.Show(); } return(Ability); }
private void lsAbility_SelectedIndexChanged(object sender, EventArgs e) { AbstractAbility ability = lsAbility.SelectedItem as AbstractAbility; if (ability != null) { cboSkill.SelectedValue = ability.SkillId; XiaoGuoAbility xiaoguo = cboSkill.SelectedItem as XiaoGuoAbility; if (ability is XiaoGuoAbility) { cboSkill.Enabled = false; txtRemarkId.Enabled = true; txtName.Text = ability.UnitName; txtName.ReadOnly = true; } else { cboSkill.Enabled = true; txtRemarkId.Enabled = false; txtName.Text = ability.UnitName; txtName.ReadOnly = false; } txtAddress.Text = ability.Address; if (ability is XiaoGuoAbility) { btnCopy.Enabled = true; } else { btnCopy.Enabled = false; } } else { cboSkill.SelectedValue = "-1"; btnCopy.Enabled = false; } }
public AbstractAbility AttackSelected() { AbstractAbility selected = null; foreach (AbstractAbility i in BattleEnemy.Data.Job.Abilities) { if (BattleEnemy.Data.MP < i.MPCost) { continue; } else if (selected != null && selected.AttackPower < i.AttackPower) { selected = i; } else { selected = i; } } return(selected); }
bool activateAndSend(PacketType packetType, Vector2 direction, byte playerID, AbstractAbility ability) { if (!_abilitiesEnabled) { return(false); } int seed = -1; bool activated; if (ability is IRandomAbility) { seed = RandomLib.Seed(); activated = ((IRandomAbility)ability).Fire(direction, seed); } else { activated = ability.Fire(direction); } if (activated) { node.BinaryWriter.Write((byte)(packetType)); node.BinaryWriter.Write(playerID); node.BinaryWriter.Write(direction); if (ability is IRandomAbility) { node.BinaryWriter.Write(true); node.BinaryWriter.Write(seed); } else { node.BinaryWriter.Write(false); } node.Send(node.ConnectionIDs, node.AllCostChannel); } return(activated); }
private int AbilityFight(ref AbstractActor Attacker, ref AbstractActor Defender, AbstractAbility ability) { Attacker.MP -= ability.MPCost; if (ability.State.State != string.Empty) { if (ability.Type == Constant.OffenseDefense.Offensive) { ApplyState(ability.State, ability.ApplyStatePorcentage, ref Defender); } else { RemoveState(ability.State, ability.ApplyStatePorcentage, ref Defender); } } if (ability.AttackType == Constant.AttackType.MagicAttack) { return(MagicFight(ref Attacker, ref Defender, ability.AttackPower)); } else { return(NormalFight(ref Attacker, ref Defender, ability.AttackPower)); } }
void Update() { if (!working) { int damage = 0; if (Enemies.Count <= 0 && BattleState != BattleStateMachine.LVLUP && BattleState != BattleStateMachine.ENDBATTLE) { BattleState = BattleStateMachine.WIN; } if (Player.Data.HP <= 0 && BattleState != BattleStateMachine.ENDBATTLE) { BattleState = BattleStateMachine.LOSE; } switch (BattleState) { case BattleStateMachine.PLAYERTURN: if (SELECTIONMODE) { if (ProxyInput.GetInstance().Up()) { if (enemySelect + 1 >= Enemies.Count) { break; } enemySelect++; PositionSelector(enemySelect); } else if (ProxyInput.GetInstance().Down()) { if (enemySelect - 1 < 0) { break; } enemySelect--; PositionSelector(enemySelect); } else if (ProxyInput.GetInstance().A() || (UsableToUse != null && UsableToUse.AreaOfEffect == Constant.AOE.Self)) { switch (ActionSelected) { case Actions.Attack: AbstractActor attacker = Player.Data; AbstractActor defender = Enemies[enemySelect].GetComponent <Enemy>().BattleEnemy.Data; damage = NormalFight(ref attacker, ref defender, 0); Message += "You have Attack! " + defender.ActorName + " has recive " + damage + " damage."; break; case Actions.Ability: AbstractActor attacker2 = Player.Data; AbstractActor defender2 = Enemies[enemySelect].GetComponent <Enemy>().BattleEnemy.Data; damage = AbilityFight(ref attacker2, ref defender2, AbilityToUse); Message += "You have use " + AbilityToUse.Ability + "! " + defender2.ActorName + " has recive " + damage + " damage."; break; case Actions.Usable: AbstractActor actor = null; if (UsableToUse.AreaOfEffect == Constant.AOE.OneEnemy) { actor = Enemies[enemySelect].GetComponent <Enemy>().BattleEnemy.Data; } else { actor = Player.Data; } Message = UsableToUse.ItemName + " has been use on " + actor.ActorName + "! "; damage = ItemFigth(ref actor); break; default: break; } StartCoroutine(ShowMessage()); } else if (ProxyInput.GetInstance().B()) { deactivateSelector(); BattleMenu.SetActive(true); SELECTIONMODE = false; } } //Player.RemoveOnTurnState(); break; case BattleStateMachine.ENEMYTURN: AbstractAbility ability = Enemies[enemySelect].GetComponent <Enemy>().AttackSelected(); if (ability == null) { AbstractActor defender = Player.Data; AbstractActor attacker = Enemies[enemySelect].GetComponent <Enemy>().BattleEnemy.Data; damage = NormalFight(ref attacker, ref defender, 0); Message += attacker.ActorName + " " + enemySelect + 1 + " has attack! " + damage.ToString() + " Damage dealt "; } else { AbstractActor defender = Player.Data; AbstractActor attacker = Enemies[enemySelect].GetComponent <Enemy>().BattleEnemy.Data; damage = AbilityFight(ref attacker, ref defender, ability); Message += attacker.ActorName + " " + enemySelect + 1 + " has use " + ability.Ability + "! " + damage.ToString() + " Damage dealt "; } StartCoroutine(ShowMessage()); break; case BattleStateMachine.WIN: string sitems = ""; foreach (var i in ItemsDrop) { sitems += ", " + i.ItemName; Player.Items.InsertUsable(i); } lvlup = Player.ApplyXp(GainXp); Message = "You have earn " + GainXp + " XP, " + sitems; StartCoroutine(ShowMessage()); break; case BattleStateMachine.LOSE: Message = "You have lost the battle!"; StartCoroutine(ShowMessage()); break; case BattleStateMachine.LVLUP: Message = "You have Reach Level " + Player.Data.Level; showStats(); StartCoroutine(ShowMessage()); break; case BattleStateMachine.ENDBATTLE: Destroy(GameObject.Find("BattleMap")); Destroy(GameObject.Find("BattleMenu")); Constant.ActiveMap.SetActive(true); Constant.Control.SetActive(true); Player.transform.position = Constant.playerPos; break; } } }
public void Initialize(ref AbstractAbility ability) { AbilitySelected = ability; Init(); }
public Ability() { Data = new AbstractAbility(); }
public void AddUnobtainedAbility(AbstractAbility ability) { unobtainedAbilities.Add(ability); }
public virtual void On(AbstractAbility p) { }
private void button1_Click(object sender, EventArgs e) { //取当前选中的技能 XiaoGuoAbility xiaoguo = cboSkill.SelectedItem as XiaoGuoAbility; AbstractAbility ability = lsAbility.SelectedItem as AbstractAbility; if (xiaoguo != null && ability != null) { //将ability的技能编号改为现有 if (!(ability is XiaoGuoAbility)) { ability.SkillId = xiaoguo.SkillId; if (ability.UnitName != txtName.Text) { ability.SetUnitName(txtName.Text); } //保存技能编号 ability.Save(); } xiaoguo.MachHP = short.Parse(txtHP.Text); xiaoguo.PowerGeDou = short.Parse(txtPowerGeDou.Text); xiaoguo.MachEN = short.Parse(txtEN.Text); xiaoguo.PowerWuLi = short.Parse(txtPowerWuLi.Text); xiaoguo.MachACT = short.Parse(txtMachAct.Text); xiaoguo.PowerBean = short.Parse(txtPowerBean.Text); xiaoguo.MachDEF = short.Parse(txtMachDef.Text); xiaoguo.PowerMap = short.Parse(txtPowerMap.Text); xiaoguo.MachSPD = short.Parse(txtMachSpd.Text); xiaoguo.PowerZhanJianUnion = short.Parse(txtPowerZhanJianUnion.Text); xiaoguo.PowerSheJi = short.Parse(txtPowerSheJi.Text); xiaoguo.PowerYouJiUnion = short.Parse(txtPowerXiaoDuiUnion.Text); xiaoguo.PeoSheJi = short.Parse(txtPerSheJi.Text); xiaoguo.PeoShouBei = short.Parse(txtPerShouBei.Text); xiaoguo.PeoGeDou = short.Parse(txtPerGedou.Text); xiaoguo.PeoCaoDuo = short.Parse(txtPerCaoDuo.Text); xiaoguo.PeoFanYin = short.Parse(txtPerFanYin.Text); xiaoguo.PeoZhiHui = short.Parse(txtPerZhiHui.Text); xiaoguo.PeoJueXin = short.Parse(txtPerJueXin.Text); xiaoguo.PeoTongXun = short.Parse(txtPerTongXun.Text); xiaoguo.PeoFuZuo = short.Parse(txtPerFuZuo.Text); xiaoguo.PeoWeiXiu = short.Parse(txtPerWeiXiu.Text); xiaoguo.PeoMeiLi = short.Parse(txtPerMeiLi.Text); xiaoguo.PeoZhanYiMP = short.Parse(txtPerZhanYi.Text); xiaoguo.MachHPRec = short.Parse(txtHPRec.Text); xiaoguo.MachENRec = short.Parse(txtENRec.Text); xiaoguo.ShiYin1 = byte.Parse(txtShiXin1.Text); xiaoguo.ShiYin2 = byte.Parse(txtShiXin2.Text); xiaoguo.ShiYin3 = byte.Parse(txtShiXin3.Text); xiaoguo.ShiYin4 = byte.Parse(txtShiXin4.Text); xiaoguo.ShiYin5 = byte.Parse(txtShiXin5.Text); xiaoguo.DmgWuLiGeDou = short.Parse(txtDmgWuLiGeDou.Text); xiaoguo.DmgWuLiSheJi = short.Parse(txtDmgWuLiSheJi.Text); xiaoguo.DmgBeanSheJi = short.Parse(txtDmgBeanSheJi.Text); xiaoguo.DmgBeanGeDou = short.Parse(txtDmgBeanGeDou.Text); xiaoguo.DmgTeShuSheJi = short.Parse(txtDmgUnknow35.Text); xiaoguo.DmgTeShuGeDou = short.Parse(txtDmgUnknow36.Text); xiaoguo.DmgMap = short.Parse(txtDmgMap.Text); xiaoguo.WuXiaoWuLiGeDou = short.Parse(txtWuXiaoWuLiGeDou.Text); xiaoguo.WuXiaoWuLiSheJi = short.Parse(txtWuXiaoWuLiSheJi.Text); xiaoguo.WuXiaoBeanSheJi = short.Parse(txtWuXiaoBeanSheJi.Text); xiaoguo.WuXiaoBeanGeDou = short.Parse(txtWuXiaoBeanGeDou.Text); xiaoguo.WuXiaoTeShuSheJi = short.Parse(txtWuXiaoUnknow42.Text); xiaoguo.WuXiaoTeShuGeDou = short.Parse(txtWuXiaoUnKnow43.Text); xiaoguo.WuXiaoMap = short.Parse(txtWuXiaoMap.Text); xiaoguo.ShangHaiFinal = short.Parse(txtShangHaiFinal.Text); xiaoguo.ShangHaiFinalSelf = short.Parse(txtShangHaiFinalSelf.Text); xiaoguo.UnKnow47 = short.Parse(txtUnknow47.Text); xiaoguo.UnKnow48 = short.Parse(txtUnknow48.Text); xiaoguo.UnKnow49 = short.Parse(txtUnknow49.Text); xiaoguo.UnKnow50 = short.Parse(txtUnknow50.Text); xiaoguo.Mov = byte.Parse(txtMove.Text); xiaoguo.JinYan = short.Parse(txtJinYan.Text); xiaoguo.JiFen = short.Parse(txtJiFen.Text); xiaoguo.Money = short.Parse(txtJinE.Text); xiaoguo.SheChenSheJi = byte.Parse(txtSheChenSheJi.Text); xiaoguo.SheChenGeDou = byte.Parse(txtSheChenGeDou.Text); xiaoguo.SheChenWuLi = byte.Parse(txtSheChenWuLi.Text); xiaoguo.SheChenBean = byte.Parse(txtSheChenBean.Text); xiaoguo.SheChenMap = byte.Parse(txtSheChenMap.Text); xiaoguo.XiaoHaoEnSheJi = byte.Parse(txtENXiaoHaoSheJi.Text); xiaoguo.XiaoHaoEnGeDou = byte.Parse(txtENXiaoHaoGeDou.Text); xiaoguo.XiaoHaoEnWuLi = byte.Parse(txtENXiaoHaoWuLi.Text); xiaoguo.XiaoHaoEnBean = byte.Parse(txtENXiaoHaoBean.Text); xiaoguo.XiaoHaoEnMap = byte.Parse(txtENXiaoHaoMap.Text); xiaoguo.XiaoHaoMP = byte.Parse(txtXiaoHaoMP.Text); xiaoguo.BaoJiSheJi = byte.Parse(txtBaoJiSheJi.Text); xiaoguo.BaoJiGeDou = byte.Parse(txtBaoJiGeDou.Text); xiaoguo.BaoJiWuLi = byte.Parse(txtBaoJiWuLI.Text); xiaoguo.BaoJiBean = byte.Parse(txtBaoJiBean.Text); xiaoguo.BaoJiUnKnow = byte.Parse(txtBaoJiUnKnow72.Text); xiaoguo.MinZhong = byte.Parse(txtMinZhong.Text); xiaoguo.ShanBi = byte.Parse(txtShanBi.Text); xiaoguo.UnKnow75 = byte.Parse(txtUnKnow75.Text); xiaoguo.EWaiXinDong = byte.Parse(txtPerEWaiXinDong.Text); xiaoguo.AreaZhiHui = byte.Parse(txtAreaZhiHui.Text); xiaoguo.UnKnow78 = byte.Parse(txtAreaUnknow78.Text); xiaoguo.AreaJiNen = byte.Parse(txtAreaJiNen.Text); xiaoguo.UnKnow80 = short.Parse(txtUnknow80.Text); xiaoguo.RemarkId = short.Parse(txtRemarkId.Text); //写技能文本 if (txtXiaoGuoRemark.Enabled && txtXiaoGuoRemark.Text.Replace("\r\n", "\n") != xiaoguo.RemarkDetail) { xiaoguo.RemarkDetail = txtXiaoGuoRemark.Text.Replace("\r\n", "\n"); } xiaoguo.Save(); tsmiState.Text = "写入成功"; tsmiState.ForeColor = Color.Green; } else { tsmiState.Text = "保存失败,请选择技能"; tsmiState.ForeColor = Color.Red; } }
public virtual void On(AbstractAbility selected) { }
protected override void InitiateTargetting(AbstractAbility ability) { PrepareTargets(ability as AbstractActionAbility); }
public override void On(AbstractAbility p) { GameObject.Find(Constant.LastSceneLoaded).transform.FindChild("Canvas").GetComponent <Menus>().On(p); }
public AbstractJob() { Abilities = new List <AbstractAbility>(); AbstractAbility aux = new AbstractAbility(); }