using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace MonsterOrganizer
{
public class Carta
{
//Struttura
public PictureBox Sfondo;
public PictureBox Img;
//Dati
private Label Nome;
private Label HP_title;
private Label HP;
private PictureBox HP_red;
private PictureBox HP_green;
private NumericUpDown HP_control;
private Label CA_title;
public Label CA;
private Label BAB_title;
public Label BAB;
private Label Ini_title;
public Label Ini;
private Label Tag_title;
public Label Tag;
private Label Arma1_title;
public Label Arma1;
public Label Danno1;
private Label Arma2_title;
public Label Arma2;
public Label Danno2;
private Label Arma3_title;
public Label Arma3;
public Label Danno3;
private Label Vel_title;
public Label Vel;
private Label Cap_title;
public Label Cap;
public TextBox Tpc;
private Button Tpc_Thrown;
private double div = 1;
public Carta(int num, int tot)
{
SetUpStructure(num, tot);
}
//Posiziona tutti gli elementi all'interno della scheda con riferimento all'angolo in alto a sinistra dello sfondo
//e assegna ad ognuno un valore fittizio prima che vengano caricati i dati
private void SetUpStructure(int num, int tot)
{
short x = 326;
short y = 530;
short xl = 12;
short yl = 27;
switch (tot)
{
case 1:
{
xl = Convert.ToInt16((1014 - x) / 2);
break;
}
case 2:
{
xl = Convert.ToInt16((1014 / 2 - 6 - x) + ((x + 6) * num));
break;
}
case 3:
{
xl = Convert.ToInt16(12 + ((x + 6) * num));
break;
}
case 4:
{
div = 1.342;
xl = Convert.ToInt16(12 + ((x / div + 6) * num));
yl = Convert.ToInt16(27 + (y - y / div) / 2);
break;
}
case 5:
{
div = 1.689;
xl = Convert.ToInt16(12 + ((x / div + 6) * num));
yl = Convert.ToInt16(27 + (y - y / div) / 2);
break;
}
case 6:
{
div = 2.037;
xl = Convert.ToInt16(12 + ((x / div + 6) * num));
yl = Convert.ToInt16(27 + (y - y / div) / 2);
break;
}
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
{
int down = 0;
if (num >= 6) down = 1;
div = 2.037;
xl = Convert.ToInt16(12 + ((x / div + 6) * (num - (down * 6))));
yl = Convert.ToInt16(27 + ((y / div + 6) * down));
break;
}
};
x = Convert.ToInt16(x / div);
y = Convert.ToInt16(y / div);
Sfondo = new PictureBox();
Sfondo.Size = new Size(x, y);
Sfondo.Location = new Point(xl, yl);
Sfondo.SizeMode = PictureBoxSizeMode.StretchImage;
Sfondo.Image = Properties.Resources.ResourceManager.GetObject("Carta") as Image;
Sfondo.Enabled = true;
Sfondo.Visible = true;
Img = new PictureBox();
Img.Size = new Size(Convert.ToInt16(120 / div), Convert.ToInt16(120 / div));
Img.SizeMode = PictureBoxSizeMode.StretchImage;
Img.Location = new Point(Sfondo.Location.X + (int)(Math.Round(6 / div)),
Sfondo.Location.Y + (int)(Math.Round(6 / div)));
Img.Image = GetImage();
Nome = new Label();
Nome.AutoSize = true;
Nome.Location = new Point(Sfondo.Location.X + (int)(Math.Round(12 / div)) + Img.Width,
Sfondo.Location.Y + (int)(Math.Round(6 / div)));
Nome.Font = new Font("Calibri", (int)(Math.Round(20 / div)));
Nome.ForeColor = Color.Purple;
Nome.Text = "Name";
Nome.BackColor = Color.FromArgb(221, 238, 239);
CA_title = new Label();
CA_title.AutoSize = true;
CA_title.Location = new Point(Sfondo.Location.X + (int)(Math.Round(12 / div)) + Img.Width,
Sfondo.Location.Y + (int)(Math.Round(50 / div)));
CA_title.Font = new Font("Calibri", (int)(Math.Round(14 / div)));
CA_title.ForeColor = Color.Black;
CA_title.Text = "CA:";
CA_title.BackColor = Color.FromArgb(221, 238, 239);
CA = new Label();
CA.AutoSize = true;
CA.Location = new Point(CA_title.Location.X + (int)(Math.Round(92 / div)),
CA_title.Location.Y);
CA.Font = new Font("Calibri", (int)(Math.Round(14 / div)));
CA.ForeColor = Color.Red;
CA.Text = "10";
CA.BackColor = Color.FromArgb(221, 238, 239);
Vel_title = new Label();
Vel_title.AutoSize = true;
Vel_title.Location = new Point(Sfondo.Location.X + (int)(Math.Round(12 / div)) + Img.Width,
(int)(Math.Round(30 / div)) + CA.Location.Y);
Vel_title.Font = new Font("Calibri", (int)(Math.Round(14 / div)));
Vel_title.ForeColor = Color.Black;
Vel_title.Text = "Velocità:";
Vel_title.BackColor = Color.FromArgb(221, 238, 239);
Vel = new Label();
Vel.AutoSize = true;
Vel.Location = new Point(Vel_title.Location.X + (int)(Math.Round(86 / div)) + (int)(Math.Round(6 / div)),
Vel_title.Location.Y);
Vel.Font = new Font("Calibri", (int)(Math.Round(14 / div)));
Vel.ForeColor = Color.Red;
Vel.Text = "9 m";
Vel.BackColor = Color.FromArgb(221, 238, 239);
Tag_title = new Label();
Tag_title.AutoSize = true;
Tag_title.Location = new Point(Sfondo.Location.X + (int)(Math.Round(12 / div)) + Img.Width,
(int)(Math.Round(60 / div)) + CA.Location.Y);
Tag_title.Font = new Font("Calibri", (int)(Math.Round(14 / div)));
Tag_title.ForeColor = Color.Black;
Tag_title.Text = "Taglia:";
Tag_title.BackColor = Color.FromArgb(221, 238, 239);
Tag = new Label();
Tag.AutoSize = true;
Tag.Location = new Point(Tag_title.Location.X + (int)(Math.Round(86 / div)) + (int)(Math.Round(6 / div)),
Tag_title.Location.Y);
Tag.Font = new Font("Calibri", (int)(Math.Round(14 / div)));
Tag.ForeColor = Color.Red;
Tag.Text = "Media";
Tag.BackColor = Color.FromArgb(221, 238, 239);
HP_title = new Label();
HP_title.AutoSize = true;
HP_title.Location = new Point(Sfondo.Location.X + (int)(Math.Round(10 / div)),
Sfondo.Location.Y + (int)(Math.Round(20 / div)) + Img.Height);
HP_title.Font = new Font("Calibri", (int)(Math.Round(14 / div)));
HP_title.ForeColor = Color.Black;
HP_title.Text = "HP:";
HP_title.BackColor = Color.FromArgb(221, 238, 239);
HP = new Label();
HP.AutoSize = true;
HP.Location = new Point(HP_title.Location.X + (int)(Math.Round(50 / div)),
HP_title.Location.Y);
HP.Font = new Font("Calibri", (int)(Math.Round(14 / div)), FontStyle.Bold);
HP.ForeColor = Color.Red;
HP.Text = "10";
HP.BackColor = Color.FromArgb(221, 238, 239);
HP_control = new NumericUpDown();
HP_control.Size = new Size(18, 20);
HP_control.Minimum = 0;
HP_control.Maximum = 10;
HP_control.Value = 10;
HP_control.Location = new Point(HP_title.Location .X, HP_title .Location .Y + (int)(Math.Round(40 / div)));
HP_control.ValueChanged += new System.EventHandler(NUP_Value_Changed);
HP_green = new PictureBox();
HP_green.BackColor = Color.Green;
HP_green.Size = new Size((int)(Math.Round(250 / div)), 30);
HP_green.Location = new Point(HP_control.Location.X + (int)(Math.Round(40 / div)),
HP_control.Location.Y - (int)((HP_green.Height - HP_control.Height) / 2));
HP_red = new PictureBox();
HP_red.BackColor = Color.Red;
HP_red.Size = new Size(0, 30);
HP_red.Location = new Point(HP_green.Location.X + HP_green.Width, HP_green.Location.Y);
BAB_title = new Label();
BAB_title.AutoSize = true;
BAB_title.Location = new Point(Sfondo.Location.X + (int)(Math.Round(190 / div)),
Sfondo.Location.Y + (int)(Math.Round(20 / div)) + Img.Height);
BAB_title.Font = new Font("Calibri", (int)(Math.Round(14 / div)));
BAB_title.ForeColor = Color.Black;
BAB_title.Text = "BAB:";
BAB_title.BackColor = Color.FromArgb(221, 238, 239);
BAB = new Label();
BAB.AutoSize = true;
BAB.Location = new Point(BAB_title.Location.X + (int)(Math.Round(50 / div)),
BAB_title.Location.Y);
BAB.Font = new Font("Calibri", (int)(Math.Round(14 / div)));
BAB.ForeColor = Color.Red;
BAB.Text = "3";
BAB.BackColor = Color.FromArgb(221, 238, 239);
Arma1_title = new Label();
Arma1_title.AutoSize = true;
Arma1_title.Location = new Point(Sfondo.Location.X + (int)(Math.Round(10 / div)),
Sfondo.Location.Y + (int)(Math.Round(110 / div)) + Img.Height);
Arma1_title.Font = new Font("Calibri", (int)(Math.Round(14 / div)));
Arma1_title.ForeColor = Color.Black;
Arma1_title.Text = "Arma 1:";
Arma1_title.BackColor = Color.FromArgb(221, 238, 239);
Arma1 = new Label();
Arma1.AutoSize = true;
Arma1.Location = new Point(Arma1_title.Location.X,
Arma1_title.Location.Y + (int)(Math.Round(20 / div)));
Arma1.Font = new Font("Calibri", (int)(Math.Round(12 / div)));
Arma1.ForeColor = Color.Red;
Arma1.Text = "Questa è l'arma con cui ti picchio";
Arma1.BackColor = Color.FromArgb(221, 238, 239);
Danno1 = new Label();
Danno1.AutoSize = true;
Danno1.Location = new Point(Arma1.Location.X,
Arma1.Location.Y + (int)(Math.Round(20 / div)));
Danno1.Font = new Font("Calibri", (int)(Math.Round(12 / div)));
Danno1.ForeColor = Color.Red;
Danno1.Text = "E ti faccio tanto male";
Danno1.BackColor = Color.FromArgb(221, 238, 239);
Arma2_title = new Label();
Arma2_title.AutoSize = true;
Arma2_title.Location = new Point(Sfondo.Location.X + (int)(Math.Round(10 / div)),
Sfondo.Location.Y + (int)(Math.Round(170 / div)) + Img.Height);
Arma2_title.Font = new Font("Calibri", (int)(Math.Round(14 / div)));
Arma2_title.ForeColor = Color.Black;
Arma2_title.Text = "Arma 2:";
Arma2_title.BackColor = Color.FromArgb(221, 238, 239);
Arma2 = new Label();
Arma2.AutoSize = true;
Arma2.Location = new Point(Arma2_title.Location.X,
Arma2_title.Location.Y + (int)(Math.Round(20 / div)));
Arma2.Font = new Font("Calibri", (int)(Math.Round(12 / div)));
Arma2.ForeColor = Color.Red;
Arma2.Text = "Questa è l'arma con cui ti picchio";
Arma2.BackColor = Color.FromArgb(221, 238, 239);
Danno2 = new Label();
Danno2.AutoSize = true;
Danno2.Location = new Point(Arma2.Location.X,
Arma2.Location.Y + (int)(Math.Round(20 / div)));
Danno2.Font = new Font("Calibri", (int)(Math.Round(12 / div)));
Danno2.ForeColor = Color.Red;
Danno2.Text = "E ti faccio tanto male";
Danno2.BackColor = Color.FromArgb(221, 238, 239);
Arma3_title = new Label();
Arma3_title.AutoSize = true;
Arma3_title.Location = new Point(Sfondo.Location.X + (int)(Math.Round(10 / div)),
Sfondo.Location.Y + (int)(Math.Round(230 / div)) + Img.Height);
Arma3_title.Font = new Font("Calibri", (int)(Math.Round(14 / div)));
Arma3_title.ForeColor = Color.Black;
Arma3_title.Text = "Arma 3:";
Arma3_title.BackColor = Color.FromArgb(221, 238, 239);
Arma3 = new Label();
Arma3.AutoSize = true;
Arma3.Location = new Point(Arma3_title.Location.X,
Arma3_title.Location.Y + (int)(Math.Round(20 / div)));
Arma3.Font = new Font("Calibri", (int)(Math.Round(12 / div)));
Arma3.ForeColor = Color.Red;
Arma3.Text = "Questa è l'arma con cui ti picchio";
Arma3.BackColor = Color.FromArgb(221, 238, 239);
Danno3 = new Label();
Danno3.AutoSize = true;
Danno3.Location = new Point(Arma3.Location.X,
Arma3.Location.Y + (int)(Math.Round(20 / div)));
Danno3.Font = new Font("Calibri", (int)(Math.Round(12 / div)));
Danno3.ForeColor = Color.Red;
Danno3.Text = "E ti faccio tanto male";
Danno3.BackColor = Color.FromArgb(221, 238, 239);
Cap_title = new Label();
Cap_title.AutoSize = true;
Cap_title.Location = new Point(Sfondo.Location.X + (int)(Math.Round(10 / div)),
Sfondo.Location.Y + (int)(Math.Round(300 / div)) + Img.Height);
Cap_title.Font = new Font("Calibri", (int)(Math.Round(14 / div)));
Cap_title.ForeColor = Color.Black;
Cap_title.Text = "Capacità:";
Cap_title.BackColor = Color.FromArgb(221, 238, 239);
Cap = new Label();
Cap.AutoSize = true;
Cap.Location = new Point(Cap_title.Location.X,
Cap_title.Location.Y + (int)(Math.Round(20 / div)));
Cap.Font = new Font("Calibri", (int)(Math.Round(12 / div)));
Cap.ForeColor = Color.Red;
Cap.Text = "Ho anche questa capacità quindi ti powno";
Cap.BackColor = Color.FromArgb(221, 238, 239);
Ini_title = new Label();
Ini_title.AutoSize = true;
Ini_title.Location = new Point(Sfondo.Location.X + (int)(Math.Round(200 / div)),
Sfondo.Location.Y + (int)(Math.Round(360 / div)) + Img.Height);
Ini_title.Font = new Font("Calibri", (int)(Math.Round(14 / div)));
Ini_title.ForeColor = Color.Black;
Ini_title.Text = "Iniziativa:";
Ini_title.BackColor = Color.FromArgb(221, 238, 239);
Ini = new Label();
Ini.AutoSize = true;
Ini.Location = new Point(Ini_title.Location.X + (int)(Math.Round(90 / div)),
Ini_title.Location.Y);
Ini.Font = new Font("Calibri", (int)(Math.Round(14 / div)));
Ini.ForeColor = Color.Red;
Ini.Text = "17";
Ini.BackColor = Color.FromArgb(221, 238, 239);
Tpc = new TextBox();
Tpc.Size = new Size(22, 31);
Tpc.Location = new Point(Sfondo.Location.X + (int)(Math.Round(10 / div)),
Sfondo.Location.Y + (int)(Math.Round(340 / div)) + Img.Height);
Tpc.Font = new Font("Calibri", 10);
Tpc.Text = "0";
Tpc_Thrown = new Button();
Tpc_Thrown.Size = new Size(70, 24);
Tpc_Thrown.Location = new Point(Tpc.Location.X + (int)(Math.Round(42 / div)),
Tpc.Location.Y);
Tpc_Thrown.Font = new Font("Calibri", 11);
Tpc_Thrown.Text = "Tira! - 0";
Tpc_Thrown.Click += new System.EventHandler(ThrowDice);
}
//Imposta l'immagine in alto a sinistra della scheda a seconda del nome
private Image GetImage()
{
Image I = Properties.Resources.ResourceManager.GetObject("Noimage") as Image;
try
{
I = Properties.Resources.ResourceManager.GetObject(Nome.Text) as Image;
}
catch
{
return I;
}
return I;
}
//metodo pubblico per poter impostare il nome e contemporaneamente l'immagine
public void SetName(string nome)
{
Nome.Text = nome;
Img.Image = GetImage();
return;
}
//Impostando gli HP tramite un metodo è possibile impostare contemporaneamente i valori per
//le barre verdi e rosse e le freccette per regolarli
public void SetHP(int Hp)
{
HP.Text = Convert.ToString(Hp);
HP_control.Maximum = Hp;
HP_control.Value = Hp;
return;
}
//Inserisce i controlli nel form F
public void AddControls(Form F)
{
F.Controls.Add(Nome);
F.Controls.Add(Sfondo);
F.Controls.Add(Img);
F.Controls.Add(CA_title);
F.Controls.Add(CA);
F.Controls.Add(Vel_title);
F.Controls.Add(Vel);
F.Controls.Add(Tag_title);
F.Controls.Add(Tag);
F.Controls.Add(HP_title);
F.Controls.Add(HP);
F.Controls.Add(HP_control);
F.Controls.Add(HP_green);
F.Controls.Add(HP_red);
F.Controls.Add(BAB_title);
F.Controls.Add(BAB);
F.Controls.Add(Arma1_title);
F.Controls.Add(Arma1);
F.Controls.Add(Danno1);
F.Controls.Add(Arma2_title);
F.Controls.Add(Arma2);
F.Controls.Add(Danno2);
F.Controls.Add(Arma3_title);
F.Controls.Add(Arma3);
F.Controls.Add(Danno3);
F.Controls.Add(Cap_title);
F.Controls.Add(Cap);
F.Controls.Add(Ini_title);
F.Controls.Add(Ini);
F.Controls.Add(Tpc);
F.Controls.Add(Tpc_Thrown);
Sfondo.SendToBack();
Img.BringToFront();
HP_red.BringToFront();
return;
}
//Rimuove i controlli dal form in caso di caricamento di un nuovo file
public void DelControls(Form F)
{
F.Controls.Remove(Nome);
F.Controls.Remove(Sfondo);
F.Controls.Remove(Img);
F.Controls.Remove(CA_title);
F.Controls.Remove(CA);
F.Controls.Remove(Vel_title);
F.Controls.Remove(Vel);
F.Controls.Remove(Tag_title);
F.Controls.Remove(Tag);
F.Controls.Remove(HP_title);
F.Controls.Remove(HP);
F.Controls.Remove(HP_control);
F.Controls.Remove(HP_green);
F.Controls.Remove(HP_red);
F.Controls.Remove(BAB_title);
F.Controls.Remove(BAB);
F.Controls.Remove(Arma1_title);
F.Controls.Remove(Arma1);
F.Controls.Remove(Danno1);
F.Controls.Remove(Arma2_title);
F.Controls.Remove(Arma2);
F.Controls.Remove(Danno2);
F.Controls.Remove(Arma3_title);
F.Controls.Remove(Arma3);
F.Controls.Remove(Danno3);
F.Controls.Remove(Cap_title);
F.Controls.Remove(Cap);
F.Controls.Remove(Ini_title);
F.Controls.Remove(Ini);
F.Controls.Remove(Tpc);
F.Controls.Remove(Tpc_Thrown);
return;
}
//Evento della modifica degli hp, per far operare le barre rosse e verdi
private void NUP_Value_Changed(object sender, EventArgs e)
{
short max_hp = Convert.ToInt16(HP_control.Maximum);
short max_width = Convert.ToInt16(HP_green.Width);
HP_red.Width = max_width - (int)Math.Round(max_width * HP_control.Value / max_hp);
HP_red.Location = new Point(HP_green.Location.X + HP_green.Width - HP_red.Width, HP_red.Location.Y);
HP.Text = HP_control.Value.ToString ();
return;
}
//Evento del bottone "Tira!" per ottenere un numero casuale
private void ThrowDice(object sender, EventArgs e)
{
short a = 0;
try
{
a = Convert.ToInt16(Tpc.Text);
}
catch { }
Random R = new Random();
Tpc_Thrown.Text = "Tira! - " + (a + R.Next(1, 21));
return;
}
}
}