private void attackChooseDest(string countryId) { ArmyViz armyViz = riskMap.GetArmyViz(countryId); if (armyViz.PlayerId == stateManager.ActivePlayerId) { return; } int maxDiceNum = Math.Min(2, armyViz.ArmyCount); stateManager.AttackDestSelected(countryId, maxDiceNum); refreshViews(); ArmyViz attacker = riskMap.GetArmyViz(stateManager.AttackSource); if (attacker.ArmyCount < 5) { soundPool.Play(GameSound.AttackL1); } else if (attacker.ArmyCount < 10) { soundPool.Play(GameSound.AttackL2); } else { soundPool.Play(GameSound.AttackL3); } }
private void attackChooseSource(string countryId) { ArmyViz armyViz = riskMap.GetArmyViz(countryId); if (armyViz.PlayerId != stateManager.ActivePlayerId || armyViz.ArmyCount < 2) { return; } /*attackArmyViz.CountryID = countryId; * attackArmyViz.PlayerId = stateManager.ActivePlayerId; * attackArmyViz.AddArmy(); * * armyViz.ArmyCount--; * * Point p = armyViz.TranslatePoint(new Point(0, 0), mainGrid); * * //Size vizSize = armyViz.RenderSize; * //p -= new Vector(vizSize.Width, vizSize.Height); * * p -= new Vector(50, 50); * attackArmyViz.Margin = new Thickness(p.X, p.Y, 0, 0);*/ armyViz.IsAttacking = true; int maxDiceNum = Math.Min(3, armyViz.ArmyCount - 1); stateManager.AttackSourceSelected(countryId, maxDiceNum); //attackArmyViz.Visibility = Visibility.Visible; refreshViews(); soundPool.Play(GameSound.AttackChooseSource); }
private void addArmy(string countryId) { ArmyViz armyViz = riskMap.GetArmyViz(countryId); if (riskMap.GetArmyViz(countryId).PlayerId != stateManager.ActivePlayerId) { return; } armyViz.AddArmy(); stateManager.Next(); refreshViews(); soundPool.Play(GameSound.AddArmy); }
public IEnumerable <ArmyViz> GetAllArmyViz() { List <ArmyViz> res = new List <ArmyViz>(); foreach (var child in counterCanvas.Children) { ArmyViz t = child as ArmyViz; if (t != null) { //yield return t; res.Add(t); } } return(res); }
/*public void AddArmy(string countryId) * { * GetArmyViz(countryId).AddArmy(); * } * * public int GetCountryOwner(string countryId) * { * return GetArmyViz(countryId).PlayerID; * }*/ public ArmyViz GetArmyViz(string countryId) { ArmyViz viz = null; foreach (var child in counterCanvas.Children) { ArmyViz t = child as ArmyViz; if (t != null && t.CountryID == countryId) { viz = t; break; } } return(viz); }
public void DrawAttackLine(string attackerCountryId, string defenderCountryId) { ArmyViz fromArmy = GetArmyViz(attackerCountryId); ArmyViz toArmy = GetArmyViz(defenderCountryId); Point from = fromArmy.TranslatePoint(new Point(fromArmy.RenderSize.Width / 2, fromArmy.RenderSize.Height / 2), mainCanvas); Point to = toArmy.TranslatePoint(new Point(toArmy.RenderSize.Width / 2, toArmy.RenderSize.Height / 2), mainCanvas); DoubleAnimation xAnim = new DoubleAnimation(from.X, to.X, new Duration(TimeSpan.FromSeconds(0.5))); DoubleAnimation yAnim = new DoubleAnimation(from.Y, to.Y, new Duration(TimeSpan.FromSeconds(0.5))); attackLine.X1 = from.X; attackLine.Y1 = from.Y; attackLine.BeginAnimation(Line.X2Property, xAnim); attackLine.BeginAnimation(Line.Y2Property, yAnim); attackLine.Visibility = Visibility.Visible; }
private void chooseCountry(string countryId) { ArmyViz armyViz = riskMap.GetArmyViz(countryId); if (armyViz.PlayerId != 0) { return; } armyViz.PlayerId = stateManager.ActivePlayerId; armyViz.AddArmy(); //check if all countries are picked int blankCount = 0; foreach (ArmyViz eachArmyViz in riskMap.GetAllArmyViz()) { if (eachArmyViz.PlayerId == 0) { blankCount++; armyViz = eachArmyViz; if (blankCount >= 2) { break; } } } if (blankCount == 1) { armyViz.PlayerId = stateManager.ActivePlayerId == PlayerManager.PlayerNum ? 1 : stateManager.ActivePlayerId + 1; armyViz.AddArmy(); stateManager.Finish(); } else { stateManager.Next(); } refreshViews(); soundPool.Play(GameSound.AddArmy); }
private void wizardOzWindow_DiceFinished(object sender, DiceFinishedEventArgs e) { Debug.Assert(stateManager.State == GameState.AttackWaitDice); var whiteDices = from g in e.AllDices where g.DiceColor == DiceColor.White orderby g.Value descending select g; var redDices = from g in e.AllDices where g.DiceColor == DiceColor.Red orderby g.Value descending select g; if (redDices.Count() == 0 || redDices.Count() > stateManager.AttackerMaxDiceNum || whiteDices.Count() != stateManager.DefenderMaxDiceNum) { stateManager.Error(); soundPool.Play(GameSound.Error); } else { //judgement ArmyViz attackerViz = riskMap.GetArmyViz(stateManager.AttackSource); ArmyViz defenderViz = riskMap.GetArmyViz(stateManager.AttackDest); var redIt = redDices.GetEnumerator(); var whiteIt = whiteDices.GetEnumerator(); int attackerLost = 0, defenderLost = 0; while (redIt.MoveNext() && whiteIt.MoveNext()) { if (redIt.Current.Value > whiteIt.Current.Value) { defenderLost++; } else { attackerLost++; } } Debug.Assert(attackerViz.ArmyCount >= attackerLost + 1); Debug.Assert(defenderViz.ArmyCount >= defenderLost); bool attackerWin; //owner changing if (defenderViz.ArmyCount == defenderLost) //win { defenderViz.PlayerId = stateManager.ActivePlayerId; defenderViz.ArmyCount = redDices.Count() - attackerLost; attackerViz.ArmyCount -= redDices.Count(); attackerWin = true; } else //lose { attackerViz.ArmyCount -= attackerLost; defenderViz.ArmyCount -= defenderLost; attackerWin = false; } stateManager.AttackDiceDetected(attackerLost, defenderLost, attackerWin); if (attackerWin) { soundPool.Play(GameSound.AttackWin); } else { soundPool.Play(GameSound.AttackFail); } } refreshViews(); }