using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using Rmake.GameRendering; namespace Rmake.RmakeTests.GameRendering { /// /// GameRenderingTile の概要の説明です。 /// public class GameRenderingTile : System.Windows.Forms.Form { private System.Windows.Forms.Button button1; private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Timer timer1; private System.Windows.Forms.Timer timer2; private System.ComponentModel.IContainer components; private GameRenderingInitializer gameRenderingInitializer; private GameRenderingFactory gameRenderingFactory; private GameRenderingManager gameRenderingManager; private SceneView sceneView; private LayerView layerView0; private LayerView layerView1; private LayerView layerView2; private LayerView layerView3; private LayerView layerView4; private TileViewWrapper tileViewWrapper0; private TileViewWrapper tileViewWrapper1; private TextViewWrapper tileViewText0; private SelectWindowView selectWindowView; private LineViewWrapper lineViewWrapper; private CharacterView[] characterViews; private int[] moveDirection; private int characterIndex = 0; private int characterSize = 256 * 8; private Random ra = new Random(0); private int tm = Environment.TickCount; private float fps = 0; private int fpscount = 0; private float key_x = 0.0f; private float key_y = 0.0f; private float key_dx = 0.0f; private float key_dy = 0.0f; public GameRenderingTile() { // // Windows フォーム デザイナ サポートに必要です。 // InitializeComponent(); // // TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。 // gameRenderingInitializer = GameRenderingInitializer.GetInstance(); gameRenderingInitializer.Initialize(panel1, true); gameRenderingFactory = gameRenderingInitializer.Factory; gameRenderingManager = gameRenderingInitializer.Manager; //gameRenderingManager.CameraScale = 0.5f; //gameRenderingManager.Width = panel1.ClientSize.Width / 2; //gameRenderingManager.Height = panel1.ClientSize.Height / 2; sceneView = gameRenderingFactory.CreateSceneView(); layerView0 = sceneView.AddLayer(); layerView1 = sceneView.AddLayer(); layerView2 = sceneView.AddLayer(); layerView3 = sceneView.AddLayer(); layerView4 = sceneView.AddLayer(); if(true) { ArrayList fileNames = new ArrayList(); ArrayList leftTopTransparents = new ArrayList(); //@"..\..\Images\ag1a.bmp" fileNames.Add(@"..\..\Images\mapb.bmp"); leftTopTransparents.Add(false); tileViewWrapper0 = gameRenderingFactory.CreateTileViewWrapper(fileNames, leftTopTransparents); tileViewText0 = gameRenderingFactory.CreateTextViewWrapper(); tileViewWrapper0.SetTextViewWrapper(tileViewText0); tileViewWrapper0.TextOffset = new Point(20, 20); tileViewWrapper0.ChipSize = new Size(32, 32); tileViewWrapper0.TileSize = new Size(512, 512); for(int i = 0 ; i < 512 ; i++) { for(int j = 0 ; j < 512 ; j++) { tileViewWrapper0.SetChipType(i, j, 0); tileViewWrapper0.SetTextureIndex(i, j, 0); tileViewWrapper0.SetP(i, j, new Point( ra.Next(tileViewWrapper0.GetImageWidth(0) / 16), ra.Next(tileViewWrapper0.GetImageHeight(0) / 16) )); tileViewWrapper0.SetRectColor(i, j, (ra.Next(256) << 24) + (ra.Next(256) << 16) + (ra.Next(256) << 8) + ra.Next(256)); tileViewWrapper0.SetText(i, j, ra.Next(10).ToString()); //tileViewWrapper0.SetText(i, j, ""); //tileViewWrapper0.SetTextColor(i, j, // (ra.Next(256) << 24) + // (ra.Next(256) << 16) + // (ra.Next(256) << 8) + // ra.Next(256)); tileViewWrapper0.SetTextColor(i, j, unchecked((int)0xFFFFFFFF)); } } layerView0.AddGameRenderingView(tileViewText0); layerView0.AddGameRenderingView(tileViewWrapper0); } //character View characterViews = new CharacterView[characterSize]; moveDirection = new int[characterSize]; for(int i = 0 ; i < characterSize ; i++) { int ta; ta = (ra.Next() / 19) % 9; moveDirection[i] = (ra.Next() / 17) % 4; characterViews[i] = gameRenderingFactory.CreateCharacterView( @"..\..\Images\ag1a.bmp", true, 4); characterViews[i].AnimationSpeed = 4; characterViews[i].DestinationPoint = new Point(20, 20); characterViews[i].RectColor = (ra.Next(256) << 24) + (ra.Next(256) << 16) + (ra.Next(256) << 8) + ra.Next(256); characterViews[i].AddFrameRectangle(0, new Rectangle(ta * 64, 0, 32, 32)); characterViews[i].AddFrameRectangle(0, new Rectangle(ta * 64 + 32, 0, 32, 32)); characterViews[i].AddFrameRectangle(1, new Rectangle(ta * 64, 32, 32, 32)); characterViews[i].AddFrameRectangle(1, new Rectangle(ta * 64 + 32, 32, 32, 32)); characterViews[i].AddFrameRectangle(2, new Rectangle(ta * 64, 64, 32, 32)); characterViews[i].AddFrameRectangle(2, new Rectangle(ta * 64 + 32, 64, 32, 32)); characterViews[i].AddFrameRectangle(3, new Rectangle(ta * 64, 96, 32, 32)); characterViews[i].AddFrameRectangle(3, new Rectangle(ta * 64 + 32, 96, 32, 32)); layerView1.AddGameRenderingView(characterViews[i]); } if(true) { ArrayList fileNames = new ArrayList(); ArrayList leftTopTransparents = new ArrayList(); //@"..\..\Images\ag1a.bmp" fileNames.Add(@"..\..\Images\mapb.bmpa"); leftTopTransparents.Add(true); tileViewWrapper1 = gameRenderingFactory.CreateTileViewWrapper(fileNames, leftTopTransparents); if(tileViewWrapper1 != null) { tileViewWrapper1.ChipSize = new Size(32, 32); tileViewWrapper1.TileSize = new Size(512, 512); for(int i = 0 ; i < 512 ; i++) { for(int j = 0 ; j < 512 ; j++) { tileViewWrapper1.SetChipType(i, j, 0); tileViewWrapper1.SetTextureIndex(i, j, 0); tileViewWrapper1.SetP(i, j, new Point( ra.Next(tileViewWrapper0.GetImageWidth(0) / 32), ra.Next(tileViewWrapper0.GetImageHeight(0) / 32) )); } } layerView2.AddGameRenderingView(tileViewWrapper1); } //*/ } if(true) { selectWindowView = gameRenderingFactory.CreateSelectWindowView( @"..\..\Images\systemimage.png", true, 4); selectWindowView.Rect = new Rectangle(20, 20, 400, 400); selectWindowView.SetOption(0, "time", Convert.ToInt32("ff00ff88", 16)); selectWindowView.SetOption(1, "select1", Convert.ToInt32("ff00ff88", 16)); selectWindowView.SetOption(2, "せれくと2", Convert.ToInt32("ff00ff88", 16)); selectWindowView.SetOption(3, "せれくと3", Convert.ToInt32("ff00ff88", 16)); layerView3.AddGameRenderingView(selectWindowView); } if(true) { lineViewWrapper = gameRenderingFactory.CreateLineViewWrapper(); layerView4.AddGameRenderingView(lineViewWrapper); } timer1.Enabled = true; } /// /// 使用されているリソースに後処理を実行します。 /// protected override void Dispose( bool disposing ) { gameRenderingInitializer.Release(); if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows フォーム デザイナで生成されたコード /// /// デザイナ サポートに必要なメソッドです。このメソッドの内容を /// コード エディタで変更しないでください。 /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.button1 = new System.Windows.Forms.Button(); this.panel1 = new System.Windows.Forms.Panel(); this.timer1 = new System.Windows.Forms.Timer(this.components); this.timer2 = new System.Windows.Forms.Timer(this.components); this.SuspendLayout(); // // button1 // this.button1.Location = new System.Drawing.Point(0, 0); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 0; this.button1.Text = "button1"; this.button1.Click += new System.EventHandler(this.button1_Click); this.button1.KeyUp += new System.Windows.Forms.KeyEventHandler(this.GameRenderingTile_KeyUp); this.button1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.GameRenderingTile_KeyDown); // // panel1 // this.panel1.Location = new System.Drawing.Point(16, 32); this.panel1.Name = "panel1"; this.panel1.Size = new System.Drawing.Size(640, 480); this.panel1.TabIndex = 1; // // timer1 // this.timer1.Interval = 8000; this.timer1.Tick += new System.EventHandler(this.timer1_Tick); // // timer2 // this.timer2.Enabled = true; this.timer2.Interval = 1; this.timer2.Tick += new System.EventHandler(this.timer2_Tick); // // GameRenderingTile // this.AutoScaleBaseSize = new System.Drawing.Size(5, 12); this.ClientSize = new System.Drawing.Size(692, 546); this.Controls.Add(this.panel1); this.Controls.Add(this.button1); this.Name = "GameRenderingTile"; this.Text = "GameRenderingTile"; this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.GameRenderingTile_KeyUp); this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.GameRenderingTile_KeyDown); this.Load += new System.EventHandler(this.GameRenderingTile_Load); this.ResumeLayout(false); } #endregion private void timer1_Tick(object sender, System.EventArgs e) { Close(); } private void timer2_Tick(object sender, System.EventArgs e) { if(Environment.TickCount - tm > 1000) { tm = Environment.TickCount; fps = fpscount; fpscount = 0; selectWindowView.SetOption(1, fps.ToString(), Convert.ToInt32("ff88ff88", 16)); } fpscount++; //if (selectWindowView.Visible) //{ // selectWindowView.Visible = false; //} //else //{ // selectWindowView.Visible = true; //} selectWindowView.Next(); key_x += key_dx; key_y += key_dy; gameRenderingManager.CameraPosition = new Point((int)key_x, (int)key_y); for(int i = 0 ; i < characterSize ; i++) { characterViews[i].ActiveIndex = moveDirection[i]; if(moveDirection[i] == 0) { characterViews[i].DestinationPoint = new Point( characterViews[i].DestinationPoint.X + 0, characterViews[i].DestinationPoint.Y + 2); } else if(moveDirection[i] == 1) { characterViews[i].DestinationPoint = new Point( characterViews[i].DestinationPoint.X - 2, characterViews[i].DestinationPoint.Y + 0); } else if(moveDirection[i] == 2) { characterViews[i].DestinationPoint = new Point( characterViews[i].DestinationPoint.X + 2, characterViews[i].DestinationPoint.Y + 0); } else if(moveDirection[i] == 3) { characterViews[i].DestinationPoint = new Point( characterViews[i].DestinationPoint.X + 0, characterViews[i].DestinationPoint.Y - 2); } if(characterViews[i].DestinationPoint.X < -32) { moveDirection[i] = 2; } else if(characterViews[i].DestinationPoint.Y < -32) { moveDirection[i] = 0; } else if(characterViews[i].DestinationPoint.X > panel1.Width) { moveDirection[i] = 1; } else if(characterViews[i].DestinationPoint.Y > panel1.Height) { moveDirection[i] = 3; } } moveDirection[characterIndex] = (ra.Next() / 23) % 4; characterIndex++; if(characterIndex >= characterSize) characterIndex = 0; if((tm / 1000) % 2 == 0) { for(int i = 0 ; i < characterSize / 10 ; i++) { characterViews[i].SetTexture(@"..\..\Images\ag1a.bmp", true); } tileViewWrapper0.SetTexture(0, @"..\..\Images\ag1a.bmp", true); } else { for(int i = 0 ; i < characterSize / 10 ; i++) { characterViews[i].SetTexture(@"..\..\Images\mapb.bmp", true); } tileViewWrapper0.SetTexture(0, @"..\..\Images\mapb.bmp", true); } /* if(tileViewText0.Layer == null) { layerView0.AddGameRenderingView(tileViewText0); layerView0.AddGameRenderingView(tileViewWrapper0); } else { layerView0.RemoveGameRenderingView(tileViewText0); layerView0.RemoveGameRenderingView(tileViewWrapper0); } //*/ lineViewWrapper.DarwLine(new Point(10, 200), new Point(200, 10), unchecked((int)0xffffff00)); gameRenderingManager.ClearColor = Color.Black; gameRenderingManager.Clear(); gameRenderingManager.Render(sceneView); gameRenderingManager.Present(panel1); //timer1.Enabled = true; } private void button1_Click(object sender, System.EventArgs e) { timer1.Enabled = false; } private void GameRenderingTile_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if(e.KeyCode == Keys.X) { key_dy = 8.0f; } else if(e.KeyCode == Keys.E) { key_dy = -8.0f; } if(e.KeyCode == Keys.D) { key_dx = 8.0f; } else if(e.KeyCode == Keys.S) { key_dx = -8.0f; } } private void GameRenderingTile_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e) { if(e.KeyCode == Keys.X || e.KeyCode == Keys.E) { key_dy = 0.0f; } if(e.KeyCode == Keys.D || e.KeyCode == Keys.S) { key_dx = 0.0f; } } private void GameRenderingTile_Load(object sender, System.EventArgs e) { } } }