Skip to content

Commit

Permalink
いろいろ増えた(具体的に時間)
Browse files Browse the repository at this point in the history
  • Loading branch information
jnc-explosion committed Jan 29, 2024
1 parent fb717c0 commit 568828d
Show file tree
Hide file tree
Showing 9 changed files with 55 additions and 15 deletions.
Binary file not shown.
Binary file added assets/warning.mp3
Binary file not shown.
1 change: 1 addition & 0 deletions src/engine/components/NTimer.d
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ class NTimer: Component {
auto reset() => started = SDL_GetTicks64;
auto cur() => SDL_GetTicks64 - started;
auto sched(F f, ulong itrvl) => counter[f] = tuple(itrvl, 0);
auto unsched(F f) => counter.remove(f);

// interrupter
override void loop() {
Expand Down
5 changes: 5 additions & 0 deletions src/game/Game.d
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ class Game: GameObject {
Router router;
GameObject debugTools;

this() {
// Time Watchdog
gm.tmr = register(new NTimer);
}

override void setup() {
gm.ds = register(new DataStore!Persist("main.dat"));
router = register(new Router(Routes.Abstract, [
Expand Down
6 changes: 6 additions & 0 deletions src/game/GameManager.d
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ struct Persist {

//ゲーム全体のステータスを管理
struct GameManager {
enum T_LIMIT = 110_000;

NTimer tmr;
int point;
int lefttime() => cast(int)(T_LIMIT - tmr.cur);

Status*[GameObject] status;
GameObject hero;
DataStore!Persist ds;
Expand Down
11 changes: 7 additions & 4 deletions src/game/entities/Point.d
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,23 @@ module game.entities.Point;

import std;
import engine;
import game;

class Point: GameObject {
Transform tf;
Text pntStr;
ulong point;

override void setup() {
register(new Transform);
tf = register(new Transform(tf.Org.Local));
component!Transform.pos = Vec2(200,0);
auto pointfont = new TextAsset("PixelMplus-20130602/PixelMplus12-Regular.ttf",40);
pntStr = register(new Text(pointfont));
pntStr.text = point.to!string;
pointDisp;
}

override void loop() {
pntStr.text = point.to!string;
pointDisp;
}

void pointDisp() {pntStr.text = gm.point.to!string;}
}
17 changes: 6 additions & 11 deletions src/game/entities/TimeLimitClock.d
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,24 @@ module game.entities.TimeLimitClock;

import std;
import engine;
import game;

class TimeLimitClock: GameObject {
enum T_LIMIT = 10_000;

Text timStr;
ulong t_start; // started
ulong t_remain() => T_LIMIT - min(T_LIMIT, uptime - t_start); // flooring 0 (unti overflow)

override void setup() {
register(new Transform(Transform.Org.Local));
component!Transform.pos = Vec2(400,0);
auto timerfont = new TextAsset("PixelMplus-20130602/PixelMplus12-Regular.ttf",40);
timStr = register(new Text(timerfont));
t_start = uptime;
timStr.text = t_remain.to!string;
}

override void loop() {
timStr.text = (t_remain/1000).to!string;
if(!t_remain) timeover;
tmrDisp;
if(gm.lefttime < 100_000) {
timStr.setColor(220, 0, 0);
}
}

void timeover() {
return;
}
void tmrDisp() {timStr.text = (gm.lefttime / 1_000).to!string;}
}
10 changes: 10 additions & 0 deletions src/game/entities/UI.d
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ import engine;
import game;

class UI: GameObject {
Transform tf;

this() {
tf = register(new Transform(tf.Org.World));
}

override void setup() {
// timers
register(new TimeLimitClock);
Expand All @@ -14,4 +20,8 @@ class UI: GameObject {

// and more...
}

override void loop() {
tf.pos = getCamera().pos;
}
}
20 changes: 20 additions & 0 deletions src/game/stages/game/GameScene.d
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,32 @@ import engine;
import game;

class GameScene: RouteObject {
this() {
gm.tmr.reset;
gm.tmr.sched(&timeOver, gm.T_LIMIT);
gm.tmr.sched(&timeWarn, gm.T_LIMIT - 100_000);
}

override void setup() {
auto stage = "1-1";
register([
"1-1": () => new Patio(router),
][stage]());
}

void timeOver() {
router.go(Routes.GameOver);
gm.tmr.unsched(&timeOver);
}

void timeWarn() {
dbg("密輸を許さないワン!");
auto warn = new AudioAsset("warning.mp3");
auto se = register(new AudioSource(warn));
se.volume(20);
se.play(0);
gm.tmr.unsched(&timeWarn);
}

mixin(enableReincarnate);
}

0 comments on commit 568828d

Please sign in to comment.