|
From: <fr...@us...> - 2007-01-31 19:35:28
|
Revision: 62
http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=62&view=rev
Author: framug
Date: 2007-01-31 11:35:13 -0800 (Wed, 31 Jan 2007)
Log Message:
-----------
Add My ClickMania
Added Paths:
-----------
trunk/plugins/My clickmania/
trunk/plugins/My clickmania/AssemblyInfo.cs
trunk/plugins/My clickmania/Class1.cs
trunk/plugins/My clickmania/ClickMania.cs
trunk/plugins/My clickmania/ClickManiaControl.cs
trunk/plugins/My clickmania/ClickManiaSetup.cs
trunk/plugins/My clickmania/ClickManiaSetup.designer.cs
trunk/plugins/My clickmania/ClickManiaSetup.resx
trunk/plugins/My clickmania/GUIClickMania.csproj
trunk/plugins/My clickmania/GUIClickMania.csproj.user
trunk/plugins/My clickmania/GUIClickMania.sln
trunk/plugins/My clickmania/GUIClickMania.suo
trunk/plugins/My clickmania/UpgradeLog.XML
trunk/plugins/My clickmania/bin/
trunk/plugins/My clickmania/bin/Release/
trunk/plugins/My clickmania/bin/Release/Core.dll
trunk/plugins/My clickmania/bin/Release/Dialogs.dll
trunk/plugins/My clickmania/bin/Release/GUIClickMania.dll
trunk/plugins/My clickmania/bin/Release/Utils.dll
trunk/plugins/My clickmania/myClickMania.cs
Added: trunk/plugins/My clickmania/AssemblyInfo.cs
===================================================================
--- trunk/plugins/My clickmania/AssemblyInfo.cs (rev 0)
+++ trunk/plugins/My clickmania/AssemblyInfo.cs 2007-01-31 19:35:13 UTC (rev 62)
@@ -0,0 +1,58 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+//
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+//
+[assembly: AssemblyTitle("")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+//
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers
+// by using the '*' as shown below:
+
+[assembly: AssemblyVersion("1.0.*")]
+
+//
+// In order to sign your assembly you must specify a key to use. Refer to the
+// Microsoft .NET Framework documentation for more information on assembly signing.
+//
+// Use the attributes below to control which key is used for signing.
+//
+// Notes:
+// (*) If no key is specified, the assembly is not signed.
+// (*) KeyName refers to a key that has been installed in the Crypto Service
+// Provider (CSP) on your machine. KeyFile refers to a file which contains
+// a key.
+// (*) If the KeyFile and the KeyName values are both specified, the
+// following processing occurs:
+// (1) If the KeyName can be found in the CSP, that key is used.
+// (2) If the KeyName does not exist and the KeyFile does exist, the key
+// in the KeyFile is installed into the CSP and used.
+// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
+// When specifying the KeyFile, the location of the KeyFile should be
+// relative to the project output directory which is
+// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
+// located in the project directory, you would specify the AssemblyKeyFile
+// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
+// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
+// documentation for more information on this.
+//
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("")]
+[assembly: AssemblyKeyName("")]
Added: trunk/plugins/My clickmania/Class1.cs
===================================================================
--- trunk/plugins/My clickmania/Class1.cs (rev 0)
+++ trunk/plugins/My clickmania/Class1.cs 2007-01-31 19:35:13 UTC (rev 62)
@@ -0,0 +1,17 @@
+using System;
+
+namespace GUIClickMania
+{
+ /// <summary>
+ /// Summary description for Class1.
+ /// </summary>
+ public class Class1
+ {
+ public Class1()
+ {
+ //
+ // TODO: Add constructor logic here
+ //
+ }
+ }
+}
Added: trunk/plugins/My clickmania/ClickMania.cs
===================================================================
--- trunk/plugins/My clickmania/ClickMania.cs (rev 0)
+++ trunk/plugins/My clickmania/ClickMania.cs 2007-01-31 19:35:13 UTC (rev 62)
@@ -0,0 +1,357 @@
+using System;
+using MediaPortal.GUI.Library;
+
+namespace MyClickMania
+{
+ /// <summary>
+ /// Summary description for ClickMania.
+ /// </summary>
+ ///
+
+ enum BlockStatus
+ {
+ visible = 0,
+ disappearing,
+ invisible,
+ };
+
+ enum GameStatus
+ {
+ Stopped = 0,
+ Running,
+ Disapering,
+ MoveDown,
+ MoveLeft,
+ Check,
+ Lost,
+ Won,
+ };
+
+ public class ClickMania
+ {
+ #region const, structs and member variables
+ // const
+ private const int m_nSizeX = 8;
+ private const int m_nSizeY = 12;
+ private const int m_MaxColor = 5;
+ private const int m_MaxMoves = (int)((m_nSizeX * m_nSizeY)/2) + 2;
+
+ // structs
+ public struct Block
+ {
+ public int color;
+ public int status;
+ };
+
+ // member variables
+ private int m_nScore = 0;
+ private int m_nMoves = 0;
+ private int m_nStatus = (int) GameStatus.Stopped;
+ private Block [,] m_Grid;
+ private Block [,,] m_GridHistory;
+ private int [] m_ScoreHistory;
+
+ #endregion
+
+ #region Properties
+ public int MaxX { get {return m_nSizeX; } }
+ public int MaxY { get {return m_nSizeY; } }
+ public int MaxColor { get {return m_MaxColor; } }
+ public int Score { get {return m_nScore; } set {m_nScore = value; } }
+ public int Status { get {return m_nStatus; } set {m_nStatus = value; } }
+ #endregion
+
+ #region Indexer
+ public Block this [int x, int y]
+ {
+ get { return m_Grid[x,y]; } // ToDo: check x,y
+ set { m_Grid[x,y] = value; } // ToDo: check x,y
+ }
+ #endregion
+
+ #region Init & Start
+ public ClickMania()
+ {
+ m_Grid = new Block[m_nSizeX, m_nSizeY];
+ m_GridHistory = new Block[m_MaxMoves, m_nSizeX, m_nSizeY];
+ m_ScoreHistory = new int[m_MaxMoves];
+ m_nStatus = (int) GameStatus.Stopped;
+ }
+
+
+ // Generates the grid
+ public void Start()
+ {
+ m_nScore = 0;
+ m_nMoves = 0;
+ m_nStatus = (int) GameStatus.Stopped;
+ Random r = new Random(unchecked((int)DateTime.Now.Ticks));
+
+ for (int i = 0; i < m_nSizeX; i++)
+ {
+ for (int j = 0; j < m_nSizeY; j++)
+ {
+ m_Grid[i,j].color = r.Next(0, m_MaxColor);
+ m_Grid[i,j].status = (int)BlockStatus.visible;
+ }
+ }
+
+ StoreMove();
+ m_nStatus = (int) GameStatus.Running;
+ }
+ #endregion
+
+ #region Check Clicked Block
+ // clicked on x, y pos in Array
+ // return number of found pos with equal color
+ public int Clicked(int x, int y)
+ {
+ if (m_Grid[x,y].status == (int)BlockStatus.disappearing)
+ {
+ return 0;
+ }
+ int col = m_Grid[x,y].color;
+
+ int px, py, nx, ny; //
+ px = (x == 0 ? 0 : x-1); //prior x
+ py = (y == 0 ? 0 : y-1); //prior y
+ nx = (x == m_nSizeX-1 ? m_nSizeX-1 : x+1); // next x
+ ny = (y == m_nSizeY-1 ? m_nSizeY-1 : y+1); // next y
+
+ // check if min one neighour has same color
+ if ( ((m_Grid[px,y].color == col) && (px != x) && (m_Grid[px,y].status == (int)BlockStatus.visible))
+ ||((m_Grid[nx,y].color == col) && (nx != x) && (m_Grid[nx,y].status == (int)BlockStatus.visible))
+ ||((m_Grid[x,py].color == col) && (py != y) && (m_Grid[x,py].status == (int)BlockStatus.visible))
+ ||((m_Grid[x,ny].color == col) && (ny != y) && (m_Grid[x,ny].status == (int)BlockStatus.visible)) )
+ {
+ int found = CheckPos(x,y, col);
+ if (found > 1)
+ {
+ m_nStatus = (int)GameStatus.Disapering;
+ }
+ return found;
+ }
+ return 1;
+ }
+
+
+ public int CheckPos(int x, int y, int col)
+ {
+ if (m_Grid[x,y].status == (int)BlockStatus.disappearing)
+ {
+ return 0;
+ }
+
+ m_Grid[x,y].status = (int)BlockStatus.disappearing;
+
+ int px, py, nx, ny; //
+ px = (x == 0 ? 0 : x-1); //prior x
+ py = (y == 0 ? 0 : y-1); //prior y
+ nx = (x == m_nSizeX-1 ? m_nSizeX-1 : x+1); // next x
+ ny = (y == m_nSizeY-1 ? m_nSizeY-1 : y+1); // next y
+ int ret = 1;
+
+ if ((m_Grid[px,y].status == (int)BlockStatus.visible) && (m_Grid[px,y].color == col))
+ {
+ ret += CheckPos(px, y, col);
+ }
+
+ if ((m_Grid[nx,y].status == (int)BlockStatus.visible) && (m_Grid[nx,y].color == col))
+ {
+ ret += CheckPos(nx, y, col);
+ }
+
+ if ((m_Grid[x,py].status == (int)BlockStatus.visible) && (m_Grid[x,py].color == col))
+ {
+ ret += CheckPos(x, py, col);
+ }
+
+ if ((m_Grid[x,ny].status == (int)BlockStatus.visible) && (m_Grid[x,ny].color == col))
+ {
+ ret += CheckPos(x, ny, col);
+ }
+
+ return ret;
+ }
+ #endregion
+
+ #region Move Blocks
+ public bool MakeInvisible()
+ {
+ bool ret = false;
+ for (int i = 0; i < m_nSizeX; i++)
+ {
+ for (int j = 0; j < m_nSizeY; j++)
+ {
+ if (m_Grid[i,j].status == (int)BlockStatus.disappearing)
+ {
+ m_Grid[i,j].status = (int)BlockStatus.invisible;
+ ret = true;
+ }
+ }
+ }
+ m_nStatus = (int) GameStatus.MoveDown;
+ return ret;
+ }
+
+ public bool MoveDown()
+ {
+ bool ret = false;
+ for (int i = 0; i < m_nSizeX; i++)
+ {
+ for (int j = m_nSizeY-1; j >= 0; j--)
+ {
+ // if current pos invisible, then ...
+ if (m_Grid[i,j].status == (int)BlockStatus.invisible)
+ {
+ // ... search for the next visible pos
+ for (int k = j-1; k>= 0; k--)
+ {
+ if (m_Grid[i,k].status == (int)BlockStatus.visible)
+ {
+ Block temp = m_Grid[i,j];
+ m_Grid[i,j] = m_Grid[i, k];
+ m_Grid[i,k] = temp;
+ ret = true;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ m_nStatus = (int) GameStatus.MoveLeft;
+ return ret;
+ }
+
+ public bool MoveLeft()
+ {
+ bool ret = false;
+ for (int i = 0; i < m_nSizeX; i++)
+ {
+ // check if first block is invisible, then ...
+ if (m_Grid[i,m_nSizeY-1].status == (int)BlockStatus.invisible)
+ {
+ // ... search for the next visible
+ for (int k = i+1; k < m_nSizeX; k++)
+ {
+ if (m_Grid[k,m_nSizeY-1].status == (int)BlockStatus.visible)
+ {
+ // move the complete row
+ ret = true;
+ for (int j = 0; j < m_nSizeY; j++)
+ {
+ Block temp = m_Grid[i,j];
+ m_Grid[i,j] = m_Grid[k, j];
+ m_Grid[k,j] = temp;
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ StoreMove();
+ m_nStatus = (int) GameStatus.Check;
+ return ret;
+ }
+ #endregion
+
+ #region Check Won or Lost
+ public bool CheckWon()
+ {
+ if (m_Grid[0, m_nSizeY-1].status == (int)BlockStatus.invisible)
+ {
+ m_nStatus = (int) GameStatus.Won;
+ return true;
+ }
+ m_nStatus = (int)GameStatus.Running;
+ return false;
+ }
+
+ public bool CheckLost()
+ {
+ bool MoveLeft = false;
+ //search for a possible move
+ for (int i = 0; i < m_nSizeX; i++)
+ {
+ for (int j = m_nSizeY-1; j >= 0; j--)
+ {
+ if (m_Grid[i,j].status == (int)BlockStatus.visible)
+ {
+ // test if around the visible block a other with the same color exists
+ int px, py, nx, ny, col;
+ px = (i == 0 ? 0 : i-1); //prior x
+ py = (j == 0 ? 0 : j-1); //prior y
+ nx = (i == m_nSizeX-1 ? m_nSizeX-1 : i+1); // next x
+ ny = (j == m_nSizeY-1 ? m_nSizeY-1 : j+1); // next y
+ col = m_Grid[i,j].color;
+
+ // check if min one neighour has same color
+ if ( ((m_Grid[px,j].color == col) && (px != i) && (m_Grid[px,j].status == (int)BlockStatus.visible))
+ ||((m_Grid[nx,j].color == col) && (nx != i) && (m_Grid[nx,j].status == (int)BlockStatus.visible))
+ ||((m_Grid[i,py].color == col) && (py != j) && (m_Grid[i,py].status == (int)BlockStatus.visible))
+ ||((m_Grid[i,ny].color == col) && (ny != j) && (m_Grid[i,ny].status == (int)BlockStatus.visible)) )
+ {
+ MoveLeft = true;
+ }
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+
+
+ if (MoveLeft == false)
+ {
+ m_nStatus = (int) GameStatus.Lost;
+ return true;
+ }
+ m_nStatus = (int)GameStatus.Running;
+ return false;
+ }
+ #endregion
+
+ #region History
+ public void StoreMove()
+ {
+ for (int i = 0; i < m_nSizeX; i++)
+ {
+ for (int j = 0; j < m_nSizeY; j++)
+ {
+ m_GridHistory[m_nMoves,i,j].color = m_Grid[i,j].color;
+ m_GridHistory[m_nMoves,i,j].status = m_Grid[i,j].status;
+ }
+ }
+ m_ScoreHistory[m_nMoves] = Score;
+ if (m_nMoves < m_MaxMoves - 1)
+ {
+ m_nMoves++;
+ }
+ }
+
+ public void TakeBackMove()
+ {
+ int back = 0;
+ if (m_nMoves > 1)
+ {
+ m_nMoves--;
+ back = m_nMoves - 1;
+ }
+
+ Score = m_ScoreHistory[back];
+ for (int i = 0; i < m_nSizeX; i++)
+ {
+ for (int j = 0; j < m_nSizeY; j++)
+ {
+ m_Grid[i,j].color = m_GridHistory[back,i,j].color;
+ m_Grid[i,j].status = m_GridHistory[back,i,j].status;
+ }
+ }
+ }
+ #endregion
+
+ }
+}
Added: trunk/plugins/My clickmania/ClickManiaControl.cs
===================================================================
--- trunk/plugins/My clickmania/ClickManiaControl.cs (rev 0)
+++ trunk/plugins/My clickmania/ClickManiaControl.cs 2007-01-31 19:35:13 UTC (rev 62)
@@ -0,0 +1,508 @@
+using System;
+using System.Windows.Forms;
+using System.Xml.Serialization;
+using System.Drawing;
+
+using MediaPortal.GUI.Library;
+using MediaPortal.Dialogs;
+using MediaPortal.Util;
+using MediaPortal.Drawing;
+
+using Microsoft.DirectX;
+using Microsoft.DirectX.Direct3D;
+using Direct3D=Microsoft.DirectX.Direct3D;
+
+
+
+namespace MyClickMania
+{
+ /// <summary>
+ /// Summary description for ClickManiaControl.
+ /// </summary>
+ public class ClickManiaControl : GUIControl
+ {
+ #region Member variables
+
+ ClickMania m_game = new ClickMania(); // the game itselfe without visualisation
+ Settings m_Settings = new Settings(); // Serialization
+ //GUIFont m_Font; // fonts needed
+ GUIImage[] m_imgBackgrounds; // some backgrounds
+ GUIImage[] m_imgBlocks; // blocks in differnt colors
+ GUIImage[] m_imgBlocksGlow; // glowing blocks in different colors
+ GUIImage[] m_imgCursors; // something for the remote control user
+ int m_nxCursor = 0; // x position of cursor
+ int m_nyCursor = 0; // y position of cursor
+ int m_ncCount = 0; // Counter for the cursor image
+ int m_nCursorTick = 0; // cursor animation delay implementation
+ int m_nCursorDelay = 25; // the delay itselfe
+ int m_nxScale = 1; // x scaling factor
+ int m_nyScale = 1; // y scaling factor
+ int m_nxOffset = 0; // x offset of the board
+ int m_nyOffset = 0; // y offset of the board
+ int m_nBoardWidth = 0; // width of the board
+ int m_nBoardHeight = 0; // height of the board
+ int m_nLastTick = 0; // for delay implementation
+ int m_nDelay = 150; // the delay itselfe
+ long m_lStartTime = 0; // save the start time for the game timer
+ int m_dwPosX = 592;
+ int m_dwPosY = 88;
+
+ protected long m_dwColorDiffuse = 0xFFFFFFFF; //
+
+ #endregion
+
+ #region Properties
+
+ public int Score
+ {
+ get {return (m_game != null ? m_game.Score : 0);}
+ }
+
+ public int HighScore
+ {
+ get {return (m_Settings != null ? m_Settings.Highscore : 0);}
+ set
+ {
+ if (m_Settings != null)
+ {
+ m_Settings.Highscore = value;
+ m_Settings.Save();
+ }
+ }
+ }
+
+ public bool Sound
+ {
+ get { return (m_Settings != null ? m_Settings.Sound : false); }
+ set
+ {
+ if (m_Settings != null)
+ {
+ m_Settings.Sound = value;
+ m_Settings.Save();
+ }
+ if (value) GUIControl.SelectControl(GetID, 4);
+ else GUIControl.DeSelectControl(GetID, 4);
+ }
+ }
+
+ public bool KeyInterface
+ {
+ get { return (m_Settings != null ? m_Settings.KeyInterface : false); }
+ set
+ {
+ if (m_Settings != null)
+ {
+ m_Settings.KeyInterface = value;
+ m_Settings.Save();
+ }
+ if (value) GUIControl.SelectControl(GetID, 6);
+ else GUIControl.DeSelectControl(GetID, 6);
+ }
+ }
+
+ #endregion
+
+ #region Serialization
+
+ [Serializable]
+ public class Settings
+ {
+ protected int m_nHighscore;
+ protected bool m_bKeyInterface;
+ protected bool m_bSound;
+
+ public Settings()
+ {
+ m_nHighscore = 0;
+ m_bKeyInterface = false;
+ m_bSound = false;
+ }
+
+ [XmlElement("Highscore")]
+ public int Highscore
+ {
+ get { return m_nHighscore; }
+ set { m_nHighscore = value;}
+ }
+
+ [XmlElement("KeyInterface")]
+ public bool KeyInterface
+ {
+ get { return m_bKeyInterface; }
+ set { m_bKeyInterface = value;}
+ }
+
+ [XmlElement("Sound")]
+ public bool Sound
+ {
+ get { return m_bSound; }
+ set { m_bSound = value;}
+ }
+
+ public void Load()
+ {
+ using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings("MediaPortal.xml"))
+ {
+ m_nHighscore = xmlreader.GetValueAsInt("clickmania", "highscore", 0);
+ m_bKeyInterface = xmlreader.GetValueAsBool("clickmania", "keyinterface", false);
+ m_bSound = xmlreader.GetValueAsBool("clickmania", "sound", true);
+ }
+ }
+
+ public void Save()
+ {
+ using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.Settings("MediaPortal.xml"))
+ {
+ xmlwriter.SetValue("clickmania", "highscore", m_nHighscore);
+ xmlwriter.SetValueAsBool("clickmania", "keyinterface", m_bKeyInterface);
+ xmlwriter.SetValueAsBool("clickmania", "sound", m_bSound);
+ }
+ }
+ }
+
+ #endregion Serialization
+
+ #region Init & Start Game
+ public ClickManiaControl(int nParentID): base(nParentID)
+ {
+ m_Settings.Load();
+ }
+
+
+ public void Start(int m_dwControlID)
+ {
+
+ GUIControl.FocusControl(GetID, m_dwControlID);
+
+ GUIPropertyManager.SetProperty("#cm_status", " ");
+
+ m_lStartTime = -DateTime.Now.Ticks; // negative to get a counter from zero
+ m_nxCursor = 0; // set cursor to the lower left side
+ m_nyCursor = m_game.MaxY-1;
+ m_ncCount = 0;
+ m_nCursorTick = Environment.TickCount;
+ m_game.Start();
+ GUIPropertyManager.SetProperty("#cm_score", m_game.Score.ToString());
+ }
+
+ #endregion
+
+ #region Overrides
+
+ public override void FinalizeConstruction()
+ {
+ base.FinalizeConstruction ();
+
+ m_nBoardWidth = this.Width;
+ m_nBoardHeight = this.Height;
+
+ m_nyScale = m_nBoardHeight / (m_game.MaxY + 2);
+ m_nxScale = m_nyScale;
+ m_nBoardWidth = m_nxScale * m_game.MaxX;
+ m_dwPosX = this._positionX;
+ m_dwPosY = this._positionY;
+ m_nxOffset = m_dwPosX + ((this.Width - (m_nxScale * m_game.MaxX)) / 2);
+ m_nyOffset = m_dwPosY+ ((this.Height - (m_nyScale * m_game.MaxY)) / 2);
+ m_imgBlocks = new GUIImage[]
+ {
+ new GUIImage(GetID, 10001, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\block_red.png", m_dwColorDiffuse),
+ new GUIImage(GetID, 10002, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\block_blue.png", m_dwColorDiffuse),
+ new GUIImage(GetID, 10003, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\block_gray.png", m_dwColorDiffuse),
+ new GUIImage(GetID, 10004, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\block_yellow.png", m_dwColorDiffuse),
+ new GUIImage(GetID, 10005, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\block_cyan.png", m_dwColorDiffuse),
+ new GUIImage(GetID, 10006, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\block_orange.png", m_dwColorDiffuse),
+ new GUIImage(GetID, 10007, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\block_green.png", m_dwColorDiffuse),
+ };
+
+ m_imgBlocksGlow = new GUIImage[]
+ {
+ new GUIImage(GetID, 10011, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\block_red_glow.png", m_dwColorDiffuse),
+ new GUIImage(GetID, 10012, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\block_blue_glow.png", m_dwColorDiffuse),
+ new GUIImage(GetID, 10013, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\block_gray_glow.png", m_dwColorDiffuse),
+ new GUIImage(GetID, 10014, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\block_yellow_glow.png", m_dwColorDiffuse),
+ new GUIImage(GetID, 10015, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\block_cyan_glow.png", m_dwColorDiffuse),
+ new GUIImage(GetID, 10016, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\block_orange_glow.png", m_dwColorDiffuse),
+ new GUIImage(GetID, 10017, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\block_green_glow.png", m_dwColorDiffuse),
+ };
+
+ m_imgBackgrounds = new GUIImage[]
+ {
+ new GUIImage(GetID, 10021, m_dwPosX, m_dwPosY, this.Width, this.Height, GUIGraphicsContext.Skin + @"\media\clickmania\background.png", m_dwColorDiffuse),
+ new GUIImage(GetID, 10022, m_dwPosX, m_dwPosY, this.Width, this.Height, GUIGraphicsContext.Skin + @"\media\clickmania\background_focus.png", m_dwColorDiffuse),
+ };
+
+ m_imgCursors = new GUIImage[]
+ {
+ new GUIImage(GetID, 10031, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\cursor1.png", Color.Black),
+ new GUIImage(GetID, 10032, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\cursor2.png", Color.Black),
+ new GUIImage(GetID, 10033, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\cursor3.png", Color.Black),
+ new GUIImage(GetID, 10034, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\cursor4.png", Color.Black),
+ new GUIImage(GetID, 10034, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\cursor5.png", Color.Black),
+ new GUIImage(GetID, 10034, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\cursor6.png", Color.Black),
+ new GUIImage(GetID, 10034, m_dwPosX, m_dwPosY, m_nxScale, m_nyScale, GUIGraphicsContext.Skin + @"\media\clickmania\cursor7.png", Color.Black),
+ };
+ }
+
+
+ public override void AllocResources()
+ {
+ base.AllocResources ();
+
+ if(m_imgBlocks != null)
+ {
+ foreach(GUIImage image in m_imgBlocks)
+ {
+ image.AllocResources();
+ }
+ }
+
+
+ if(m_imgBlocksGlow != null)
+ {
+ foreach(GUIImage image in m_imgBlocksGlow)
+ {
+ image.AllocResources();
+ }
+ }
+
+ if(m_imgBackgrounds != null)
+ {
+ foreach(GUIImage image in m_imgBackgrounds)
+ {
+ image.AllocResources();
+ }
+ }
+
+ if(m_imgCursors != null)
+ {
+ foreach(GUIImage image in m_imgCursors)
+ {
+ image.AllocResources();
+ }
+ }
+ }
+
+ public override void OnAction(Action action)
+ {
+ if (m_game.Status != (int)GameStatus.Stopped)
+ {
+ switch (action.wID)
+ {
+ case Action.ActionType.ACTION_KEY_PRESSED:
+
+ if ((KeyInterface == true) && (m_game.Status == (int)GameStatus.Running) /* && (action.m_key.KeyCode == 0x13) */)
+ {
+ ProcessBlockClicked(m_nxCursor, m_nyCursor);
+ }
+ else
+ {
+ base.OnAction(action);
+ }
+ break;
+ case Action.ActionType.ACTION_MOUSE_CLICK:
+ if (m_game.Status == (int)GameStatus.Running)
+ {
+ // calc the block where the mouse was clicked on
+ int x = (int)((int)action.fAmount1 - m_nxOffset)/m_nxScale;
+ int y = (int)((int)action.fAmount2 - m_nyOffset)/m_nyScale;
+ if ((x > -1) & (x < 8) & (y > -1) & (y < 12))
+ ProcessBlockClicked(x, y);
+ }
+ else
+ {
+ base.OnAction(action);
+ }
+ break;
+ case Action.ActionType.ACTION_MOVE_UP:
+ if (m_nyCursor > 0) m_nyCursor -= 1;
+ break;
+ case Action.ActionType.ACTION_MOVE_DOWN:
+ if (m_nyCursor < m_game.MaxY-1) m_nyCursor += 1;
+ break;
+ case Action.ActionType.ACTION_MOVE_LEFT:
+ if (m_nxCursor > 0) m_nxCursor -= 1;
+ else
+ base.OnAction(action);
+ break;
+ case Action.ActionType.ACTION_MOVE_RIGHT:
+ if (m_nxCursor < m_game.MaxX-1) m_nxCursor += 1;
+ break;
+ default:
+ base.OnAction(action);
+ break;
+ }
+ }
+ else
+ {
+ base.OnAction(action);
+ }
+ }
+
+ public override void Render(float timePassed)
+ {
+ RenderBackground(timePassed);
+
+ if (m_game.Status != (int)GameStatus.Stopped)
+ {
+ // show timer only when game is running
+ if (m_game.Status < (int)GameStatus.Lost)
+ {
+ GUIPropertyManager.SetProperty("#cm_time", DateTime.Now.AddTicks(m_lStartTime).ToLongTimeString());
+ }
+
+ for (int i=0; i<m_game.MaxX; i++)
+ {
+ int posX = m_nxOffset + (int) (i * m_nxScale);
+ for (int j=0; j<m_game.MaxY; j++)
+ {
+ int posY = m_nyOffset + (int) (j * m_nyScale);
+ int col = m_game[i, j].color;
+
+ switch (m_game[i, j].status)
+ {
+ case (int)BlockStatus.visible:
+ if (m_imgBlocks != null && m_imgBlocks[col] != null)
+ {
+ m_imgBlocks[col].SetPosition(posX, posY);
+ m_imgBlocks[col].Render(timePassed);
+ }
+ break;
+ case (int)BlockStatus.disappearing:
+ if (m_imgBlocks != null && m_imgBlocks[col] != null)
+ {
+ m_imgBlocksGlow[col].SetPosition(posX, posY);
+ m_imgBlocksGlow[col].Render(timePassed);
+ }
+ break;
+ }
+ }
+ }
+
+ switch (m_game.Status)
+ {
+ case (int)GameStatus.Disapering:
+ if ((Environment.TickCount - m_nLastTick) > m_nDelay)
+ {
+ if (m_game.MakeInvisible() == true)
+ {
+ //if (Sound == true) Utils.PlaySound("ClickMania.Block.wav", false, true);
+ }
+ m_nLastTick = Environment.TickCount;
+ }
+ break;
+
+ case (int)GameStatus.MoveDown:
+ if ((Environment.TickCount - m_nLastTick) > m_nDelay)
+ {
+ if (m_game.MoveDown() == true)
+ {
+ //if (Sound == true) Utils.PlaySound("ClickMania.MoveDown.wav", false, true);
+ }
+ m_nLastTick = Environment.TickCount;
+ }
+ break;
+
+ case (int)GameStatus.MoveLeft:
+ if ((Environment.TickCount - m_nLastTick) > m_nDelay)
+ {
+ if (m_game.MoveLeft() == true)
+ {
+ if (m_game.Status == (int)GameStatus.Running)
+ {
+ if (Sound == true) Utils.PlaySound("ClickMania.MoveLeft.wav", false, true);
+ }
+ }
+ m_nLastTick = Environment.TickCount;
+ }
+ break;
+ case (int)GameStatus.Check:
+ if (m_game.CheckWon() == true) // did we won?
+ {
+ if (Sound == true) Utils.PlaySound("ClickMania.Won.wav", false, true);
+ }
+ else if (m_game.CheckLost() == true) // no more move possible?
+ {
+ GUIPropertyManager.SetProperty("#cm_status", "Game Over");
+ if (Sound == true) Utils.PlaySound("ClickMania.GameOver.wav", false, true);
+ }
+ break;
+
+ case (int)GameStatus.Won:
+ GUIPropertyManager.SetProperty("#cm_status", String.Format("Your Score: {0}", m_game.Score));
+ break;
+
+ case (int)GameStatus.Lost:
+ GUIPropertyManager.SetProperty("#cm_status", "Game Over");
+ break;
+
+ }
+ RenderCursor(timePassed);
+ }
+ }
+
+ public void RenderBackground(float timePassed)
+ {
+ if(IsFocused)
+ {
+ m_imgBackgrounds[1].Render(timePassed);
+ }
+ else
+ {
+ m_imgBackgrounds[0].Render(timePassed);
+ }
+ }
+
+ public void RenderCursor(float timePassed)
+ {
+ if ((KeyInterface) && (m_imgCursors != null))
+ {
+ int posX = m_nxOffset + (int) (m_nxCursor * m_nxScale); //can be optimized
+ int posY = m_nyOffset + (int) (m_nyCursor * m_nyScale); //can be optimized
+ m_imgCursors[m_ncCount].SetPosition(posX, posY);
+ m_imgCursors[m_ncCount].Render(timePassed);
+ if ((Environment.TickCount - m_nCursorTick) > m_nCursorDelay)
+ {
+ m_nCursorTick = Environment.TickCount;
+ m_ncCount += 1;
+ if (m_ncCount >= m_imgCursors.Length)
+ {
+ m_ncCount = 0;
+ }
+ }
+ }
+ }
+
+
+ public void ProcessBlockClicked(int x, int y)
+ {
+ int found = m_game.Clicked(x, y);
+ if (found > 1)
+ {
+ if (Sound == true) Utils.PlaySound("ClickMania.Block.wav", false, true);
+ m_game.Score += found*found;
+ if (m_game.Score > m_Settings.Highscore)
+ {
+ m_Settings.Highscore = m_game.Score;
+ m_Settings.Save();
+ }
+ GUIPropertyManager.SetProperty("#cm_score", m_game.Score.ToString());
+ GUIPropertyManager.SetProperty("#cm_highscore", m_Settings.Highscore.ToString());
+ m_nLastTick = Environment.TickCount;
+ }
+ }
+
+ #endregion
+
+
+ public void TakeBackMove()
+ {
+ if (m_game.Status == (int)GameStatus.Running)
+ {
+ m_game.TakeBackMove();
+ GUIPropertyManager.SetProperty("#cm_score", m_game.Score.ToString());
+ }
+ }
+
+ }
+}
Added: trunk/plugins/My clickmania/ClickManiaSetup.cs
===================================================================
--- trunk/plugins/My clickmania/ClickManiaSetup.cs (rev 0)
+++ trunk/plugins/My clickmania/ClickManiaSetup.cs 2007-01-31 19:35:13 UTC (rev 62)
@@ -0,0 +1,46 @@
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace MyClickMania
+{
+ public partial class ClickManiaSetup : Form
+ {
+ public ClickManiaSetup()
+ {
+ InitializeComponent();
+ }
+
+ private void ClickManiaSetup_Load(object sender, EventArgs e)
+ {
+ using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings("MediaPortal.xml"))
+ {
+ textBox1.Text = xmlreader.GetValueAsString("clickmania", "pluginName", PluginName());
+ textBox2.Text = xmlreader.GetValueAsString("clickmania", "Title", "Click Mania");
+ }
+ }
+ private void ButOK_Click(object sender, EventArgs e)
+ {
+ if (textBox1.Text.Length == 0)
+ {
+ System.Windows.Forms.MessageBox.Show("The Plugin's Name is Mandatory !");
+ textBox1.Focus();
+ return;
+ }
+ if (textBox2.Text.Length == 0)
+ {
+ System.Windows.Forms.MessageBox.Show("The Game's Title is Mandatory !");
+ textBox2.Focus();
+ return;
+ }
+ using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.Settings("MediaPortal.xml"))
+ {
+ xmlwriter.SetValue("clickmania", "pluginName", textBox1.Text.ToString());
+ xmlwriter.SetValue("clickmania", "Title", textBox2.Text.ToString());
+ }
+ this.Close();
+ }
+ }
+}
Added: trunk/plugins/My clickmania/ClickManiaSetup.designer.cs
===================================================================
--- trunk/plugins/My clickmania/ClickManiaSetup.designer.cs (rev 0)
+++ trunk/plugins/My clickmania/ClickManiaSetup.designer.cs 2007-01-31 19:35:13 UTC (rev 62)
@@ -0,0 +1,186 @@
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Drawing;
+using System.Windows.Forms;
+using MediaPortal.GUI.Library;
+using System.IO;
+
+namespace MyClickMania
+{
+ partial class ClickManiaSetup
+ {
+ /// <summary>
+ /// Variable nécessaire au concepteur.
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// Nettoyage des ressources utilisées.
+ /// </summary>
+ /// <param name="disposing">true si les ressources managées doivent être supprimées ; sinon, false.</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+ public string PluginName()
+ {
+ return "My ClickMania";
+ }
+
+ public string Description()
+ {
+ return "ClickMania for MediaPortal";
+ }
+
+ public string Author()
+ {
+ return "Bavarian";
+ }
+
+ public void ShowPlugin()
+ {
+ ShowDialog();
+ }
+ public bool DefaultEnabled()
+ {
+ return false;
+ }
+ public bool CanEnable()
+ {
+ return true;
+ }
+
+ public bool HasSetup()
+ {
+ return true;
+ }
+ public int GetWindowId()
+ {
+ return 5555;
+ }
+ /// <summary>
+ /// If the plugin should have its own button on the home screen then it
+ /// should return true to this method, otherwise if it should not be on home
+ /// it should return false
+ /// </summary>
+ /// <param name="strButtonText">text the button should have</param>
+ /// <param name="strButtonImage">image for the button, or empty for default</param>
+ /// <param name="strButtonImageFocus">image for the button, or empty for default</param>
+ /// <param name="strPictureImage">subpicture for the button or empty for none</param>
+ /// <returns>true : plugin needs its own button on home
+ /// false : plugin does not need its own button on home</returns>
+ public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, out string strPictureImage)
+ {
+
+ strButtonText = GUILocalizeStrings.Get(50);
+ if (strButtonText == "")
+ {
+ strButtonText = "MyClickMania";
+ }
+ strButtonImage = "";
+ strButtonImageFocus = "";
+ strPictureImage = "hover_My videostack.png";
+ return true;
+ }
+ #region Code généré par le Concepteur Windows Form
+
+ /// <summary>
+ /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
+ /// le contenu de cette méthode avec l'éditeur de code.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ this.ButOK = new System.Windows.Forms.Button();
+ this.label10 = new System.Windows.Forms.Label();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.label11 = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.textBox2 = new System.Windows.Forms.TextBox();
+ this.SuspendLayout();
+ //
+ // ButOK
+ //
+ this.ButOK.Location = new System.Drawing.Point(387, 55);
+ this.ButOK.Name = "ButOK";
+ this.ButOK.Size = new System.Drawing.Size(64, 31);
+ this.ButOK.TabIndex = 33;
+ this.ButOK.Text = "OK";
+ this.ButOK.UseVisualStyleBackColor = true;
+ this.ButOK.Click += new System.EventHandler(this.ButOK_Click);
+ //
+ // label10
+ //
+ this.label10.AutoSize = true;
+ this.label10.Location = new System.Drawing.Point(391, 29);
+ this.label10.Name = "label10";
+ this.label10.Size = new System.Drawing.Size(60, 13);
+ this.label10.TabIndex = 34;
+ this.label10.Text = "Version 1.1";
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(134, 29);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(108, 20);
+ this.textBox1.TabIndex = 35;
+ //
+ // label11
+ //
+ this.label11.AutoSize = true;
+ this.label11.Location = new System.Drawing.Point(45, 32);
+ this.label11.Name = "label11";
+ this.label11.Size = new System.Drawing.Size(67, 13);
+ this.label11.TabIndex = 36;
+ this.label11.Text = "Plugin Name";
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(45, 69);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(65, 13);
+ this.label1.TabIndex = 38;
+ this.label1.Text = "Game's Title";
+ //
+ // textBox2
+ //
+ this.textBox2.Location = new System.Drawing.Point(134, 66);
+ this.textBox2.Name = "textBox2";
+ this.textBox2.Size = new System.Drawing.Size(108, 20);
+ this.textBox2.TabIndex = 37;
+ //
+ // ClickManiaSetup
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(524, 132);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.textBox2);
+ this.Controls.Add(this.label11);
+ this.Controls.Add(this.textBox1);
+ this.Controls.Add(this.label10);
+ this.Controls.Add(this.ButOK);
+ this.Name = "ClickManiaSetup";
+ this.Text = "ClickManiaSetup";
+ this.Load += new System.EventHandler(this.ClickManiaSetup_Load);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button ButOK;
+ private Label label10;
+ private TextBox textBox1;
+ private Label label11;
+ private Label label1;
+ private TextBox textBox2;
+
+ }
+}
\ No newline at end of file
Added: trunk/plugins/My clickmania/ClickManiaSetup.resx
===================================================================
--- trunk/plugins/My clickmania/ClickManiaSetup.resx (rev 0)
+++ trunk/plugins/My clickmania/ClickManiaSetup.resx 2007-01-31 19:35:13 UTC (rev 62)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root>
\ No newline at end of file
Added: trunk/plugins/My clickmania/GUIClickMania.csproj
===================================================================
--- trunk/plugins/My clickmania/GUIClickMania.csproj (rev 0)
+++ trunk/plugins/My clickmania/GUIClickMania.csproj 2007-01-31 19:35:13 UTC (rev 62)
@@ -0,0 +1,148 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <ProjectType>Local</ProjectType>
+ <ProductVersion>8.0.50727</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{AC53379F-3218-4C18-B0D8-052BF9ABC107}</ProjectGuid>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ApplicationIcon>
+ </ApplicationIcon>
+ <AssemblyKeyContainerName>
+ </AssemblyKeyContainerName>
+ <AssemblyName>GUIClickMania</AssemblyName>
+ <AssemblyOriginatorKeyFile>
+ </AssemblyOriginatorKeyFile>
+ <DefaultClientScript>JScript</DefaultClientScript>
+ <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
+ <DefaultTargetSchema>IE50</DefaultTargetSchema>
+ <DelaySign>false</DelaySign>
+ <OutputType>Library</OutputType>
+ <RootNamespace>GUIClickMania</RootNamespace>
+ <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+ <StartupObject>
+ </StartupObject>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <UpgradeBackupLocation>
+ </UpgradeBackupLocation>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <OutputPath>bin\Debug\</OutputPath>
+ <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
+ <BaseAddress>285212672</BaseAddress>
+ <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
+ <ConfigurationOverrideFile>
+ </ConfigurationOverrideFile>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <DocumentationFile>
+ </DocumentationFile>
+ <DebugSymbols>true</DebugSymbols>
+ <FileAlignment>4096</FileAlignment>
+ <NoStdLib>false</NoStdLib>
+ <NoWarn>
+ </NoWarn>
+ <Optimize>false</Optimize>
+ <RegisterForComInterop>false</RegisterForComInterop>
+ <RemoveIntegerChecks>false</RemoveIntegerChecks>
+ <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
+ <WarningLevel>4</WarningLevel>
+ <DebugType>full</DebugType>
+ <ErrorReport>prompt</ErrorReport>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <OutputPath>bin\Release\</OutputPath>
+ <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
+ <BaseAddress>285212672</BaseAddress>
+ <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
+ <ConfigurationOverrideFile>
+ </ConfigurationOverrideFile>
+ <DefineConstants>TRACE</DefineConstants>
+ <DocumentationFile>
+ </DocumentationFile>
+ <DebugSymbols>false</DebugSymbols>
+ <FileAlignment>4096</FileAlignment>
+ <NoStdLib>false</NoStdLib>
+ <NoWarn>
+ </NoWarn>
+ <Optimize>true</Optimize>
+ <RegisterForComInterop>false</RegisterForComInterop>
+ <RemoveIntegerChecks>false</RemoveIntegerChecks>
+ <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
+ <WarningLevel>4</WarningLevel>
+ <DebugType>none</DebugType>
+ <ErrorReport>prompt</ErrorReport>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Core, Version=1.0.2585.31249, Culture=neutral, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>D:\sources mp\Core\bin\Release\Core.dll</HintPath>
+ </Reference>
+ <Reference Include="Dialogs, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>D:\sources mp\WindowPlugins\bin\Release\Dialogs.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.DirectX">
+ <Name>Microsoft.DirectX</Name>
+ <HintPath>C:\WINDOWS\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.dll</HintPath>
+ <AssemblyFolderKey>hklm\dn\dx_1.0.2902.0</AssemblyFolderKey>
+ </Reference>
+ <Reference Include="Microsoft.DirectX.Direct3D">
+ <Name>Microsoft.DirectX.Direct3D</Name>
+ <HintPath>C:\WINDOWS\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.Direct3D.dll</HintPath>
+ <AssemblyFolderKey>hklm\dn\dx_1.0.2902.0</AssemblyFolderKey>
+ </Reference>
+ <Reference Include="System">
+ <Name>System</Name>
+ </Reference>
+ <Reference Include="System.Data">
+ <Name>System.Data</Name>
+ </Reference>
+ <Reference Include="System.Drawing">
+ <Name>System.Drawing</Name>
+ </Reference>
+ <Reference Include="System.Windows.Forms">
+ <Name>System.Windows.Forms</Name>
+ </Reference>
+ <Reference Include="System.Xml">
+ <Name>System.XML</Name>
+ </Reference>
+ <Reference Include="Utils, Version=1.0.2585.31248, Culture=neutral, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>D:\sources mp\Utils\bin\Release\Utils.dll</HintPath>
+ </Reference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="AssemblyInfo.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="ClickMania.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="ClickManiaControl.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="ClickManiaSetup.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="ClickManiaSetup.designer.cs">
+ <DependentUpon>ClickManiaSetup.cs</DependentUpon>
+ </Compile>
+ <Compile Include="myClickMania.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ </ItemGroup>
+ <ItemGroup>
+ <EmbeddedResource Include="ClickManiaSetup.resx">
+ <DependentUpon>ClickManiaSetup.cs</DependentUpon>
+ <SubType>Designer</SubType>
+ </EmbeddedResource>
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <PropertyGroup>
+ <PreBuildEvent>
+ </PreBuildEvent>
+ <PostBuildEvent>
+ </PostBuildEvent>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
Added: trunk/plugins/My clickmania/GUIClickMania.csproj.user
===================================================================
--- trunk/plugins/My clickmania/GUIClickMania.csproj.user (rev 0)
+++ trunk/plugins/My clickmania/GUIClickMania.csproj.user 2007-01-31 19:35:13 UTC (rev 62)
@@ -0,0 +1,57 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <LastOpenVersion>7.10.3077</LastOpenVersion>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ReferencePath>D:\SourceCode\mediaportal\xbmc\bin\Release\plugins\windows\;D:\SourceCode\mediaportal\xbmc\bin\Release\</ReferencePath>
+ <CopyProjectDestinationFolder>
+ </CopyProjectDestinationFolder>
+ <CopyProjectUncPath>
+ </CopyProjectUncPath>
+ <CopyProjectOption>0</CopyProjectOption>
+ <ProjectView>ProjectFiles</ProjectView>
+ <ProjectTrust>0</ProjectTrust>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <EnableASPDebugging>false</EnableASPDebugging>
+ <EnableASPXDebugging>false</EnableASPXDebugging>
+ <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
+ <EnableSQLServerDebugging>false</EnableSQLServerDebugging>
+ <RemoteDebugEnabled>false</RemoteDebugEnabled>
+ <RemoteDebugMachine>
+ </RemoteDebugMachine>
+ <StartAction>Project</StartAction>
+ <StartArguments>
+ </StartArguments>
+ <StartPage>
+ </StartPage>
+ <StartProgram>
+ </StartProgram>
+ <StartURL>
+ </StartURL>
+ <StartWorkingDirectory>
+ </StartWorkingDirectory>
+ <StartWithIE>false</StartWithIE>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <EnableASPDebugging>false</EnableASPDebugging>
+ <EnableASPXDebugging>false</EnableASPXDebugging>
+ <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
+ <EnableSQLServerDebugging>false</EnableSQLServerDebugging>
+ <RemoteDebugEnabled>false</RemoteDebugEnabled>
+ <RemoteDebugMachine>
+ </RemoteDebugMachine>
+ <StartAction>Project</StartAction>
+ <StartArguments>
+ </StartArguments>
+ <StartPage>
+ </StartPage>
+ <StartProgram>
+ </StartProgram>
+ <StartURL>
+ </StartURL>
+ <StartWorkingDirectory>
+ </StartWorkingDirectory>
+ <StartWithIE>true</StartWithIE>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
Added: trunk/plugins/My clickmania/GUIClickMania.sln
===================================================================
--- trunk/plugins/My clickmania/GUIClickMania.sln (rev 0)
+++ trunk/plugins/My clickmania/GUIClickMania.sln 2007-01-31 19:35:13 UTC (rev 62)
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual C# Express 2005
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GUIClickMania", "GUIClickMania.csproj", "{AC53379F-3218-4C18-B0D8-052BF9ABC107}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {AC53379F-3218-4C18-B0D8-052BF9ABC107}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AC53379F-3218-4C18-B0D8-052BF9ABC107}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AC53379F-3218-4C18-B0D8-052BF9ABC107}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AC53379F-3218-4C18-B0D8-052BF9ABC107}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
Added: trunk/plugins/My clickmania/GUIClickMania.suo
===================================================================
(Binary files differ)
Property changes on: trunk/plugins/My clickmania/GUIClickMania.suo
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/plugins/My clickmania/UpgradeLog.XML
===================================================================
--- trunk/plugins/My clickmania/UpgradeLog.XML (rev 0)
+++ trunk/plugins/My clickmania/UpgradeLog.XML 2007-01-31 19:35:13 UTC (rev 62)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type='text/xsl' href='_UpgradeReport_Files/UpgradeReport.xslt'?>
+<UpgradeLog>
+<Properties><Property Name="Solution" Value="GUIClickMania">
+</Property><Property Name="Fichier solution" Value="C:\mediaportal_plugin\MyClickMania\GUIClickMania.sln">
+</Property><Property Name="Fichier d'options utilisateur" Value="C:\mediaportal_plugin\MyClickMania\GUIClickMania.suo">
+</Property><Property Name="Date" Value="samedi 30 décembre 2006">
+</Property><Property Name="Time" Value="10:58">
+</Property></Properties><Event ErrorLevel="0" Project="" Source="GUIClickMania.sln" Description="Fichier correctement sauvegardé en tant que C:\mediaportal_plugin\MyClickMania\Backup\GUIClickMania.sln">
+</Event><Event ErrorLevel="0" Project="" Source="GUIClickMania.suo" Description="Fichier correctement sauvegardé en tant que C:\mediaportal_plugin\MyClickMania\Backup\GUIClickMania.suo">
+</Event><Event ErrorLevel="0" Project="GUIClickMania" Source="GUIClickMania.csproj" Description="Fichier projet correctement sauvegardé en tant que C:\mediaportal_plugin\MyClickMania\Backup\GUIClickMania.csproj">
+</Event><Event ErrorLevel="0" Project="GUIClickMania" Source="GUIClickMania.csproj.user" Description="Fichier utilisateur de projet correctement sauvegardé en tant que C:\mediaportal_plugin\MyClickMania\Backup\GUIClickMania.csproj.user">
+</Event><Event ErrorLevel="0" Project="GUIClickMania" Source="AssemblyInfo.cs" Description="Fichier correctement sauvegardé en tant que C:\mediaportal_plugin\MyClickMania\Backup\AssemblyInfo.cs">
+</Event><Event ErrorLevel="0" Project="GUIClickMania" Source="ClickMania.cs" Description="Fichier correctement sauvegardé en tant que C:\mediaportal_plugin\MyClickMania\Backup\ClickMania.cs">
+</Event><Event ErrorLevel="0" Project="GUIClickMania" Source="ClickManiaControl.cs" Description="Fichier correctement sauvegardé en tant que C:\mediaportal_plugin\MyClickMania\Backup\ClickManiaControl.cs">
+</Event><Event ErrorLevel="0" Project="GUIClickMania" Source="myClickMania.cs" Description="Fichier correctement sauvegardé en tant que C:\mediaportal_plugin\MyClickMania\Backup\myClickMania.cs">
+</Event><Event ErrorLevel="0" Project="GUIClickMania" Source="GUIClickMania.csproj" Description="Projet correctement converti">
+</Event><Event ErrorLevel="3" Project="GUIClickMania" Source="GUIClickMania.csproj" Description="Converted">
+</Event><Event ErrorLevel="0" Project="" Source="GUIClickMania.sln" Description="Solution correctement convertie">
+</Event><Event ErrorLevel="3" Project="" Source="GUIClickMania.sln" Description="Converted">
+</Event><Event ErrorLevel="0" Project="GUIClickMania" Source="GUIClickMania.csproj" Description="Analyse terminée : la mise à niveau n'est pas requise pour les fichiers projet.">
+</Event></UpgradeLog>
Added: trunk/plugins/My clickmania/bin/Release/Core.dll
===================================================================
(Binary files differ)
Property changes on: trunk/plugins/My clickmania/bin/Release/Core.dll
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/plugins/My clickmania/bin/Release/Dialogs.dll
===================================================================
(Binary files differ)
Property changes on: trunk/plugins/My clickmania/bin/Release/Dialogs.dll
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/plugins/My clickmania/bin/Release/GUIClickMania.dll
===================================================================
(Binary files differ)
Property changes on: trunk/plugins/My clickmania/bin/Release/GUIClickMania.dll
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/plugins/My clickmania/bin/Release/Utils.dll
===================================================================
(Binary files differ)
Property changes on: trunk/plugins/My clickmania/bin/Release/Utils.dll
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/plugins/My clickmania/myClickMania.cs
===================================================================
--- trunk/plugins/My clickmania/myClickMania.cs (rev 0)
+++ t...
[truncated message content] |