ScarletBlackMarket/KevinSystem/kevin_system/Legacy (1280x720)/Kevin_EndScene.txt

293 lines
8.0 KiB
Plaintext

//一時停止中スクリプト
#include "script/KevinSystem/GeneralSoundLib.txt"
int STGWIDTH = GetStgFrameWidth();
int STGHEIGHT = GetStgFrameHeight();
@Initialize
{
_SoundTask();
ExtendSFX;
SetAutoDeleteObject(true);
TBackgroundNew(0, 0);
TMenu();
}
@MainLoop
{
yield;
}
@Finalize
{
}
task TBackgroundNew(renderX, renderY){
let clearText = ObjText_Create();
ObjText_SetText(clearText, "Congratulations on clearing the game![r]Until the next convocation...");
ObjText_SetFontSize(clearText, 18.5);
ObjText_SetFontType(clearText, "Connecting Chain Handserif");
ObjText_SetMaxWidth(clearText, STGWIDTH);
ObjText_SetHorizontalAlignment(clearText, ALIGNMENT_CENTER);
ObjText_SetFontBold(clearText, true);
ObjText_SetFontColorTop(clearText, 255, 255, 255);
ObjText_SetFontColorBottom(clearText, 255, 255, 255);
ObjText_SetFontBorderType(clearText, BORDER_FULL);
ObjText_SetFontBorderColor(clearText, 0x7D39D9);
ObjText_SetFontBorderWidth(clearText, 2);
Obj_SetRenderPriorityI(clearText, 10);
ObjRender_SetX(clearText, STGWIDTH-255);
ObjRender_SetY(clearText, STGHEIGHT-75);
// Render semi-transparent primitive background
task TRenderPrim(selection){
// Thank you for the PrimMaker Ferase :omegaflooshed:
ObjRender_SetPosition(selection, renderX+640, renderY+360, 0); // Since the render priority of the r.target is under 20
// Set up vert 0
ObjPrim_SetVertexPosition(selection,0,-640,-360,0);
ObjPrim_SetVertexColor(selection,0,0xA487FF);
ObjPrim_SetVertexUVT(selection, 0, 0, 0);
// Set up vert 1
ObjPrim_SetVertexPosition(selection,1,640,-360,0);
ObjPrim_SetVertexColor(selection,1,0xA487FF);
ObjPrim_SetVertexUVT(selection, 1, 1280, 0);
// Set up vert 2
ObjPrim_SetVertexPosition(selection,2,640,360,0);
ObjPrim_SetVertexColor(selection,2,0xA487FF);
ObjPrim_SetVertexUVT(selection, 2, 1280, 720);
// Set up vert 3
ObjPrim_SetVertexPosition(selection,3,640,360,0);
ObjPrim_SetVertexColor(selection,3,0xF187FF);
ObjPrim_SetVertexUVT(selection, 3, 1280, 720);
// Set up vert 4
ObjPrim_SetVertexPosition(selection,4,-640,360,0);
ObjPrim_SetVertexColor(selection,4,0xF187FF);
ObjPrim_SetVertexUVT(selection, 4, 0, 720);
// Set up vert 5
ObjPrim_SetVertexPosition(selection,5,-640,-360,0);
ObjPrim_SetVertexColor(selection,5,0xF187FF);
ObjPrim_SetVertexUVT(selection, 5, 0, 0);
for(int i = 0; i <= 5; i++){
ObjPrim_SetVertexAlpha(selection, i, 100);
}
}
// Render... the render target???
let objBG = ObjPrim_Create(OBJ_PRIMITIVE_2D);
ObjPrim_SetPrimitiveType(objBG, PRIMITIVE_TRIANGLELIST);
ObjPrim_SetVertexCount(objBG, 6);
let target = "target";
CreateRenderTargetEx(target, 1280, 720);
ObjPrim_SetTexture(objBG, target);
//SetInvalidRenderPriorityA1(20, 80);
RenderToTextureA1(target, 0, 100, true);
//RenderToTextureB1(target, objBG, true);
Obj_SetRenderPriorityI(objBG, 0);
TRenderPrim(objBG);
}
task TBackground
{
task TVertex(var index, var left, var top, var right, var bottom)
{
ObjPrim_SetVertexPosition(obj, index + 0, left, top, 0);
ObjPrim_SetVertexPosition(obj, index + 1, left, bottom, 0);
ObjPrim_SetVertexPosition(obj, index + 2, right, top, 0);
ObjPrim_SetVertexPosition(obj, index + 3, right, top, 0);
ObjPrim_SetVertexPosition(obj, index + 4, left, bottom, 0);
ObjPrim_SetVertexPosition(obj, index + 5, right, bottom, 0);
ObjPrim_SetVertexUVT(obj, index + 0, left, top);
ObjPrim_SetVertexUVT(obj, index + 1, left, bottom);
ObjPrim_SetVertexUVT(obj, index + 2, right, top);
ObjPrim_SetVertexUVT(obj, index + 3, right, top);
ObjPrim_SetVertexUVT(obj, index + 4, left, bottom);
ObjPrim_SetVertexUVT(obj, index + 5, right, bottom);
//STGシーン内のみアニメーション
if(left >= 341 && right <= 937 && top >= 45 && bottom <= 677)
{
let alpha = 255;
while(alpha >= 128)
{
ObjPrim_SetVertexAlpha(obj, index + 0, alpha);
ObjPrim_SetVertexAlpha(obj, index + 1, alpha/2);
ObjPrim_SetVertexAlpha(obj, index + 2, alpha/2);
ObjPrim_SetVertexAlpha(obj, index + 3, alpha/2);
ObjPrim_SetVertexAlpha(obj, index + 4, alpha/2);
ObjPrim_SetVertexAlpha(obj, index + 5, alpha);
alpha -= 255 / frame;
yield;
}
}
}
//分割設定
let frame = 30;
let countH = 20; //分割数
let countV = 30;
let width = 1280 / countH;
let height = 720 / countV;
let target = GetTransitionRenderTargetName();
let obj = ObjPrim_Create(OBJ_PRIMITIVE_2D); //2D頂点ブジェクト生成
ObjPrim_SetPrimitiveType(obj, PRIMITIVE_TRIANGLELIST);
ObjPrim_SetVertexCount(obj, countH * countV * 6);
Obj_SetRenderPriorityI(obj, 0); //描画優先度を設定
ObjPrim_SetTexture(obj, target); //テクスチャを設定
ascent(ix in 0.. countH)
{
ascent(iy in 0.. countV)
{
let index = (ix + iy * countH) * 6;
let left = ix * width;
let right = left + width;
let top = iy * height;
let bottom = top + height;
TVertex(index, left, top, right, bottom);
}
}
}
task TMenu
{
let selectIndex = 0;//選択位置
task TMenuItem(let index, let mx, let my, let text)
{
function CreateTextObject(let mx, let my, let text)
{
let obj = ObjText_Create();
ObjText_SetText(obj, text);
ObjText_SetFontSize(obj, 35);
ObjText_SetFontType(obj, "Exotc350 DmBd BT");
ObjText_SetFontBold(obj, true);
ObjText_SetHorizontalAlignment(obj, ALIGNMENT_CENTER);
ObjText_SetMaxWidth(obj, STGWIDTH);
ObjText_SetFontColorTop(obj, 155, 45, 175);
ObjText_SetFontColorBottom(obj, 200, 80, 255);
ObjText_SetFontBorderType(obj, BORDER_FULL);
ObjText_SetFontBorderColor(obj, 255, 255, 255);
ObjText_SetFontBorderWidth(obj, 1.75);
Obj_SetRenderPriorityI(obj, 10);
ObjRender_SetX(obj, mx);
ObjRender_SetY(obj, my);
return obj;
}
let objText = CreateTextObject(mx, my, text);
let objSelect = CreateTextObject(mx, my, text);
ObjRender_SetBlendType(objSelect, BLEND_ADD_RGB);
loop
{
Obj_SetVisible(objSelect, index == selectIndex);
yield;
}
}
//メニュー配置
let objText = ObjText_Create();
ObjText_SetText(objText, "End of a Duel");
ObjText_SetFontSize(objText, 50);
ObjText_SetFontType(objText, "Exotc350 DmBd BT");
ObjText_SetMaxWidth(objText, STGWIDTH);
ObjText_SetHorizontalAlignment(objText, ALIGNMENT_CENTER);
ObjText_SetFontBold(objText, true);
ObjText_SetFontColorTop(objText, 75, 255, 255);
ObjText_SetFontColorBottom(objText, 180, 255, 255);
ObjText_SetFontBorderType(objText, BORDER_FULL);
ObjText_SetFontBorderColor(objText,0, 0, 0);
ObjText_SetFontBorderWidth(objText, 3);
Obj_SetRenderPriorityI(objText, 10);
ObjRender_SetX(objText, STGWIDTH-255);
ObjRender_SetY(objText, 100);
let mx = STGWIDTH-255;
let my = 175;
let texts = ["Record Your Victories", "Leave The Battlefield", "Go For A Rematch"];
var countMenu = length(texts);
ascent(var iText in 0 .. countMenu)
{
TMenuItem(iText, mx, my, texts[iText]);
my += 45;
}
//キー状態がリセットされるまで待機
while(GetVirtualKeyState(VK_OK) != KEY_FREE){yield;}
//メニュー選択処理
let frameKeyHold = 0;//キー押しっぱなしフレーム数
loop
{
//決定
if(GetVirtualKeyState(VK_OK) == KEY_PULL)
{
let listResult = [RESULT_SAVE_REPLAY, RESULT_END, RESULT_RETRY];
SetScriptResult(listResult[selectIndex]);
CloseScript(GetOwnScriptID());
return;
}
//カーソル移動
if(GetVirtualKeyState(VK_UP) == KEY_PUSH)
{
SelectOptionSFX;
selectIndex--;
}
else if(GetVirtualKeyState(VK_DOWN) == KEY_PUSH)
{
SelectOptionSFX;
selectIndex++;
}
else if(GetVirtualKeyState(VK_UP) == KEY_HOLD)
{
frameKeyHold++;
if(frameKeyHold == 30 || (frameKeyHold > 30 && (frameKeyHold % 10 == 0)))
{
SelectOptionSFX;
selectIndex--;
}
}
else if(GetVirtualKeyState(VK_DOWN) == KEY_HOLD)
{
frameKeyHold++;
if(frameKeyHold == 30 || (frameKeyHold > 30 && (frameKeyHold % 10 == 0)))
{
SelectOptionSFX;
selectIndex++;
}
}
else
{
frameKeyHold = 0;
}
if(selectIndex < 0)
{
selectIndex = countMenu - 1;
}
else
{
selectIndex %= countMenu;
}
yield;
}
}