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)
{
}
}
}