private void OnCombo(HashSet <AbstractBlock> aMatchedBlocks) { Console.WriteLine($"Combo! {aMatchedBlocks.Count}"); const float MagicNumber = 0.3f; if (myChainTimer < 0.0f) { myChainTimer = 0.0f; } myChainTimer += (aMatchedBlocks.Count * MagicNumber) / myModifiedGameSpeed; CreateAngryComboBlock(aMatchedBlocks.Count - 1); AbstractBlock rightMostTopMostBlock = aMatchedBlocks.First(); foreach (AbstractBlock block in aMatchedBlocks) { if (block.GetPosition().X > rightMostTopMostBlock.GetPosition().X) { rightMostTopMostBlock = block; } else if (block.GetPosition().X == rightMostTopMostBlock.GetPosition().X) { if (block.GetPosition().Y > rightMostTopMostBlock.GetPosition().Y) { rightMostTopMostBlock = block; } } } Vector2 blockScreenPosition = rightMostTopMostBlock.GetScreenPosition(myOffset, myGridContainer.GetInitialHeight() - 1, myRaisingOffset); Vector2 feedbackOffset = new Vector2(AbstractBlock.GetTileSize(), AbstractBlock.GetTileSize()) / 2f; Vector2 feedbackPosition = blockScreenPosition + feedbackOffset; FeedbackManager.AddFeedback(new ChainComboFeedback("", aMatchedBlocks.Count, feedbackPosition)); }
private void OnChainIncrement(int aChainLength, HashSet <AbstractBlock> aMatchedBlocks) { Console.WriteLine($"Chain {aChainLength}!"); myChainTimer = Math.Max(1.0f, myChainTimer + 1.0f); AbstractBlock rightMostTopMostBlock = aMatchedBlocks.First(); foreach (AbstractBlock block in aMatchedBlocks) { if (block.GetPosition().X > rightMostTopMostBlock.GetPosition().X) { rightMostTopMostBlock = block; } else if (block.GetPosition().X == rightMostTopMostBlock.GetPosition().X) { if (block.GetPosition().Y > rightMostTopMostBlock.GetPosition().Y) { rightMostTopMostBlock = block; } } } Vector2 blockScreenPosition = rightMostTopMostBlock.GetScreenPosition(myOffset, myGridContainer.GetInitialHeight() - 1, myRaisingOffset); Vector2 feedbackOffset = new Vector2(AbstractBlock.GetTileSize(), AbstractBlock.GetTileSize()) / 2f; Vector2 feedbackPosition = blockScreenPosition + feedbackOffset; FeedbackManager.AddFeedback(new ChainComboFeedback("x", aChainLength, feedbackPosition)); }
private void DeadFeedback() { Vector2 middleOfGrid = new Vector2(); middleOfGrid.X = myGridContainer.GetInitialWidth() / 2 * AbstractBlock.GetTileSize(); middleOfGrid.Y = myGridContainer.GetInitialHeight() / 2 * AbstractBlock.GetTileSize(); SpriteFeedback losar = new SpriteFeedback("losar", myOffset + middleOfGrid, () => { return(myIsDead == false); }); FeedbackManager.AddFeedback(losar); }
public void Raise(float RaiseAmount) { RaiseAmount *= 0.1f; if (myWantsToRaiseBlocks && MyManualRaisingSpeed > RaiseAmount) { RaiseAmount = MyManualRaisingSpeed; } myRaisingOffset -= (RaiseAmount / AbstractBlock.GetTileSize()); if (RaisingOffsetExceededTile() == true) { RearrangeRaisedTiles(); myRaisingOffset = 0.0f; myHasRaisedThisFrame = true; } }
// -Player Actions public void Draw(SpriteBatch aSpriteBatch) { foreach (AbstractBlock iBlock in myGridContainer.myBlocks) { iBlock.Draw(aSpriteBatch, myOffset, myGridContainer.GetInitialHeight() - 1, myRaisingOffset); } myBorderSprite.SetPosition(new Vector2(myOffset.X - 2, 6 - AbstractBlock.GetTileSize())); myBorderSprite.Draw(aSpriteBatch); aSpriteBatch.DrawString(myFont, "Bonus time: " + myChainTimer.ToString() + "\nGame Time: " + ((int)(myGameTime / 60)).ToString() + ":" + ((int)(myGameTime % 60)).ToString() + "\nGame Speed: " + myGameSpeed.ToString() + "\nLog Speed: " + myModifiedGameSpeed.ToString() , new Vector2(900, 100), Color.MidnightBlue); }
public virtual void DebugDied(int aPlayerIndex) { if (aPlayerIndex != myPlayerInfo.myPlayerIndex) { return; } Vector2 smallOffset = new Vector2(); smallOffset.X = myGridBundle.Container.GetInitialWidth() / 3 * AbstractBlock.GetTileSize(); smallOffset.Y = myGridBundle.Container.GetInitialHeight() / 3 * AbstractBlock.GetTileSize(); SpriteFeedback losar = new SpriteFeedback("fantastiskt", myGridBundle.Behavior.GetOffset() + smallOffset, () => { return(myGridBundle.Behavior.myIsDead == false); }); FeedbackManager.AddFeedback(losar); }