public override MessageCore.AskForResult AskFor(ChiefBase aChief, MessageCore.AskForEnum aAskFor, GlobalData aData) { if (aData.Game.Response.SkillName == SkillName && SkillStatus == SkillEnabled.Enable && aChief.ChiefStatus == ChiefBase.Status.Majesty && aAskFor == MessageCore.AskForEnum.Shan) { SwitchSkillStatus(aChief, SkillEnabled.Disable, aData); aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aChief, this, new ChiefBase[] { }, new Card[] { })); ChiefBase t = aChief.Next; while (!t.IsMe(aChief)) { if (t.ChiefCamp == ChiefBase.Camp.Wei) { string msg = new Beaver("askfor.hujia.shan", t.ChiefName).ToString(); //new XElement("askfor.hujia.shan", // new XElement("target", t.ChiefName) // ); MessageCore.AskForResult res2 = aData.Game.AsynchronousCore.AskForCards(t, MessageCore.AskForEnum.Shan, new AskForWrapper(msg, aData.Game), aData); if (res2.Effect == Card.Effect.Shan) { aData.Game.AsynchronousCore.SendMessage( new Beaver("hujia.shan", t.ChiefName, Card.Cards2Beaver("cards", res2.Cards)).ToString()); //new XElement("hujia.shan", // new XElement("target", t.ChiefName), // Card.Cards2XML("cards", res2.Cards) // ) //); return(new MessageCore.AskForResult(false, t, new ChiefBase[] { }, res2.Cards, Card.Effect.Shan, false, res2.PlayerLead, SkillName)); } } t = t.Next; } } return(null); }
//private void Start() //{ //player = GameObject.FindGameObjectWithTag("Beaver").GetComponent<Beaver>(); ; //} private void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.tag == "Beaver") { player = collision.gameObject.GetComponent <Beaver>(); //Debug.Log("Collision with player."); player.TakeDamage(damage); } }
// Start is called before the first frame update void Start() { beaver = GameObject.Find("Beaver").GetComponent <Beaver>(); timer = GetComponent <Text>(); timer.text = "Time Remaining: " + (int)startTime; playerHasMoved = false; showGoal.gameObject.SetActive(true); showGoal.text = "Collect all items and destroy them at the dam before time runs out."; }
/// <summary> /// 将该武将的技能和相应的技能状态以消息的方式传送给所有玩家 /// </summary> /// <param name="aData">游戏数据</param> public void ReportSkills(GlobalData aData) { Beaver root = new Beaver("skills", ChiefName); foreach (SkillBase s in Skills) { root.Add(string.Empty, new Beaver("skill", s.SkillName, s.SkillStatus.ToString())); } aData.Game.AsynchronousCore.SendMessage(root.ToString()); }
public IActionResult Edit(Beaver beaver) { if (ModelState.IsValid) { _beaversRepository.UpdateBeaver(beaver); return(RedirectToAction("EditComplete")); } return(View(beaver)); }
void removeBeaver(Beaver beav) { beav.destroyListener -= removeBeaver; m_listBeavers.Remove(beav); m_beaverKilledTotal++; if (onBeaverKilledListener != null) { onBeaverKilledListener(m_beaverKilledTotal); } }
/// <summary> /// 产生某个玩家手牌序列Beaver消息 /// </summary> /// <param name="aPlayer">玩家对象</param> /// <returns>Beaver对象</returns> private Beaver MakeHandMessage(Player aPlayer) { Beaver ret = new Beaver(); foreach (Card c in aPlayer.Hands) { ret.Add(string.Empty, c.ID); } ret.SetHeaderElementName("hands"); return(ret); }
internal static BeaverMarkupLanguage.Beaver Chiefs2Beaver(string aNodeName, ChiefBase[] aChiefs) { Beaver ret = new Beaver(); foreach (ChiefBase c in aChiefs) { ret.Add(string.Empty, c.ChiefName); } ret.SetHeaderElementName(aNodeName); return(ret); //return new BeaverMarkupLanguage.Beaver(aNodeName, aChiefs.Select(i => i.ChiefName.ToString())); }
internal static BeaverMarkupLanguage.Beaver Cards2Beaver(string aNodeName, Card[] aCards) { Beaver ret = new Beaver(); foreach (Card c in aCards) { ret.Add(string.Empty, c.ID); } ret.SetHeaderElementName(aNodeName); return(ret); //return new BeaverMarkupLanguage.Beaver(aNodeName, aCards.Select(i => i.CardNumber).ToArray()); }
/// <summary> /// 借刀杀人的过程 /// </summary> /// <param name="r">子事件的起始节点</param> /// <returns></returns> private EventRecoard JieDaoShaRenProc(EventRecoard r) { //玩家自己和两个目标不能死亡,目标不能没有武器 if (!GamePlayers[r.Source].Dead && !GamePlayers[r.Target].Dead && !GamePlayers[r.Target2].Dead && GamePlayers[r.Target].Weapon != null) { //无懈可击 if (WuXieProc(r.Target, Card.Effect.JieDaoShaRen)) { return(r); } string msg = new Beaver("askfor.jdsr.sha", r.Target.ChiefName, r.Target2.ChiefName, r.Source.ChiefName).ToString(); //new XElement("askfor.jdsr.sha", // new XElement("target", r.Target.ChiefName), // new XElement("target2", r.Target2.ChiefName), // new XElement("source", r.Source.ChiefName) //); //向目标问询杀 MessageCore.AskForResult res = AsynchronousCore.AskForCards(r.Target, MessageCore.AskForEnum.Sha, new AskForWrapper(msg, this), gData); ValidityResult(r.Target, ref res); if (res.Effect == Card.Effect.None) { //获得对方的武器对象 Card weapon = GamePlayers[r.Target].Weapon; Move(r.Target, r.Source, new Card[] { weapon }); //玩家得到武器牌 AsynchronousCore.SendMessage(MessageCore.MakeStealMessage(r.Target, r.Source, new Card[] { weapon })); //new XElement("steal", // new XElement("from", r.Target.ChiefName), // new XElement("to", r.Source.ChiefName), // Card.Cards2XML("cards", new Card[] { weapon }) // ) //); } else if (res.Effect == Card.Effect.Sha) { AsynchronousCore.SendMessage( new Beaver("sha", r.Target.ChiefName, ChiefBase.Chiefs2Beaver("to", new ChiefBase[] { r.Target2 }), res.SkillName, Card.Cards2Beaver("cards", res.Cards)).ToString()); //new XElement("sha", // new XElement("from", r.Target.ChiefName), // ChiefBase.Chiefs2XML("to", new ChiefBase[] { r.Target2 }), // new XElement("skill", res.SkillName), // Card.Cards2XML("cards", res.Cards) // ) // ); //再此子事件上创建杀的子事件 DropCards(true, CardFrom.Hand, string.Empty, res.Cards, Card.Effect.Sha, r.Target, r.Target2, null); //执行杀的子事件 ShaProc(lstRecoard.Last());// lstRecoard.ElementAt(lstRecoard.Count - 1) } } return(r); }
/// <summary> /// 南蛮入侵的过程 /// </summary> /// <param name="r">子事件的起始节点</param> /// <returns></returns> private EventRecoard NanManRuQinProc(EventRecoard r) { //对方不能死亡 if (!GamePlayers[r.Target].Dead) { //无懈可击的执行过程 if (WuXieProc(r.Target, Card.Effect.NanManRuQin)) { return(r); } if (GamePlayers[r.Target].Armor == null || Armor.EnableFor(GamePlayers[r.Target].Armor.CardEffect, r.Cards, Card.Effect.NanManRuQin, r.Target)) { string msg = new Beaver("askfor.nmrq.sha", r.Target.ChiefName, r.Source.ChiefName).ToString(); //new XElement("askfor.nmrq.sha", // new XElement("target", r.Target.ChiefName), // new XElement("source", r.Source.ChiefName) //); //问询杀 MessageCore.AskForResult resSha = AsynchronousCore.AskForCards(r.Target, MessageCore.AskForEnum.Sha, new AskForWrapper(msg, this), gData); ValidityResult(r.Target, ref resSha); if (resSha.Effect == Card.Effect.Sha) { //将杀放入子事件节点 if (resSha.PlayerLead) { DropCards(true, CardFrom.Hand, resSha.SkillName, resSha.Cards, Card.Effect.None, resSha.Leader, r.Source, null); foreach (ASkill s in resSha.Leader.Skills) { s.OnUseEffect(resSha.Leader, Card.Effect.Sha, gData); } AsynchronousCore.SendMessage( new Beaver("nmrq.sha", r.Target.ChiefName, r.Source.ChiefName, resSha.SkillName, Card.Cards2Beaver("cards", resSha.Cards)).ToString()); // new XElement("nmrq.sha", // new XElement("target", r.Target.ChiefName), // new XElement("source", r.Source.ChiefName), // new XElement("skill", resSha.SkillName), // Card.Cards2XML("cards", resSha.Cards) // )); } } else { //没有杀,费血 DamageHealth(r.Target, 1, r.Source, r); } } } return(r); }
void CreateBeaver() { m_beaverCreated++; GameObject plop = Instantiate(m_beaverPrefab); plop.transform.SetParent(m_beaverContainer.transform); plop.transform.localPosition = Vector3.zero; plop.name = "Beaver_" + m_beaverCreated.ToString(); Beaver beav = plop.gameObject.GetComponent <Beaver> (); beav.destroyListener += removeBeaver; beav.Initialize(m_treeManager); m_listBeavers.Add(plop.gameObject.GetComponent <Beaver> ()); }
private Beaver Chiefs2Beaver(int aIndex) { Beaver ret = new Beaver(); foreach (ChiefBase c in GamePlayers[aIndex].AvailableChiefs) { ret.Add(string.Empty, c.ChiefName); } ret.SetHeaderElementName("chiefs"); return(ret); //Beaver r = null; //foreach (ChiefBase c in GamePlayers[aIndex].AvailableChiefs) // if (r == null) // r = new Beaver("chiefs", c.ChiefName); // else // r.Add(string.Empty, c.ChiefName); //if (r == null) // r = new Beaver("chiefs"); //return r; }
public override MessageCore.AskForResult AskFor(ChiefBase aChief, MessageCore.AskForEnum aAskFor, GlobalData aData) { if (aData.Game.Response.SkillName == SkillName && aChief.ChiefStatus == ChiefBase.Status.Majesty && (aAskFor == MessageCore.AskForEnum.Sha || aAskFor == MessageCore.AskForEnum.Aggressive) && SkillStatus == SkillEnabled.Enable) { SwitchSkillStatus(aChief, SkillEnabled.Disable, aData); ChiefBase[] targets = Player.Players2Chiefs(aData.Game.Response.Targets); aData.Game.AsynchronousCore.SendMessage(MessageCore.MakeTriggerSkillMesssage(aChief, this, targets, new Card[] { })); ChiefBase t = aChief.Next; while (!t.IsMe(aChief)) { if (t.ChiefCamp == ChiefBase.Camp.Shu) { string msg = new Beaver("askfor.jijiang.sha", t.ChiefName).ToString(); new XElement("askfor.jijiang.sha", new XElement("target", t.ChiefName) ); MessageCore.AskForResult res2 = aData.Game.AsynchronousCore.AskForCards(t, MessageCore.AskForEnum.Sha, new AskForWrapper(msg, aData.Game), aData); if (res2.Effect == Card.Effect.Sha) { aData.Game.AsynchronousCore.SendMessage( new Beaver("jijiang.sha", t.ChiefName, Card.Cards2Beaver("cards", res2.Cards), res2.SkillName).ToString()); //new XElement("jijiang.sha", // new XElement("target", t.ChiefName), // Card.Cards2XML("cards", res2.Cards), // new XElement("skill" , res2.SkillName) // ) //); if (res2.PlayerLead) { aData.Game.DropCards(true, GlobalEvent.CardFrom.Hand, string.Empty, res2.Cards, Card.Effect.Sha, t, null, null); } return(new MessageCore.AskForResult(false, aChief, targets, res2.Cards, Card.Effect.Sha, false, false, SkillName)); } } t = t.Next; } } return(null); }
public override int GetHashCode() { int hash = 1; if (Beaver != false) { hash ^= Beaver.GetHashCode(); } if (Grass != false) { hash ^= Grass.GetHashCode(); } if (Oak != false) { hash ^= Oak.GetHashCode(); } if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return(hash); }
static void Main(string[] args) { Beaver beaver = new Beaver(true, 4, "Cheap", "Beaver1", 10, 2); Console.WriteLine(beaver.Name); Console.WriteLine($"The dog is {beaver.Age} years old"); Console.WriteLine($"Has a {beaver.Fur} Fur"); Console.WriteLine($"Has a {beaver.Legs} Legs"); Console.WriteLine($"Speed is {beaver.Speed}"); Console.WriteLine($"{beaver.Name} eats {beaver.Eat()}"); Console.WriteLine(beaver.Sleep(true)); Console.WriteLine(new string('*', 50)); Rabbit rabbit = new Rabbit(true, 4, "Expencive", "Rabbit1", 30, 1); Console.WriteLine(rabbit.Name); Console.WriteLine($"The dog is {rabbit.Age} years old"); Console.WriteLine($"Has a {rabbit.Fur} Fur"); Console.WriteLine($"Has a {rabbit.Legs} Legs"); Console.WriteLine($"Speed is {rabbit.Speed}"); Console.WriteLine($"{rabbit.Name} eats {rabbit.Eat()}"); Console.WriteLine(rabbit.Sleep(true)); Console.WriteLine(new string('*', 50)); Tiger tiger = new Tiger(true, 4, "Very Expencive", "Tiger1", 50, 8); Console.WriteLine(tiger.Name); Console.WriteLine($"The dog is {tiger.Age} years old"); Console.WriteLine($"Has a {tiger.Fur} Fur"); Console.WriteLine($"Has a {tiger.Legs} Legs"); Console.WriteLine($"Speed is {tiger.Speed}"); Console.WriteLine($"{tiger.Name} eats {tiger.Eat()}"); Console.WriteLine(tiger.Sleep(true)); Console.WriteLine(new string('*', 50)); }
/// <summary> /// 对方对杀出闪时候的处理方法 /// </summary> /// <param name="aWeaponEffect"></param> /// <param name="aSource"></param> /// <param name="aTarget"></param> /// <param name="aData"></param> /// <param name="aShaEvent"></param> /// <returns></returns> public static bool TargetShan(Card.Effect aWeaponEffect, ChiefBase aSource, ChiefBase aTarget, GlobalData aData, GlobalEvent.EventRecoard aShaEvent) { string msg = null; MessageCore.AskForResult res = null; switch (aWeaponEffect) { case Card.Effect.GuanShiFu: msg = new Beaver("askfor.gsf.cards", aSource.ChiefName).ToString(); //new XElement("askfor.gsf.cards", // new XElement("target", aSource.ChiefName) // ); res = aData.Game.AsynchronousCore.AskForCards(aSource, MessageCore.AskForEnum.TargetTwoCardsWithoutWeaponAndJudgement, new AskForWrapper(msg, aData.Game), aData); aData.Game.AsynchronousCore.LeadingValid(aSource); if (res.Effect != Card.Effect.None) { aData.Game.DropCards(true, GlobalEvent.CardFrom.HandAndEquipage, res.SkillName, res.Cards, Card.Effect.None, aSource, aTarget, null); return(true); } break; case Card.Effect.QingLongYanYueDao: msg = new Beaver("askfor.qlyy.sha", aSource.ChiefName).ToString(); //new XElement("askfor.qlyy.sha", // new XElement("target", aSource.ChiefName) // ); res = aData.Game.AsynchronousCore.AskForCards(aSource, MessageCore.AskForEnum.Sha, new AskForWrapper(msg, aData.Game), aData); aData.Game.AsynchronousCore.LeadingValid(aSource); if (res.Effect == Card.Effect.Sha) { aData.Game.DropCards(true, GlobalEvent.CardFrom.Hand, res.SkillName, res.Cards, Card.Effect.Sha, aSource, aTarget, null); aData.Game.ShaProc(aData.Game.lstRecoard[aData.Game.lstRecoard.Count - 1]); } break; } return(false); }
/// <summary> /// 五谷丰登的执行过程 /// </summary> /// <param name="r">起始子事件对象</param> /// <returns>起始子事件</returns> private EventRecoard WuGuFengDengProc(EventRecoard r) { //子事件的目标必须存在且目标不能死亡 if (r.Target != null && !GamePlayers[r.Target].Dead) { //开始无懈可击的处理 if (WuXieProc(r.Target, Card.Effect.WuGuFengDeng)) { return(r); } //发送问询 string msg = new Beaver("askfor.wgfd.select", r.Target.ChiefName).ToString(); //new XElement("askfor.wgfd.select", // new XElement("target", r.Target.ChiefName) // ); //获取问询结果 MessageCore.AskForResult res = AsynchronousCore.AskForCards(r.Target, MessageCore.AskForEnum.WuGuFengDeng, new AskForWrapper(msg, this), gData); //回应的牌不正确,则自动选择一张 if (res.Cards.Count() != 1 || (res.Cards.Count() == 1 && !CardsBuffer[WGFDSlotName].Cards.Contains(res.Cards[0]))) { res = new MessageCore.AskForResult(false, r.Target, new ChiefBase[] { }, new Card[] { CardsBuffer[WGFDSlotName].Cards[GetRandom(CardsBuffer[WGFDSlotName].Cards.Count)] }, Card.Effect.None, false, false, res.SkillName); } foreach (Card c in res.Cards) { CardsBuffer[WGFDSlotName].Cards.Remove(c); GamePlayers[r.Target].Hands.Add(c); } //发送消息 AsynchronousCore.SendMessage( new Beaver("wgfd.select", r.Target.ChiefName, Card.Cards2Beaver("cards", res.Cards)).ToString()); //new XElement("wgfd.select", // new XElement("target", r.Target.ChiefName), // Card.Cards2XML("cards", res.Cards) //)); } return(r); }
/// <summary> /// 开始玩家的选将过程,要求玩家数量必须等于游戏模式中指定的数量 /// </summary> /// <returns>若该过程无误,则返回true</returns> public bool SelectChiefs() { if (GamePlayers.All.Count() < 2) { return(false); } foreach (Player p in GamePlayers.All) { p.Chief = null; p.AvailableChiefs = new ChiefBase[0] { }; } //发送游戏环境数据给所有玩家 AsynchronousCore.SendEnvironmentMessage(); int m = 0; int l1 = 0; int l2 = 0; int i1 = 0; int i2 = 0; int i3 = 0; int i4 = 0; int s1 = 0; int s2 = 0; //获取场上玩家数量 int max = GamePlayers.All.Count(); //重置牌堆 CardsHeap = new CardHeap(this); //一个用来放置可选武将的列表 List <ChiefBase> heap = new List <ChiefBase>(); //根据模式设置牌堆里面的牌 switch (Mode) { case GameMode.FiveJunZheng: case GameMode.EightJunZheng: CardsHeap.FillOriginCards(); CardsHeap.FillExCards(); CardsHeap.FillShenCards(); break; case GameMode.FiveSTD: case GameMode.EightSTD: CardsHeap.FillOriginCards(); CardsHeap.FillExCards(); break; } //根据扩展包情况加入武将 heap = ChiefHeap.GetOriginChiefs(); //主公可选武将列表 List <ChiefBase> mLst = new List <ChiefBase>(); mLst.AddRange(heap.Where(c => c.ChiefName == "刘备" || c.ChiefName == "孙权" || c.ChiefName == "曹操")); if (GamePacks.Contains(GamePack.Feng)) { heap.AddRange(ChiefHeap.GetFengPackChiefs()); mLst.AddRange(heap.Where(c => c.ChiefName == "张角")); } if (GamePacks.Contains(GamePack.Huo)) { heap.AddRange(ChiefHeap.GetHuoPackChiefs()); mLst.AddRange(heap.Where(c => c.ChiefName == "袁绍")); } if (GamePacks.Contains(GamePack.Lin)) { heap.AddRange(ChiefHeap.GetLinPackChiefs()); mLst.AddRange(heap.Where(c => c.ChiefName == "董卓")); } //乱序可选武将 heap = ShuffleList <ChiefBase>(heap); //将非主公武将从heap中找到放置到heap2 ChiefBase[] heap2 = heap.Where(c => c.ChiefName != "刘备" && c.ChiefName != "孙权" && c.ChiefName != "曹操" && c.ChiefName != "张角" && c.ChiefName != "袁绍" && c.ChiefName != "董卓").ToArray(); //加入两个非主公武将到主公可选武将列表中 mLst.Add(heap2[0]); mLst.Add(heap2[1]); //把主公可选武将写成XML格式 Beaver r = null; foreach (ChiefBase c in mLst) { if (r == null) { r = new Beaver("chiefs", c.ChiefName); } else { r.Add(string.Empty, c.ChiefName); } } if (r == null) { r = new Beaver("chiefs"); } //表决字典 Dictionary <Player, bool> Abstention = new Dictionary <Player, bool>(); //这个列表用来产生身份序列 List <int> l = null; //按照人数开始配置角色 switch (Mode) { case GameMode.FiveSTD: case GameMode.FiveJunZheng: //五人场人数必须为5 if (GamePlayers.All.Count() != 5) { return(false); } l = new List <int>(new int[] { 0, 1, 2, 3, 4 }); l = ShuffleList <int>(l); m = l[0]; //主 l1 = l[1]; //忠 s1 = l[2]; //内 i1 = l[3]; //反 i2 = l[4]; //反 //给所有玩家群发主公是谁 AsynchronousCore.SendMessage(new Player[] { GamePlayers[m] }, new Beaver("ChiefStatus", ChiefBase.Status.Majesty.ToString(), GamePlayers[m].UID).ToString(), true); //new XElement("ChiefStatus", // new XElement("Status", ChiefBase.Status.Majesty), // new XElement("UID", GamePlayers[m].UID) // ), true); //给其他角色发送自己身份是什么 AsynchronousCore.SendMessage(new Player[] { GamePlayers[l1] }, new Beaver("ChiefStatus", ChiefBase.Status.Loyalist.ToString(), GamePlayers[l1].UID).ToString(), false); //new Player[] { GamePlayers[l1] }, //new XElement("ChiefStatus", // new XElement("Status", ChiefBase.Status.Loyalist), // new XElement("UID", GamePlayers[l1].UID) // ), false); AsynchronousCore.SendMessage(new Player[] { GamePlayers[s1] }, new Beaver("ChiefStatus", ChiefBase.Status.Spy.ToString(), GamePlayers[s1].UID).ToString(), false); //new Player[] { GamePlayers[s1] }, //new XElement("ChiefStatus", // new XElement("Status", ChiefBase.Status.Spy), // new XElement("UID", GamePlayers[s1].UID) // ), false); AsynchronousCore.SendMessage(new Player[] { GamePlayers[i1] }, new Beaver("ChiefStatus", ChiefBase.Status.Insurgent.ToString(), GamePlayers[i1].UID).ToString(), false); //new Player[] { GamePlayers[i1] }, //new XElement("ChiefStatus", // new XElement("Status", ChiefBase.Status.Insurgent), // new XElement("UID", GamePlayers[i1].UID) // ), false); AsynchronousCore.SendMessage(new Player[] { GamePlayers[i2] }, new Beaver("ChiefStatus", ChiefBase.Status.Insurgent.ToString(), GamePlayers[i2].UID).ToString(), false); //new Player[] { GamePlayers[i2] }, //new XElement("ChiefStatus", // new XElement("Status", ChiefBase.Status.Insurgent), // new XElement("UID", GamePlayers[i2].UID) // ), false); //设置主公可选武将列表 GamePlayers[m].AvailableChiefs = mLst.ToArray(); //通知主公选武将 AsynchronousCore.SendMessage( new Player[] { GamePlayers[m] }, new Beaver("askfor.selectchief", GamePlayers[m].UID, r).ToString() //new XElement("askfor.selectchief", // new XElement("UID", GamePlayers[m].UID), // r) , false); //通知其他玩家主公正在选武将 AsynchronousCore.SendMessage( GamePlayers.All.Where(c => c.UID != GamePlayers[m].UID).ToArray(), new Beaver("askfor.selectchief", GamePlayers[m].UID).ToString() //new XElement("askfor.selectchief", // new XElement("UID", GamePlayers[m].UID)) , true); //设置表决字典,除了主公玩家置false,其他玩家置true foreach (Player p in GamePlayers.All) { if (GamePlayers[m] == p && !p.IsEscaped && !p.IsOffline) { Abstention.Add(p, false); } else { Abstention.Add(p, true); } } //等待问询结果 AsynchronousCore.AskForChief(Abstention); //主公没选择武将的话,随机配置一个 if (GamePlayers[m].Chief == null) { GamePlayers[m].Chief = mLst[GetRandom(mLst.Count)]; } //设置主公的一些属性 GamePlayers[m].Chief.ChiefStatus = ChiefBase.Status.Majesty; GamePlayers[m].Chief.playersObject = GamePlayers; GamePlayers[m].MaxHealth = GamePlayers[m].Chief.Health; GamePlayers[m].MaxHealth++; GamePlayers[m].Health = GamePlayers[m].MaxHealth; //通知玩家主公选择了谁 AsynchronousCore.SendMessage( new Beaver("selectchief", GamePlayers[m].UID, GamePlayers[m].Chief.ChiefName, GamePlayers[m].MaxHealth.ToString()).ToString()); //new XElement("selectchief", // new XElement("UID", GamePlayers[m].UID), // new XElement("chief_name", GamePlayers[m].Chief.ChiefName), // new XElement("max_health", GamePlayers[m].MaxHealth) // ) //); //heap中去除掉主公选择的武将并重新乱序排列 heap = ShuffleList <ChiefBase>(heap.Where(c => c != GamePlayers[m].Chief).ToList()); //其他玩家每人抽三个武将到自己的可选武将中 GamePlayers[l1].AvailableChiefs = heap.GetRange(0, 3).ToArray(); GamePlayers[s1].AvailableChiefs = heap.GetRange(3, 3).ToArray(); GamePlayers[i1].AvailableChiefs = heap.GetRange(6, 3).ToArray(); GamePlayers[i2].AvailableChiefs = heap.GetRange(9, 3).ToArray(); //重新设置表决字典,除了主公,其他人都置false Abstention = new Dictionary <Player, bool>(); foreach (Player p in GamePlayers.All) { if (GamePlayers[m] == p) { Abstention.Add(p, true); } else { Abstention.Add(p, false); } } //通知非主公玩家去选自己的武将 r = Chiefs2Beaver(l1); AsynchronousCore.SendMessage( new Player[] { GamePlayers[l1] }, new Beaver("askfor.selectchief", GamePlayers[l1].UID, r).ToString() //new XElement("askfor.selectchief", // new XElement("UID", GamePlayers[l1].UID), // r) , false); r = Chiefs2Beaver(s1); AsynchronousCore.SendMessage( new Player[] { GamePlayers[s1] }, new Beaver("askfor.selectchief", GamePlayers[s1].UID, r).ToString() //new XElement("askfor.selectchief", // new XElement("UID", GamePlayers[s1].UID), // new XElement("chiefs", // new XElement("chief", GamePlayers[s1].AvailableChiefs[0].ChiefName), // new XElement("chief", GamePlayers[s1].AvailableChiefs[1].ChiefName), // new XElement("chief", GamePlayers[s1].AvailableChiefs[2].ChiefName) // )) , false); r = Chiefs2Beaver(i1); AsynchronousCore.SendMessage( new Player[] { GamePlayers[i1] }, new Beaver("askfor.selectchief", GamePlayers[i1].UID, r).ToString() //new XElement("askfor.selectchief", // new XElement("UID", GamePlayers[i1].UID), // new XElement("chiefs", // new XElement("chief", GamePlayers[i1].AvailableChiefs[0].ChiefName), // new XElement("chief", GamePlayers[i1].AvailableChiefs[1].ChiefName), // new XElement("chief", GamePlayers[i1].AvailableChiefs[2].ChiefName) // )) , false); r = Chiefs2Beaver(i2); AsynchronousCore.SendMessage( new Player[] { GamePlayers[i2] }, new Beaver("askfor.selectchief", GamePlayers[i2].UID, r).ToString() //new XElement("askfor.selectchief", // new XElement("UID", GamePlayers[i2].UID), // new XElement("chiefs", // new XElement("chief", GamePlayers[i2].AvailableChiefs[0].ChiefName), // new XElement("chief", GamePlayers[i2].AvailableChiefs[1].ChiefName), // new XElement("chief", GamePlayers[i2].AvailableChiefs[2].ChiefName) // )) , false); //问询玩家选择武将 AsynchronousCore.AskForChief(Abstention); //针对非主公玩家配置数据 foreach (Player p in GamePlayers.All) { p.Score = 0; if (GamePlayers[m] == p) { continue; } if (p.Chief == null) { //没选武将随机配置一个 p.Chief = p.AvailableChiefs[GetRandom(p.AvailableChiefs.Count())]; } p.Chief.playersObject = GamePlayers; p.MaxHealth = p.Chief.Health; p.Health = p.MaxHealth; //通知所有玩家该玩家选择的武将 AsynchronousCore.SendMessage( new Beaver("selectchief", p.UID, p.Chief.ChiefName, p.MaxHealth).ToString() //new XElement("selectchief", // new XElement("UID", p.UID), // new XElement("chief_name", p.Chief.ChiefName), // new XElement("max_health", p.MaxHealth) // ) ); } ////开始分配武将的技能 //foreach (Player p in GamePlayers.All) //{ // //再发送出去 // p.Chief.ReportSkills(gData); //} //设置非主公武将的身份 GamePlayers[l1].Chief.ChiefStatus = Data.ChiefBase.Status.Loyalist; GamePlayers[s1].Chief.ChiefStatus = Data.ChiefBase.Status.Spy; GamePlayers[i1].Chief.ChiefStatus = Data.ChiefBase.Status.Insurgent; GamePlayers[i2].Chief.ChiefStatus = Data.ChiefBase.Status.Insurgent; //事件结束 AsynchronousCore.SendClearMessage(); return(true); case GameMode.EightSTD: case GameMode.EightJunZheng: //玩家人数不为8则不能执行 if (GamePlayers.All.Count() != 8) { return(false); } l = new List <int>(new int[] { 0, 1, 2, 3, 4, 5, 6, 7 }); l = ShuffleList <int>(l); m = l[0]; //主 l1 = l[1]; //忠 l2 = l[2]; //忠 s1 = l[3]; //内 i1 = l[4]; //反 i2 = l[5]; //反 i3 = l[6]; //反 i4 = l[7]; //反 //给所有玩家通知主公是谁 AsynchronousCore.SendMessage( new Beaver("ChiefStatus", ChiefBase.Status.Majesty.ToString(), GamePlayers[m].UID).ToString()); //new XElement("ChiefStatus", // new XElement("Status", ChiefBase.Status.Majesty), // new XElement("UID", GamePlayers[m].UID) // )); //其他玩家自己收到自己的身份 AsynchronousCore.SendMessage(new Player[] { GamePlayers[l1] }, new Beaver("ChiefStatus", ChiefBase.Status.Loyalist.ToString(), GamePlayers[l1].UID).ToString() //new XElement("ChiefStatus", // new XElement("Status", ChiefBase.Status.Loyalist), // new XElement("UID", GamePlayers[l1].UID)) , false); AsynchronousCore.SendMessage(new Player[] { GamePlayers[l2] }, new Beaver("ChiefStatus", ChiefBase.Status.Loyalist.ToString(), GamePlayers[l2].UID).ToString() //new XElement("ChiefStatus", // new XElement("Status", ChiefBase.Status.Loyalist), // new XElement("UID", GamePlayers[l2].UID)) , false); AsynchronousCore.SendMessage(new Player[] { GamePlayers[s1] }, new Beaver("ChiefStatus", ChiefBase.Status.Spy.ToString(), GamePlayers[s1].UID).ToString() //new XElement("ChiefStatus", // new XElement("Status", ChiefBase.Status.Spy), // new XElement("UID", GamePlayers[s1].UID)) , false); AsynchronousCore.SendMessage(new Player[] { GamePlayers[i1] }, new Beaver("ChiefStatus", ChiefBase.Status.Insurgent.ToString(), GamePlayers[i1].UID).ToString() //new XElement("ChiefStatus", // new XElement("Status", ChiefBase.Status.Insurgent), // new XElement("UID", GamePlayers[i1].UID)) , false); AsynchronousCore.SendMessage(new Player[] { GamePlayers[i2] }, new Beaver("ChiefStatus", ChiefBase.Status.Insurgent.ToString(), GamePlayers[i2].UID).ToString() //new XElement("ChiefStatus", // new XElement("Status", ChiefBase.Status.Insurgent), // new XElement("UID", GamePlayers[i2].UID)) , false); AsynchronousCore.SendMessage(new Player[] { GamePlayers[i3] }, new Beaver("ChiefStatus", ChiefBase.Status.Insurgent.ToString(), GamePlayers[i3].UID).ToString() //new XElement("ChiefStatus", // new XElement("Status", ChiefBase.Status.Insurgent), // new XElement("UID", GamePlayers[i3].UID)) , false); AsynchronousCore.SendMessage(new Player[] { GamePlayers[i4] }, new Beaver("ChiefStatus", ChiefBase.Status.Insurgent.ToString(), GamePlayers[i4].UID).ToString() //new XElement("ChiefStatus", // new XElement("Status", ChiefBase.Status.Insurgent), // new XElement("UID", GamePlayers[i4].UID)) , false); //设置主公可选的武将列表 GamePlayers[m].AvailableChiefs = mLst.ToArray(); //给主公私下发送的选将事件 AsynchronousCore.SendMessage( new Player[] { GamePlayers[m] }, new Beaver("askfor.selectchief", GamePlayers[m].UID, r).ToString() //new XElement("askfor.selectchief", // new XElement("UID", GamePlayers[m].UID), // r) , false); //给所有非主公玩家通知主公在选将 AsynchronousCore.SendMessage( GamePlayers.All.Where(c => c.UID != GamePlayers[m].UID).ToArray(), new Beaver("askfor.selectchief", GamePlayers[m].UID).ToString() //new XElement("askfor.selectchief", // new XElement("UID", GamePlayers[m].UID)) , true); //设置表决字典,让主公玩家未表决 Abstention = new Dictionary <Player, bool>(); foreach (Player p in GamePlayers.All) { if (GamePlayers[m] == p) { Abstention.Add(p, false); } else { Abstention.Add(p, true); } } //开始问询 AsynchronousCore.AskForChief(Abstention); //没有选将设置随机选择武将 if (GamePlayers[m].Chief == null) { GamePlayers[m].Chief = mLst[GetRandom(mLst.Count)]; } //设置主公玩家的一些属性 GamePlayers[m].Chief.ChiefStatus = ChiefBase.Status.Majesty; GamePlayers[m].Chief.playersObject = GamePlayers; GamePlayers[m].MaxHealth = GamePlayers[m].Chief.Health; GamePlayers[m].MaxHealth++; GamePlayers[m].Health = GamePlayers[m].MaxHealth; //通知玩家主公选择了什么以及血量 AsynchronousCore.SendMessage( new Beaver("selectchief", GamePlayers[m].UID, GamePlayers[m].Chief.ChiefName, GamePlayers[m].MaxHealth.ToString()).ToString()); //new XElement("selectchief", // new XElement("UID", GamePlayers[m].UID), // new XElement("chief_name", GamePlayers[m].Chief.ChiefName), // new XElement("max_health", GamePlayers[m].MaxHealth) // ) //); //武将堆排除掉主公选择的武将之后重新排序 heap = ShuffleList <ChiefBase>(heap.Where(c => c != GamePlayers[m].Chief).ToList()); //其他玩家从heap抽3个武将作为可选武将 GamePlayers[l1].AvailableChiefs = heap.GetRange(0, 3).ToArray(); GamePlayers[l2].AvailableChiefs = heap.GetRange(3, 3).ToArray(); GamePlayers[s1].AvailableChiefs = heap.GetRange(6, 3).ToArray(); GamePlayers[i1].AvailableChiefs = heap.GetRange(9, 3).ToArray(); GamePlayers[i2].AvailableChiefs = heap.GetRange(12, 3).ToArray(); GamePlayers[i3].AvailableChiefs = heap.GetRange(15, 3).ToArray(); GamePlayers[i4].AvailableChiefs = heap.GetRange(18, 3).ToArray(); //设置表决字典,让非主公玩家选将 Abstention = new Dictionary <Player, bool>(); foreach (Player p in GamePlayers.All) { if (GamePlayers[m] == p) { Abstention.Add(p, true); } else { Abstention.Add(p, false); } } AsynchronousCore.SendMessage( new Beaver("askfor.selectchief").ToString()); //new XElement("askfor.selectchief") //); r = Chiefs2Beaver(l1); AsynchronousCore.SendMessage( new Player[] { GamePlayers[l1] }, new Beaver("askfor.selectchief", GamePlayers[l1].UID, r).ToString() //new XElement("askfor.selectchief", // new XElement("UID", GamePlayers[l1].UID), // r) , false); r = Chiefs2Beaver(l2); AsynchronousCore.SendMessage( new Player[] { GamePlayers[l2] }, new Beaver("askfor.selectchief", GamePlayers[l2].UID, r).ToString() //new XElement("askfor.selectchief", // new XElement("UID", GamePlayers[l2].UID), // r) , false); r = Chiefs2Beaver(s1); AsynchronousCore.SendMessage( new Player[] { GamePlayers[s1] }, new Beaver("askfor.selectchief", GamePlayers[s1].UID, r).ToString() //new XElement("askfor.selectchief", // new XElement("UID", GamePlayers[s1].UID), // r) , false); r = Chiefs2Beaver(i1); AsynchronousCore.SendMessage( new Player[] { GamePlayers[i1] }, new Beaver("askfor.selectchief", GamePlayers[i1].UID, r).ToString() //new XElement("askfor.selectchief", // new XElement("UID", GamePlayers[i1].UID), // r) , false); r = Chiefs2Beaver(i2); AsynchronousCore.SendMessage( new Player[] { GamePlayers[i2] }, new Beaver("askfor.selectchief", GamePlayers[i2].UID, r).ToString() //new XElement("askfor.selectchief", // new XElement("UID", GamePlayers[i2].UID), // r) , false); r = Chiefs2Beaver(i3); AsynchronousCore.SendMessage( new Player[] { GamePlayers[i3] }, new Beaver("askfor.selectchief", GamePlayers[i3].UID, r).ToString() //new XElement("askfor.selectchief", // new XElement("UID", GamePlayers[i3].UID), // r) , false); r = Chiefs2Beaver(i4); AsynchronousCore.SendMessage( new Player[] { GamePlayers[i4] }, new Beaver("askfor.selectchief", GamePlayers[i4].UID, r).ToString() //new XElement("askfor.selectchief", // new XElement("UID", GamePlayers[i4].UID), // r) , false); AsynchronousCore.AskForChief(Abstention); foreach (Player p in GamePlayers.All) { p.Score = 0; if (GamePlayers[m] == p) { continue; } if (p.Chief == null) { p.Chief = p.AvailableChiefs[GetRandom(p.AvailableChiefs.Count())]; } p.Chief.playersObject = GamePlayers; p.MaxHealth = p.Chief.Health; p.Health = p.MaxHealth; p.Dead = false; AsynchronousCore.SendMessage( new Beaver("selectchief", p.UID, p.Chief.ChiefName, p.MaxHealth.ToString()).ToString()); //new XElement("selectchief", // new XElement("UID", p.UID), // new XElement("chief_name", p.Chief.ChiefName), // new XElement("max_health", p.MaxHealth) // ) //); } ////开始分配武将的技能 //foreach (Player p in GamePlayers.All) //{ // //再发送出去 // p.Chief.ReportSkills(gData); //} GamePlayers[l1].Chief.ChiefStatus = Data.ChiefBase.Status.Loyalist; GamePlayers[l2].Chief.ChiefStatus = ChiefBase.Status.Loyalist; GamePlayers[s1].Chief.ChiefStatus = Data.ChiefBase.Status.Spy; GamePlayers[i1].Chief.ChiefStatus = Data.ChiefBase.Status.Insurgent; GamePlayers[i2].Chief.ChiefStatus = Data.ChiefBase.Status.Insurgent; GamePlayers[i3].Chief.ChiefStatus = Data.ChiefBase.Status.Insurgent; GamePlayers[i4].Chief.ChiefStatus = Data.ChiefBase.Status.Insurgent; AsynchronousCore.SendClearMessage(); return(true); } return(false); }
/// <summary>弃牌问询,注意该方法仅用于弃牌阶段 /// </summary> /// <param name="aChief">需要弃牌的武将</param> /// <returns>返回true表示弃牌正常</returns> private bool Abandonment(ChiefBase aChief) { bool first = true; //确定玩家弃牌的要求是否达到 while (GamePlayers[aChief].Hands.Count > (GamePlayers[aChief].Health < 0 ? 0 : GamePlayers[aChief].Health)) { //问询武将出牌 string msg = new Beaver("askfor.abandonment", aChief.ChiefName).ToString(); //new XElement("askfor.abandonment", // new XElement("target", aChief.ChiefName) //); MessageCore.AskForResult res = null; if (first) { first = false; //弃牌问询 res = AsynchronousCore.AskForCards(aChief, MessageCore.AskForEnum.Abandonment, new AskForWrapper(msg, this), gData); } else { //弃牌问询 res = AsynchronousCore.AskForCards(aChief, MessageCore.AskForEnum.AbandonmentNext, new AskForWrapper(msg, this), gData); } if (res.TimeOut || res.Cards.Count() == 0) { res = new MessageCore.AskForResult(false, aChief, new ChiefBase[0], AutoAbandonment(aChief), Card.Effect.None, false, true, string.Empty); } //是否超过弃牌数 if (GamePlayers[aChief].Hands.Count - res.Cards.Count() < (GamePlayers[aChief].Health < 0 ? 0 : GamePlayers[aChief].Health)) { //超过了,不合法,自动选择 Card[] cards = AutoAbandonment(aChief); if (!RemoveHand(aChief, cards)) { return(false); } CardsHeap.AddCards(cards); AsynchronousCore.SendMessage(new Beaver("abandonment", aChief.ChiefName, GamePlayers[aChief].Hands.Count.ToString(), Card.Cards2Beaver("cards", res.Cards)).ToString()); //new XElement("abandonment", // new XElement("target", aChief.ChiefName), // new XElement("count", GamePlayers[aChief].Hands.Count), // Card.Cards2XML("cards", res.Cards) //)); } else { if (!RemoveHand(aChief, res.Cards)) { return(false); } //EventNode(true, CardFrom.Hand, res.Cards, Card.Effect.None, aChief, null, null); CardsHeap.AddCards(res.Cards); AsynchronousCore.SendMessage( new Beaver("abandonment", aChief.ChiefName, GamePlayers[aChief].Hands.Count, Card.Cards2Beaver("cards", res.Cards)).ToString()); //new XElement("abandonment", // new XElement("target", aChief.ChiefName), // new XElement("count", GamePlayers[aChief].Hands.Count), // Card.Cards2XML("cards", res.Cards) //)); } //若牌数满足上限,弃牌完成 if (GamePlayers[aChief].Hands.Count == GamePlayers[aChief].Health) { return(true); } } //牌数小于限制,跳过弃牌 return(true); }
private static void SeedDb() { using var context = new AnimalContext(); context.SavedChanges += (sender, args) => { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine( $"Saved {args.EntitiesSavedCount} changes for {((DbContext) sender)?.Database.GetConnectionString()}"); Console.ForegroundColor = ConsoleColor.White; }; context.Database.EnsureDeleted(); context.Database.EnsureCreated(); #region Seed TPT (Animal) var beaver1 = new Beaver { Name = "SomeBeavers1", Age = 27, Fluffiness = FluffinessEnum.VeryFluffy, Size = 15, IpAddress = IPAddress.Parse("127.0.0.1") }; var beaver2 = new Beaver { Name = "SomeBeavers2", Age = 26, Fluffiness = FluffinessEnum.Fluffy, Size = 14, IpAddress = IPAddress.Parse("127.0.0.1") }; var beaver3 = new Beaver { Name = "SomeBeavers3", Age = 25, Fluffiness = FluffinessEnum.NotFluffy, Size = 13, IpAddress = IPAddress.Parse("127.0.0.1") }; var beaver4 = new Beaver { Name = "SomeBeavers4", Age = 24, Fluffiness = FluffinessEnum.Fluffy, Size = 12, IpAddress = IPAddress.Parse("127.0.0.1") }; var beaver5 = new Beaver { Name = "SomeBeavers5", Age = 23, Fluffiness = FluffinessEnum.VeryFluffy, Size = 11, IpAddress = IPAddress.Parse("127.0.0.1") }; var crow1 = new Crow { Name = "Crowly", Age = 5, Color = "black", Size = 1, IpAddress = IPAddress.Parse("127.0.0.1") }; var crow2 = new Crow { Name = "Crowly1", Age = 5, Color = "black", Size = 1, IpAddress = IPAddress.Parse("127.0.0.1") }; var crow3 = new Crow { Name = "Crowly2", Age = 22, Color = "black", Size = 4, IpAddress = IPAddress.Parse("127.0.0.1") }; var crow4 = new Crow { Name = "Crowly3", Age = 50, Color = "white", Size = 10, IpAddress = IPAddress.Parse("127.0.0.1") }; var crow5 = new Crow { Name = "Crowly4", Age = 5, Color = "pink", Size = 1, IpAddress = IPAddress.Parse("127.0.0.1") }; var deer1 = new Deer { Name = "Dasher", Age = 1, Horns = true, IpAddress = IPAddress.Parse("127.0.0.1") }; var deer2 = new Deer { Name = "Dancer", Age = 2, Horns = true, IpAddress = IPAddress.Parse("127.0.0.1") }; var deer3 = new Deer { Name = "Prancer", Age = 1, Horns = false, IpAddress = IPAddress.Parse("127.0.0.1") }; var deer4 = new Deer { Name = "Vixen", Age = 1, Horns = true, IpAddress = IPAddress.Parse("127.0.0.1") }; var deer5 = new Deer { Name = "Comet", Age = 1, Horns = true, IpAddress = IPAddress.Parse("127.0.0.1") }; var deer6 = new Deer { Name = "Cupid", Age = 1, Horns = false, IpAddress = IPAddress.Parse("127.0.0.1") }; var deer7 = new Deer { Name = "Donder ", Age = 1, Horns = true, IpAddress = IPAddress.Parse("127.0.0.1") }; var deer8 = new Deer { Name = "Blitzen", Age = 1, Horns = true, IpAddress = IPAddress.Parse("127.0.0.1") }; context.Beavers.Add(beaver1); context.Beavers.Add(beaver2); context.Beavers.Add(beaver3); context.Beavers.Add(beaver4); context.Beavers.Add(beaver5); context.Crows.Add(crow1); context.Crows.Add(crow2); context.Crows.Add(crow3); context.Crows.Add(crow4); context.Crows.Add(crow5); context.Deers.Add(deer1); context.Deers.Add(deer2); context.Deers.Add(deer3); context.Deers.Add(deer4); context.Deers.Add(deer5); context.Deers.Add(deer6); context.Deers.Add(deer7); context.Deers.Add(deer8); #endregion #region Seed Many-to-many (Club) var club1 = new Club { Title = "TreesWorshipers", Animals = new List <Animal> { beaver1, beaver2, beaver3, beaver4, beaver5, crow4 }, Locations = new List <Location> { new() { Address = "North America" }, new() { Address = "Canada" }, new() { Address = "Russia" } } }; var club2 = new Club { Title = "CornLovers", Animals = new List <Animal> { crow1, crow2, crow3, crow4, crow5 }, Locations = new List <Location> { new() { Address = "Westeros" } } }; var club3 = new Club { Title = "ChristmasTeam", Animals = new List <Animal> { beaver1, beaver2, beaver3, beaver4, beaver5, crow1, crow2, crow3, crow4, crow5, deer1, deer2, deer3, deer4, deer5, deer6, deer7, deer8 }, Locations = new List <Location> { new() { Address = "North Pole" } } }; context.Clubs.Add(club1); context.Clubs.Add(club2); context.Clubs.Add(club3); #endregion #region Seed Grades var grade1 = new Grade { TheGrade = 5, Club = club1, Animal = beaver1 }; var grade2 = new Grade { TheGrade = 4, Club = club1, Animal = beaver2 }; var grade3 = new Grade { TheGrade = 3, Club = club1, Animal = beaver3 }; var grade4 = new Grade { TheGrade = 3, Club = club1, Animal = beaver4 }; var grade5 = new Grade { TheGrade = 2, Club = club1, Animal = beaver5 }; var grade6 = new Grade { TheGrade = 1, Club = club1, Animal = crow4 }; var grade7 = new Grade { TheGrade = 5, Club = club2, Animal = crow1 }; var grade8 = new Grade { TheGrade = 4.5, Club = club2, Animal = crow2 }; var grade9 = new Grade { TheGrade = 2.1, Club = club2, Animal = crow3 }; var grade10 = new Grade { TheGrade = 4.3, Club = club2, Animal = crow4 }; var grade27 = new Grade { TheGrade = 4.5, Club = club3, Animal = beaver1 }; var grade26 = new Grade { TheGrade = 4.5, Club = club3, Animal = beaver2 }; var grade25 = new Grade { TheGrade = 4.5, Club = club3, Animal = beaver3 }; var grade24 = new Grade { TheGrade = 4.5, Club = club3, Animal = beaver4 }; var grade23 = new Grade { TheGrade = 4.5, Club = club3, Animal = beaver5 }; var grade22 = new Grade { TheGrade = 4.5, Club = club3, Animal = crow1 }; var grade21 = new Grade { TheGrade = 3.5, Club = club3, Animal = crow2 }; var grade20 = new Grade { TheGrade = 2.5, Club = club3, Animal = crow3 }; var grade19 = new Grade { TheGrade = 1.5, Club = club3, Animal = crow4 }; var grade28 = new Grade { TheGrade = 4.9, Club = club3, Animal = crow5 }; var grade11 = new Grade { TheGrade = 4.8, Club = club3, Animal = deer1 }; var grade12 = new Grade { TheGrade = 4.7, Club = club3, Animal = deer2 }; var grade13 = new Grade { TheGrade = 4.6, Club = club3, Animal = deer3 }; var grade14 = new Grade { TheGrade = 4.5, Club = club3, Animal = deer4 }; var grade15 = new Grade { TheGrade = 4.4, Club = club3, Animal = deer5 }; var grade16 = new Grade { TheGrade = 4.3, Club = club3, Animal = deer6 }; var grade17 = new Grade { TheGrade = 4.2, Club = club3, Animal = deer7 }; var grade18 = new Grade { TheGrade = 4.1, Club = club3, Animal = deer8 }; context.Grades.Add(grade1); context.Grades.Add(grade2); context.Grades.Add(grade3); context.Grades.Add(grade4); context.Grades.Add(grade5); context.Grades.Add(grade6); context.Grades.Add(grade7); context.Grades.Add(grade8); context.Grades.Add(grade9); context.Grades.Add(grade10); context.Grades.Add(grade11); context.Grades.Add(grade12); context.Grades.Add(grade13); context.Grades.Add(grade14); context.Grades.Add(grade15); context.Grades.Add(grade16); context.Grades.Add(grade17); context.Grades.Add(grade18); context.Grades.Add(grade19); context.Grades.Add(grade20); context.Grades.Add(grade21); context.Grades.Add(grade22); context.Grades.Add(grade23); context.Grades.Add(grade24); context.Grades.Add(grade25); context.Grades.Add(grade26); context.Grades.Add(grade27); context.Grades.Add(grade28); #endregion #region Seed Jobs var job1 = new Job { Title = "Builder", Salary = 1, Animals = new List <Animal> { beaver1, beaver2, beaver3, beaver4, beaver5 } }; var job2 = new Job { Title = "Messenger", Salary = 10, Animals = new List <Animal> { crow1, crow2, crow3, crow4 } }; var job3 = new Job { Title = "Delivery", Salary = 100, Animals = new List <Animal> { deer1, deer2, deer3, deer4, deer5, deer6, deer7, deer8 } }; context.Jobs.Add(job1); context.Jobs.Add(job2); context.Jobs.Add(job3); #endregion #region Seed TPH (Food) var food1 = new NormalFood { Title = "Elm", Animal = beaver1, Taste = Taste.Normal }; var food2 = new VeganFood { Title = "Daphne laureola", Animal = beaver2, Calories = 100 }; var food3 = new VeganFood { Title = "Carpinus betulus", Animal = beaver3, Calories = 1001 }; var food4 = new VeganFood { Title = "Hornbeam", Animal = beaver4, Calories = 101 }; var food5 = new NormalFood { Title = "Pizza", Animal = beaver5, Taste = Taste.Excellent }; var food6 = new NormalFood { Title = "Steak", Animal = crow1, Taste = Taste.Excellent }; var food7 = new NormalFood { Title = "Meat", Animal = crow2, Taste = Taste.Good }; var food8 = new NormalFood { Title = "Pizza", Animal = crow3, Taste = Taste.VeryGood }; var food9 = new VeganFood { Title = "Corn", Animal = crow4, Calories = 1 }; var food10 = new NormalFood { Title = "Pizza", Animal = crow5, Taste = Taste.Normal }; var food11 = new VeganFood { Title = "Pizza", Animal = deer1, Calories = 10 }; var food12 = new VeganFood { Title = "Pizza", Animal = deer2, Calories = 10 }; var food13 = new VeganFood { Title = "Pizza", Animal = deer3, Calories = 10 }; var food14 = new VeganFood { Title = "Pizza", Animal = deer4, Calories = 10 }; var food15 = new VeganFood { Title = "Pizza", Animal = deer5, Calories = 10 }; var food16 = new VeganFood { Title = "Pizza", Animal = deer6, Calories = 10 }; var food17 = new NormalFood { Title = "Elves", Animal = deer7, Taste = Taste.Excellent }; var food18 = new VeganFood { Title = "Pizza", Animal = deer8, Calories = 10 }; context.Food.Add(food1); context.Food.Add(food2); context.Food.Add(food3); context.Food.Add(food4); context.Food.Add(food5); context.Food.Add(food6); context.Food.Add(food7); context.Food.Add(food8); context.Food.Add(food9); context.Food.Add(food10); context.Food.Add(food11); context.Food.Add(food12); context.Food.Add(food13); context.Food.Add(food14); context.Food.Add(food15); context.Food.Add(food16); context.Food.Add(food17); context.Food.Add(food18); #endregion #region Seed Many-to-many old style (Drawback) var drawback1 = new Drawback { Title = "Crowdy", Foods = new List <Food> { food1, food2, food3, food4, /*food5,*/ food6, food7, food8, food9, food10, food11, food12, food13, food14, food15, food16, food17, food18 }, Clubs = new List <Club> { club1, club2, club3 }, Consequence = new Consequence { Name = "Nervousness" } }; var drawback2 = new Drawback { Title = "Windy", Foods = new List <Food> { food1, food2, food3, food4, food5, food6, food7, food8, food9, food10, food11, food12, food13, food14, food15, food16, food17, food18 }, Clubs = new List <Club> { club1, club2, club3 }, Consequence = new Consequence { Name = "Teleportation to Land of Oz" } }; var drawback3 = new Drawback { Title = "Soggy", Foods = new List <Food> { food1, food2, food3, food4, food5, food6, food7, food8, food9, food10, food11, food12, food13, food14, food15, food16, food17, food18 }, Clubs = new List <Club> { club1, club2, club3 }, Consequence = new Consequence { Name = "Wet clothes" } }; var drawback4 = new Drawback { Title = "Hardy", Foods = new List <Food> { food1, food2, food3, food4, food5, food6, food7, food8, food9, food10, food11, food12, food13, food14, food15, food16, food17, food18 }, Clubs = new List <Club> { club1, club2, club3 }, Consequence = new Consequence { Name = "Sadness" } }; context.Drawbacks.Add(drawback1); context.Drawbacks.Add(drawback2); context.Drawbacks.Add(drawback3); context.Drawbacks.Add(drawback4); var jobDrawback1 = new JobDrawback { Job = job1, Drawback = drawback1 }; var jobDrawback2 = new JobDrawback { Job = job1, Drawback = drawback2 }; var jobDrawback3 = new JobDrawback { Job = job1, Drawback = drawback3 }; var jobDrawback4 = new JobDrawback { Job = job1, Drawback = drawback4 }; var jobDrawback5 = new JobDrawback { Job = job2, Drawback = drawback1 }; var jobDrawback6 = new JobDrawback { Job = job2, Drawback = drawback2 }; var jobDrawback7 = new JobDrawback { Job = job3, Drawback = drawback1 }; var jobDrawback8 = new JobDrawback { Job = job3, Drawback = drawback2 }; context.JobDrawbacks.Add(jobDrawback1); context.JobDrawbacks.Add(jobDrawback2); context.JobDrawbacks.Add(jobDrawback3); context.JobDrawbacks.Add(jobDrawback4); context.JobDrawbacks.Add(jobDrawback5); context.JobDrawbacks.Add(jobDrawback6); context.JobDrawbacks.Add(jobDrawback7); context.JobDrawbacks.Add(jobDrawback8); #endregion context.SaveChanges(); #region Seed Property Bags (Category, Product) var category1 = new Dictionary <string, object> { ["Name"] = "Beverages", ["FoodId"] = food1.Id }; context.Categories.Add(category1); context.SaveChanges(); var product1 = new Dictionary <string, object> { ["Name"] = "Product1", ["CategoryId"] = context.Categories.First()["Id"] }; context.Products.Add(product1); #endregion #region Seed Persons var person1 = new Person { Name = "BeaverPerson", AnimalsLoved = new List <Animal> { beaver1, beaver2, beaver3, beaver4, beaver5 }, AnimalsHated = new List <Animal> { deer1, deer2, deer3, deer4, deer5, deer6, deer7, deer8 } }; context.Persons.Add(person1); #endregion #region Seed Elves var elf1 = new Elf { Name = "Alabaster Snowball", Deer = deer1 }; var elf2 = new Elf { Name = "Bushy Evergreen", Deer = deer1 }; var elf3 = new Elf { Name = "Pepper Minstix", Deer = deer2 }; var elf4 = new Elf { Name = "Shinny Upatree", Deer = deer3 }; var elf5 = new Elf { Name = "Sugarplum Mary", Deer = deer4 }; var elf6 = new Elf { Name = "Wunorse Openslae", Deer = deer5 }; var elf7 = new Elf { Name = "Grinch", Deer = deer6 }; var elf8 = new Elf { Name = "Legolas", Deer = deer7 }; var elf9 = new Elf { Name = "Iorveth", Deer = deer8 }; context.Elves.Add(elf1); context.Elves.Add(elf2); context.Elves.Add(elf3); context.Elves.Add(elf4); context.Elves.Add(elf5); context.Elves.Add(elf6); context.Elves.Add(elf7); context.Elves.Add(elf8); context.Elves.Add(elf9); #endregion #region Seed AdditionaInfos var additionalInfo1 = new AdditionalInfo() { Clubs = new List <Club>() { club1, club2, club3 }, Comment = "Best club ever" }; var additionalInfo2 = new AdditionalInfo() { Clubs = new List <Club>() { club1, club2 }, Comment = "Evolution club" }; var additionalInfo3 = new AdditionalInfo() { Clubs = new List <Club>() { club1 }, Comment = "Original club" }; context.AdditionalInfos.Add(additionalInfo1); context.AdditionalInfos.Add(additionalInfo2); context.AdditionalInfos.Add(additionalInfo3); #endregion context.SaveChanges(); context.Database.ExecuteSqlRaw(File.ReadAllText(".\\BD\\CreateTVF.sql")); }
/// <summary> /// 决斗的执行过程 /// </summary> /// <param name="r">子事件起始节点</param> /// <returns></returns> internal EventRecoard JueDouProc(EventRecoard r) { string msg = null; if (r.Target2 != null) { r.Source = r.Target; r.Target = r.Target2; } //玩家双方都不能死亡 if (!GamePlayers[r.Target].Dead && !GamePlayers[r.Source].Dead) { if (r.Target2 == null) { //无懈可击的过程 if (WuXieProc(r.Target, Card.Effect.JueDou)) { return(r); } } while (true) { int times = 1; foreach (ASkill s in r.Source.Skills) { times = s.CalcAskforTimes(r.Source, r.Target, Card.Effect.JueDou, times, gData); } for (int i = 0; i < times; i++) { //先询问对方要出杀 MessageCore.AskForResult res = null; msg = new Beaver("askfor.jd.sha", r.Target.ChiefName, r.Source.ChiefName).ToString(); //new XElement("askfor.jd.sha", //new XElement("target", r.Target.ChiefName), //new XElement("opponent", r.Source.ChiefName) //); res = AsynchronousCore.AskForCards(r.Target, MessageCore.AskForEnum.Sha, new AskForWrapper(msg, this), gData); ValidityResult(r.Target, ref res); if (res.Effect != Card.Effect.Sha) { //不出杀费血 sbyte cost = 1; foreach (ASkill s in r.Source.Skills) { cost = s.CalcDamage(r.Source, Card.Effect.JueDou, cost, gData); } if (GamePlayers[r.Target].Armor != null) { cost = Armor.CalcDamage(cost, r.Cards, GamePlayers[r.Target].Armor.CardEffect); } DamageHealth(r.Target, cost, r.Source, r); return(r); } else { //出杀加入子事件节点 if (res.PlayerLead) { DropCards(true, CardFrom.Hand, res.SkillName, res.Cards, Card.Effect.Sha, res.Leader, r.Source, null); } foreach (ASkill s in res.Leader.Skills) { s.OnUseEffect(res.Leader, Card.Effect.Sha, gData); } AsynchronousCore.SendMessage( new Beaver("jd.sha", r.Target.ChiefName, r.Source.ChiefName, Card.Cards2Beaver("cards", res.Cards)).ToString()); //new XElement("jd.sha", // new XElement("target", r.Target.ChiefName), // new XElement("opponent", r.Source.ChiefName), // Card.Cards2XML("cards", res.Cards) //)); } } times = 1; foreach (ASkill s in r.Target.Skills) { times = s.CalcAskforTimes(r.Target, r.Source, Card.Effect.JueDou, times, gData); } for (int i = 0; i < times; i++) { msg = new Beaver("askfor.jd.sha", r.Source.ChiefName, r.Target.ChiefName).ToString(); //new XElement("askfor.jd.sha", //new XElement("target", r.Source.ChiefName), //new XElement("opponent", r.Target.ChiefName) //); //问询自己出杀 MessageCore.AskForResult res2 = AsynchronousCore.AskForCards(r.Source, MessageCore.AskForEnum.Sha, new AskForWrapper(msg, this), gData); ValidityResult(r.Source, ref res2); if (res2.Effect != Card.Effect.Sha) { //不出杀费血 sbyte cost = 1; foreach (ASkill s in r.Target.Skills) { cost = s.CalcDamage(r.Target, r.Effect, cost, gData); } if (GamePlayers[r.Source].Armor != null) { cost = Armor.CalcDamage(cost, r.Cards, GamePlayers[r.Source].Armor.CardEffect); } DamageHealth(r.Source, cost, r.Target, r); return(r); } else { //出杀加入子事件节点 if (res2.PlayerLead) { DropCards(true, CardFrom.Hand, res2.SkillName, res2.Cards, Card.Effect.Sha, res2.Leader, r.Target, null); } foreach (ASkill s in res2.Leader.Skills) { s.OnUseEffect(res2.Leader, Card.Effect.Sha, gData); } AsynchronousCore.SendMessage( new Beaver("jd.sha", r.Source.ChiefName, r.Target.ChiefName, Card.Cards2Beaver("cards", res2.Cards)).ToString()); //new XElement("jd.sha", // new XElement("target", r.Source.ChiefName), // new XElement("opponent", r.Target.ChiefName), // Card.Cards2XML("cards", res2.Cards) //)); } } } } return(r); }
/// <summary> /// 检查游戏中的牌信息,确定游戏中有哪些丢失的或者重复的牌 /// </summary> /// <param name="aGame">游戏对象</param> /// <returns>XML报告</returns> public string CardsChecker(SGS.ServerCore.Contest.Global.GameBase aGame) { List <Card> lst = new List <Card>(CardsHeap); lst.AddRange(CardsHeap2); ChiefBase s = aGame.GamePlayers[-1].Chief; if (s != null) { ChiefBase t = s; do { lst.AddRange(aGame.GamePlayers[t].Hands); if (aGame.GamePlayers[t].Armor != null) { lst.Add(aGame.GamePlayers[t].Armor); } if (aGame.GamePlayers[t].Weapon != null) { lst.Add(aGame.GamePlayers[t].Weapon); } if (aGame.GamePlayers[t].Jia1Ma != null) { lst.Add(aGame.GamePlayers[t].Jia1Ma); } if (aGame.GamePlayers[t].Jian1Ma != null) { lst.Add(aGame.GamePlayers[t].Jian1Ma); } lst.AddRange(aGame.GamePlayers[t].Debuff); t = t.Next; } while (t != s); } int[] Buff = new int[TotalCards + 1]; foreach (Card c in lst) { Buff[c.ID]++; } Beaver lost = new Beaver(); Beaver excess = new Beaver(); bool normal = true; for (int i = 1; i <= TotalCards; i++) { if (Buff[i] > 1) { excess.Add(string.Empty, new Beaver(string.Empty, i, Buff[i] - 1)); normal = false; } //new XElement("card", // new XElement("id", i), // new XElement("excess_count", Buff[i] - 1) //)); else if (Buff[i] == 0) { lost.Add(string.Empty, i); normal = false; } //new XElement("card" , // new XElement("id" , i) // ) //); } if (!normal) { return(new Beaver("cardschecker.wrong_total", lost, excess).ToString()); } return(new Beaver("cardschecker").ToString()); }
/// <summary> /// 产生所有玩家状态的XML消息 /// </summary> /// <param name="aChief">产生信息的武将对象,对于请求公共信息,这里使用null</param> /// <returns>XML消息</returns> internal string MakeEnvironmentXMLReport(ChiefBase aChief) { Beaver env = new Beaver(); Beaver players = new Beaver(); Beaver chain = new Beaver(); Beaver hands = null; foreach (Player p in GB.GamePlayers.All) { hands = new Beaver("hands"); Beaver debuffs = new Beaver(); Beaver skills = new Beaver(); foreach (Card c in p.Debuff) { debuffs.Add(string.Empty, new Beaver(c.CardEffect.ToString(), c.ID)); } //new XElement("effect", c.CardEffect), //new XElement("card", c.ID) //)); debuffs.SetHeaderElementName("debuffs"); if (p.Chief != null) { foreach (SkillBase s in p.Chief.Skills) { skills.Add(string.Empty, new Beaver(string.Empty, s.SkillName, s.SkillStatus.ToString())); // new XElement("skill", new XElement("name", s.SkillName), new XElement("status", s.SkillStatus))); } if (p.Chief == aChief) { lock (GB.AsynchronousCore.MessageLocker) { foreach (string item in GB.EventChain) { chain.Add(item); } } hands = MakeHandMessage(p); } skills.SetHeaderElementName("skills"); } if (p.Chief != null && p.Chief == aChief) { Beaver player = new Beaver(); player.Add(string.Empty, p.UID, p.PlayerName, p.Dead.ToString(), p.MaxHealth.ToString(), p.Health.ToString()); player.Add(string.Empty, hands, debuffs, skills, p.Chief == null ? string.Empty : p.Chief.ChiefName, p.Chief != null && p.Chief.ChiefStatus == ChiefBase.Status.Majesty ? ChiefBase.Status.Majesty.ToString() : p.Chief != null && p.Dead ? p.Chief.ChiefStatus.ToString() : ChiefBase.Status.Unknown.ToString()); if (p.Weapon != null) { player.Add("weapon", p.Weapon.ID); } if (p.Armor != null) { player.Add("armor", p.Armor.ID); } if (p.Jia1Ma != null) { player.Add("jia1", p.Jia1Ma.ID); } if (p.Jian1Ma != null) { player.Add("jian1", p.Jian1Ma.ID); } players.Add(string.Empty, player); //new XElement("player", // new XElement("UID", p.UID), // new XElement("name", p.PlayerName), // new XElement("dead", p.Dead), // new XElement("max_health", p.MaxHealth), // new XElement("health", p.Health), // p.Weapon == null ? new XElement("weapon") :new XElement("weapon", p.Weapon.ID), // p.Armor == null ?new XElement("armor") :new XElement("armor" , p.Armor.ID), // p.Jia1Ma == null ? new XElement("jia1"):new XElement("jia1",p.Jia1Ma.ID), // p.Jian1Ma == null ? new XElement("jian1") : new XElement("jian1", p.Jian1Ma.ID), // hands, // debuffs, // new XElement("chief_name", p.Chief == null ? string.Empty : p.Chief.ChiefName), // new XElement("status", p.Chief != null && p.Chief.ChiefStatus == ChiefBase.Status.Majesty ? ChiefBase.Status.Majesty : p.Chief != null && p.Dead ? p.Chief.ChiefStatus : ChiefBase.Status.Unknown), // skills //)); } else { Beaver player = new Beaver(); player.Add(string.Empty, p.UID, p.PlayerName, p.Dead.ToString(), p.MaxHealth.ToString(), p.Health.ToString()); player.Add(string.Empty, p.Hands.Count, debuffs, skills, p.Chief == null ? string.Empty : p.Chief.ChiefName, p.Chief != null && p.Chief.ChiefStatus == ChiefBase.Status.Majesty ? ChiefBase.Status.Majesty.ToString() : p.Chief != null && p.Dead ? p.Chief.ChiefStatus.ToString() : ChiefBase.Status.Unknown.ToString()); if (p.Weapon != null) { player.Add("weapon", p.Weapon.ID); } if (p.Armor != null) { player.Add("armor", p.Armor.ID); } if (p.Jia1Ma != null) { player.Add("jia1", p.Jia1Ma.ID); } if (p.Jian1Ma != null) { player.Add("jian1", p.Jian1Ma.ID); } players.Add(string.Empty, player); //players.Add( // new XElement("player", // new XElement("UID", p.UID), // new XElement("name", p.PlayerName), // new XElement("dead", p.Dead), // new XElement("max_health", p.MaxHealth), // new XElement("health", p.Health), // p.Weapon == null ? new XElement("weapon") : new XElement("weapon", p.Weapon.ID), // p.Armor == null ? new XElement("armor") : new XElement("armor", p.Armor.ID), // p.Jia1Ma == null ? new XElement("jia1") : new XElement("jia1", p.Jia1Ma.ID), // p.Jian1Ma == null ? new XElement("jian1") : new XElement("jian1", p.Jian1Ma.ID), // new XElement("hands_count", p.Hands.Count), // debuffs, // new XElement("chief_name", p.Chief == null ? string.Empty : p.Chief.ChiefName), // new XElement("status", p.Chief != null && p.Chief.ChiefStatus == ChiefBase.Status.Majesty ? ChiefBase.Status.Majesty : p.Chief != null && p.Dead ? p.Chief.ChiefStatus : ChiefBase.Status.Unknown), // skills // )); } } if (aChief == null) { lock (GB.EventChainLocker) { foreach (string item in GB.EventChain) { chain.Add(string.Empty, item); } } } //env.Add(players); //env.Add(new XElement("latency", GB.WaittingData.Latency)); //env.Add(new XElement("mode", GB.Mode)); //env.Add(chain); //env.Add(new XElement("active" , GB.gData.Active == null ? string.Empty : GB.gData.Active.ChiefName)); //env.Add(new XElement("status" , GB.gData.ChiefStatus)); env.Add(string.Empty, players); env.Add("common", GB.WaittingData.Latency, GB.Mode.ToString(), chain, GB.gData.Active == null ? string.Empty : GB.gData.Active.ChiefName, GB.gData.ChiefStatus); env.SetHeaderElementName("environment"); return(env.ToString()); }
/// <summary> /// 角色求救过程 /// </summary> /// <param name="aChiefSource">伤害的来源,可以是null</param> /// <param name="aPreDefunct">求救武将</param> /// <param name="aRescuePoint">求救血量</param> /// <returns>返回true表示该角色求救失败,false表示求救成功</returns> private bool Cry4HelpProc(ChiefBase aChiefSource, ChiefBase aPreDefunct, sbyte aRescuePoint) { if (aPreDefunct == null || aRescuePoint < 1) { return(true); } ChiefBase start = aChiefSource != null ? aChiefSource : aPreDefunct; ChiefBase t = start; string msg = null; do { MessageCore.AskForResult res = null; if (t == aPreDefunct) { msg = new Beaver("askfor.cry4help.taoorjiu", t.ChiefName, aPreDefunct.ChiefName, aRescuePoint.ToString()).ToString(); //new XElement("askfor.cry4help.taoorjiu", // new XElement("target", t.ChiefName), // new XElement("target2", aPreDefunct.ChiefName), // new XElement("rescuepoint", aRescuePoint) //); res = AsynchronousCore.AskForCards(t, MessageCore.AskForEnum.AskForTaoOrJiu, new AskForWrapper(msg, this), gData); AsynchronousCore.LeadingValid(t); } else { msg = new Beaver("askfor.cry4help.tao", t.ChiefName, aPreDefunct.ChiefName, aRescuePoint.ToString()).ToString(); //new XElement("askfor.cry4help.tao", // new XElement("target", t.ChiefName), // new XElement("target2", aPreDefunct.ChiefName), // new XElement("rescuepoint", aRescuePoint) //); res = AsynchronousCore.AskForCards(t, MessageCore.AskForEnum.AskForTao, new AskForWrapper(msg, this), gData); AsynchronousCore.LeadingValid(t); } ValidityResult(t, ref res); if (res.Effect != Card.Effect.None) { if (res.Effect == Card.Effect.Tao) { AsynchronousCore.SendMessage( new Beaver("tao", t.ChiefName, aChiefSource.ChiefName, res.SkillName, Card.Cards2Beaver("cards", res.Cards)).ToString()); // new XElement("tao", // new XElement("from", t.ChiefName), // new XElement("to", aChiefSource.ChiefName), // new XElement("skill" , res.SkillName ), // Card.Cards2XML("cards", res.Cards) // ) //); } else if (res.Effect == Card.Effect.Jiu) { AsynchronousCore.SendMessage(new Beaver("jiu", t.ChiefName, res.SkillName, Card.Cards2Beaver("cards", res.Cards)).ToString()); //new XElement("jiu", // new XElement("from", t.ChiefName), // new XElement("skill", res.SkillName), // Card.Cards2XML("cards", res.Cards) //) //); } if (res.Effect == Card.Effect.Tao || res.Effect == Card.Effect.Jiu) { sbyte cost = 1; foreach (ASkill s in aPreDefunct.Skills) { cost = s.CalcRescuePoint(aPreDefunct, res.Leader, res.Effect, cost, gData); } aRescuePoint -= cost; if (res.PlayerLead) { DropCards(true, CardFrom.HandAndEquipage, res.SkillName, res.Cards, res.Effect, t, aPreDefunct, null); } if (aRescuePoint < 1) { break; } continue; } } t = GamePlayers.NextChief(t); } while (!t.IsMe(start)); --aRescuePoint; if (aRescuePoint < 0) { GamePlayers[aPreDefunct].Health = Math.Abs(aRescuePoint); AsynchronousCore.SendMessage(new Beaver("health", aPreDefunct.ChiefName, GamePlayers[aPreDefunct].MaxHealth.ToString(), GamePlayers[aPreDefunct].Health.ToString()).ToString()); //new XElement("health", // new XElement("target", aPreDefunct.ChiefName), // new XElement("max", GamePlayers[aPreDefunct].MaxHealth), // new XElement("current", GamePlayers[aPreDefunct].Health) // )); } else { GamePlayers[aPreDefunct].Health = 0; } return(aRescuePoint < 0 ? false : true); }
private static void SeedDb() { using var context = new AnimalContext(); context.Database.Delete(); context.Database.Create(); #region Seed TPT (Animal) var beaver1 = new Beaver { Name = "SomeBeavers1", Age = 27, Fluffiness = FluffinessEnum.VeryFluffy, Size = 15, IpAddress = "127.0.0.1" }; var beaver2 = new Beaver { Name = "SomeBeavers2", Age = 26, Fluffiness = FluffinessEnum.Fluffy, Size = 14, IpAddress = "127.0.0.1" }; var beaver3 = new Beaver { Name = "SomeBeavers3", Age = 25, Fluffiness = FluffinessEnum.NotFluffy, Size = 13, IpAddress = "127.0.0.1" }; var beaver4 = new Beaver { Name = "SomeBeavers4", Age = 24, Fluffiness = FluffinessEnum.Fluffy, Size = 12, IpAddress = "127.0.0.1" }; var beaver5 = new Beaver { Name = "SomeBeavers5", Age = 23, Fluffiness = FluffinessEnum.VeryFluffy, Size = 11, IpAddress = "127.0.0.1" }; var crow1 = new Crow { Name = "Crowly", Age = 5, Color = "black", Size = 1, IpAddress = "127.0.0.1" }; var crow2 = new Crow { Name = "Crowly1", Age = 5, Color = "black", Size = 1, IpAddress = "127.0.0.1" }; var crow3 = new Crow { Name = "Crowly2", Age = 22, Color = "black", Size = 4, IpAddress = "127.0.0.1" }; var crow4 = new Crow { Name = "Crowly3", Age = 50, Color = "white", Size = 10, IpAddress = "127.0.0.1" }; var crow5 = new Crow { Name = "Crowly4", Age = 5, Color = "pink", Size = 1, IpAddress = "127.0.0.1" }; var deer1 = new Deer { Name = "Dasher", Age = 1, Horns = true, IpAddress = "127.0.0.1" }; var deer2 = new Deer { Name = "Dancer", Age = 2, Horns = true, IpAddress = "127.0.0.1" }; var deer3 = new Deer { Name = "Prancer", Age = 1, Horns = false, IpAddress = "127.0.0.1" }; var deer4 = new Deer { Name = "Vixen", Age = 1, Horns = true, IpAddress = "127.0.0.1" }; var deer5 = new Deer { Name = "Comet", Age = 1, Horns = true, IpAddress = "127.0.0.1" }; var deer6 = new Deer { Name = "Cupid", Age = 1, Horns = false, IpAddress = "127.0.0.1" }; var deer7 = new Deer { Name = "Donder ", Age = 1, Horns = true, IpAddress = "127.0.0.1" }; var deer8 = new Deer { Name = "Blitzen", Age = 1, Horns = true, IpAddress = "127.0.0.1" }; context.Beavers.Add(beaver1); context.Beavers.Add(beaver2); context.Beavers.Add(beaver3); context.Beavers.Add(beaver4); context.Beavers.Add(beaver5); context.Crows.Add(crow1); context.Crows.Add(crow2); context.Crows.Add(crow3); context.Crows.Add(crow4); context.Crows.Add(crow5); context.Deers.Add(deer1); context.Deers.Add(deer2); context.Deers.Add(deer3); context.Deers.Add(deer4); context.Deers.Add(deer5); context.Deers.Add(deer6); context.Deers.Add(deer7); context.Deers.Add(deer8); #endregion #region Seed Many-to-many (Club) var club1 = new Club { Title = "TreesWorshipers", Animals = new List <Animal> { beaver1, beaver2, beaver3, beaver4, beaver5, crow4 }, Locations = new List <Location> { new() { Address = "North America", GeographicLocation = DbGeography.FromText("POINT(-122 47)") }, new() { Address = "Canada", GeographicLocation = DbGeography.FromText("POINT(122 40)") }, new() { Address = "Russia", GeographicLocation = DbGeography.FromText("POINT(1 1)") } } }; var club2 = new Club { Title = "CornLovers", Animals = new List <Animal> { crow1, crow2, crow3, crow4, crow5 }, Locations = new List <Location> { new() { Address = "Westeros", GeographicLocation = DbGeography.FromText("POINT(00 00)") } } }; var club3 = new Club { Title = "ChristmasTeam", Animals = new List <Animal> { beaver1, beaver2, beaver3, beaver4, beaver5, crow1, crow2, crow3, crow4, crow5, deer1, deer2, deer3, deer4, deer5, deer6, deer7, deer8 }, Locations = new List <Location> { new() { Address = "North Pole", GeographicLocation = DbGeography.FromText("POINT(9 9)") } } }; context.Clubs.Add(club1); context.Clubs.Add(club2); context.Clubs.Add(club3); #endregion #region Seed Grades var grade1 = new Grade { TheGrade = 5, Club = club1, Animal = beaver1 }; var grade2 = new Grade { TheGrade = 4, Club = club1, Animal = beaver2 }; var grade3 = new Grade { TheGrade = 3, Club = club1, Animal = beaver3 }; var grade4 = new Grade { TheGrade = 3, Club = club1, Animal = beaver4 }; var grade5 = new Grade { TheGrade = 2, Club = club1, Animal = beaver5 }; var grade6 = new Grade { TheGrade = 1, Club = club1, Animal = crow4 }; var grade7 = new Grade { TheGrade = 5, Club = club2, Animal = crow1 }; var grade8 = new Grade { TheGrade = 4.5, Club = club2, Animal = crow2 }; var grade9 = new Grade { TheGrade = 2.1, Club = club2, Animal = crow3 }; var grade10 = new Grade { TheGrade = 4.3, Club = club2, Animal = crow4 }; var grade27 = new Grade { TheGrade = 4.5, Club = club3, Animal = beaver1 }; var grade26 = new Grade { TheGrade = 4.5, Club = club3, Animal = beaver2 }; var grade25 = new Grade { TheGrade = 4.5, Club = club3, Animal = beaver3 }; var grade24 = new Grade { TheGrade = 4.5, Club = club3, Animal = beaver4 }; var grade23 = new Grade { TheGrade = 4.5, Club = club3, Animal = beaver5 }; var grade22 = new Grade { TheGrade = 4.5, Club = club3, Animal = crow1 }; var grade21 = new Grade { TheGrade = 3.5, Club = club3, Animal = crow2 }; var grade20 = new Grade { TheGrade = 2.5, Club = club3, Animal = crow3 }; var grade19 = new Grade { TheGrade = 1.5, Club = club3, Animal = crow4 }; var grade28 = new Grade { TheGrade = 4.9, Club = club3, Animal = crow5 }; var grade11 = new Grade { TheGrade = 4.8, Club = club3, Animal = deer1 }; var grade12 = new Grade { TheGrade = 4.7, Club = club3, Animal = deer2 }; var grade13 = new Grade { TheGrade = 4.6, Club = club3, Animal = deer3 }; var grade14 = new Grade { TheGrade = 4.5, Club = club3, Animal = deer4 }; var grade15 = new Grade { TheGrade = 4.4, Club = club3, Animal = deer5 }; var grade16 = new Grade { TheGrade = 4.3, Club = club3, Animal = deer6 }; var grade17 = new Grade { TheGrade = 4.2, Club = club3, Animal = deer7 }; var grade18 = new Grade { TheGrade = 4.1, Club = club3, Animal = deer8 }; context.Grades.Add(grade1); context.Grades.Add(grade2); context.Grades.Add(grade3); context.Grades.Add(grade4); context.Grades.Add(grade5); context.Grades.Add(grade6); context.Grades.Add(grade7); context.Grades.Add(grade8); context.Grades.Add(grade9); context.Grades.Add(grade10); context.Grades.Add(grade11); context.Grades.Add(grade12); context.Grades.Add(grade13); context.Grades.Add(grade14); context.Grades.Add(grade15); context.Grades.Add(grade16); context.Grades.Add(grade17); context.Grades.Add(grade18); context.Grades.Add(grade19); context.Grades.Add(grade20); context.Grades.Add(grade21); context.Grades.Add(grade22); context.Grades.Add(grade23); context.Grades.Add(grade24); context.Grades.Add(grade25); context.Grades.Add(grade26); context.Grades.Add(grade27); context.Grades.Add(grade28); #endregion #region Seed Jobs var job1 = new Job { Title = "Builder", Salary = 1, Animals = new List <Animal> { beaver1, beaver2, beaver3, beaver4, beaver5 } }; var job2 = new Job { Title = "Messenger", Salary = 10, Animals = new List <Animal> { crow1, crow2, crow3, crow4 } }; var job3 = new Job { Title = "Delivery", Salary = 100, Animals = new List <Animal> { deer1, deer2, deer3, deer4, deer5, deer6, deer7, deer8 } }; context.Jobs.Add(job1); context.Jobs.Add(job2); context.Jobs.Add(job3); #endregion #region Seed TPH (Food) var food1 = new NormalFood { Title = "Elm", Animal = beaver1, Taste = Taste.Normal }; var food2 = new VeganFood { Title = "Daphne laureola", Animal = beaver2, Calories = 100 }; var food3 = new VeganFood { Title = "Carpinus betulus", Animal = beaver3, Calories = 1001 }; var food4 = new VeganFood { Title = "Hornbeam", Animal = beaver4, Calories = 101 }; var food5 = new NormalFood { Title = "Pizza", Animal = beaver5, Taste = Taste.Excellent }; var food6 = new NormalFood { Title = "Steak", Animal = crow1, Taste = Taste.Excellent }; var food7 = new NormalFood { Title = "Meat", Animal = crow2, Taste = Taste.Good }; var food8 = new NormalFood { Title = "Pizza", Animal = crow3, Taste = Taste.VeryGood }; var food9 = new VeganFood { Title = "Corn", Animal = crow4, Calories = 1 }; var food10 = new NormalFood { Title = "Pizza", Animal = crow5, Taste = Taste.Normal }; var food11 = new VeganFood { Title = "Pizza", Animal = deer1, Calories = 10 }; var food12 = new VeganFood { Title = "Pizza", Animal = deer2, Calories = 10 }; var food13 = new VeganFood { Title = "Pizza", Animal = deer3, Calories = 10 }; var food14 = new VeganFood { Title = "Pizza", Animal = deer4, Calories = 10 }; var food15 = new VeganFood { Title = "Pizza", Animal = deer5, Calories = 10 }; var food16 = new VeganFood { Title = "Pizza", Animal = deer6, Calories = 10 }; var food17 = new NormalFood { Title = "Elves", Animal = deer7, Taste = Taste.Excellent }; var food18 = new VeganFood { Title = "Pizza", Animal = deer8, Calories = 10 }; context.Food.Add(food1); context.Food.Add(food2); context.Food.Add(food3); context.Food.Add(food4); context.Food.Add(food5); context.Food.Add(food6); context.Food.Add(food7); context.Food.Add(food8); context.Food.Add(food9); context.Food.Add(food10); context.Food.Add(food11); context.Food.Add(food12); context.Food.Add(food13); context.Food.Add(food14); context.Food.Add(food15); context.Food.Add(food16); context.Food.Add(food17); context.Food.Add(food18); #endregion #region Seed Many-to-many old style (Drawback) var drawback1 = new Drawback { Title = "Crowdy", Foods = new List <Food> { food1, food2, food3, food4, /*food5,*/ food6, food7, food8, food9, food10, food11, food12, food13, food14, food15, food16, food17, food18 }, Clubs = new List <Club> { club1, club2, club3 }, Consequence = new Consequence { Name = "Nervousness" }, DrawbackDetail = new DrawbackDetails { DateCreated = DateTime.Now, Description = "the quality or state of being nervous" } }; var drawback2 = new Drawback { Title = "Windy", Foods = new List <Food> { food1, food2, food3, food4, food5, food6, food7, food8, food9, food10, food11, food12, food13, food14, food15, food16, food17, food18 }, Clubs = new List <Club> { club1, club2, club3 }, Consequence = new Consequence { Name = "Teleportation to Land of Oz" }, DrawbackDetail = new DrawbackDetails { DateCreated = DateTime.Now, Description = "hallucination" } }; var drawback3 = new Drawback { Title = "Soggy", Foods = new List <Food> { food1, food2, food3, food4, food5, food6, food7, food8, food9, food10, food11, food12, food13, food14, food15, food16, food17, food18 }, Clubs = new List <Club> { club1, club2, club3 }, Consequence = new Consequence { Name = "Wet clothes" }, DrawbackDetail = new DrawbackDetails { DateCreated = DateTime.Now, Description = "cold" } }; var drawback4 = new Drawback { Title = "Hardy", Foods = new List <Food> { food1, food2, food3, food4, food5, food6, food7, food8, food9, food10, food11, food12, food13, food14, food15, food16, food17, food18 }, Clubs = new List <Club> { club1, club2, club3 }, Consequence = new Consequence { Name = "Sadness" }, DrawbackDetail = new DrawbackDetails { DateCreated = DateTime.Now, Description = "the condition or quality of being sad" } }; context.Drawbacks.Add(drawback1); context.Drawbacks.Add(drawback2); context.Drawbacks.Add(drawback3); context.Drawbacks.Add(drawback4); var jobDrawback1 = new JobDrawback { Job = job1, Drawback = drawback1 }; var jobDrawback2 = new JobDrawback { Job = job1, Drawback = drawback2 }; var jobDrawback3 = new JobDrawback { Job = job1, Drawback = drawback3 }; var jobDrawback4 = new JobDrawback { Job = job1, Drawback = drawback4 }; var jobDrawback5 = new JobDrawback { Job = job2, Drawback = drawback1 }; var jobDrawback6 = new JobDrawback { Job = job2, Drawback = drawback2 }; var jobDrawback7 = new JobDrawback { Job = job3, Drawback = drawback1 }; var jobDrawback8 = new JobDrawback { Job = job3, Drawback = drawback2 }; context.JobDrawbacks.Add(jobDrawback1); context.JobDrawbacks.Add(jobDrawback2); context.JobDrawbacks.Add(jobDrawback3); context.JobDrawbacks.Add(jobDrawback4); context.JobDrawbacks.Add(jobDrawback5); context.JobDrawbacks.Add(jobDrawback6); context.JobDrawbacks.Add(jobDrawback7); context.JobDrawbacks.Add(jobDrawback8); #endregion #region Seed Persons var person1 = new Person { Name = "BeaverPerson", AnimalsLoved = new List <Animal> { beaver1, beaver2, beaver3, beaver4, beaver5 }, AnimalsHated = new List <Animal> { deer1, deer2, deer3, deer4, deer5, deer6, deer7, deer8 } }; context.Persons.Add(person1); #endregion context.SaveChanges(); }
/// <summary> /// 杀的过程 /// </summary> /// <param name="r"></param> /// <returns></returns> internal EventRecoard ShaProc(EventRecoard r) { foreach (ASkill s in r.Target.Skills) { s.PreprocessingSubEvent(r.Target, ref r, gData); } //这里再检查一次玩家是否死亡是怕玩家在以前的子事件中挂掉了,如果真挂了就忽略掉这次事件 if (!GamePlayers[r.Target].Dead) { if (GamePlayers[r.Source].Weapon != null) { Weapon.Lead(GamePlayers[r.Source].Weapon.CardEffect, r.Effect, r.Cards, gData, r.Source, r.Target); } if (GamePlayers[r.Target].Armor == null || (GamePlayers[r.Source].Weapon != null && Weapon.EnableTargetArmorWithMessage(GamePlayers[r.Source].Weapon.CardEffect, r.Source, r.Target, gData) && Armor.EnableFor(GamePlayers[r.Target].Armor.CardEffect, r.Cards, Card.Effect.Sha, r.Target)) || !(GamePlayers[r.Source].Weapon != null && Weapon.EnableTargetArmor(GamePlayers[r.Source].Weapon.CardEffect, r.Source, r.Target))) { MessageCore.AskForResult res = null; bool EnableDamage = false; int times = 1; foreach (ASkill s in r.Source.Skills) { times = s.CalcAskforTimes(r.Source, r.Target, Card.Effect.Sha, times, gData); } for (int i = 0; i < times; i++) { res = null; EnableDamage = false; string msg = new Beaver("askfor.sha.shan", r.Target.ChiefName, r.Source.ChiefName).ToString(); //new XElement("askfor.sha.shan", // new XElement("target", r.Target.ChiefName), // new XElement("source", r.Source.ChiefName) // ); if (GamePlayers[r.Target].Armor != null && (GamePlayers[r.Source].Weapon == null || Weapon.EnableTargetArmor(GamePlayers[r.Source].Weapon.CardEffect, r.Source, r.Target))) { //问询 闪 res = AsynchronousCore.AskForCards(r.Target, MessageCore.AskForEnum.Shan, new AskForWrapper(msg, this), gData); } else { //问询 闪 res = AsynchronousCore.AskForCards(r.Target, MessageCore.AskForEnum.Shan, new AskForWrapper(msg, this), false, gData); } //检验出牌合法性 ValidityResult(r.Target, ref res); //问询结果放入子事件处理列表 if (res.PlayerLead) { DropCards(true, CardFrom.Hand, res.SkillName, res.Cards, res.Effect, res.Leader, r.Source, null); } else { DropCards(false, CardFrom.None, res.SkillName, res.Cards, res.Effect, res.Leader, r.Source, null); } if (res.Effect == Card.Effect.Shan) { if (res.PlayerLead) { AsynchronousCore.LeadingValid(r.Target); AsynchronousCore.SendMessage( new Beaver("sha.shan", r.Target.ChiefName, r.Source.ChiefName, res.SkillName, Card.Cards2Beaver("cards", res.Cards)).ToString()); //new XElement("sha.shan", // new XElement("from", r.Target.ChiefName), // new XElement("to", r.Source.ChiefName), // new XElement("skill", res.SkillName), // Card.Cards2XML("cards", res.Cards) // ) //); } foreach (ASkill s in res.Leader.Skills) { s.OnUseEffect(res.Leader, Card.Effect.Shan, gData); } if (GamePlayers[r.Source].Weapon != null) { EnableDamage = Weapon.TargetShan(GamePlayers[r.Source].Weapon.CardEffect, r.Source, r.Target, gData, r); } } if (res.Effect == Card.Effect.None || EnableDamage) { break; } } if (res == null || res.Effect == Card.Effect.None || EnableDamage) { sbyte cost = 1; if (GamePlayers[r.Source].Weapon != null) { cost = Weapon.CalcDamage(GamePlayers[r.Source].Weapon.CardEffect, r.Source, r.Target, Card.Effect.Sha, cost, gData); } foreach (ASkill s in r.Source.Skills) { cost = s.CalcDamage(r.Source, r.Effect, cost, gData); } if (GamePlayers[r.Target].Armor != null && GamePlayers[r.Source].Weapon != null && Weapon.EnableTargetArmor(GamePlayers[r.Source].Weapon.CardEffect, r.Source, r.Target)) { cost = Armor.CalcDamage(1, r.Cards, GamePlayers[r.Target].Armor.CardEffect); } DamageHealth(r.Target, cost, r.Source, r); } } } return(r); }
/// <summary> /// 开启逻辑循环 /// </summary> /// <param name="aChiefStart">设置首个进入回合的武将</param> /// <param name="aIgnoreTakeCards">是否忽略一开始对玩家每人发4张牌的过程</param> protected void LogicLoop(ChiefBase aChiefStart, bool aIgnoreTakeCards) { AsynchronousCore.SendEnvironmentMessage(); ChiefBase target = aChiefStart; //target , 问询的目标 ChiefBase loop = aChiefStart; do { foreach (ASkill s in loop.Skills) { s.OnCreate(loop); } loop.ReportSkills(gData); loop = loop.Next; } while (loop != target); if (!aIgnoreTakeCards) { loop = aChiefStart; //轮询给每个武将4张牌 do { TakeingCards(loop, 4); loop = loop.Next; } while (loop != target); } RefereeProc(); //游戏的轮询 do { //复位游戏规则控制数据 gData = new GlobalData(); gData.Game = this; //设置执行回合的武将 gData.Active = target; //若武将有武器,尝试让该武将的武器配置玩家的某些进攻性属性 if (GamePlayers[target].Weapon != null) { Weapon.ActiveWeapon(GamePlayers[target].Weapon.CardEffect, gData); } //改变武将状态-回合开始 AsynchronousCore.SendChangeStatusMessage(target, MessageCore.PlayerStatus.Start); { gData.ChiefStatus = "turnStart"; //通知该武将的技能该武将进入回合开始阶段 foreach (ASkill s in target.Skills) { s.BeforeTurnStart(target, gData); } //事件结束 ClearEventProc(); } //改变武将状态-判定 AsynchronousCore.SendChangeStatusMessage(target, MessageCore.PlayerStatus.Judgment); { gData.ChiefStatus = "judgment"; //执行武将判定区的判定 Judgement(target, gData); //事件结束 ClearEventProc(); } foreach (ASkill s in target.Skills) { s.BeforeTakeCards(target, gData); } if (gData.Take) { //改变武将状态-拿牌 AsynchronousCore.SendChangeStatusMessage(target, MessageCore.PlayerStatus.Take); { gData.ChiefStatus = "take"; foreach (ASkill s in target.Skills) { s.TakingCards(target, gData); } //从牌堆取 gData.TakeCardsCount 张牌 Card[] ret = TakeingCards(target, gData.TakeCardsCount); //事件结束 ClearEventProc(); } } //武将状态-出牌 //要求 允许出牌且玩家未死亡 if (gData.Lead && !GamePlayers[target].Dead) { //改变武将状态-出牌 AsynchronousCore.SendChangeStatusMessage(target, MessageCore.PlayerStatus.Lead); gData.ChiefStatus = "lead"; foreach (ASkill s in target.Skills) { s.Leading(target, gData); } //这里是一个循环,不断问询玩家出牌,若玩家Effect为None,就跳过这个阶段 while (!GamePlayers[target].Dead) { //重置全局数据中的活动部分 gData.Reset(); string msg = new Beaver("askfor.aggressive", target.ChiefName).ToString(); //new XElement("askfor.aggressive", // new XElement("target", target.ChiefName) //); //开始问询 MessageCore.AskForResult res = AsynchronousCore.AskForCards(target, MessageCore.AskForEnum.Aggressive, new AskForWrapper(msg, this), gData); //是否跳过该阶段 if (res.Effect == Card.Effect.None) { AsynchronousCore.SendClearMessage(); break; } //出牌进行处理,并反馈是否符合规则 if (!LeadEvent(res)) { ClearEventProc(); break; } else { ClearEventProc(); } } } //在进入弃牌阶段前,通知武将的技能 foreach (ASkill s in target.Skills) { s.BeforeAbandonment(target, gData); } //允许武将进入弃牌阶段 if (gData.Abandonment) { //改变武将状态-弃牌 AsynchronousCore.SendChangeStatusMessage(target, MessageCore.PlayerStatus.Abandoment); { gData.ChiefStatus = "abandoment"; //玩家弃牌的问询 if (!Abandonment(target)) { AsynchronousCore.LeadingInvalid(target); } else { AsynchronousCore.LeadingValid(target); } ClearEventProc(); } } //玩家回合结束前通知武将的技能 foreach (ASkill s in target.Skills) { s.AfterTurnEnd(target, gData); } //牌检查器报告情况 AsynchronousCore.SendMessage(CardsHeap.CardsChecker(this)); } while ((target = target.Next) != null); //target=下一个玩家 //----------------------------------------------------------- //如果玩家都死光了...没分胜负,我想这里会有异常吧 }
void removeBeaver(Beaver beav) { beav.destroyListener -= removeBeaver; m_listBeavers.Remove (beav); m_beaverKilledTotal++; if (onBeaverKilledListener != null) { onBeaverKilledListener(m_beaverKilledTotal); } }
/// <summary> /// 万箭齐发的过程 /// </summary> /// <param name="r">子事件的起始节点</param> /// <returns></returns> private EventRecoard WanJianQiFaProc(EventRecoard r) { string msg = null; //对方不能死亡 if (!GamePlayers[r.Target].Dead) { //进入无懈可击的过程 if (WuXieProc(r.Target, Card.Effect.WanJianQiFa)) { return(r); } if (GamePlayers[r.Target].Armor == null || Armor.EnableFor(GamePlayers[r.Target].Armor.CardEffect, r.Cards, Card.Effect.WanJianQiFa, r.Target)) { MessageCore.AskForResult resShan = null; msg = new Beaver("askfor.wjqf.shan", r.Target.ChiefName, r.Source.ChiefName).ToString(); //new XElement("askfor.wjqf.shan", // new XElement("target", r.Target.ChiefName), // new XElement("source", r.Source.ChiefName) //); //问询闪 resShan = AsynchronousCore.AskForCards(r.Target, MessageCore.AskForEnum.Shan, new AskForWrapper(msg, this), true, gData); ValidityResult(r.Target, ref resShan); //} if (resShan.PlayerLead) { DropCards(true, CardFrom.Hand, resShan.SkillName, resShan.Cards, resShan.Effect, resShan.Leader, r.Source, null); } else { DropCards(false, CardFrom.None, resShan.SkillName, resShan.Cards, resShan.Effect, resShan.Leader, r.Source, null); } //将问询的牌放入到子事件节点 //EventNode(true, CardFrom.Hand, resShan.SkillName , resShan.Cards, resShan.Effect, r.Target, r.Source, null); foreach (ASkill s in resShan.Leader.Skills) { s.OnUseEffect(resShan.Leader, Card.Effect.Shan, gData); } if (resShan.Effect == Card.Effect.Shan) { if (resShan.PlayerLead) { AsynchronousCore.SendMessage( new Beaver("wjqf.shan", r.Target.ChiefName, r.Source.ChiefName, resShan.SkillName, Card.Cards2Beaver("cards", resShan.Cards)).ToString()); } //new XElement("wjqf.shan", // new XElement("target", r.Target.ChiefName), // new XElement("source", r.Source.ChiefName), // new XElement("skill", resShan.SkillName), // Card.Cards2XML("cards", resShan.Cards) //)); } else { //没有出闪费血 DamageHealth(r.Target, 1, r.Source, r); } } } return(r); }
private void Awake() { beaver = GetComponent <Beaver>(); animator = GetComponent <Animator>(); }