From 84fbc29f2cbeca36833aaa69b2d802fd2f4c4833 Mon Sep 17 00:00:00 2001
From: bionic85 <144353436+bionic85@users.noreply.github.com>
Date: Mon, 16 Dec 2024 22:22:40 +0100
Subject: [PATCH] added embeded image features thingy

very cool
---
 PuzzlePlayer/BlackJack.cs        |  55 +++++++++-----
 PuzzlePlayer/PuzzlePlayer.cs     |   8 +-
 PuzzlePlayer/PuzzlePlayer.csproj | 124 +++++++++++++++++++++++++++++++
 PuzzlePlayer/SettingForm.cs      |  11 +++
 4 files changed, 177 insertions(+), 21 deletions(-)

diff --git a/PuzzlePlayer/BlackJack.cs b/PuzzlePlayer/BlackJack.cs
index e31b77c..c9dc833 100644
--- a/PuzzlePlayer/BlackJack.cs
+++ b/PuzzlePlayer/BlackJack.cs
@@ -1,8 +1,11 @@
 using Microsoft.VisualBasic.Devices;
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Drawing;
+using System.IO;
 using System.Linq;
+using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
@@ -15,13 +18,20 @@ namespace PuzzlePlayer_Namespace
         Game,   // play the game
         Result, // see te result and then restart
     }
+
+    struct Card
+    {
+        string name;    // for drawing the card, needs to be in format num_of_kind
+        int value;      // value of the card
+        int value2;     // some cards have two values
+    }
+
     internal class BlackJack : Form
     {
         BJSTATE state;
         int money;
-        int deploydMoney = 0;
-        const string DIR = @"..\..\..\Resources\BlackJack\";
-        FontFamily BJFont = FontFamily.GenericSansSerif;
+        int deployedMoney = 0;
+        readonly FontFamily BJFont = FontFamily.GenericSansSerif;
 
         Size screen = Screen.PrimaryScreen.WorkingArea.Size;
         
@@ -30,6 +40,8 @@ namespace PuzzlePlayer_Namespace
         Panel GamePanel;
         Panel ResultPanel;
 
+        List<Card> cards;
+
         (int,string,Color)[] chipInfo = { (5,"5",Color.Gray), (25, "25", Color.Blue), (50, "50", Color.Green), (100, "100", Color.DarkCyan), (500, "500", Color.Purple), (1000, "1K", Color.Red), (5000, "5K", Color.Orange), (10000, "10K", Color.Gold) };
 
         public object Int { get; private set; }
@@ -56,11 +68,11 @@ namespace PuzzlePlayer_Namespace
             //Setup
             #region SetupPanel
             SetupPanel = new Panel();
-            SetupPanel.Size = new Size(screen.Width/2,screen.Height);// /4
+            SetupPanel.Size = new Size(screen.Width/2,screen.Height);
             SetupPanel.Location = new Point(screen.Width / 4, 0);
             //DefaultPanel.BackColor = Color.Blue; //DEBUG
 
-            SetupPanel.Paint += DefaultPaint;
+            SetupPanel.Paint += Setup_Paint;
 
             //money buttons
             int goofyIndex = 0; //dw
@@ -92,7 +104,7 @@ namespace PuzzlePlayer_Namespace
             dealButton.BackColor = Color.DodgerBlue;
             dealButton.Click += (object o, EventArgs e) =>
             {
-                if (deploydMoney == 0)
+                if (deployedMoney == 0)
                     return;
                 SetupPanel.Hide();
                 GamePanel.Show();
@@ -106,7 +118,13 @@ namespace PuzzlePlayer_Namespace
             //Game
             #region GamePanel
             GamePanel = new Panel();
-            GamePanel.BackColor = Color.AliceBlue; //DEBUG
+            GamePanel.Paint += Game_Paint;
+            GamePanel.Size = new Size((int)(screen.Width / 1.5), screen.Height);
+            GamePanel.Location = new Point((screen.Width - GamePanel.Size.Width)/2, 0);
+            GamePanel.BackColor = Color.Red; //DEBUG
+            
+            
+            
             GamePanel.Hide(); //Hide until the game state is reached
             Controls.Add(GamePanel);
             #endregion
@@ -128,7 +146,7 @@ namespace PuzzlePlayer_Namespace
 
             if(money >= chip.Item1)
             {
-                deploydMoney += chip.Item1;
+                deployedMoney += chip.Item1;
                 money -= chip.Item1;
             }
             Invalidate(true);
@@ -142,34 +160,37 @@ namespace PuzzlePlayer_Namespace
             Font moneyFont = new Font(BJFont, screen.Width/50, FontStyle.Bold);
             g.DrawString("Money: " + money.ToString(), moneyFont, Brushes.Black, new PointF(0,0));
 
+            /*
             switch(state) // paint according to the current state
             {
                 case BJSTATE.Setup:
                     //Setup_Paint(g);
                     break;
                 case BJSTATE.Game:
-                    Game_Paint(g);
+                    //Game_Paint(g);
                     break;
                 case BJSTATE.Result:
-                    Result_Paint(g);
+                    //Result_Paint(g);
                     break;
-            }
+            }*/
         }
-        private void DefaultPaint(object sender, PaintEventArgs e)
+        private void Setup_Paint(object sender, PaintEventArgs e)
         {
             Graphics g = e.Graphics;
+
             // draw deployd money
             // Might update this to butiful chipss
-            string s = "Deployd Money: " + deploydMoney.ToString();
+            string s = "Deployd Money: " + deployedMoney.ToString();
             Font deplMoneyFont = new Font(BJFont, SetupPanel.Width / 20, FontStyle.Bold);
             SizeF pf = g.MeasureString(s, deplMoneyFont);
             PointF p = new PointF(SetupPanel.Width / 2 - pf.Width / 2, SetupPanel.Height / 2);
             g.DrawString(s, deplMoneyFont, Brushes.Black, p);
         }
 
-        private void Game_Paint(Graphics g)
+        private void Game_Paint(object sender, PaintEventArgs e)
         {
-
+            Graphics g = e.Graphics;
+            DrawCard(g, new Point(0, 0), 200, "9_of_spades");
         }
 
         private void Result_Paint(Graphics g)
@@ -204,8 +225,8 @@ namespace PuzzlePlayer_Namespace
 
         private void DrawCard(Graphics g, Point pos, int width, string cardName) //cardName needs to be in format: num_of_kind
         {
-            Image img = Image.FromFile(DIR + "cards/" + cardName + ".png"); //img is 500x726
-            g.DrawImage(img, pos.X,pos.Y,width, (float)(width*1.4));
+            Image img = SettingForm.GetEmbeddedImage("BlackJack.cards." + cardName + ".png");
+            g.DrawImage(img, pos.X, pos.Y, width, (float)(width * 1.4)); //img is 500x726
         }
     }
 }
diff --git a/PuzzlePlayer/PuzzlePlayer.cs b/PuzzlePlayer/PuzzlePlayer.cs
index 4c663b4..b9d14b8 100644
--- a/PuzzlePlayer/PuzzlePlayer.cs
+++ b/PuzzlePlayer/PuzzlePlayer.cs
@@ -96,10 +96,10 @@ namespace PuzzlePlayer_Namespace
             // Add a button for each puzzle type
             for (int i = 0; i < puzzleForms.Count; i++)
             {
-                string image = "../../..//Resources/" + $"{puzzleForms[i].puzzleType}";
+                string image = puzzleForms[i].puzzleType;
 
-                Image normalImage = Image.FromFile(image + ".jpg");
-                Image grayImage = Image.FromFile(image + "Gray.jpg");
+                Image normalImage = SettingForm.GetEmbeddedImage(image + ".jpg"); // Image.FromFile(image + ".jpg");
+                Image grayImage = SettingForm.GetEmbeddedImage(image + "Gray.jpg");
 
                 // Set the name of the button
                 RoundedButton button = new RoundedButton
@@ -172,7 +172,7 @@ namespace PuzzlePlayer_Namespace
             blackJackButton.Margin = new Padding(10);
             blackJackButton.Height = 345;
             blackJackButton.Width = 345;
-            blackJackButton.Image = Image.FromFile("../../..//Resources/bj.jpg");
+            blackJackButton.Image = SettingForm.GetEmbeddedImage("bj.jpg");
             blackJackButton.FlatStyle = FlatStyle.Flat;
             blackJackButton.Font = SettingForm.mainFont;
             blackJackButton.Click += (object o, EventArgs e) => {
diff --git a/PuzzlePlayer/PuzzlePlayer.csproj b/PuzzlePlayer/PuzzlePlayer.csproj
index e8d89af..761b306 100644
--- a/PuzzlePlayer/PuzzlePlayer.csproj
+++ b/PuzzlePlayer/PuzzlePlayer.csproj
@@ -9,4 +9,128 @@
     <ImplicitUsings>disable</ImplicitUsings>
   </PropertyGroup>
 
+  <ItemGroup>
+    <None Remove="Resources\Binary.jpg" />
+    <None Remove="Resources\BinaryGray.jpg" />
+    <None Remove="Resources\bj.jpg" />
+    <None Remove="Resources\BlackJack\cards\10_of_clubs.png" />
+    <None Remove="Resources\BlackJack\cards\10_of_diamonds.png" />
+    <None Remove="Resources\BlackJack\cards\10_of_hearts.png" />
+    <None Remove="Resources\BlackJack\cards\10_of_spades.png" />
+    <None Remove="Resources\BlackJack\cards\2_of_clubs.png" />
+    <None Remove="Resources\BlackJack\cards\2_of_diamonds.png" />
+    <None Remove="Resources\BlackJack\cards\2_of_hearts.png" />
+    <None Remove="Resources\BlackJack\cards\2_of_spades.png" />
+    <None Remove="Resources\BlackJack\cards\3_of_clubs.png" />
+    <None Remove="Resources\BlackJack\cards\3_of_diamonds.png" />
+    <None Remove="Resources\BlackJack\cards\3_of_hearts.png" />
+    <None Remove="Resources\BlackJack\cards\3_of_spades.png" />
+    <None Remove="Resources\BlackJack\cards\4_of_clubs.png" />
+    <None Remove="Resources\BlackJack\cards\4_of_diamonds.png" />
+    <None Remove="Resources\BlackJack\cards\4_of_hearts.png" />
+    <None Remove="Resources\BlackJack\cards\4_of_spades.png" />
+    <None Remove="Resources\BlackJack\cards\5_of_clubs.png" />
+    <None Remove="Resources\BlackJack\cards\5_of_diamonds.png" />
+    <None Remove="Resources\BlackJack\cards\5_of_hearts.png" />
+    <None Remove="Resources\BlackJack\cards\5_of_spades.png" />
+    <None Remove="Resources\BlackJack\cards\6_of_clubs.png" />
+    <None Remove="Resources\BlackJack\cards\6_of_diamonds.png" />
+    <None Remove="Resources\BlackJack\cards\6_of_hearts.png" />
+    <None Remove="Resources\BlackJack\cards\6_of_spades.png" />
+    <None Remove="Resources\BlackJack\cards\7_of_clubs.png" />
+    <None Remove="Resources\BlackJack\cards\7_of_diamonds.png" />
+    <None Remove="Resources\BlackJack\cards\7_of_hearts.png" />
+    <None Remove="Resources\BlackJack\cards\7_of_spades.png" />
+    <None Remove="Resources\BlackJack\cards\8_of_clubs.png" />
+    <None Remove="Resources\BlackJack\cards\8_of_diamonds.png" />
+    <None Remove="Resources\BlackJack\cards\8_of_hearts.png" />
+    <None Remove="Resources\BlackJack\cards\8_of_spades.png" />
+    <None Remove="Resources\BlackJack\cards\9_of_clubs.png" />
+    <None Remove="Resources\BlackJack\cards\9_of_diamonds.png" />
+    <None Remove="Resources\BlackJack\cards\9_of_hearts.png" />
+    <None Remove="Resources\BlackJack\cards\9_of_spades.png" />
+    <None Remove="Resources\BlackJack\cards\ace_of_clubs.png" />
+    <None Remove="Resources\BlackJack\cards\ace_of_diamonds.png" />
+    <None Remove="Resources\BlackJack\cards\ace_of_hearts.png" />
+    <None Remove="Resources\BlackJack\cards\ace_of_spades.png" />
+    <None Remove="Resources\BlackJack\cards\jack_of_clubs.png" />
+    <None Remove="Resources\BlackJack\cards\jack_of_diamonds.png" />
+    <None Remove="Resources\BlackJack\cards\jack_of_hearts.png" />
+    <None Remove="Resources\BlackJack\cards\jack_of_spades.png" />
+    <None Remove="Resources\BlackJack\cards\king_of_clubs.png" />
+    <None Remove="Resources\BlackJack\cards\king_of_diamonds.png" />
+    <None Remove="Resources\BlackJack\cards\king_of_hearts.png" />
+    <None Remove="Resources\BlackJack\cards\king_of_spades.png" />
+    <None Remove="Resources\BlackJack\cards\queen_of_clubs.png" />
+    <None Remove="Resources\BlackJack\cards\queen_of_diamonds.png" />
+    <None Remove="Resources\BlackJack\cards\queen_of_hearts.png" />
+    <None Remove="Resources\BlackJack\cards\queen_of_spades.png" />
+    <None Remove="Resources\Maze.jpg" />
+    <None Remove="Resources\MazeGray.jpg" />
+    <None Remove="Resources\Sudoku.jpg" />
+    <None Remove="Resources\SudokuGray.jpg" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <EmbeddedResource Include="Resources\Binary.jpg" />
+    <EmbeddedResource Include="Resources\BinaryGray.jpg" />
+    <EmbeddedResource Include="Resources\bj.jpg" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\10_of_clubs.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\10_of_diamonds.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\10_of_hearts.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\10_of_spades.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\2_of_clubs.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\2_of_diamonds.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\2_of_hearts.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\2_of_spades.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\3_of_clubs.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\3_of_diamonds.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\3_of_hearts.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\3_of_spades.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\4_of_clubs.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\4_of_diamonds.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\4_of_hearts.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\4_of_spades.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\5_of_clubs.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\5_of_diamonds.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\5_of_hearts.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\5_of_spades.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\6_of_clubs.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\6_of_diamonds.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\6_of_hearts.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\6_of_spades.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\7_of_clubs.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\7_of_diamonds.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\7_of_hearts.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\7_of_spades.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\8_of_clubs.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\8_of_diamonds.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\8_of_hearts.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\8_of_spades.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\9_of_clubs.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\9_of_diamonds.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\9_of_hearts.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\9_of_spades.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\ace_of_clubs.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\ace_of_diamonds.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\ace_of_hearts.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\ace_of_spades.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\jack_of_clubs.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\jack_of_diamonds.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\jack_of_hearts.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\jack_of_spades.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\king_of_clubs.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\king_of_diamonds.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\king_of_hearts.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\king_of_spades.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\queen_of_clubs.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\queen_of_diamonds.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\queen_of_hearts.png" />
+    <EmbeddedResource Include="Resources\BlackJack\cards\queen_of_spades.png" />
+    <EmbeddedResource Include="Resources\Maze.jpg" />
+    <EmbeddedResource Include="Resources\MazeGray.jpg" />
+    <EmbeddedResource Include="Resources\Sudoku.jpg" />
+    <EmbeddedResource Include="Resources\SudokuGray.jpg" />
+  </ItemGroup>
+
 </Project>
\ No newline at end of file
diff --git a/PuzzlePlayer/SettingForm.cs b/PuzzlePlayer/SettingForm.cs
index 3f499c4..0b9fc16 100644
--- a/PuzzlePlayer/SettingForm.cs
+++ b/PuzzlePlayer/SettingForm.cs
@@ -2,6 +2,8 @@
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.Drawing;
+using System.IO;
+using System.Reflection;
 using System.Windows.Forms;
 
 namespace PuzzlePlayer_Namespace
@@ -222,5 +224,14 @@ namespace PuzzlePlayer_Namespace
                 }
             }
         }
+
+        public static Image GetEmbeddedImage(string imageWithExtention)
+        {
+            string imagePath = "PuzzlePlayer_Namespace.Resources." + imageWithExtention;
+            Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(imagePath);
+            Image img = Image.FromStream(stream);
+            stream.Dispose();
+            return img;
+        }
     }
 }
-- 
GitLab