public void OnInit(ControlContext cc) { texture = cc.SmartTextureLoader.Factory() as ITexture; // Update(); // ここでUpdateすると、OnInitの間にテクスチャーの生成が行なわれることになって、 // そのためには Screen.Select~Unselectがなされていることが条件となるので // 好ましくない。 }
public void OnPaint(IScreen scr, ControlContext cc, int x, int y) { if (visible) { Update(); scr.BlendSrcAlpha(); // 背景が描画されてはいけないので…。 scr.Blt(texture, x, y); } }
/// <summary> /// 部品の描画を行なう /// </summary> /// <remarks> /// このクラス自体がITextureとして振舞うために必要。 /// </remarks> /// <param name="context"></param> /// <param name="x"></param> /// <param name="y"></param> public void OnPaint(IScreen scr, ControlContext cc, int x, int y) { if (visible) { foreach (Control c in Controls) { c.Parts.OnPaint(scr, cc, c.X + x, c.Y + y); } } }
public virtual void OnInit(ControlContext cc) { loader = cc.SmartTextureLoader.LoadDefFile(defFile, isDefFileRelative); /* * // これ、ここでやってしまうと、コンテキスト選択されてないとおかしゅうなる。 * * ITexture t = loader.GetTexture(0); * // ボタンサイズを取得しておき、これをマウスの判定矩形として利用する * if (t != null) * { * width = (int)t.Width; * height = (int)t.Height; * } */ }
public virtual void OnPaint(IScreen scr, ControlContext cc, int x, int y) { if (!visible) { return; } ITexture tex = loader.GetTexture(loaderOffset); if (tex != null) { if (color != null) { scr.SetColor(color.Value); scr.Blt(tex, x, y); scr.ResetColor(); } else { scr.Blt(tex, x, y); } } }
/// <summary> /// 部品の描画を行なう /// </summary> /// <remarks> /// このクラス自体がITextureとして振舞うために必要。 /// </remarks> /// <param name="context"></param> /// <param name="x"></param> /// <param name="y"></param> public void OnPaint(IScreen scr , ControlContext cc , int x , int y) { if (visible) foreach ( Control c in Controls ) { c.Parts.OnPaint(scr , cc , c.X + x ,c.Y + y); } }
/// <summary> /// 初期化のときに呼び出される /// </summary> /// <remarks> /// ITextureとして振舞うために必要。 /// </remarks> /// <param name="cc"></param> public void OnInit(ControlContext cc) { this.controlContext = cc; }
public virtual void OnInit(ControlContext cc) { if ( imageFileName != null ) { loader = cc.SmartTextureLoader.LoadDefFile("mem:"+imageFileName); } else { loader = cc.SmartTextureLoader.LoadDefFile(defFile ,isDefFileRelative); } /* // これ、ここでやってしまうと、コンテキスト選択されてないとおかしゅうなる。 ITexture t = loader.GetTexture(0); // ボタンサイズを取得しておき、これをマウスの判定矩形として利用する if (t != null) { width = (int)t.Width; height = (int)t.Height; } */ }
public virtual void OnPaint(IScreen scr , ControlContext cc , int x , int y) { if (!visible) return ; ITexture tex = loader.GetTexture(loaderOffset); if ( tex != null ) { if ( color != null ) { scr.SetColor(color.Value); scr.Blt(tex , x , y); scr.ResetColor(); } else { scr.Blt(tex , x , y); } } }
public virtual void OnPaint(IScreen scr , ControlContext cc , int x , int y) { if (!visible) return ; if (width == 0 || height == 0) { ITexture t0 = loader.GetTexture(0); // ボタンサイズを取得しておき、これをマウスの判定矩形として利用する if (t0 != null) { width = (int)t0.Width; height = (int)t0.Height; } } int mx, my; if (cc.MouseInput != null) cc.MouseInput.GetPos(out mx, out my); else mx = my = 0; bool isHover = (x <= mx) && (mx < x + width) && (y <= my) && (my < y + height); bool isDown = (cc.MouseInput != null) ? cc.MouseInput.IsPress(MouseInput.Button.Left) : false; // 前フレームで、 // isHover状態でかつisDown // 今回のフレームで // isHover状態かつ、!isDown // ならば、ボタンが押されたとしてボタンイベント発生。 isOnDown = false; if (enable) { if (lastIsHover && lastIsDown && isHover && !isDown) { if ( OnClick != null ) { OnClick(scr , cc); } isOnDown = true; } if (lastIsHover && !lastIsDown && isHover && isDown) { if (OnDown != null) OnDown(scr, cc); } } lastIsDown = isDown; lastIsHover = isHover; int pattern; if (!enable) pattern = 3; else if (!isHover) pattern = 0; else if (isDown) pattern = 1; else pattern = 2; ITexture tex = loader.GetTexture(pattern + loaderOffset); if ( tex != null ) { if ( color != null ) { scr.SetColor(color.Value); scr.Blt(tex , x , y); scr.ResetColor(); } else { scr.Blt(tex , x , y); } } }
public virtual void OnPaint(IScreen scr, ControlContext cc, int x, int y) { if (!visible) { return; } if (width == 0 || height == 0) { ITexture t0 = loader.GetTexture(0); // ボタンサイズを取得しておき、これをマウスの判定矩形として利用する if (t0 != null) { width = (int)t0.Width; height = (int)t0.Height; } } int mx, my; cc.MouseInput.GetPos(out mx, out my); bool isHover = (x <= mx) && (mx < x + width) && (y <= my) && (my < y + height); bool isDown = cc.MouseInput.IsPress(MouseInput.Button.Left); // 前フレームで、 // isHover状態でかつisDown // 今回のフレームで // isHover状態かつ、!isDown // ならば、ボタンが押されたとしてボタンイベント発生。 isOnDown = false; if (enable) { if (lastIsHover && lastIsDown && isHover && !isDown) { if (OnClick != null) { OnClick(scr, cc); } isOnDown = true; } if (lastIsHover && !lastIsDown && isHover && isDown) { if (OnDown != null) { OnDown(scr, cc); } } } lastIsDown = isDown; lastIsHover = isHover; int pattern; if (!enable) { pattern = 3; } else if (!isHover) { pattern = 0; } else if (isDown) { pattern = 1; } else { pattern = 2; } ITexture tex = loader.GetTexture(pattern + loaderOffset); if (tex != null) { if (color != null) { scr.SetColor(color.Value); scr.Blt(tex, x, y); scr.ResetColor(); } else { scr.Blt(tex, x, y); } } }
public void OnPaint(IScreen scr , ControlContext cc , int x , int y) { if ( visible ) { Update(); scr.BlendSrcAlpha(); // 背景が描画されてはいけないので…。 scr.Blt(texture , x , y); } }