Git Product home page Git Product logo

gamelauncher's Introduction

KCCT電子計算機部 GameLauncher

このソフトウェアについて

電算部は毎年高専祭でさまざまなソフトウエアなどを展示する。その際に,アプリケーションをエクスプローラやコマンドラインから起動するのではなく,直感で操作などが分かるよう形で一覧表示することを目的としている。

実行方法

Visual Studioで起動したいソフトウェアをスタートアッププロジェクトに設定しビルドする。

履歴

  • Comment Editor (~2018)
  • DxlibGameLauncher (2019~2021): DXライブラリを用いたゲームランチャー開発(完成版) ※オブジェクト指向が不完全
  • DxlibObjectiveGameLauncher (2022~): ランチャーをオブジェクト指向を重視し,製作。v1.0.31

入手方法

  • Releasesにあります。そちらよりダウンロードお願いします。

gamelauncher's People

Contributors

irimoti avatar isirmt avatar kumataro4160 avatar nekosaburo8250 avatar paperykettleasata avatar ujiuji54 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

gamelauncher's Issues

Logic modification and canvas and other drawing modifications

ロジックの修正とキャンバス等描画修正

実装内容

  • キャンバスにおける重ね描画において,正しい挙動になるようにロジックを修正する.
  • 一部ボタンの追加とUIの操作性を改善する

タスク

  • キャンバスの描画問題
  • 機能ボタンの追加

オブジェクトのレイヤー化

シーンごとにレイヤー管理用のvectorを作成し,レイヤーの概念を構造体などで持たせておくことで表示順などを切り替えられるようにする。

実装方法

SceneBaseにvectorのelements的配列を定義しておく。そして,継承先のコンストラクターでpush_backする。

現在の課題と変更点

文字軽減処理

・文字は処理軽減に,FontHandleでそれぞれメモリを確保しているので,共通のところは,FontHandleの共通部分を作る関数を作りObjectManagerに実装させる。進行中

JSON管理

・jsonを活用し,TYPEを番号で振り分け,サムネイルと文字を一つのオブジェクトにまとめ,横一列に2~3個ずつ表示(しかし,今回は出品数も考えて,一列に3つ並べるようにし,スクロールは非実装ということで。また,サムネイルなどの画像の拡大縮小がいまのところマニュアル通りやってもうまくいかなかったので実サイズでやることになりますが・・・。もしjsonで間に合わなければ,インラインということにはなりますが,配列で宣言して,機能だけは確定させるという考えです。)

ボタンオブジェクトの重複判定

ボタン等のオブジェクトはそれぞれがインスタンス化されて配置されるので,このままでは座標によるコライドは出来てもその上に別のUIオブジェクトがあるかは分からない。

もし重複したまま動作すると,起動ボタンと終了ボタンを同時に押したりする動作が起こるといった挙動になる

案:

staticな関数を利用してオブジェクトがマウスと接触した際にそのマウス座標を記録し,同じ座標にあった他のUIが触れた際に,予めstaticメンバにポインタでオブジェクトを格納しておかれた最上位フラグをfalseにする。(登録,更新時にtrueにしておく)

最終的にtrueだった場合は各自必要なアクションを行う

問題点

最終的にtrueだった場合は各自必要なアクションを行う

これはいつが「最終的」というタイミングになるのか。

解決案

マウス座標判定はUpdateとは別に書くか

ButtonObject btn(...);

void Collide(){ // <- this
  btn.Collide();
}

void Update(){
  btn.Update();
}

void Draw(){
  btn.Draw();
}

これらをシーンマネージャで制御すると接触判定済みで分岐できるため,処理の区別化ができているかもしれない

アップデート予定

配列化

 配列が現在256でMAXとなっている。そのため,vectorライブラリを用い,可変長配列にする。

画像リサイズ対応

 現在画像は256*256以外はリサイズされずにそのまま表示される。そのため,Dxlibを用い導入する。

スクロール化

スクロール処理

スクロールするためにはオブジェクトを関数によりずらすことが必要
上限値・下限値を設ける。

画面遷移時の結果において,入力がない場合に処理されきれない

ボタンオブジェクトをクリックした際にボタンのクリック状態を解除してSceneManagerでポインタの値を切り替えるようにしている

// DebugScene.cpp
if (debugButton.GetMouseSelected()) {
	debugButton.SetMouseOff();
	SceneManager::ChangeScene("home", new HomeScene());
}

この後,ホーム画面が表示されるはずだが,ホームボタン内にある黄色ボタンのmouseSelectedが解除されていないように見える。
(また,初回呼び出し時はSceneManagermapに登録されていないので何も描画されない。)

しかし,画面遷移後にキーボード割り込みやマウス系の割り込みなどを行うと想定通りの挙動になる。(つまりマウスを移動させながらボタンをクリックすると結果的にスムーズに遷移できたように見える)

マウスを完全に動かしていない場合においてもシーン遷移時に想定通りに反映されるようにしたい

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.