internal override void ComputePlayerCombatReplayActors(AbstractPlayer p, ParsedEvtcLog log, CombatReplay replay) { List <AbstractBuffEvent> eggs = GetFilteredList(log.CombatData, 31623, p, true, true); int eggStart = 0; foreach (AbstractBuffEvent c in eggs) { if (c is BuffApplyEvent) { eggStart = (int)c.Time; } else { int eggEnd = (int)c.Time; replay.Decorations.Add(new CircleDecoration(true, 0, 180, (eggStart, eggEnd), "rgba(255, 160, 0, 0.3)", new AgentConnector(p))); } } }
static void Main(string[] args) { PlayerDataBase playerDataBase = new PlayerDataBase(); playerDataBase.AddNewPlayer(new Player("青羊小霸王")); playerDataBase.AddNewPlayer(new Player("武侯一霸")); AbstractPlayer player = playerDataBase.GetPlayer("青羊小霸王"); player.Show(); player = playerDataBase.GetPlayer("武侯一霸"); player.Show(); player = playerDataBase.GetPlayer("高新区方少"); player.Show(); }
internal override void ComputePlayerCombatReplayActors(AbstractPlayer p, ParsedEvtcLog log, CombatReplay replay) { var spiritTransform = log.CombatData.GetBuffData(SkillIDs.FracturedSpirit).Where(x => x.To == p.AgentItem && x is BuffApplyEvent).ToList(); foreach (AbstractBuffEvent c in spiritTransform) { int duration = 30000; AbstractBuffEvent removedBuff = log.CombatData.GetBuffRemoveAllData(SkillIDs.MortalCoilStatueOfDeath).FirstOrDefault(x => x.To == p.AgentItem && x.Time > c.Time && x.Time < c.Time + duration); int start = (int)c.Time; int end = start + duration; if (removedBuff != null) { end = (int)removedBuff.Time; } replay.Decorations.Add(new CircleDecoration(true, 0, 100, (start, end), "rgba(0, 50, 200, 0.3)", new AgentConnector(p))); replay.Decorations.Add(new CircleDecoration(true, start + duration, 100, (start, end), "rgba(0, 50, 200, 0.5)", new AgentConnector(p))); } }
/** * 添加一个 */ public void add(AbstractPlayer p) { //如果重复则返回 if (list.Contains(p)) { return; } //若达到上限则删除第一个再添加 if (list.Count() >= limit) { list.RemoveAt(0); list.Add(p); } else { list.Add(p); } }
/// <summary> /// 计算两个玩家之间的距离 /// 两者各按逆时针计算,取最小值 /// </summary> /// <param name="p"></param> /// <returns></returns> public int GetDistance(AbstractPlayer p) { AbstractPlayer pNext = player.GetNextPlayer(); int i = 1; int j = 1; while (pNext != p) { i++; pNext = pNext.GetNextPlayer(); } pNext = p.GetNextPlayer(); while (pNext != player) { j++; pNext = pNext.GetNextPlayer(); } return(i <= j ? i : j); }
internal override void ComputePlayerCombatReplayActors(AbstractPlayer p, ParsedEvtcLog log, CombatReplay replay) { IReadOnlyList <AbstractCastEvent> cls = p.GetCastEvents(log, 0, log.FightData.FightEnd); var shieldCast = cls.Where(x => x.SkillId == 52780).ToList(); foreach (AbstractCastEvent c in shieldCast) { int start = (int)c.Time; int duration = 10000; int radius = 300; Point3D shieldNextPos = replay.PolledPositions.FirstOrDefault(x => x.Time >= start); Point3D shieldPrevPos = replay.PolledPositions.LastOrDefault(x => x.Time <= start); if (shieldNextPos != null || shieldPrevPos != null) { replay.Decorations.Add(new CircleDecoration(true, 0, radius, (start, start + duration), "rgba(255, 0, 255, 0.1)", new InterpolatedPositionConnector(shieldPrevPos, shieldNextPos, start))); replay.Decorations.Add(new CircleDecoration(false, 0, radius, (start, start + duration), "rgba(255, 0, 255, 0.3)", new InterpolatedPositionConnector(shieldPrevPos, shieldNextPos, start))); } } }
/// <summary> /// 重写use 在目标玩家的所有牌中选择一张 删除 /// </summary> /// <param name="AbstractPlayer"></param> public new void Use(AbstractPlayer p, List <AbstractPlayer> players) { base.Use(p, players); // 触发技能 p.GetTrigger().AfterMagic(); // 如果无懈,则return AskWuXieKeJi(p, players); if (isWuXie) { //ViewManagement.getInstance().printBattleMsg(GetName() + "无效"); //ViewManagement.getInstance().refreshAll(); return; } if (p.GetState().IsAI()) { AbstractPlayer target = players.ElementAt(0); if (target.GetState().GetCardList().Count() > 0) { AbstractCard c = target.GetState().GetCardList().ElementAt(0); target.GetAction().RemoveCard(c); c.Gc(); //ModuleManagement.getInstance().getBattle().addOneCard(c); p.RefreshView(); target.RefreshView(); } } else { // pc = (Panel_Control)p.getPanel(); //ps = new Panel_SelectCard(p, targetPlayers.ElementAt(0), // Panel_SelectCard.CHAI); //// 显示选择面板等待处理 //try { // SwingUtilities.invokeAndWait(run); //} catch (InterruptedException e) { // e.printStackTrace(); //} catch (InvocationTargetException e) { // e.printStackTrace(); //} } }
/** * 牌的丢弃方法,提供一些通用操作 */ public void throwIt(AbstractPlayer p) { // 当前出牌区域清空 p.GetState().GetUsedCard().Clear(); // 手牌中删除 p.GetAction().RemoveCard(this); if (!p.GetState().IsAI()) { p.UpdateCards(); } // 放入当前出牌区 // p.getState().getUsedCard().add(this); //// 战场中添加 //ModuleManagement.getInstance().getBattle().addOneCard(this); // 丢入弃牌堆 Gc(); //// 打印消息 //ViewManagement.getInstance().printMsg( // p.getInfo().getName() + "丢弃" + this.ToString()); }
public void DetermineState(AbstractPlayer player) { if (!fam.CanShoot()) { SetState("no_uses"); return; } if (player.GetActiveFamiliar().GetComponent <BaseFamiliar>() == fam) { // we are active if (fam.requiresTarget && player.focusedThing == null) { SetState("no_target"); return; } } SetState("default"); }
public void Use(AbstractPlayer _player, AbstractMonster _monster) { bool tIsPowerExist = false; AbstractPower tPower; for (int i = 0; i < _player.powers.Count; i++) { tPower = _player.powers[i]; if (tPower.ID.Equals("Barricade")) { tIsPowerExist = true; break; } } if (!tIsPowerExist) { AbstractDungeon.ActionManager.AddToBottom(new ApplyPowerAction(_player, _player, new BarricadePower(_player))); } }
/// <summary> /// 牌的use方法,提供一些通用操作 /// </summary> /// <param name="p"></param> /// <param name="players"></param> public void Use(AbstractPlayer p, List <AbstractPlayer> players) { //// 清空战场 //ModuleManagement.getInstance().getBattle().clear(); // 当前出牌区域清空 p.GetState().GetUsedCard().Clear(); // 放入当前出牌区 p.GetState().GetUsedCard().Add(this); // 手牌中删除 p.GetAction().RemoveCard(this); //// 战场中添加 //ModuleManagement.getInstance().getBattle().addOneCard(this); // 丢入弃牌堆 Gc(); // 使用者手牌刷新 // 此处注释掉的原因是如果在这里刷新,会把一些状态数值给刷掉 // 所以刷新留到子类具体实现的时候视情况再用 // p.refreshView(); DrawEffect(p, players); }
/// <summary> /// 被动响应打出 /// </summary> /// <param name="p"></param> /// <param name="players"></param> /// <returns></returns> public bool RequestUse(AbstractPlayer p, List <AbstractPlayer> players) { // 当前出牌区域清空 p.GetState().GetUsedCard().Clear(); // 放入当前出牌区 p.GetState().GetUsedCard().Add(this); // 手牌中删除 p.GetAction().RemoveCard(this); //// 战场中添加 //ModuleManagement.getInstance().getBattle().addOneCard(this); // 丢入弃牌堆 Gc(); //// 打印消息 //ViewManagement.getInstance().printBattleMsg( //p.getInfo().getName() + "打出" + this.ToString()); // 使用者手牌刷新 p.RefreshView(); return(true); }
internal override void ComputePlayerCombatReplayActors(AbstractPlayer p, ParsedEvtcLog log, CombatReplay replay) { List <AbstractBuffEvent> boltBreaks = GetFilteredList(log.CombatData, BoltBreak, p, true, true); int boltBreakStart = 0; foreach (AbstractBuffEvent c in boltBreaks) { if (c is BuffApplyEvent) { boltBreakStart = (int)c.Time; } else { int boltBreakEnd = (int)c.Time; int radius = 180; replay.Decorations.Add(new CircleDecoration(true, 0, radius, (boltBreakStart, boltBreakEnd), "rgba(255, 150, 0, 0.3)", new AgentConnector(p))); replay.Decorations.Add(new CircleDecoration(true, boltBreakEnd, radius, (boltBreakStart, boltBreakEnd), "rgba(255, 150, 0, 0.3)", new AgentConnector(p))); } } }
/// <summary> /// 询问无懈可击 /// 无懈可击的实现方法: 锦囊牌中都有一个bool值表示是否被无懈 这个方法用来询问场上是否有无懈,如果打出无懈则将bool值取反 /// 锦囊最终将在子类具体实现时候根据bool值判定是否发动效果</summary> /// <param name="p"></param> /// <param name="players"></param> public void AskWuXieKeJi(AbstractPlayer p, List <AbstractPlayer> players) { //if (HasWuxiekejiInBattle()) //{ // p.RefreshView(); // Console.WriteLine("场上有无懈"); // // 询问无懈 // List<AbstractPlayer> askPlayers = ModuleManagement.getInstance() // .getPlayerList(); // for (int i = 0; i < askPlayers.Count(); i++) // { // // 如果有人出无懈 // if (askPlayers.ElementAt(i).GetRequest().RequestWuXie()) // { // isWuXie = true; // break; // } // } //} }
private void ProcessJoinResponses(LoginRequest request, AbstractPlayer newPlayer) { foreach (var targetLogin in serverInputService.LoginResponses.Keys) { if (targetLogin == request.Login) { continue; } var response = new ServerResponse { Type = ResponseType.PlayerJoin, Login = request.Login, Pair = new Pair { Y = newPlayer.Position.Y, X = newPlayer.Position.X } }; serverInputService.LoginResponses[targetLogin].Enqueue(response); } }
public override void Execute() { if (!(Actor is AbstractPlayer)) { return; } AbstractPlayer player = (AbstractPlayer)Actor; MapBlock currentBlock = player.Position; if (currentBlock == null || currentBlock.Item == null) { throw new NoItemToPickUpException(player); } else if (currentBlock.Item is AbstractInventoryItem) { // normal item, just pick it up if (player.IsInventoryFull()) { throw new InventoryIsFullException(player); } player.AddItemToInventory((AbstractInventoryItem)(currentBlock.PickUpItem())); } else if (currentBlock.Item is AbstractWeapon) { // weapon AbstractWeapon oldWeapon = player.SwapWeapon((AbstractWeapon)(currentBlock.PickUpItem())); currentBlock.Item = oldWeapon; } else if (currentBlock.Item is AbstractArmor) { // armor AbstractArmor oldArmor = player.SwapArmor((AbstractArmor)(currentBlock.PickUpItem())); currentBlock.Item = oldArmor; } else { throw new PickUpUnknownItemException(player, currentBlock.Item); } }
internal override void ComputePlayerCombatReplayActors(AbstractPlayer p, ParsedEvtcLog log, CombatReplay replay) { // Bombs List <AbstractBuffEvent> xeraFury = GetFilteredList(log.CombatData, XerasFury, p, true, true); int xeraFuryStart = 0; foreach (AbstractBuffEvent c in xeraFury) { if (c is BuffApplyEvent) { xeraFuryStart = (int)c.Time; } else { int xeraFuryEnd = (int)c.Time; replay.Decorations.Add(new CircleDecoration(true, 0, 550, (xeraFuryStart, xeraFuryEnd), "rgba(200, 150, 0, 0.2)", new AgentConnector(p))); replay.Decorations.Add(new CircleDecoration(true, xeraFuryEnd, 550, (xeraFuryStart, xeraFuryEnd), "rgba(200, 150, 0, 0.4)", new AgentConnector(p))); } } //fixated Statue var fixatedStatue = GetFilteredList(log.CombatData, StatueFixated1, p, true, true).Concat(GetFilteredList(log.CombatData, StatueFixated2, p, true, true)).ToList(); int fixationStatueStart = 0; NPC statue = null; foreach (AbstractBuffEvent c in fixatedStatue) { if (c is BuffApplyEvent) { fixationStatueStart = (int)c.Time; statue = TrashMobs.FirstOrDefault(x => x.AgentItem == c.CreditedBy); } else { int fixationStatueEnd = (int)c.Time; if (statue != null) { replay.Decorations.Add(new LineDecoration(0, (fixationStatueStart, fixationStatueEnd), "rgba(255, 0, 255, 0.5)", new AgentConnector(p), new AgentConnector(statue))); } } } }
public void Cast(AbstractPlayer player, BaseFamiliar fam, float travelTime) { this.player = player; this.fam = fam; this.travelTime = travelTime; this.focusedThing = player.focusedThing; if (player.focusedThing != null) { destinationTransform = player.focusedThing.transform; } destination = Camera.main.ScreenToWorldPoint(Input.mousePosition); destination.z = 0.0f; wasCast = true; foreach (IOnCast oc in OnCastEffects) { oc.Action(this); } }
virtual public bool DoAbility(AbstractPlayer player, Vector3 pos) { var ce = (GameObject)Instantiate( Resources.Load("Effects/CastEffect") as GameObject, player.transform.position, player.transform.rotation ); var spell = ce.GetComponent <Spell>(); spell.destination = pos; if (!QueueAbilities(spell)) { return(false); } ; spell.Cast(player, this, 1.0f); return(true); }
private FinalDPS GetFinalDPS(AbstractPlayer player, int phaseIndex, Boss target) { PhaseData phase = _statistics.Phases[phaseIndex]; double phaseDuration = (phase.GetDuration()) / 1000.0; double damage; double dps = 0.0; FinalDPS final = new FinalDPS(); //DPS damage = player.GetDamageLogs(target, _log, phase.Start, phase.End).Sum(x => x.Damage); if (phaseDuration > 0) { dps = damage / phaseDuration; } final.Dps = (int)dps; final.Damage = (int)damage; //Condi DPS damage = player.GetDamageLogs(target, _log, phase.Start, phase.End).Where(x => x.IsCondi > 0).Sum(x => x.Damage); if (phaseDuration > 0) { dps = damage / phaseDuration; } final.CondiDps = (int)dps; final.CondiDamage = (int)damage; //Power DPS damage = final.Damage - final.CondiDamage; if (phaseDuration > 0) { dps = damage / phaseDuration; } final.PowerDps = (int)dps; final.PowerDamage = (int)damage; final.PlayerPowerDamage = player.GetJustPlayerDamageLogs(target, _log, phase.Start, phase.End).Where(x => x.IsCondi == 0).Sum(x => x.Damage); return(final); }
public BattlefieldViewInteractionService( BattlefieldView battlefieldView, BattlefieldViewStyleUpdateService battlefieldViewStyleUpdateService, AbstractPlayer player = null ) { BattlefieldView = battlefieldView; BattlefieldViewStyleUpdateService = battlefieldViewStyleUpdateService; Player = player; foreach (var coordinateView in BattlefieldView.Children.OfType <CoordinateView>()) { coordinateView.MouseEnter += CoordinateView_MouseEnter; coordinateView.MouseLeftButtonDown += CoordinateView_MouseLeftButtonDown; coordinateView.PreviewMouseLeftButtonUp += CoordinateView_PreviewMouseLeftButtonUp; coordinateView.MouseLeftButtonUp += CoordinateView_MouseLeftButtonUp; coordinateView.MouseLeave += CoordinateView_MouseLeave; coordinateView.Coordinate.OnChecked += Coordinate_OnChecked; } BattlefieldViewStyleUpdateService.UpdateStyle(); }
/// <summary> /// Returns a list of the opponent's AbstractPieces that aren't captured . /// </summary> /// <param name="oppositeSide"></param> /// <returns></returns> public List <AbstractPiece> getNotCapturedEnemies(AbstractPlayer oppositeSide) { List <AbstractPiece> enemyPieces = new List <AbstractPiece>(); for (int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { for (int z = 0; z < thirdDimension; z++) { if (matrix[x, y, z] != null) { if ((matrix[x, y, z].player != oppositeSide) && (!matrix[x, y, z].IsCaptured)) { enemyPieces.Add(matrix[x, y, z]); } } } } } return(enemyPieces); }
//Sponsor Logic is the same for both Ai variants this method returns a false value if it will not sponsor the quest and a true if it will // Ai will only sponsor if it Can Sponsor which is a bool i asumed is determined by Quest and if case 1 is false Ai will often sponsor a quest if able public bool SponserQuest(List <GameObject> pl, int reward, QuestController Qc, bool CanSponsor) { int r = 0; if (CanSponsor) { for (int i = 0; i < pl.Count; i++) { AbstractPlayer tempPlayer = pl[i].GetComponent <AbstractPlayer>(); r = tempPlayer.PlayerRank.rank; if (reward + tempPlayer.PlayerRank.Sheild >= lv[r]) { return(false); } } return(true); } else { return(false); } }
virtual public bool ConsumeShot(AbstractPlayer player, Vector3 pos) { if (energy >= baseEnergyPerUse) { if (requiresTarget && player.focusedThing == null) { return(false); } else { var ret = DoAbility(player, pos); if (ret) { energy -= baseEnergyPerUse; } return(ret); } } else { return(false); } }
void OnGameOver(AbstractPlayer winner) { int difficulty = PlayerProfile.PreferredDifficulty; // Update player stats if (winner == null) { PlayerProfile.Draws.IncrementValue(difficulty); } else if (winner is IUserControlledPlayer) { PlayerProfile.Wins.IncrementValue(difficulty); } else { PlayerProfile.Losses.IncrementValue(difficulty); } _machine.changeState <GameoverState>(); _context.hudManager.ChangeGameState(GameState.GameOver, winner); this.PlayGameOverSFX(winner); }
/// <summary> /// 执行杀牌的杀流程 /// </summary> /// <param name="p"></param> /// <param name="toP"></param> public void ExecuteSha(AbstractPlayer p, AbstractPlayer toP) { if (!toP.GetAction().AvoidSha(p, this)) { // 如果使用者带武器,则调用武器的杀 AbstractWeaponCard awc = (AbstractWeaponCard)p.GetState() .GetEquipment().GetWeapons(); if (awc != null) { awc.ShaWithEquipment(p, toP, this); } else { // 判定防具 IArmor am = (IArmor)toP.GetState().GetEquipment().GetArmor(); if (am == null || !am.Check(this, toP)) { p.GetAction().Sha(toP); } } } p.RefreshView(); }
public void CalculateWinner() { HandleTextFile.WriteLog("Action Log: Calculate Tournament Winner", GameControler.SName); int TBP = 0; int winingPlayer; List <int> RoundTotal = new List <int>(); for (int i = 0; i < players.Count; i++) { if (joined2[i] == true) { AbstractPlayer LeadPlayer = players[i].GetComponent <AbstractPlayer>(); TBP = LeadPlayer.SetBP(dzones[i].UpdateBP("!")); RoundTotal.Add(TBP); } else { RoundTotal.Add(0); } } winingPlayer = TieBreaker(RoundTotal); if (winingPlayer < 4) { AbstractPlayer WinPlayer = players[winingPlayer].GetComponent <AbstractPlayer>(); HandleTextFile.WriteLog("Action Log: Player " + WinPlayer.playerID + " Wins", GameControler.SName); WinPlayer.SetSheilds(Reward + joinedPlayers); InatiatedBy.TournamentWinner = winingPlayer; InatiatedBy.TournamentWinnerShields = (Reward + joinedPlayers); pop.EnableTournamentWinnerPopup(players[winingPlayer], (Reward + joinedPlayers), winingPlayer); } for (int i = 0; i < 4; i++) { FlipDropzone(dzones[i], false); } }
public GameManager(AbstractPlayer p1, AbstractPlayer p2, int finalturn, int fps) { P1 = p1; P2 = p2; FinalTurn = finalturn; //gamestate.NotCurrentPlayer = FieldObject.P2; playerList.Add(p1); playerList.Add(p2); Evil = Square.P1Evil; Good = Square.P1Good; P1_EvilGhostNum = 4; P1_GoodGhostNum = 4; P2_EvilGhostNum = 4; P2_GoodGhostNum = 4; this.processFPS = fps; gamestate = new GameState(P1.InitialPlacement, P2.InitialPlacement, FinalTurn); }
public void ChangeGameState(GameState newState, AbstractPlayer winner) { this.UnsubsribeAllPagesEvents(); this.pageGameplayController.UpdateGameStats(); switch (newState) { case GameState.Gameplay: this.pageGameplayController.OnGameStateTransitionRequested += this.OnGameStateTransitionRequested; this.pageGameplayController.Open(null); this.popupGameoverController.Close(null); break; case GameState.GameOver: this.popupGameoverController.OnGameStateTransitionRequested += this.OnGameStateTransitionRequested; this.popupGameoverController.SetWinningType(winner == null ? (TileMark?)null : winner.Type); this.popupGameoverController.Open(this.pageGameplayController); break; case GameState.Loading: this.pageLoadingController.OpenAndLoadScene(0, this.pageGameplayController); break; } }
void OnTriggerEnter(Collider other) { if (!isEnabled || !BoltNetwork.isServer) { return; } AbstractPlayer p = other.gameObject.GetComponentInParent <AbstractPlayer>(); CaptureTheFlagMode mode = (CaptureTheFlagMode)GameManager.instance.gameMode; //You can only pick up this flag if // - you are a player // - there is not already someone picking up this flag // - either you are // - on the enemy team, so you can pick it up wherever // - or your a friendly player but the flag is not at spawn if (p != null && player == null && (p.Team != teamID || (p.Team == teamID && !mode.isFlagAtBaseForTeam(teamID)))) { //Update who is holding flag this.gameObject.transform.parent = other.gameObject.transform; player = p; state.Holder = player.Username; isEnabled = false; } }
void Start() { IsOverheating = false; Temperature = 0f; look = GetComponentInParent<CustomMouseLook>(); player = (AbstractPlayer)GameManager.instance.CurrentPlayer; }
void Start() { lightning = GetComponent<Lightning>(); lightning.maxLength = maxDistance; beamSpeedTimer = 0; GrapplePhysics.reelSpeed = reelSpeed; GrapplePhysics.stabilizer = stabilizer; player = (AbstractPlayer)GameManager.instance.CurrentPlayer; }