public virtual void UpdateStyle() { // This will get called again once this element gets added to the root. if (Root == null) { return; } if ( Foreground.r == SGUIRoot.Main.Foreground.r && Foreground.g == SGUIRoot.Main.Foreground.g && Foreground.b == SGUIRoot.Main.Foreground.b ) { Foreground = SGUIRoot.Main.Foreground.WithAlpha(Foreground.a); } if ( Background.r == SGUIRoot.Main.Background.r && Background.g == SGUIRoot.Main.Background.g && Background.b == SGUIRoot.Main.Background.b ) { Background = SGUIRoot.Main.Background.WithAlpha(Background.a); } Modifiers.ForEach(_ModifierUpdateStyle); OnUpdateStyle?.Invoke(this); UpdateChildrenStyles(); }
private static void Sort <T>(this BindingList <T> bindingList, IComparer <T> p_Comparer, Comparison <T> p_Comparison) { //Extract items and sort separately List <T> sortList = new List <T>(); bindingList.ForEach(item => sortList.Add(item));//Extension method for this call if (p_Comparison == null) { sortList.Sort(p_Comparer); }//if else { sortList.Sort(p_Comparison); }//else //Disable notifications, rebuild, and re-enable notifications bool oldRaise = bindingList.RaiseListChangedEvents; bindingList.RaiseListChangedEvents = false; try { bindingList.Clear(); sortList.ForEach(item => bindingList.Add(item)); } finally { bindingList.RaiseListChangedEvents = oldRaise; bindingList.ResetBindings(); } }
public static BindingListWithEvents <T> WithEvents <T>(this BindingList <T> source, Func <T, int, Action <T, int> > handler) { var e = source.WithEvents(); var c = new List <Action <T, int> >(); Action <T, int> Added = (value, index) => { c.Add(handler(value, index)); }; e.Added += Added; e.Removed += (value, index) => { var h = c[index]; c.RemoveAt(index); h(value, index); }; source.ForEach(Added); return(e); }
public static BindingList <T> ForEachNewOrExistingItem <T>(this BindingList <T> source, Action <T, int> handler) { source.ForEach(handler); source.ListChanged += (sender0, args0) => { if (args0.ListChangedType == ListChangedType.ItemAdded) { handler(source[args0.NewIndex], args0.NewIndex); } }; return(source); }
public virtual void UpdateStyle() { // This will get called again once this element gets added to the root. if (Root == null) { return; } if ( Foreground.r == SGUIRoot.Main.Foreground.r && Foreground.g == SGUIRoot.Main.Foreground.g && Foreground.b == SGUIRoot.Main.Foreground.b ) { Color color = SGUIRoot.Main.Foreground; color.a = Foreground.a; Foreground = color; } if ( Background.r == SGUIRoot.Main.Background.r && Background.g == SGUIRoot.Main.Background.g && Background.b == SGUIRoot.Main.Background.b ) { Color color = SGUIRoot.Main.Background; color.a = Background.a; Background = color; } Modifiers.ForEach(_ModifierUpdateStyle); if (OnUpdateStyle != null) { OnUpdateStyle(this); } UpdateChildrenStyles(); }
public static void AttachTo <T, F>(this BindingList <T> a, Func <T, BindingList <F> > selector, IAddChild c) where F : ISupportsContainer { var ea = a.WithEvents(); var cache = new List <BindingListWithEvents <F> >(); Action <T, int> Added = (n, i) => { var x = selector(n).WithEvents(); x.Added += (k, j) => { k.AttachContainerTo(c); }; x.Removed += (k, j) => { (k).OrphanizeContainer(); }; x.Source.ForEach(k => (k).AttachContainerTo(c)); cache.Add(x); }; ea.Added += Added; ea.Removed += (n, i) => { var x = cache[i]; x.Source.ForEach(k => (k).OrphanizeContainer()); cache.RemoveAt(i); x.Dispose(); }; a.ForEach(Added); }
public UcDonHang(Define.LoaiDonHangEnum loaiDonHang, DonHang data = null) { InitializeComponent(); DonHang_KhachHangId.DisplayMember = "Ten"; DonHang_KhachHangId.ValueMember = "Id"; var lstKhachHang = new List <KhachHang>(); if (loaiDonHang == Define.LoaiDonHangEnum.XuatKho) { lstKhachHang = CRUD.DbContext.KhachHangs.Where(s => s.LoaiKhachHang != Define.LoaiKhachHangEnum.NhaCungCap.ToString()).ToList(); lblKhachHangId.Text = "Khách Hàng"; } else { lstKhachHang = CRUD.DbContext.KhachHangs.Where(s => s.LoaiKhachHang == Define.LoaiKhachHangEnum.NhaCungCap.ToString()).ToList(); } DonHang_KhachHangId.DataSource = new BindingSource((lstKhachHang), null); DonHang_LoaiTienTe.DisplayMember = "Value"; DonHang_LoaiTienTe.ValueMember = "Key"; DonHang_LoaiTienTe.DataSource = new BindingSource(Define.LoaiTienTeDict, null); _loaiDonHang = loaiDonHang; _domainData = data; if (_domainData == null) { _domainData = new DonHang(); _domainData.NgayLap = TimeHelper.CurentDateTime(); _domainData.LoaiDonHang = loaiDonHang.ToString(); _domainData.TrangThai = Define.TrangThaiDonHang.Moi.ToString(); _domainData.LoaiTienTe = Define.LoaiTienTeEnum.VND.ToString(); _domainData.TyGia = 1; btnDelete.Visible = false; btnIn.Visible = false; GenerateMaDH(); } else { _chiTietDonhang = new BindingList <ChiTietDonHang>(_domainData.ChiTietDonHangs.ToList()); if (_domainData.KhachHangId == Define.KhachLeId) { var khachLe = lstKhachHang.FirstOrDefault(s => s.Id == Define.KhachLeId); if (khachLe != null) { khachLe.Ten = _domainData.Ten; } } btnDelete.Visible = true; _chiTietDonhang.ForEach(s => s.ListChiTietHangHoa = s.ChiTietHangHoas.ToList()); if (_domainData.TrangThai == Define.TrangThaiDonHang.ThanhToan.ToString()) { btnSave.Enabled = false; btnDelete.Visible = false; _domainData.ThanhToan += _domainData.CongNoes.Where(l => l.IsActived).Sum(l => l.ThanhToan); } } Init(_domainData); // Get list hang hoa var dataSource = CRUD.DbContext.KhoHangs .Where(s => s.IsActived && (loaiDonHang == Define.LoaiDonHangEnum.NhapKho || s.SoLuong > 0)) .Select(s => new { s.TenHang, s.Id }) .Union(CRUD.DbContext.ChiTietDonHangs .Where(s => _domainData.Id == s.DonHangId) .Join(CRUD.DbContext.KhoHangs, ctdh => ctdh.HangHoaId, kh => kh.Id, (ctdh, kh) => new { kh.TenHang, kh.Id })).ToList(); FormBehavior.DecoreateLookEdit(listHangHoa, dataSource, "TenHang"); listHangHoa.EditValueChanged += listHangHoa_EditValueChanged; gridControlChiTiet.DataSource = _chiTietDonhang; gridViewChiTiet.ActiveFilterString = string.Format("[IsActived] = '{0}'", true); CheckDonHangUSD(); btnDeleteRow.ButtonClick += btnDeleteRow_ButtonClick; UpdateTongTien(); UpdateNo(); }
public FreeCellGame() { Width = DefaultWidth; Height = DefaultHeight; var Margin = (DefaultWidth - CardInfo.Width * 8) / 9; var GameOverBox = new TextBox { Width = DefaultWidth, TextAlignment = System.Windows.TextAlignment.Center, Foreground = Brushes.White, Background = Brushes.Transparent, BorderThickness = new Thickness(0), IsReadOnly = true, FontSize = 24, }.MoveTo(0, DefaultHeight / 2).AttachTo(this); GameOver += delegate { GameOverBox.Text = "Congratulations! You Won!"; }; #region king var KingCanvas = new Canvas { Width = 96, Height = 96 }.AttachTo(this).MoveTo( (DefaultWidth - 32) / 2, Margin * 2 + (CardInfo.Height - 32) / 2 ); var KingRight = new kingbitm().AttachTo(KingCanvas); var KingLeft = new kingleft().AttachTo(KingCanvas); var KingSmile = new kingsmil().AttachTo(KingCanvas); KingSmile.Hide(); #endregion this.MyDeck.Overlay.MouseMove += (sender, args) => { var p = args.GetPosition(this.MyDeck.Overlay); if (p.X < DefaultWidth / 2) { KingLeft.Show(); KingRight.Hide(); } else { KingLeft.Hide(); KingRight.Show(); } }; this.MyStatus = new StatusControl().AttachContainerTo(this).MoveContainerTo( (DefaultWidth - StatusControl.Width) / 2, (DefaultHeight - StatusControl.Height) ); //this.MyStatus.Container.Hide(); // add autoscroll ? this.MyDeck.SizeTo(DefaultWidth, DefaultHeight); this.MyDeck.AttachContainerTo(this); this.MyDeck.GetRank = e => (int)RankMapping[e]; System.Console.WriteLine("--- freecell ---"); System.Console.WriteLine("adding card infos... "); MyDeck.UnusedCards.AddRange(CardInfo.FullDeck()); this.MyStatus.CardsLeft = MyDeck.UnusedCards.Count; this.MyStatus.Score = -1; this.MyStatus.Update(); System.Console.WriteLine("creating stacklists... "); PlayStacks = MyDeck.CreateStackList(); PlayStacks.ForEachNewItem( k => { k.CardMargin = new Vector { Y = 20 }; k.Update(); } ); TempStacks = MyDeck.CreateStackList(); Func<bool> Rule_WinConditionMet = delegate { if (PlayStacks.All(s => s.Cards.Count > 0)) return false; if (TempStacks.All(s => s.Cards.Count == 0)) return false; return true; }; Action MyStatus_UpdateCardsLeft = delegate { MyStatus.CardsLeft = 0; PlayStacks.ForEach(q => MyStatus.CardsLeft += q.Cards.Count); TempStacks.ForEach(q => MyStatus.CardsLeft += q.Cards.Count); }; GoalStacks = MyDeck.CreateStackList(); GoalStacks.ForEachNewItem( k => { k.CardMargin.Y = 0; k.Cards.ForEachNewItem( card => { Console.WriteLine("GoalStacks ForEachNewItem " + new { k.CardMargin.Y }); if (card.Info.Rank == CardInfo.RankEnum.RankKing) { KingSmile.Show(); card.VisibleSide = Card.SideEnum.BackSide; if (Rule_WinConditionMet()) { // winner! MyDeck.Sounds.win(); if (this.GameOver != null) this.GameOver(); } else { 600.AtDelay(KingSmile.Hide); } } MyStatus_UpdateCardsLeft(); MyStatus.Update(); } ); } ); Func<Card, Card, bool> RuleForStackingCardsInGoalStack = (Previous, Current) => { if (Cheat) return true; if (Previous == null) return Current.Info.Rank == CardInfo.RankEnum.RankAce; if (Previous.Info.Suit != Current.Info.Suit) return false; if (Previous.Rank != Current.Rank + 1) return false; return true; }; Func<Card, Card, bool> RuleForStackingCardsInPlayStack = (Previous, Current) => { if (Cheat) return true; if (Previous.Info.SuitColor == Current.Info.SuitColor) return false; if (Previous.Rank + 1 != Current.Rank) return false; return true; }; #region rules MyDeck.ApplyCardRules += delegate(Card card) { #region MovedByLocalPlayer card.MovedByLocalPlayer += delegate { var FrozenTokens = new { card.CurrentStack, card.PreviousStack }; Console.WriteLine(new { HistoryMove = card, StackedCards = card.StackedCards.Length, Previous = card.PreviousStack, Current = card.CurrentStack }.ToString()); History.History.Add( delegate { // we already are at the state we want to be if (card.CurrentStack == FrozenTokens.PreviousStack) return; card.VisibleSide = Card.SideEnum.TopSide; card.AnimatedMoveToStack(FrozenTokens.PreviousStack, null); this.MyDeck.Sounds.deal(); MyStatus.Moves--; MyStatus_UpdateCardsLeft(); MyStatus.Update(); }, delegate { MyStatus.Moves++; MyStatus.Update(); // we already are at the state we want to be if (card.CurrentStack == FrozenTokens.CurrentStack) return; card.AnimatedMoveToStack(FrozenTokens.CurrentStack, null); this.MyDeck.Sounds.deal(); } ); }; #endregion card.VisibleSide = Card.SideEnum.TopSide; card.ValidateDragStart = delegate { if (Cheat) return true; // cannot remove cards from goal stack if (GoalStacks.Contains(card)) return false; // cannot drag a pile of cards unless alternate colors and descending numbers return card.SelectedCards.AllWithPrevious(RuleForStackingCardsInPlayStack); }; card.ValidateDragStop = CandidateStack => { if (Cheat) return true; if (TempStacks.Contains(CandidateStack)) { // temp only holds one card if (CandidateStack.Cards.Count > 0) return false; // and only one card can be inserted if (card.StackedCards.Length > 0) return false; return true; } if (PlayStacks.Contains(CandidateStack)) { if (CandidateStack.Cards.Count == 0) return true; return (RuleForStackingCardsInPlayStack(CandidateStack.Cards.Last(), card)); } if (GoalStacks.Contains(CandidateStack)) { if (CandidateStack.Cards.Count == 0) { return (RuleForStackingCardsInGoalStack(null, card)); } return (RuleForStackingCardsInGoalStack(CandidateStack.Cards.Last(), card)); } return false; }; }; #endregion System.Console.WriteLine("creating goalstack... "); GoalStacks.AddRange( Enumerable.Range(0, 4).ToArray( i => new CardStack { Name = "GoalStack " + i }.MoveTo( DefaultWidth - Margin / 2 - ((CardInfo.Width + Margin / 2) * 4) + i * (CardInfo.Width + Margin / 2), Margin * 2 ) ) ); System.Console.WriteLine("creating tempstack... "); TempStacks.AddRange( Enumerable.Range(0, 4).ToArray( i => new CardStack { Name = "TempStack " + i }.MoveTo( Margin + i * (CardInfo.Width + Margin / 2), Margin * 2 ) ) ); System.Console.WriteLine("creating playstack... "); PlayStacks.AddRange( Enumerable.Range(0, 8).ToArray( i => new CardStack { Name = "PlayStack " + i }.MoveTo( Margin + (i) * (CardInfo.Width + Margin), Margin * 4 + CardInfo.Height ).Apply( s => { var Count = 6; if (i < 4) Count = 7; s.Cards.AddRange(MyDeck.FetchCards(Count)); } ) ) ); }
public SpiderGame(CardInfo.SuitEnum[] level) { Width = DefaultWidth; Height = DefaultHeight; //this.ClipTo(0, 0, DefaultWidth, DefaultHeight); var GameOverBox = new TextBox { Width = DefaultWidth, TextAlignment = System.Windows.TextAlignment.Center, Foreground = Brushes.White, Background = Brushes.Transparent, BorderThickness = new Thickness(0), IsReadOnly = true, FontSize = 24, }.MoveTo(0, DefaultHeight / 2).AttachTo(this); GameOver += delegate { GameOverBox.Text = "Congratulations! You Won!"; }; // add autoscroll ? this.MyDeck.SizeTo(DefaultWidth, DefaultHeight); this.MyDeck.AttachContainerTo(this); this.MyDeck.GetRank = e => (int)RankMapping[e]; this.MyDeck.CardCustomBackgroundSource = new Abstractatech.Avalon.Cards.Avalon.Images.spider().Source; //this.MyDeck.Overlay.Opacity = 0.6; MyStatus = new StatusControl().AttachContainerTo(this).MoveContainerTo( (DefaultWidth - StatusControl.Width) / 2, (DefaultHeight - StatusControl.Height) ); MyStatus.Container.Hide(); System.Console.WriteLine("--- spider ---"); System.Console.WriteLine("adding card infos... "); MyDeck.UnusedCards.AddRange(CardInfo.By(2, level)); System.Console.WriteLine("creating stacklists... "); DealStacks = MyDeck.CreateStackList(); PlayStacks = MyDeck.CreateStackList(); DeadStacks = MyDeck.CreateStackList(); PlayStacks.ListChanged += (sender, args) => { if (args.ListChangedType == ListChangedType.ItemAdded) { var s = PlayStacks[args.NewIndex]; } }; DeadStacks.ListChanged += (sender, args) => { if (args.ListChangedType == ListChangedType.ItemAdded) { var s = DeadStacks[args.NewIndex]; //s.Control.Hide(); s.CardMargin = new Vector { X = 2, Y = 0 }; s.Cards.ListChanged += (sender2, args2) => { if (args2.ListChangedType == ListChangedType.ItemAdded) { //s[args2.NewIndex].Enabled = false; } }; } }; #region drag rules MyDeck.ApplyCardRules += delegate(Card c) { c.Moved += delegate { if (c.StackedCards.Length == 0) { CheckForGoodSuit(c.CurrentStack); MyStatus.Moves++; MyStatus.Score--; MyStatus.Update(); } CheckForWin(); }; c.ValidateDragStart += delegate { if (Cheat) return true; return c.SelectedCards.AllWithPrevious( (Previous, Current) => { if (Previous.Info.Suit != Current.Info.Suit) return false; return Previous.Rank + 1 == Current.Rank; } ); }; c.ValidateDragStop += CandidateStack => { if (Cheat) return true; if (PlayStacks.Contains(CandidateStack)) { if (CandidateStack.Cards.Count == 0) return true; var Candidate = CandidateStack.Last(); // we do not care about the suit if (c.Rank == Candidate.Rank + 1) //if (c.Info.Suit == Candidate.Info.Suit) return true; return false; } return false; }; }; #endregion System.Console.WriteLine("creating playstack... "); var Margin = (DefaultWidth - CardInfo.Width * 10) / 11; PlayStacks.AddRange( Enumerable.Range(0, 10).ToArray( i => new CardStack { Name = "PlayStack " + i, CardMargin = new Vector { Y = 20 } }.MoveTo( Margin + i * (CardInfo.Width + Margin), Margin + 40 ).Apply( s => { if (i < 4) s.Cards.AddRange(MyDeck.FetchCards(5)); else s.Cards.AddRange(MyDeck.FetchCards(4)); if (Cheat) s.Cards.ForEach(k => k.VisibleSide = Card.SideEnum.TopSide); } ) ) ); PlayStacks.ForEach( delegate(CardStack s) { s.Cards.ListChanged += (sender, args) => { if (args.ListChangedType == ListChangedType.ItemDeleted) //if (MyStatus.Ready) s.RevealLastCard(); }; } ); DealStacks.ListChanged += (sender, args) => { if (args.ListChangedType == ListChangedType.ItemAdded) { var s = DealStacks[args.NewIndex]; s.CardMargin = new Vector { Y = 0, X = 0 }; s.Update(); s.Click += delegate { if (DealStacks.Contains(s)) { //if (MyStatus.Ready) DealRow(null); } else { System.Console.WriteLine("whoops wrong stack click - " + args.NewIndex); } }; } }; System.Console.WriteLine("creating dealstack... "); var dealpoint = new Point { X = DefaultWidth - CardInfo.Width - Margin, Y = DefaultHeight - CardInfo.Height - Margin - 17 - Margin }; while (MyDeck.UnusedCards.Count > 0) { var s = new CardStack { MyDeck.FetchCards(10) }; //s.Overlay.Opacity = 1; s.Name = "DealStack"; DealStacks.Add( s.MoveTo(Convert.ToInt32(dealpoint.X), Convert.ToInt32(dealpoint.Y)) ); dealpoint.X -= 10; } // we will collect cards here DeadStacks.Add(new CardStack().MoveTo(Margin, Convert.ToInt32(dealpoint.Y))); DealRow( delegate { MyStatus.Score = 500; MyStatus.Moves = 0; MyStatus.Update(); MyStatus.Container.Show(); } ); }
public SolitaireGame() { Width = DefaultWidth; Height = DefaultHeight; System.Console.WriteLine("--- solitare ---"); this.MyStatus = new StatusControl().AttachContainerTo(this).MoveContainerTo( (DefaultWidth - StatusControl.Width) / 2, (DefaultHeight - StatusControl.Height) ); var GameOverBox = new TextBox { Width = DefaultWidth, TextAlignment = System.Windows.TextAlignment.Center, Foreground = Brushes.White, Background = Brushes.Transparent, BorderThickness = new Thickness(0), IsReadOnly = true, FontSize = 24, }.MoveTo(0, DefaultHeight / 2).AttachTo(this); // add autoscroll ? this.MyDeck.SizeTo(DefaultWidth, DefaultHeight); this.MyDeck.AttachContainerTo(this); this.MyDeck.GetRank = e => (int)RankMapping[e]; System.Console.WriteLine("adding card infos... "); MyDeck.UnusedCards.AddRange(CardInfo.FullDeck()); this.MyStatus.Score = -1; this.MyStatus.CardsLeft = this.MyDeck.UnusedCards.Count; this.MyStatus.Update(); MyDeck.Stacks.ListChanged += (sender, args) => { if (args.ListChangedType == ListChangedType.ItemAdded) { // fixme: dynamically set backside for this card //var s = MyDeck.Stacks[args.NewIndex]; //s.SetBackground(MyDeck.GfxPath + "/spider.empty.png"); } }; System.Console.WriteLine("creating stacklists... "); PlayStacks = MyDeck.CreateStackList(); TempStacks = MyDeck.CreateStackList(); GoalStacks = MyDeck.CreateStackList(); PlayStacks.ForEachNewItem( delegate(CardStack s) { s.CardMargin = new Vector { Y = 20 }; s.Update(); s.Cards.ListChanged += (sender, args) => { if (args.ListChangedType == ListChangedType.ItemDeleted) s.RevealLastCard(); }; } ); GameOver += delegate { GameOverBox.Text = "Congratulations! You Won!"; }; System.Console.WriteLine("creating goalstack... "); var Margin = (DefaultWidth - CardInfo.Width * 7) / 8; var ReserveStack = new CardStack().MoveTo(Margin, Margin); var UsedChoiceStack = new CardStack().MoveTo(Margin + CardInfo.Width + Margin, Margin); var ChoiceStack = new CardStack().MoveTo(Margin + CardInfo.Width + Margin, Margin); TempStacks.AddRange( ReserveStack, UsedChoiceStack, ChoiceStack ); ReserveStack.CardMargin.X = 0; ReserveStack.CardMargin.Y = 0; UsedChoiceStack.CardMargin.X = 0; UsedChoiceStack.CardMargin.Y = 0; ChoiceStack.CardMargin.X = 20; ChoiceStack.CardMargin.Y = 0; #region rules Func<bool> Rule_WinConditionMet = delegate { if (PlayStacks.All(s => s.Cards.Count > 0)) return false; if (TempStacks.All(s => s.Cards.Count == 0)) return false; return true; }; Func<Card, Card, bool> RuleForStackingCardsInGoalStack = (Previous, Current) => { if (Cheat) return true; if (Previous == null) return Current.Info.Rank == CardInfo.RankEnum.RankAce; if (Previous.Info.Suit != Current.Info.Suit) return false; if (Previous.Rank != Current.Rank + 1) return false; return true; }; Func<Card, Card, bool> RuleForStackingCardsInPlayStack = (Previous, Current) => { if (Cheat) return true; if (Previous.Info.SuitColor == Current.Info.SuitColor) return false; if (Previous.Rank + 1 != Current.Rank) return false; return true; }; #endregion MyDeck.ApplyCardRules += delegate(Card card) { card.MovedByLocalPlayer += delegate { MyStatus.Moves++; MyStatus.Update(); }; card.ValidateDragStart = delegate { if (Cheat) return true; // cannot remove cards from goal stack if (GoalStacks.Contains(card)) return false; if (TempStacks.Contains(card)) { return (card == ChoiceStack.LastOrDefault()); } // cannot drag a pile of cards unless alternate colors and descending numbers return card.SelectedCards.AllWithPrevious(RuleForStackingCardsInPlayStack); }; card.ValidateDragStop = CandidateStack => { if (Cheat) return true; if (TempStacks.Contains(CandidateStack)) { return false; } if (PlayStacks.Contains(CandidateStack)) { if (CandidateStack.Cards.Count == 0) return card.Info.Rank == CardInfo.RankEnum.RankKing; return (RuleForStackingCardsInPlayStack(CandidateStack.Cards.Last(), card)); } if (GoalStacks.Contains(CandidateStack)) { if (card.StackedCards.Length > 0) return false; return (RuleForStackingCardsInGoalStack(CandidateStack.Cards.LastOrDefault(), card)); } return false; }; }; GoalStacks.ForEachNewItem( s => { s.CardMargin.X = 0; s.CardMargin.Y = 0; s.Cards.ForEachNewItem( card => { this.MyStatus.CardsLeft--; this.MyStatus.Update(); if (card.Info.Rank == CardInfo.RankEnum.RankKing) { card.VisibleSide = Card.SideEnum.BackSide; if (Rule_WinConditionMet()) { // winner! MyDeck.Sounds.win(); if (this.GameOver != null) this.GameOver(); } } } ); } ); GoalStacks.AddRange( Enumerable.Range(0, 4).ToArray( i => new CardStack().MoveTo(DefaultWidth - ((CardInfo.Width + Margin) * 4) + i * (CardInfo.Width + Margin), Margin) ) ); System.Console.WriteLine("creating playstack... "); PlayStacks.AddRange( Enumerable.Range(0, 7).ToArray( i => new CardStack().MoveTo(Margin + i * (CardInfo.Width + Margin), Margin * 3 + CardInfo.Height).Apply(s => s.Cards.AddRange(MyDeck.FetchCards(i + 1))) ) ); ReserveStack.Cards.AddRange(MyDeck.FetchCards(MyDeck.UnusedCards.Count)); ReserveStack.Update(); PlayStacks.ForEach(k => k.Last().VisibleSide = Card.SideEnum.TopSide); UsedChoiceStack.Cards.ForEachNewItem( card => card.VisibleSide = Card.SideEnum.BackSide ); ChoiceStack.Cards.ForEachNewItem( card => card.VisibleSide = Card.SideEnum.TopSide ); ChoiceStack.Click += delegate { ChoiceStack.Update(); } ; ReserveStack.Overlay.Cursor = Cursors.Hand; ReserveStack.Cards.ForEachNewItem( card => card.VisibleSide = Card.SideEnum.BackSide ); var ReserveStackEnabled = true; ReserveStack.Click += delegate { if (!ReserveStackEnabled) return; if (ReserveStack.Cards.Count == 0) { MyDeck.Sounds.deal(); ChoiceStack.FirstOrDefault().Apply( card => { card.AnimatedMoveToStack(ReserveStack, null, null); } ); UsedChoiceStack.FirstOrDefault().Apply( card => { card.AnimatedMoveToStack(ReserveStack, null, null); } ); } else { ReserveStackEnabled = false; ChoiceStack.Cards.ToArray().ForEach( card => { card.AttachToStack(UsedChoiceStack); } ); UsedChoiceStack.Update(); 3.Times( SignalNext => ReserveStack.LastOrDefault().Apply( card => { card.BringToFront(); Console.WriteLine(card.ToString()); card.AnimatedMoveToStack(ChoiceStack, null, null); MyDeck.Sounds.deal(); 200.AtDelay(SignalNext); } ) ); } // a timepoint when movements are done.. this should ba an event actually 2000.AtDelay(() => ReserveStackEnabled = true); }; }
public UcDonHang(Define.LoaiDonHangEnum loaiDonHang, DonHang data = null) { InitializeComponent(); DonHang_KhachHangId.DisplayMember = "Ten"; DonHang_KhachHangId.ValueMember = "Id"; var lstKhachHang = new List <KhachHang>(); if (loaiDonHang == Define.LoaiDonHangEnum.XuatKho) { lstKhachHang = CRUD.DbContext.KhachHangs.Where(s => s.LoaiKhachHang != Define.LoaiKhachHangEnum.NhaCungCap.ToString()).ToList(); lblKhachHangId.Text = "Khách Hàng"; } else { lstKhachHang = CRUD.DbContext.KhachHangs.Where(s => s.LoaiKhachHang == Define.LoaiKhachHangEnum.NhaCungCap.ToString()).ToList(); } DonHang_KhachHangId.DataSource = new BindingSource((lstKhachHang), null); _loaiDonHang = loaiDonHang; _domainData = data; if (_domainData == null) { _domainData = new DonHang(); } Init(_domainData); if (_domainData.Id > 0) { _chiTietDonhang = new BindingList <ChiTietDonHang>(_domainData.ChiTietDonHangs.ToList()); if (_domainData.KhachHangId == Define.KhachLeId) { var khachLe = lstKhachHang.FirstOrDefault(s => s.Id == Define.KhachLeId); if (khachLe != null) { khachLe.Ten = _domainData.Ten; } } btnDelete.Visible = true; _chiTietDonhang.ForEach(s => s.ListChiTietHangHoa = s.ChiTietHangHoas.ToList()); } else { btnDelete.Visible = false; _domainData.NgayLap = TimeHelper.CurentDateTime(); } // Get list hang hoa var dataSource = CRUD.DbContext.KhoHangs .Where(s => s.IsActived == null || s.IsActived == true) .Select(s => new { s.TenHang, s.Id }) .Union(CRUD.DbContext.ChiTietDonHangs.Join(CRUD.DbContext.KhoHangs, ctdh => ctdh.HangHoaId, kh => kh.Id, (ctdh, kh) => new { kh.TenHang, kh.Id })).ToList(); FormBehavior.DecoreateLookEdit(listHangHoa, dataSource, "TenHang"); listHangHoa.EditValueChanged += listHangHoa_EditValueChanged; gridControlChiTiet.DataSource = _chiTietDonhang; btnDeleteRow.ButtonClick += btnDeleteRow_ButtonClick; UpdateTongTien(); UpdateNo(); }
public Spider(IHTMLElement spawn) //: base(spawn) { MyStatus.Visible = false; System.Console.WriteLine("--- spider ---"); BackgroundImage.ToDocumentBackground(); Native.Document.body.style.overflow = IStyle.OverflowEnum.hidden; var level = LevelEasy; if (Native.Document.location.search == "?hard") level = LevelHard; if (Native.Document.location.search == "?medium") level = LevelMedium; var top = CardInfo.Height / 2 + 12; var bottom = 500; MyStatus.MoveTo(new Point(500, bottom)); var usesound_cookie = Storage["usesound"]; MyStatus.Update(); MyStatus.SoundSettingChanged += delegate { MySounds.Enabled = MyStatus.UseSounds; usesound_cookie.BooleanValue = MyStatus.UseSounds; }; MyStatus.UseSounds = usesound_cookie.BooleanValue; Native.Window.onresize += delegate { MyStatus.MoveTo(new Point(500, BottomY)); foreach (CardStack v in DealStacks) { v.MoveTo(new Point(v.Position.X, BottomY)); } }; System.Console.WriteLine("adding card infos... "); MyDeck.UnusedCards.AddRange(CardInfo.By(2, level)); MyDeck.RankConverter = RankConverter; System.Console.WriteLine("creating stacklists... "); DealStacks = MyDeck.CreateStackList(); PlayStacks = MyDeck.CreateStackList(); DeadStacks = MyDeck.CreateStackList(); PlayStacks.ListChanged += (sender, args) => { if (args.ListChangedType == ListChangedType.ItemAdded) { var s = PlayStacks[args.NewIndex]; s.SetBackground(MyDeck.GfxPath + "/spider.empty.png"); } }; DeadStacks.ListChanged += (sender, args) => { if (args.ListChangedType == ListChangedType.ItemAdded) { var s = DeadStacks[args.NewIndex]; s.Control.Hide(); s.CardMargin = new Point(2, 0); s.Cards.ListChanged += (sender2, args2) => { if (args2.ListChangedType == ListChangedType.ItemAdded) s[args2.NewIndex].Enabled = false; }; } }; #region drag rules MyDeck.ApplyCardRules += delegate(Card c) { c.Info.CustomBackground = "spider"; c.Update(); c.Moved += delegate { if (!this.MyStatus.Ready) return; //AddScore(1); // check for good suit var s = c.CurrentStack; CheckForGoodSuit(s); }; #region sounds c.Drag.DragStop += delegate { MySounds.PlaySoundDrop(); }; c.Drag.DragStart += delegate { MySounds.PlaySoundDrag(); }; #endregion #region automove c.DoubleClick += delegate { TryAutoMove(c); }; c.Drag.MiddleClick += delegate { TryAutoMove(c); }; #endregion // rules for starting a drag c.Drag.DragStartValidate += delegate(Predicate p) { if (!MyStatus.Ready) { p.Value = false; return; } if (CheatNoValidation) return; p.Value = Predicate.Invoke(c, IsDraggableFormPlayStack); }; // rules for ending a drag c.ValidateDragStop += delegate(Predicate<CardStack> p) { if (CheatNoValidation) return; if (Predicate.Invoke(p.Target, c, IsFitForPlayStack)) { return; } p.Target = null; }; }; #endregion System.Console.WriteLine("creating playstack... "); PlayStacks.Add( new CardStack(new Point(50, top), MyDeck.FetchCards(5)), new CardStack(new Point(150, top), MyDeck.FetchCards(5)), new CardStack(new Point(250, top), MyDeck.FetchCards(5)), new CardStack(new Point(350, top), MyDeck.FetchCards(5)), new CardStack(new Point(450, top), MyDeck.FetchCards(4)), new CardStack(new Point(550, top), MyDeck.FetchCards(4)), new CardStack(new Point(650, top), MyDeck.FetchCards(4)), new CardStack(new Point(750, top), MyDeck.FetchCards(4)), new CardStack(new Point(850, top), MyDeck.FetchCards(4)), new CardStack(new Point(950, top), MyDeck.FetchCards(4)) ); PlayStacks.ForEach( (System.Action<CardStack>) delegate(CardStack s) { s.Cards.ListChanged += (sender, args) => { if (args.ListChangedType == ListChangedType.ItemDeleted) if (MyStatus.Ready) s.RevealLastCard(); }; s.CardsMovedToStack += delegate { if (MyStatus.Ready) { MyStatus.Score--; MyStatus.Moves++; MyStatus.Update(); } }; } ); DealStacks.ListChanged += (sender, args) => { if (args.ListChangedType == ListChangedType.ItemAdded) { var s = DealStacks[args.NewIndex]; s.CardMargin *= 0; s.Update(); s.Click += delegate { if (DealStacks.Contains(s)) { if (MyStatus.Ready) DealRow(null); } else { System.Console.WriteLine("whoops wrong stack click "); } }; } }; System.Console.WriteLine("creating dealstack... "); var dealpoint = new Point(860, bottom); while (MyDeck.UnusedCards.Count > 0) { DealStacks.Add( new CardStack(dealpoint, MyDeck.FetchCards(10)) ); dealpoint -= new Point(10, 0); } DeadStacks.Add(new CardStack(new Point(150, bottom))); if (CheatReveal) DoCheatRevealAllCards(); MyDeck.ToConsole(); DealRow( delegate { MyStatus.Ready = true; MyStatus.Score = 500; MyStatus.Moves = 0; MyStatus.Visible = true; MyStatus.Update(); } ); }
private void mnuChSelectAll_Click(object sender, RoutedEventArgs e) { mangaChapters.ForEach((ch) => ch.IsChecked = true); }
private async Task LoadTorrentQueryModels() { var result = (await TorrentsQuery.GetTorrentQueryModelsAsync()); Torrents = new BindingList<TorrentQueryModel>(result); var totalFileSize = new FileSize(); Torrents.ForEach(it => { totalFileSize += it.FileSize; }); TotalSize = totalFileSize.RawValue; }