0_0_61
ソースコードを整理した 0_0_60C 以降、マイナーバージョンアップ版。
0_0_60 ~ 0_0_60C までは新機能の実装は無く、デバッグと不要なコードの削除/廃止等、新機能実装前にソースコードを綺麗にした。
大きな変更が加えられたのは .ev の create イベント用コードで、0_0_60B 〜 0_0_60C は特に大幅な変更および更新が加えられたため、万が一に備えてバックアップを細かく取ってある。万が一が起こった場合は 0_0_60A へ戻ること。0_0_60B は HDD にバックアップはなく、SD カード内のテンポラリのみ。B ~ C の差は create event を整理整頓した分なので、処理内容的には一切変更は無い( はず ) 。
ソースコード
- ev.create :: 0_0_60C
///Inits
FuncButtSwitch = false;/* flag for function Buttons ON = true , OFF = false */
SHEnFlg = global.InitGames[8];// Flags of Shaders シェーダエフェクトの有効無効フラグ Pow2 and Bitwise
PiTEnable = global.InitGames[7];// show_message(global.InitGames[7]);// Bitwize
ScrnASP = global.InitGames[6];// Screen Aspetc Type 1.=1080, 2.=1200, 3.=1440
//OPStyle = global.InitGames[5];// obsolete from 0_0_60
OnDebug = global.InitGames[4];// for Debug USE(Global)
OSDct = global.InitGames[3];//
UIstyle = global.InitGames[2];// OS Type checked -> windows or NOT
ASPFlag = global.InitGames[1];// boolean :: Browser or NOT
ASP = global.InitGames[0];//
depth = GameDepth;// -10
ScrScaleW = 0;// (display_get_gui_width() / view_wview[0]);
ScrScaleH = 0;// (display_get_gui_height() / view_hview[0]);
Init_BoardSize();
/* for Surfaces */
Set_VariablesForShaders();
SReffeA = noone;// Screen Effects #1 ex. SrGrey,SrWave -> to application_surface
ShaderSurface = noone;// for Shader
Surface = noone;// for General Use
DebugSF = noone;// For Debug Status display
/* Setups for GameBoard on Screen */
OX = SetBoard_OriginX(ScrnASP);
OY = BoardOriginY; // (84 + 500);
RoX = SetBoard_RoX(ScrnASP); // 8 ~ ;
RoY = (OY - BricksHalfSizeY); // (84 + 500) - 80 = 504.0;
TW = (BricksHalfSizeX << 1); // 76 * 2; = 152
TH = (BricksHalfSizeY << 1); // 80 * 2; = 160
var c;
c = TotalArrayElement; // TotalArrayElement == 7
AW = c;
AH = c;
GBWidth = ((TW << 3) - TW); // GameBoard Widht = 1064 px
GBHeigh = ((TH << 3) - TH); // GameBoard Height = 1120 px
ReX = (RoX + GBWidth); // (OX + (TW * c) - BricksHalfSizeX) = 1072.0 ~ 10xx.0;
ReY = (RoY + GBHeigh); // (OY + (TH * AH) - BricksHalfSizeY) = 1624.0;
/* Array for GameBoard and ObakeGenerator */
var d,e,f,cx,cy
d = ((c << 3) - c); // (c * AH) == 49;
e = (AW - 1);
f = (AH - 1);
cx = (e >> 1);// floor(e / 2); /* Grid Center X */
cy = (f >> 1);// floor(f / 2); /* Grid Center Y */
/* -------------------------------------------------------------- */
/* The Grids are holding the Object Instance ID or Boolean. */
MG = ds_grid_create(AW , AH);/* # Grid Create #1 "ID" */
OG = ds_grid_create(AW , AH);/* # Grid Create #2 "ID" */
Aval = ds_grid_create(AW , AH);/* # (for Copy of "MG") "ID" */
Bval = ds_grid_create(AW , AH);/* # (for TS_Ck_Chain(); "Boolean" */
/* -------------------------------------------------------------- */
MTC = d;
MvBricksPaiR[1] = noone;/* Keep the Pair IDs of Moving Bricks */
MvBricksPaiRFlag = false;
MvTargetCT = 0; /* Total Number of Moving Target Bricks */
TDX[e] = 0; /* ALL X position on Each Grids :: 1D array */
TDY[f] = 0; /* ALL Y position on Each Grids :: 1D array */
RDT = (room_speed >> 1);/* Room Divide Speed ( INT ) */
var a,b,px,py,u,dy,s,t,rt, co,ca;
a = true;
b = 0;
px = OX;
py = OY;
u = DistanceFreeFall;
dy = (u - py); /* distance Y */
s = (dy / RDT);
t = FreeFallDirection;
rt = RDT;
for (var i=0; i<c; i++)
{
for (var k=0; k<AH; k++)
{
t = instance_create(px, py, tile);
MG[# k, i] = t; /* Get Object.ID */
co = (py - u);
ca = (1 << i);
Init_CreateObake( t, s, co, k, i, rt, ca );/* Create a New "OBAKE" on GameBoard */
if (a == true) { TDX[k] = px; };
px += TW;
b++;
};
TDY[i] = py;
a = false;
px = OX;
py += TH;
};
Init_RoomColour();
BCX = TDX[cx];/* (Brick) Center X Position on GameBoard on Screen */
BCY = TDY[cy];/* (Brick) Center Y Position on GameBoard on Screen */
GCX = cx; /* Gid Center X (on Grid) */
GCY = cy; /* Gid Center Y (on Grid) */
CID = MG[# cx, cy];
CIDA[MaxCIDA] = noone; /* Center ID List( 1D Array ) */
VBS = noone; /* store "Vks" Button Selected. */
VBSFlag = false;
/* an array for EFFECTS when pushed "vks" any button */
for (var i=VKEFsMax; i>=0; i--){ VKEF[i] = VBS; };
/* grid copy func for "Aval" and Clear "Bval" */
ds_grid_copy(Aval , MG); /* Get Copy ALL Object.ID from "MG" */
ds_grid_clear(Bval , false);
SOLvHP = 1; /* 1~3 (binary looping counter) */
hint.image_speed = 0;
PiTCount = 0; /* Cunter of preserve to death tiles */
//PiTEnable = 0+1;// Pow2:::Enable or Disable chain desrtroy with same type color Bricks.
VanishFlag = false;// will be Vanished the Target of Pair Bricks when 3-Match is founded.
VanishList = ds_queue_create();// will be Vanished list
CtCaptuN = noone;// (at Combo going) count the Total Number of Captured "Obakes".
DoronFlg = false;// "Doron!" Boolean flag.
DoronLoop[f] = 0;
DoronBitXY[WG_MaxArray] = false; // Flags will record on array when New Object was created.
CtMovesN = 0; // Total "Effective" swap count Number
CtTimesN = 0; // Total past time at game starting
SwapColorQue = ds_queue_create();// Swap Color Queues
SwapReColorQue = ds_queue_create();// Swap Retrun back to the Color Queues
SwapReColorCt = 0; // Swap Queue id's count Number
TouchDisable = false; // Temp Disabale Touch operation by player controll
TryCombTimer = 0; // Timer for Combo Challenge
ComboCounter = 0; // Combo Counter
ComboRecord = 0; // Combo Highest Record
Phy_Start = false; // Physics Start Flag
Phy_Falling = false; // if (TryCombTimer==0 and Phy_Start==true) then TRUE;
Phy_NumOfBricks = noone; // Number of Physics effcted objcet(falling)
Phy_StandLiST = ds_list_create(); // ID
Phy_FaLLiST = ds_list_create(); // ID
Phy_CHaiN = ds_queue_create();// ID
/* for OG Array --- Grid for "Obake Generator" */
ODY[f] = 0; // Records of "Tama"'s Y-Position on the Grid on Screen.
OBQ = ds_stack_create();
OBQCt = OBQsetTime; // TamaFlag = true; ODY[3];
OBKSummon = noone; // Counter how number Summoned "Obake".
OBKFinalize = false; // Boolean
OBKQue = ds_queue_create();// ID for copy
Init_ObakeGenerator();
/* for Scores DataBase */
BusteredObake[f] = 0;// Init array :: BusteredObake[6] = 0; -> where to finalize "ST_CheckPos" func
今後ユーザインターフェース用の仕様書を作成する。ゲームエンジンがほぼ完成、ゲーム仕様がまとまり、次にインターフェースの仕様をまとめる必要がある。
バグ
新規 Bricks の補充時、3-Match 判定が一部おかしい。選択されている連鎖仕様が一部反映されていない場合がある?
メモ
レイアウト下部の GridFunctionButtons は専用の管理オブジェクトが Create Event から初期配置や初期設定を管理している。
オブジェクトの作成される順番は .ev → .vks の順番なので注意。room の Instace Order などをチェック。
.vks は ev.Bflag == true
の時作成されていたが、今後は UI 管理用オブジェクトとして常に作成される。
.vks の create event 処理を修正。U.I. の作成を .vks オブジェクトに一任する。
.ev はゲームエンジンを総括する機能全般を担当し、.vks は追加的ユーザインターフェース全般を担当。
.ev の create event を更に整理。codes を一部統廃合。
.bcc を廃止。.vks に統合。
ユーザインターフェース作成にツールを作成? >> インターフェース用のパーツを作成して、インタラクティブで配置したパーツのポジションを自動出力させたい
UI 用パーツの配置は ev.BCX を基準とする。
モード
- 手詰まりにならず何個お化けを消せるか → 「制限時間内」
- 手詰まりにならず何個お化けを消せるか → 制限時間「無制限」
作業中
( あれこれ目移りするが、 ) 小さな機能実装を優先して行う
- textures をグループで分ける作業
- 起動後のメニュー画面を更新
- ゲーム開始〜経過時間を記録、表示( ev.CtTimesN → step 数を計測)
- 時間計測中に計測を一時停止する機能 ( ev.CtTimeFlg )で管理
- 手数(moves) をカウント(ev.CtMovesN) → 手数の実装
- GridFunctions から何を使ったかをカウント → 手数に含める?
- GridFunctions を利用した回数を記録
Steps を時間単位( 分・秒 ) へ変換する処理をユーザ定義関数として追加。
パーツ単位で細かく処理を分け、オブジェクトを作成中。
レイアウト
次へ
前へ