Squashed commit of the following:
commit6ca0743f50
Author: 0auBSQ <58159635+0auBSQ@users.noreply.github.com> Date: Fri Jul 26 21:39:38 2024 +0900 cleanup commit756a9370b0
Author: 0auBSQ <58159635+0auBSQ@users.noreply.github.com> Date: Fri Jul 26 21:33:24 2024 +0900 apply cleanup commit75d3fd0da8
Author: 0auBSQ <58159635+0auBSQ@users.noreply.github.com> Date: Fri Jul 26 19:53:27 2024 +0900 Update Taiko hitsounds to Dashy's 2P hitsounds, old Taiko hitsounds are renamed to "Old Taiko" commitba18fb6832
Author: 0auBSQ <58159635+0auBSQ@users.noreply.github.com> Date: Fri Jul 26 19:52:19 2024 +0900 oopsie commit4806f53c49
Author: 0auBSQ <58159635+0auBSQ@users.noreply.github.com> Date: Fri Jul 26 17:27:21 2024 +0900 fix memory leak commit5ae90c94f3
Author: 0auBSQ <58159635+0auBSQ@users.noreply.github.com> Date: Fri Jul 26 17:06:36 2024 +0900 fix nameplate unlockables and upgrade nlua and system.text.json commit57daa487c1
Author: 0auBSQ <58159635+0auBSQ@users.noreply.github.com> Date: Fri Jul 26 01:12:54 2024 +0900 oopsie commit88a15defc1
Author: 0auBSQ <58159635+0auBSQ@users.noreply.github.com> Date: Fri Jul 26 01:07:31 2024 +0900 Squashed commit of the following: commitc99443a7d3
Author: Ashiro12138 <ashiro12138@gmail.com> Date: Fri Jul 26 01:29:15 2024 +1000 Chore/add editor config (#656) * Create .editorconfig * format ENTIRE project * Remove unnecessary import or usings Sort Imports or usings Apply file header preferences * Fix build error by adding import commitc47c9c9400
Author: 0auBSQ <58159635+0auBSQ@users.noreply.github.com> Date: Thu Jul 25 02:11:10 2024 +0900 Update Script.lua commiteee9350d2f
Author: 0auBSQ <58159635+0auBSQ@users.noreply.github.com> Date: Thu Jul 25 02:05:16 2024 +0900 badges commita26c76aa60
Author: 0auBSQ <58159635+0auBSQ@users.noreply.github.com> Date: Thu Jul 25 01:44:49 2024 +0900 stars commitc571070428
Author: 0auBSQ <58159635+0auBSQ@users.noreply.github.com> Date: Wed Jul 24 23:57:02 2024 +0900 improve nameplate lua script commitf6a08d3a50
Author: 0auBSQ <58159635+0auBSQ@users.noreply.github.com> Date: Wed Jul 24 23:40:52 2024 +0900 base
@ -1,16 +1,16 @@
|
||||
/*
|
||||
* Copyright (c) 2007-2009 SlimDX Group
|
||||
*
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
@ -35,7 +35,7 @@ namespace SampleFramework {
|
||||
public static GL Gl { get; private set; }
|
||||
public static Silk.NET.Core.Contexts.IGLContext Context { get; private set; }
|
||||
|
||||
internal static List<Action> AsyncActions = new();
|
||||
public static List<Action> AsyncActions { get; private set; } = new();
|
||||
|
||||
private string strIconFileName;
|
||||
|
||||
|
@ -1,119 +1,119 @@
|
||||
using System.Drawing;
|
||||
using SampleFramework;
|
||||
using Silk.NET.Maths;
|
||||
using Silk.NET.OpenGLES;
|
||||
using SkiaSharp;
|
||||
using Point = System.Drawing.Point;
|
||||
using Rectangle = System.Drawing.Rectangle;
|
||||
using RectangleF = System.Drawing.RectangleF;
|
||||
|
||||
using System.Drawing;
|
||||
using SampleFramework;
|
||||
using Silk.NET.Maths;
|
||||
using Silk.NET.OpenGLES;
|
||||
using SkiaSharp;
|
||||
using Point = System.Drawing.Point;
|
||||
using Rectangle = System.Drawing.Rectangle;
|
||||
using RectangleF = System.Drawing.RectangleF;
|
||||
|
||||
namespace FDK {
|
||||
public class CTexture : IDisposable {
|
||||
/// <summary>
|
||||
/// バッファの集まり
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// バッファの集まり
|
||||
/// </summary>
|
||||
private static uint VAO;
|
||||
|
||||
/// <summary>
|
||||
/// 頂点バッファ
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// 頂点バッファ
|
||||
/// </summary>
|
||||
private static uint VBO;
|
||||
|
||||
/// <summary>
|
||||
/// 頂点バッファの使用順バッファ
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// 頂点バッファの使用順バッファ
|
||||
/// </summary>
|
||||
private static uint EBO;
|
||||
|
||||
/// <summary>
|
||||
/// テクスチャで使用するUV座標バッファ
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// テクスチャで使用するUV座標バッファ
|
||||
/// </summary>
|
||||
private static uint UVBO;
|
||||
|
||||
/// <summary>
|
||||
/// 頂点バッファの使用順の数
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// 頂点バッファの使用順の数
|
||||
/// </summary>
|
||||
private static uint IndicesCount;
|
||||
|
||||
/// <summary>
|
||||
/// シェーダー
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// シェーダー
|
||||
/// </summary>
|
||||
private static uint ShaderProgram;
|
||||
|
||||
/// <summary>
|
||||
/// 移動、回転、拡大縮小に使うMatrixのハンドル
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// 移動、回転、拡大縮小に使うMatrixのハンドル
|
||||
/// </summary>
|
||||
private static int MVPID;
|
||||
|
||||
/// <summary>
|
||||
/// 色合いのハンドル
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// 色合いのハンドル
|
||||
/// </summary>
|
||||
private static int ColorID;
|
||||
|
||||
/// <summary>
|
||||
/// 拡大率のハンドル
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// 拡大率のハンドル
|
||||
/// </summary>
|
||||
private static int ScaleID;
|
||||
|
||||
/// <summary>
|
||||
/// テクスチャの切り抜きのハンドル
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// テクスチャの切り抜きのハンドル
|
||||
/// </summary>
|
||||
private static int TextureRectID;
|
||||
|
||||
private static int CameraID;
|
||||
|
||||
private static int NoteModeID;
|
||||
|
||||
/// <summary>
|
||||
/// 描画に使用する共通のバッファを作成
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// 描画に使用する共通のバッファを作成
|
||||
/// </summary>
|
||||
public static void Init() {
|
||||
//シェーダーを作成、実際のコードはCreateShaderProgramWithShaderを見てください
|
||||
ShaderProgram = ShaderHelper.CreateShaderProgramFromSource(
|
||||
@"#version 100
|
||||
precision mediump float;
|
||||
|
||||
attribute vec3 aPosition;
|
||||
attribute vec2 aUV;
|
||||
|
||||
uniform mat4 mvp;
|
||||
uniform vec4 color;
|
||||
uniform mat4 camera;
|
||||
|
||||
varying vec2 texcoord;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 position = vec4(aPosition, 1.0);
|
||||
position = camera * mvp * position;
|
||||
|
||||
texcoord = vec2(aUV.x, aUV.y);
|
||||
gl_Position = position;
|
||||
@"#version 100
|
||||
precision mediump float;
|
||||
|
||||
attribute vec3 aPosition;
|
||||
attribute vec2 aUV;
|
||||
|
||||
uniform mat4 mvp;
|
||||
uniform vec4 color;
|
||||
uniform mat4 camera;
|
||||
|
||||
varying vec2 texcoord;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 position = vec4(aPosition, 1.0);
|
||||
position = camera * mvp * position;
|
||||
|
||||
texcoord = vec2(aUV.x, aUV.y);
|
||||
gl_Position = position;
|
||||
}"
|
||||
,
|
||||
@"#version 100
|
||||
precision mediump float;
|
||||
|
||||
uniform vec4 color;
|
||||
uniform sampler2D texture1;
|
||||
uniform vec4 textureRect;
|
||||
uniform vec2 scale;
|
||||
uniform bool noteMode;
|
||||
|
||||
varying vec2 texcoord;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 rect;
|
||||
if (noteMode)
|
||||
{
|
||||
rect = textureRect.xy + (texcoord * textureRect.zw * scale);
|
||||
rect = rect - (floor((rect - textureRect.xy) / textureRect.zw) * textureRect.zw);
|
||||
}
|
||||
else
|
||||
{
|
||||
rect = vec2(textureRect.xy + (texcoord * textureRect.zw));
|
||||
}
|
||||
gl_FragColor = texture2D(texture1, rect) * color;
|
||||
@"#version 100
|
||||
precision mediump float;
|
||||
|
||||
uniform vec4 color;
|
||||
uniform sampler2D texture1;
|
||||
uniform vec4 textureRect;
|
||||
uniform vec2 scale;
|
||||
uniform bool noteMode;
|
||||
|
||||
varying vec2 texcoord;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 rect;
|
||||
if (noteMode)
|
||||
{
|
||||
rect = textureRect.xy + (texcoord * textureRect.zw * scale);
|
||||
rect = rect - (floor((rect - textureRect.xy) / textureRect.zw) * textureRect.zw);
|
||||
}
|
||||
else
|
||||
{
|
||||
rect = vec2(textureRect.xy + (texcoord * textureRect.zw));
|
||||
}
|
||||
gl_FragColor = texture2D(texture1, rect) * color;
|
||||
}"
|
||||
);
|
||||
//------
|
||||
@ -139,9 +139,9 @@ namespace FDK {
|
||||
//----
|
||||
|
||||
//VBOを作成-----
|
||||
float[] vertices = new float[] //頂点データ
|
||||
{
|
||||
//x, y, z
|
||||
float[] vertices = new float[] //頂点データ
|
||||
{
|
||||
//x, y, z
|
||||
-1.0f, 1.0f, 0.0f,
|
||||
1.0f, 1.0f, 0.0f,
|
||||
-1.0f, -1.0f, 0.0f,
|
||||
@ -170,7 +170,7 @@ namespace FDK {
|
||||
EBO = Game.Gl.GenBuffer(); //頂点バッファの使用順バッファを作る
|
||||
Game.Gl.BindBuffer(BufferTargetARB.ElementArrayBuffer, EBO); //頂点バッファの使用順バッファをバインドする
|
||||
|
||||
uint[] indices = new uint[] //
|
||||
uint[] indices = new uint[] //
|
||||
{
|
||||
0, 1, 2,
|
||||
2, 1, 3
|
||||
@ -217,9 +217,9 @@ namespace FDK {
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 描画に使用する共通のバッファを解放
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// 描画に使用する共通のバッファを解放
|
||||
/// </summary>
|
||||
public static void Terminate() {
|
||||
//ちゃんとバッファは解放すること
|
||||
Game.Gl.DeleteVertexArray(VAO);
|
||||
@ -250,6 +250,10 @@ namespace FDK {
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public float fZRotation {
|
||||
get => fZ軸中心回転;
|
||||
set { fZ軸中心回転 = value; }
|
||||
}
|
||||
public int Opacity {
|
||||
get {
|
||||
return this._opacity;
|
||||
@ -279,10 +283,10 @@ namespace FDK {
|
||||
public static Size sz論理画面 = Size.Empty;
|
||||
public static Size sz物理画面 = Size.Empty;
|
||||
public static Rectangle rc物理画面描画領域 = Rectangle.Empty;
|
||||
/// <summary>
|
||||
/// <para>論理画面を1とする場合の物理画面の倍率。</para>
|
||||
/// <para>論理値×画面比率=物理値。</para>
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// <para>論理画面を1とする場合の物理画面の倍率。</para>
|
||||
/// <para>論理値×画面比率=物理値。</para>
|
||||
/// </summary>
|
||||
public static float f画面比率 = 1.0f;
|
||||
|
||||
internal uint Texture_;
|
||||
@ -328,17 +332,17 @@ namespace FDK {
|
||||
this.rc全画像 = new Rectangle(0, 0, this.sz画像サイズ.Width, this.sz画像サイズ.Height);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>指定されたビットマップオブジェクトから Managed テクスチャを作成する。</para>
|
||||
/// <para>テクスチャのサイズは、BITMAP画像のサイズ以上、かつ、D3D9デバイスで生成可能な最小のサイズに自動的に調節される。
|
||||
/// その際、テクスチャの調節後のサイズにあわせた画像の拡大縮小は行わない。</para>
|
||||
/// <para>その他、ミップマップ数は 1、Usage は None、Pool は Managed、イメージフィルタは Point、ミップマップフィルタは
|
||||
/// None、カラーキーは 0xFFFFFFFF(完全なる黒を透過)になる。</para>
|
||||
/// </summary>
|
||||
/// <param name="device">Direct3D9 デバイス。</param>
|
||||
/// <param name="bitmap">作成元のビットマップ。</param>
|
||||
/// <param name="format">テクスチャのフォーマット。</param>
|
||||
/// <exception cref="CTextureCreateFailedException">テクスチャの作成に失敗しました。</exception>
|
||||
/// <summary>
|
||||
/// <para>指定されたビットマップオブジェクトから Managed テクスチャを作成する。</para>
|
||||
/// <para>テクスチャのサイズは、BITMAP画像のサイズ以上、かつ、D3D9デバイスで生成可能な最小のサイズに自動的に調節される。
|
||||
/// その際、テクスチャの調節後のサイズにあわせた画像の拡大縮小は行わない。</para>
|
||||
/// <para>その他、ミップマップ数は 1、Usage は None、Pool は Managed、イメージフィルタは Point、ミップマップフィルタは
|
||||
/// None、カラーキーは 0xFFFFFFFF(完全なる黒を透過)になる。</para>
|
||||
/// </summary>
|
||||
/// <param name="device">Direct3D9 デバイス。</param>
|
||||
/// <param name="bitmap">作成元のビットマップ。</param>
|
||||
/// <param name="format">テクスチャのフォーマット。</param>
|
||||
/// <exception cref="CTextureCreateFailedException">テクスチャの作成に失敗しました。</exception>
|
||||
public CTexture(SKBitmap bitmap)
|
||||
: this() {
|
||||
try {
|
||||
@ -361,19 +365,19 @@ namespace FDK {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>画像ファイルからテクスチャを生成する。</para>
|
||||
/// <para>利用可能な画像形式は、BMP, JPG, PNG, TGA, DDS, PPM, DIB, HDR, PFM のいずれか。</para>
|
||||
/// <para>テクスチャのサイズは、画像のサイズ以上、かつ、D3D9デバイスで生成可能な最小のサイズに自動的に調節される。
|
||||
/// その際、テクスチャの調節後のサイズにあわせた画像の拡大縮小は行わない。</para>
|
||||
/// <para>その他、ミップマップ数は 1、Usage は None、イメージフィルタは Point、ミップマップフィルタは None になる。</para>
|
||||
/// </summary>
|
||||
/// <param name="device">Direct3D9 デバイス。</param>
|
||||
/// <param name="strファイル名">画像ファイル名。</param>
|
||||
/// <param name="format">テクスチャのフォーマット。</param>
|
||||
/// <param name="b黒を透過する">画像の黒(0xFFFFFFFF)を透過させるなら true。</param>
|
||||
/// <param name="pool">テクスチャの管理方法。</param>
|
||||
/// <exception cref="CTextureCreateFailedException">テクスチャの作成に失敗しました。</exception>
|
||||
/// <summary>
|
||||
/// <para>画像ファイルからテクスチャを生成する。</para>
|
||||
/// <para>利用可能な画像形式は、BMP, JPG, PNG, TGA, DDS, PPM, DIB, HDR, PFM のいずれか。</para>
|
||||
/// <para>テクスチャのサイズは、画像のサイズ以上、かつ、D3D9デバイスで生成可能な最小のサイズに自動的に調節される。
|
||||
/// その際、テクスチャの調節後のサイズにあわせた画像の拡大縮小は行わない。</para>
|
||||
/// <para>その他、ミップマップ数は 1、Usage は None、イメージフィルタは Point、ミップマップフィルタは None になる。</para>
|
||||
/// </summary>
|
||||
/// <param name="device">Direct3D9 デバイス。</param>
|
||||
/// <param name="strファイル名">画像ファイル名。</param>
|
||||
/// <param name="format">テクスチャのフォーマット。</param>
|
||||
/// <param name="b黒を透過する">画像の黒(0xFFFFFFFF)を透過させるなら true。</param>
|
||||
/// <param name="pool">テクスチャの管理方法。</param>
|
||||
/// <exception cref="CTextureCreateFailedException">テクスチャの作成に失敗しました。</exception>
|
||||
public CTexture(string strファイル名, bool b黒を透過する)
|
||||
: this() {
|
||||
MakeTexture(strファイル名, b黒を透過する);
|
||||
@ -447,6 +451,12 @@ namespace FDK {
|
||||
throw new CTextureCreateFailedException(string.Format("テクスチャの生成に失敗しました。\n"));
|
||||
}
|
||||
}
|
||||
|
||||
public void tSetScale(float x, float y) {
|
||||
vcScaleRatio.X = x;
|
||||
vcScaleRatio.Y = y;
|
||||
}
|
||||
|
||||
// メソッド
|
||||
|
||||
// 2016.11.10 kairera0467 拡張
|
||||
@ -589,6 +599,15 @@ namespace FDK {
|
||||
}
|
||||
|
||||
}
|
||||
public void t2D_DisplayImage_AnchorCenter(int x, int y) {
|
||||
this.t2D描画(x - (this.rc全画像.Width / 2 * this.vcScaleRatio.X), y - (this.rc全画像.Height / 2 * this.vcScaleRatio.Y), 1f, this.rc全画像);
|
||||
}
|
||||
public void t2D_DisplayImage_AnchorCenter(int x, int y, Rectangle rc) {
|
||||
this.t2D描画(x - (rc.Width / 2 * this.vcScaleRatio.X), y - (rc.Height / 2 * this.vcScaleRatio.Y), 1f, rc);
|
||||
}
|
||||
public void t2D_DisplayImage_AnchorCenter(int x, int y, RectangleF rc) {
|
||||
this.t2D描画(x - (rc.Width / 2 * this.vcScaleRatio.X), y - (rc.Height / 2 * this.vcScaleRatio.Y), 1f, rc);
|
||||
}
|
||||
|
||||
public enum RefPnt {
|
||||
UpLeft,
|
||||
@ -602,12 +621,22 @@ namespace FDK {
|
||||
DownRight,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// テクスチャを 2D 画像と見なして描画する。
|
||||
/// </summary>
|
||||
/// <param name="device">Direct3D9 デバイス。</param>
|
||||
/// <param name="x">描画位置(テクスチャの左上位置の X 座標[dot])。</param>
|
||||
/// <param name="y">描画位置(テクスチャの左上位置の Y 座標[dot])。</param>
|
||||
public void t2D_DisplayImage(int x, int y) {
|
||||
this.t2D描画(x, y, 1f, this.rc全画像);
|
||||
}
|
||||
public void t2D_DisplayImage(int x, int y, Rectangle rc画像内の描画領域) {
|
||||
this.t2D描画(x, y, 1f, rc画像内の描画領域);
|
||||
}
|
||||
public void t2D_DisplayImage(int x, int y, RectangleF rc) {
|
||||
this.t2D描画(x, y, 1f, rc);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// テクスチャを 2D 画像と見なして描画する。
|
||||
/// </summary>
|
||||
/// <param name="device">Direct3D9 デバイス。</param>
|
||||
/// <param name="x">描画位置(テクスチャの左上位置の X 座標[dot])。</param>
|
||||
/// <param name="y">描画位置(テクスチャの左上位置の Y 座標[dot])。</param>
|
||||
public void t2D描画(int x, int y) {
|
||||
this.t2D描画(x, y, 1f, this.rc全画像);
|
||||
}
|
||||
@ -825,7 +854,7 @@ namespace FDK {
|
||||
}
|
||||
|
||||
|
||||
#region [ IDisposable 実装 ]
|
||||
#region [ IDisposable 実装 ]
|
||||
//-----------------
|
||||
public void Dispose() {
|
||||
if (!this.bDispose完了済み) {
|
||||
@ -835,12 +864,12 @@ namespace FDK {
|
||||
}
|
||||
}
|
||||
//-----------------
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
|
||||
// その他
|
||||
|
||||
#region [ private ]
|
||||
#region [ private ]
|
||||
//-----------------
|
||||
private int _opacity;
|
||||
private bool bDispose完了済み;
|
||||
@ -877,6 +906,6 @@ namespace FDK {
|
||||
this.Opacity = o;
|
||||
}
|
||||
//-----------------
|
||||
#endregion
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,11 @@
|
||||
{
|
||||
"name": "Taiko",
|
||||
"path": "Taiko\\",
|
||||
"format": "WAV",
|
||||
},
|
||||
{
|
||||
"name": "Old Taiko",
|
||||
"path": "Old Taiko\\",
|
||||
"format": "OGG",
|
||||
},
|
||||
{
|
||||
|
BIN
OpenTaiko/Global/HitSounds/Taiko/Adlib.wav
Normal file
BIN
OpenTaiko/Global/HitSounds/Taiko/clap.wav
Normal file
BIN
OpenTaiko/Global/HitSounds/Taiko/dong.wav
Normal file
BIN
OpenTaiko/Global/HitSounds/Taiko/ka.wav
Normal file
@ -7,9 +7,10 @@
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.20" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="SevenZip" Version="19.0.0" />
|
||||
<PackageReference Include="NLua" Version="1.6.3" />
|
||||
<PackageReference Include="NLua" Version="1.7.3" />
|
||||
<PackageReference Include="System.Resources.Extensions" Version="7.0.0" />
|
||||
<PackageReference Include="DiscordRichPresence" Version="1.143.0" />
|
||||
<PackageReference Include="System.Text.Json" Version="8.0.4" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Databases/**" CopyToOutputDirectory="PreserveNewest" />
|
||||
|
@ -1,6 +1,6 @@
|
||||
// PeepoDrumKit 2023/10/28
|
||||
TITLE:CIRCUNFERENCIA
|
||||
SUBTITLE:--UKLO
|
||||
SUBTITLE:--ULKO
|
||||
BPM:216
|
||||
WAVE:CIRCUNFERENCIA.ogg
|
||||
OFFSET:0
|
||||
|
@ -0,0 +1,87 @@
|
||||
{
|
||||
"font_name_normal":{
|
||||
"size":22,
|
||||
"maxsize":330
|
||||
},
|
||||
"font_name_withtitle":{
|
||||
"size":18,
|
||||
"maxsize":180
|
||||
},
|
||||
"font_title":{
|
||||
"size":16,
|
||||
"maxsize":240
|
||||
},
|
||||
"font_dan":{
|
||||
"size":18,
|
||||
"maxsize":100
|
||||
},
|
||||
"text_name_normal":{
|
||||
"offset_x":181,
|
||||
"offset_y":68
|
||||
},
|
||||
"text_name_withtitle":{
|
||||
"offset_x":181,
|
||||
"offset_y":68
|
||||
},
|
||||
"text_name_full":{
|
||||
"offset_x":216,
|
||||
"offset_y":68
|
||||
},
|
||||
"text_title":{
|
||||
"offset_x":186,
|
||||
"offset_y":35
|
||||
},
|
||||
"text_dan":{
|
||||
"offset_x":103,
|
||||
"offset_y":68
|
||||
},
|
||||
"title_plate":{
|
||||
"offset_x":-3,
|
||||
"offset_y":-3
|
||||
},
|
||||
"titles":{
|
||||
"0":{
|
||||
"framecount":0,
|
||||
"effect":"none"
|
||||
},
|
||||
"1":{
|
||||
"framecount":0,
|
||||
"effect":"flash"
|
||||
},
|
||||
"2":{
|
||||
"framecount":0,
|
||||
"effect":"flash"
|
||||
},
|
||||
"3":{
|
||||
"framecount":0,
|
||||
"effect":"flash"
|
||||
},
|
||||
"4":{
|
||||
"framecount":0,
|
||||
"effect":"flash"
|
||||
},
|
||||
"5":{
|
||||
"framecount":0,
|
||||
"effect":"flash"
|
||||
},
|
||||
"6":{
|
||||
"framecount":0,
|
||||
"effect":"flash"
|
||||
},
|
||||
"7":{
|
||||
"framecount":5,
|
||||
"effect":"none"
|
||||
}
|
||||
},
|
||||
"stars": {
|
||||
"1":{
|
||||
"framecount":0
|
||||
},
|
||||
"2":{
|
||||
"framecount":0
|
||||
},
|
||||
"3":{
|
||||
"framecount":0
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,525 @@
|
||||
import ('System.Drawing')
|
||||
|
||||
local dan_types = { "Clear", "FC", "AP" }
|
||||
|
||||
local config = nil
|
||||
|
||||
local config_font_name_normal_size = nil
|
||||
local config_font_name_normal_maxsize = nil
|
||||
|
||||
local config_font_name_withtitle_size = nil
|
||||
local config_font_name_withtitle_maxsize = nil
|
||||
|
||||
local config_text_name_full_offset_x = nil
|
||||
local config_text_name_full_offset_y = nil
|
||||
|
||||
local config_font_title_size = nil
|
||||
local config_font_title_maxsize = nil
|
||||
|
||||
local config_font_dan_size = nil
|
||||
local config_font_dan_maxsize = nil
|
||||
|
||||
local config_text_title_offset_x = nil
|
||||
local config_text_title_offset_y = nil
|
||||
|
||||
local config_text_dan_offset_x = nil
|
||||
local config_text_dan_offset_y = nil
|
||||
|
||||
local config_title_plate_offset_x = nil
|
||||
local config_title_plate_offset_y = nil
|
||||
|
||||
local config_titletypes = { "0", "1" }
|
||||
local config_titleplate_effects = { }
|
||||
|
||||
local nameplate_count = 32
|
||||
|
||||
local base = nil
|
||||
local dan_gradation = { }
|
||||
|
||||
local players = { }
|
||||
local players_blue = nil
|
||||
|
||||
local titles = { }
|
||||
|
||||
local title_plates = { { } }
|
||||
local title_plate_star_big = { }
|
||||
local title_plate_star_small = { }
|
||||
local slash = nil
|
||||
|
||||
local title_stars_folders = { "1", "2", "3" }
|
||||
local title_stars = { { } }
|
||||
|
||||
local title_badge_of_achievement = nil
|
||||
local nameplates_achievement = {134,135,136,78,66,71,44,14,17}
|
||||
local title_badge_of_team_member = nil
|
||||
local nameplates_team_member = {}
|
||||
|
||||
local font_name_normal_size = nil
|
||||
local font_name_withtitle = nil
|
||||
local font_title = nil
|
||||
local font_dan = nil
|
||||
local player_data = { nil, nil, nil, nil, nil }
|
||||
|
||||
local name_titlekey = { nil, nil, nil, nil, nil }
|
||||
local title_titlekey = { nil, nil, nil, nil, nil }
|
||||
local dan_titlekey = { nil, nil, nil, nil, nil }
|
||||
local notitle = { false, false, false, false, false }
|
||||
local nodan = { false, false, false, false, false }
|
||||
|
||||
local titleplate_counter = 0
|
||||
local namePlateEffect_counter = 0
|
||||
|
||||
function tableContains(testTable, value)
|
||||
for i = 1,#testTable do
|
||||
if (testTable[i] == value) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function implDrawStar(scale, x, y, star_small)
|
||||
star_small:tSetScale(scale, scale)
|
||||
star_small:t2D_DisplayImage_AnchorCenter(x, y)
|
||||
end
|
||||
|
||||
function implDrawStarFlash(x, y, titleTexIndex)
|
||||
star_small = title_plate_star_small[titleTexIndex]
|
||||
|
||||
resolutionScaleX = 1920.0 / 1280.0;
|
||||
resolutionScaleY = 1080.0 / 720.0;
|
||||
|
||||
if namePlateEffect_counter <= 10 then
|
||||
implDrawStar(1.0 - (namePlateEffect_counter / 10 * 1.0), x + (63 * resolutionScaleX), y + (25 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 3 and namePlateEffect_counter <= 10 then
|
||||
implDrawStar(1.0 - ((namePlateEffect_counter - 3) / 7 * 1.0), x + (38 * resolutionScaleX), y + (7 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 6 and namePlateEffect_counter <= 10 then
|
||||
implDrawStar(1.0 - ((namePlateEffect_counter - 6) / 4 * 1.0), x + (51 * resolutionScaleX), y + (5 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 8 and namePlateEffect_counter <= 10 then
|
||||
implDrawStar(0.3 - ((namePlateEffect_counter - 8) / 2 * 0.3), x + (110 * resolutionScaleX), y + (25 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 11 and namePlateEffect_counter <= 13 then
|
||||
implDrawStar(1.0 - ((namePlateEffect_counter - 11) / 2 * 1.0), x + (38 * resolutionScaleX), y + (7 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 11 and namePlateEffect_counter <= 15 then
|
||||
implDrawStar(1.0, x + (51 * resolutionScaleX), y + 5, star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 11 and namePlateEffect_counter <= 17 then
|
||||
implDrawStar(1.0 - ((namePlateEffect_counter - 11) / 7 * 1.0), x + (110 * resolutionScaleX), y + (25 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 16 and namePlateEffect_counter <= 20 then
|
||||
implDrawStar(0.2 - ((namePlateEffect_counter - 16) / 4 * 0.2), x + (63 * resolutionScaleX), y + (25 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 17 and namePlateEffect_counter <= 20 then
|
||||
implDrawStar(1.0 - ((namePlateEffect_counter - 17) / 3 * 1.0), x + (99 * resolutionScaleX), y + (1 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 20 and namePlateEffect_counter <= 24 then
|
||||
implDrawStar(0.4, x + (63 * resolutionScaleX), y + 25, star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 20 and namePlateEffect_counter <= 25 then
|
||||
implDrawStar(1.0, x + (99 * resolutionScaleX), y + 1, star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 20 and namePlateEffect_counter <= 30 then
|
||||
implDrawStar(0.5 - ((namePlateEffect_counter - 20) / 10 * 0.5), x + (152 * resolutionScaleX), y + (7 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 31 and namePlateEffect_counter <= 37 then
|
||||
implDrawStar(0.5 - ((namePlateEffect_counter - 31) / 6 * 0.5), x + (176 * resolutionScaleX), y + (8 * resolutionScaleY), star_small)
|
||||
implDrawStar(1.0 - ((namePlateEffect_counter - 31) / 6 * 1.0), x + (175 * resolutionScaleX), y + (25 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 31 and namePlateEffect_counter <= 40 then
|
||||
implDrawStar(0.9 - ((namePlateEffect_counter - 31) / 9 * 0.9), x + (136 * resolutionScaleX), y + (24 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 34 and namePlateEffect_counter <= 40 then
|
||||
implDrawStar(0.7 - ((namePlateEffect_counter - 34) / 6 * 0.7), x + (159 * resolutionScaleX), y + (25 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 41 and namePlateEffect_counter <= 42 then
|
||||
implDrawStar(0.7, x + (159 * resolutionScaleX), y + (25 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 43 and namePlateEffect_counter <= 50 then
|
||||
implDrawStar(0.8 - ((namePlateEffect_counter - 43) / 7 * 0.8), x + (196 * resolutionScaleX), y + (23 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 51 and namePlateEffect_counter <= 57 then
|
||||
implDrawStar(0.8 - ((namePlateEffect_counter - 51) / 6 * 0.8), x + (51 * resolutionScaleX), y + (5 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 51 and namePlateEffect_counter <= 52 then
|
||||
implDrawStar(0.2, x + (166 * resolutionScaleX), y + (22 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 51 and namePlateEffect_counter <= 53 then
|
||||
implDrawStar(0.8, x + (136 * resolutionScaleX), y + (24 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 51 and namePlateEffect_counter <= 55 then
|
||||
implDrawStar(1.0, x + (176 * resolutionScaleX), y + (8 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 51 and namePlateEffect_counter <= 55 then
|
||||
implDrawStar(1.0, x + (176 * resolutionScaleX), y + (8 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 61 and namePlateEffect_counter <= 70 then
|
||||
implDrawStar(1.0 - ((namePlateEffect_counter - 61) / 9 * 1.0), x + (196 * resolutionScaleX), y + (23 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 61 and namePlateEffect_counter <= 67 then
|
||||
implDrawStar(0.7 - ((namePlateEffect_counter - 61) / 6 * 0.7), x + (214 * resolutionScaleX), y + (14 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 63 and namePlateEffect_counter <= 70 then
|
||||
implDrawStar(0.5 - ((namePlateEffect_counter - 63) / 7 * 0.5), x + (129 * resolutionScaleX), y + (24 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 63 and namePlateEffect_counter <= 70 then
|
||||
implDrawStar(0.5 - ((namePlateEffect_counter - 63) / 7 * 0.5), x + (129 * resolutionScaleX), y + (24 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 65 and namePlateEffect_counter <= 70 then
|
||||
implDrawStar(0.8 - ((namePlateEffect_counter - 65) / 5 * 0.8), x + (117 * resolutionScaleX), y + (7 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 71 and namePlateEffect_counter <= 72 then
|
||||
implDrawStar(0.8, x + (151 * resolutionScaleX), y + (25 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 71 and namePlateEffect_counter <= 74 then
|
||||
implDrawStar(0.8, x + (117 * resolutionScaleX), y + (7 * resolutionScaleY), star_small)
|
||||
end
|
||||
if namePlateEffect_counter >= 85 and namePlateEffect_counter <= 112 then
|
||||
slash.Opacity = 1400 - (namePlateEffect_counter - 85) * 50
|
||||
|
||||
slash:t2D_DisplayImage(x + ((((namePlateEffect_counter - 85) * (150 / 27))) * resolutionScaleX), y + (7 * resolutionScaleY));
|
||||
end
|
||||
if namePlateEffect_counter >= 105 and namePlateEffect_counter <= 120 then
|
||||
big_scale = 1.0
|
||||
if namePlateEffect_counter < 112 then
|
||||
big_scale = (namePlateEffect_counter - 105) / 8
|
||||
title_plate_star_big[titleTexIndex].Opacity = 255
|
||||
else
|
||||
title_plate_star_big[titleTexIndex].Opacity = (255 - (namePlateEffect_counter - 112) * 31.875)
|
||||
end
|
||||
title_plate_star_big[titleTexIndex]:tSetScale(big_scale, big_scale)
|
||||
title_plate_star_big[titleTexIndex]:t2D_DisplayImage_AnchorCenter(x + (193 * resolutionScaleX), y + (6 * resolutionScaleY))
|
||||
end
|
||||
end
|
||||
|
||||
function implDrawTitleEffect(x, y, titleTexIndex)
|
||||
if titleTexIndex >= 1 and titleTexIndex <= #title_plates then
|
||||
if config_titleplate_effects[titleTexIndex] == "flash" then
|
||||
implDrawStarFlash(x, y, titleTexIndex)
|
||||
elseif config_titleplate_effects[titleTexIndex] == "none" then
|
||||
else
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function implDrawRarityStars(o_x, o_y, opacity, rarity)
|
||||
local x = o_x
|
||||
local y = o_y - 20
|
||||
|
||||
local star_count = 0
|
||||
--Rare
|
||||
if rarity == 3 then
|
||||
star_count = 1
|
||||
--Epic
|
||||
elseif rarity == 4 then
|
||||
star_count = 2
|
||||
--Legendary / Mythical
|
||||
elseif rarity >= 5 then
|
||||
star_count = 3
|
||||
end
|
||||
|
||||
if star_count > 0 then
|
||||
local star_frame = 1 + math.ceil(titleplate_counter * (#title_stars[star_count] - 1))
|
||||
tx_titlestar = title_stars[star_count][star_frame]
|
||||
tx_titlestar.Opacity = opacity
|
||||
tx_titlestar:t2D_DisplayImage(x + config_title_plate_offset_x, y + config_title_plate_offset_y)
|
||||
end
|
||||
end
|
||||
|
||||
function implDrawBadges(x, y, opacity, nameplateId)
|
||||
if tableContains(nameplates_achievement, nameplateId) then
|
||||
title_badge_of_achievement.Opacity = opacity
|
||||
title_badge_of_achievement:t2D_DisplayImage(x + config_title_plate_offset_x, y + config_title_plate_offset_y)
|
||||
elseif tableContains(nameplates_team_member, nameplateId) then
|
||||
title_badge_of_team_member.Opacity = opacity
|
||||
title_badge_of_team_member:t2D_DisplayImage(x + config_title_plate_offset_x, y + config_title_plate_offset_y)
|
||||
end
|
||||
end
|
||||
|
||||
function implDrawTitlePlate(x, y, opacity, titleTexIndex)
|
||||
if titleTexIndex >= 1 and titleTexIndex <= #title_plates then
|
||||
titleplate_frame = 1 + math.ceil(titleplate_counter * (#title_plates[titleTexIndex] - 1))
|
||||
tx_titleplate = title_plates[titleTexIndex][titleplate_frame]
|
||||
tx_titleplate.Opacity = opacity
|
||||
tx_titleplate:t2D_DisplayImage(x + config_title_plate_offset_x, y + config_title_plate_offset_y)
|
||||
end
|
||||
end
|
||||
|
||||
function implDrawPlayerRing(x, y, opacity, player_lua, side_lua)
|
||||
if (player_lua == 1 and side_lua == 2) then
|
||||
players_blue.Opacity = opacity
|
||||
players_blue:t2D_DisplayImage(x, y)
|
||||
else
|
||||
players[player_lua].Opacity = opacity
|
||||
players[player_lua]:t2D_DisplayImage(x, y)
|
||||
end
|
||||
end
|
||||
|
||||
function reloadLanguage(lang)
|
||||
end
|
||||
|
||||
function getCharaOffset()
|
||||
return base.szTextureSize.Width / 2
|
||||
end
|
||||
|
||||
function setInfos(player, name, title, dan, data)
|
||||
local player_lua = player + 1
|
||||
|
||||
player_data[player_lua] = data
|
||||
|
||||
notitle[player_lua] = (title == "")
|
||||
nodan[player_lua] = (player_data[player_lua].Dan == nil or player_data[player_lua].Dan == "")
|
||||
|
||||
if notitle[player_lua] then
|
||||
name_titlekey[player_lua] = createTitleTextureKey(name, font_name_normal_size, 99999)
|
||||
else
|
||||
name_titlekey[player_lua] = createTitleTextureKey(name, font_name_withtitle, 99999)
|
||||
end
|
||||
title_titlekey[player_lua] = createTitleTextureKey(title, font_title, 99999, Color.FromArgb(0,0,0,1), Color.FromArgb(0,0,0,0))
|
||||
dan_titlekey[player_lua] = createTitleTextureKey(dan, font_dan, 99999)
|
||||
end
|
||||
|
||||
function loadAssets()
|
||||
config = loadConfig("Config.json")
|
||||
|
||||
config_font_name_normal_size = getNum(config["font_name_normal"]["size"])
|
||||
config_font_name_normal_maxsize = getNum(config["font_name_normal"]["maxsize"])
|
||||
|
||||
config_font_name_withtitle_size = getNum(config["font_name_withtitle"]["size"])
|
||||
config_font_name_withtitle_maxsize = getNum(config["font_name_withtitle"]["maxsize"])
|
||||
|
||||
config_font_title_size = getNum(config["font_title"]["size"])
|
||||
config_font_title_maxsize = getNum(config["font_title"]["maxsize"])
|
||||
|
||||
config_font_dan_size = getNum(config["font_dan"]["size"])
|
||||
config_font_dan_maxsize = getNum(config["font_dan"]["maxsize"])
|
||||
|
||||
config_text_name_normal_offset_x = getNum(config["text_name_normal"]["offset_x"])
|
||||
config_text_name_normal_offset_y = getNum(config["text_name_normal"]["offset_y"])
|
||||
|
||||
config_text_name_withtitle_offset_x = getNum(config["text_name_withtitle"]["offset_x"])
|
||||
config_text_name_withtitle_offset_y = getNum(config["text_name_withtitle"]["offset_y"])
|
||||
|
||||
config_text_name_full_offset_x = getNum(config["text_name_full"]["offset_x"])
|
||||
config_text_name_full_offset_y = getNum(config["text_name_full"]["offset_y"])
|
||||
|
||||
config_text_title_offset_x = getNum(config["text_title"]["offset_x"])
|
||||
config_text_title_offset_y = getNum(config["text_title"]["offset_y"])
|
||||
|
||||
config_text_dan_offset_x = getNum(config["text_dan"]["offset_x"])
|
||||
config_text_dan_offset_y = getNum(config["text_dan"]["offset_y"])
|
||||
|
||||
config_title_plate_offset_x = getNum(config["title_plate"]["offset_x"])
|
||||
config_title_plate_offset_y = getNum(config["title_plate"]["offset_y"])
|
||||
|
||||
for i = 0, nameplate_count - 1 do
|
||||
config_titletypes[i + 1] = tostring(i)
|
||||
end
|
||||
|
||||
base = loadTexture("Base.png")
|
||||
dan_base = loadTexture("Dan_Base.png")
|
||||
slash = loadTexture("Shines/Slash.png")
|
||||
|
||||
title_badge_of_achievement = loadTexture("Badges/0.png")
|
||||
title_badge_of_team_member = loadTexture("Badges/1.png")
|
||||
|
||||
for i = 1, 3 do
|
||||
dan_gradation[i] = loadTexture("Dan_"..dan_types[i]..".png")
|
||||
end
|
||||
|
||||
for i = 1, 5 do
|
||||
players[i] = loadTexture(tostring(i).."P.png")
|
||||
end
|
||||
players_blue = loadTexture("1P_Blue.png")
|
||||
|
||||
--Load title plates
|
||||
for i = 1, #config_titletypes do
|
||||
titledir = "Title/"..config_titletypes[i]
|
||||
|
||||
titleplate_config = config["titles"][config_titletypes[i]]
|
||||
|
||||
config_titleplate_effects[i] = "none"
|
||||
config_titleplate_framecount = 0
|
||||
|
||||
if titleplate_config ~= nil then
|
||||
config_titleplate_effects[i] = getText(titleplate_config["effect"])
|
||||
config_titleplate_framecount = getNum(titleplate_config["framecount"])
|
||||
end
|
||||
|
||||
local titleplates = { }
|
||||
|
||||
for j = 0, config_titleplate_framecount do
|
||||
titleplates[j + 1] = loadTexture(titledir.."/"..j..".png")
|
||||
end
|
||||
title_plates[i] = titleplates
|
||||
|
||||
if config_titleplate_effects[i] == "flash" then
|
||||
title_plate_star_small[i] = loadTexture(titledir.."/Small.png")
|
||||
title_plate_star_big[i] = loadTexture(titledir.."/Big.png")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--Load rarity stars
|
||||
for i = 1, #title_stars_folders do
|
||||
stardir = "Stars/"..title_stars_folders[i]
|
||||
|
||||
title_stars_config = config["stars"][title_stars_folders[i]]
|
||||
|
||||
config_stars_framecount = 0
|
||||
|
||||
if title_stars_config ~= nil then
|
||||
config_stars_framecount = getNum(title_stars_config["framecount"])
|
||||
end
|
||||
|
||||
local stars = { }
|
||||
for j = 0, config_stars_framecount do
|
||||
stars[j + 1] = loadTexture(stardir.."/"..j..".png")
|
||||
end
|
||||
title_stars[i] = stars
|
||||
end
|
||||
|
||||
font_name_normal_size = loadFontRenderer(config_font_name_normal_size, "regular")
|
||||
font_name_withtitle = loadFontRenderer(config_font_name_withtitle_size, "regular")
|
||||
font_title = loadFontRenderer(config_font_title_size, "regular")
|
||||
font_dan = loadFontRenderer(config_font_dan_size, "regular")
|
||||
end
|
||||
|
||||
function drawDan(o_x, o_y, opacity, type, titleTex)
|
||||
--Shift on side bar
|
||||
local x = o_x - 180
|
||||
local y = o_y + 5
|
||||
|
||||
--White background
|
||||
base.Opacity = opacity
|
||||
base:t2D_DisplayImage(x, y)
|
||||
|
||||
--Dan base
|
||||
dan_base.Opacity = opacity
|
||||
dan_base:t2D_DisplayImage(x, y)
|
||||
dan_gradation[type + 1].Opacity = opacity
|
||||
dan_gradation[type + 1]:t2D_DisplayImage(x, y)
|
||||
|
||||
--Player number
|
||||
implDrawPlayerRing(x, y, opacity, 1, 1)
|
||||
|
||||
--Dan text
|
||||
if not(nodan[player_lua]) then
|
||||
titleTex:tSetScale(math.min(config_font_dan_maxsize / titleTex.szTextureSize.Width, 1.0), 1.0)
|
||||
titleTex.Opacity = opacity
|
||||
titleTex:t2D_DisplayImage_AnchorCenter(x + config_text_dan_offset_x, y + config_text_dan_offset_y)
|
||||
end
|
||||
end
|
||||
|
||||
function drawTitlePlate(o_x, o_y, opacity, titletype, titleTex, rarityInt, nameplateId)
|
||||
--Shift on side bar
|
||||
local x = o_x - 180
|
||||
local y = o_y + 5
|
||||
|
||||
--White background
|
||||
base.Opacity = opacity
|
||||
base:t2D_DisplayImage(x, y)
|
||||
|
||||
--Upper (title) plate
|
||||
implDrawTitlePlate(x, y, opacity, titletype + 1)
|
||||
|
||||
--Rarity stars
|
||||
implDrawRarityStars(x, y, opacity, rarityInt)
|
||||
|
||||
--Badges
|
||||
implDrawBadges(x, y, opacity, nameplateId)
|
||||
|
||||
--Glow
|
||||
implDrawTitleEffect(x, y, titletype + 1)
|
||||
|
||||
--Player number
|
||||
implDrawPlayerRing(x, y, opacity, 1, 1)
|
||||
|
||||
--Title/Name text
|
||||
titleTex:tSetScale(math.min(config_font_title_maxsize / titleTex.szTextureSize.Width, 1.0), 1.0)
|
||||
titleTex.Opacity = opacity
|
||||
titleTex:t2D_DisplayImage_AnchorCenter(x + config_text_title_offset_x, y + config_text_title_offset_y)
|
||||
end
|
||||
|
||||
function update()
|
||||
titleplate_counter = titleplate_counter + (3.3 * fps.deltaTime)
|
||||
if titleplate_counter >= 1 then
|
||||
titleplate_counter = 0
|
||||
end
|
||||
|
||||
namePlateEffect_counter = namePlateEffect_counter + (60 * fps.deltaTime)
|
||||
if namePlateEffect_counter >= 120 then
|
||||
namePlateEffect_counter = 0
|
||||
end
|
||||
end
|
||||
|
||||
function draw(x, y, opacity, player, side)
|
||||
local player_lua = player + 1
|
||||
local side_lua = side + 1
|
||||
local rarityInt = player_data[player_lua].TitleRarityInt
|
||||
local nameplateId = player_data[player_lua].TitleId
|
||||
|
||||
--White background
|
||||
base.Opacity = opacity
|
||||
base:t2D_DisplayImage(x, y)
|
||||
|
||||
--Upper (title) plate
|
||||
titleplate_index = player_data[player_lua].TitleType + 1
|
||||
if not(notitle[player_lua]) then
|
||||
implDrawTitlePlate(x, y, opacity, titleplate_index)
|
||||
end
|
||||
|
||||
--Rarity stars
|
||||
implDrawRarityStars(x, y, opacity, rarityInt)
|
||||
|
||||
--Badges
|
||||
implDrawBadges(x, y, opacity, nameplateId)
|
||||
|
||||
--Dan plate
|
||||
if not(player_data[player_lua].Dan == nil) and not(player_data[player_lua].Dan == "") then
|
||||
dan_base.Opacity = opacity
|
||||
dan_base:t2D_DisplayImage(x, y)
|
||||
dan_gradation[player_data[player_lua].DanType + 1].Opacity = opacity
|
||||
dan_gradation[player_data[player_lua].DanType + 1]:t2D_DisplayImage(x, y)
|
||||
end
|
||||
|
||||
--Glow
|
||||
implDrawTitleEffect(x, y, titleplate_index)
|
||||
|
||||
--Player number
|
||||
implDrawPlayerRing(x, y, opacity, player_lua, side_lua)
|
||||
|
||||
--Dan text
|
||||
if not(nodan[player_lua]) then
|
||||
tx_dan = getTextTex(dan_titlekey[player_lua], false, false)
|
||||
tx_dan:tSetScale(math.min(config_font_dan_maxsize / tx_dan.szTextureSize.Width, 1.0), 1.0)
|
||||
tx_dan.Opacity = opacity
|
||||
tx_dan:t2D_DisplayImage_AnchorCenter(x + config_text_dan_offset_x, y + config_text_dan_offset_y)
|
||||
end
|
||||
|
||||
--Title/Name text
|
||||
if notitle[player_lua] then
|
||||
tx_name = getTextTex(name_titlekey[player_lua], false, false)
|
||||
tx_name:tSetScale(math.min(config_font_name_normal_maxsize / tx_name.szTextureSize.Width, 1.0), 1.0)
|
||||
tx_name.Opacity = opacity
|
||||
tx_name:t2D_DisplayImage_AnchorCenter(x + config_text_name_normal_offset_x, y + config_text_name_normal_offset_y)
|
||||
else
|
||||
tx_title = getTextTex(title_titlekey[player_lua], false, false)
|
||||
tx_title:tSetScale(math.min(config_font_title_maxsize / tx_title.szTextureSize.Width, 1.0), 1.0)
|
||||
tx_title.Opacity = opacity
|
||||
tx_title:t2D_DisplayImage_AnchorCenter(x + config_text_title_offset_x, y + config_text_title_offset_y)
|
||||
|
||||
tx_name = getTextTex(name_titlekey[player_lua], false, false)
|
||||
tx_name:tSetScale(math.min(config_font_name_withtitle_maxsize / tx_name.szTextureSize.Width, 1.0), 1.0)
|
||||
tx_name.Opacity = opacity
|
||||
if nodan[player_lua] then
|
||||
tx_name:t2D_DisplayImage_AnchorCenter(x + config_text_name_withtitle_offset_x, y + config_text_name_withtitle_offset_y)
|
||||
else
|
||||
tx_name:t2D_DisplayImage_AnchorCenter(x + config_text_name_full_offset_x, y + config_text_name_full_offset_y)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 9.6 KiB |
After Width: | Height: | Size: 9.5 KiB |
After Width: | Height: | Size: 9.3 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 8.5 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 7.7 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 9.9 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 9.9 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 9.9 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 9.7 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 63 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 8.4 KiB |
After Width: | Height: | Size: 8.3 KiB |
After Width: | Height: | Size: 8.4 KiB |
After Width: | Height: | Size: 8.4 KiB |
After Width: | Height: | Size: 8.5 KiB |
After Width: | Height: | Size: 8.5 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 76 KiB |
@ -0,0 +1,31 @@
|
||||
0 - Wood
|
||||
1 - Orange
|
||||
2 - Purple
|
||||
3 - Green
|
||||
4 - Red
|
||||
5 - Blue
|
||||
6 - Gray
|
||||
7 - Rainbow
|
||||
8 - Space
|
||||
9 - Diamond
|
||||
10 - ?
|
||||
11 - Gold
|
||||
12 - Pearl
|
||||
13 - Platinum
|
||||
14 - Kohaku (Character plate)
|
||||
15 - Dashy (Character plate)
|
||||
16 - Blue
|
||||
17 - Red
|
||||
18 - Sky Purple
|
||||
19 - AI
|
||||
20 - Cyan
|
||||
21 - OpTk Yellow (Roll)
|
||||
22 - Bol white
|
||||
23 - Saturated blue
|
||||
24 - Saturated green
|
||||
25 - OpTk Chapter I
|
||||
26 - OpTk Chapter II
|
||||
27 - OpTk Chapter III
|
||||
28 - OpTk Light
|
||||
29 - OpTk Dark
|
||||
30 - NEP0
|
@ -1,6 +1,5 @@
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
|
@ -83,7 +83,7 @@ namespace TJAPlayer3 {
|
||||
}
|
||||
|
||||
// Automatically set the dan to nameplate if new
|
||||
// Add a function within the NamePlate.cs file to update the title texture
|
||||
// Add a function within the NamePlate.cs file to update the title texture
|
||||
|
||||
if (!this.data.DanTitles.ContainsKey(title) || cs != clearStatus || iG != isGold) {
|
||||
DBSaves.RegisterDanTitle(data.SaveId, title, clearStatus, isGold);
|
||||
@ -193,9 +193,16 @@ namespace TJAPlayer3 {
|
||||
[JsonProperty("titleType")]
|
||||
public int TitleType = 0;
|
||||
|
||||
[JsonIgnore]
|
||||
public int TitleRarityInt = 1;
|
||||
|
||||
[JsonIgnore]
|
||||
public int TitleId = -1;
|
||||
|
||||
[JsonProperty("puchiChara")]
|
||||
public string PuchiChara = "0";
|
||||
|
||||
|
||||
[JsonProperty("medals")]
|
||||
public Int64 Medals = 0;
|
||||
|
||||
|
@ -312,7 +312,7 @@ namespace TJAPlayer3 {
|
||||
private set;
|
||||
}
|
||||
// public static CStageオプション stageオプション
|
||||
// {
|
||||
// {
|
||||
// get;
|
||||
// private set;
|
||||
// }
|
||||
@ -653,8 +653,8 @@ namespace TJAPlayer3 {
|
||||
|
||||
//CameraTest
|
||||
/*
|
||||
Camera *= Matrix4X4.CreateScale(1.0f / ScreenAspect, 1.0f, 1.0f) *
|
||||
Matrix4X4.CreateRotationZ(MathF.PI / 4.0f) *
|
||||
Camera *= Matrix4X4.CreateScale(1.0f / ScreenAspect, 1.0f, 1.0f) *
|
||||
Matrix4X4.CreateRotationZ(MathF.PI / 4.0f) *
|
||||
Matrix4X4.CreateScale(1.0f * ScreenAspect, 1.0f, 1.0f);
|
||||
*/
|
||||
|
||||
@ -717,6 +717,7 @@ namespace TJAPlayer3 {
|
||||
#endregion
|
||||
|
||||
if (r現在のステージ != null) {
|
||||
TJAPlayer3.NamePlate.lcNamePlate.Update();
|
||||
this.n進行描画の戻り値 = (r現在のステージ != null) ? r現在のステージ.Draw() : 0;
|
||||
|
||||
#region [ プラグインの進行描画 ]
|
||||
@ -1484,7 +1485,7 @@ namespace TJAPlayer3 {
|
||||
|
||||
Trace.TraceInformation("----------------------");
|
||||
Trace.TraceInformation("■ Gameplay (Drum Screen)");
|
||||
#if false // #23625 2011.1.11 Config.iniからダメージ/回復値の定数変更を行う場合はここを有効にする 087リリースに合わせ機能無効化
|
||||
#if false // #23625 2011.1.11 Config.iniからダメージ/回復値の定数変更を行う場合はここを有効にする 087リリースに合わせ機能無効化
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
for (int j = 0; j < 2; j++)
|
||||
@ -1494,7 +1495,7 @@ for (int i = 0; i < 5; i++)
|
||||
}
|
||||
for (int i = 0; i < 3; i++) {
|
||||
stage演奏ドラム画面.fDamageLevelFactor[i] = ConfigIni.fDamageLevelFactor[i];
|
||||
}
|
||||
}
|
||||
#endif
|
||||
r直前のステージ = r現在のステージ;
|
||||
r現在のステージ = stage演奏ドラム画面;
|
||||
@ -2257,7 +2258,7 @@ for (int i = 0; i < 3; i++) {
|
||||
//-----------------
|
||||
private bool bマウスカーソル表示中 = true;
|
||||
private bool b終了処理完了済み;
|
||||
private bool bネットワークに接続中 = false;
|
||||
public bool bネットワークに接続中 { get; private set; } = false;
|
||||
private long 前回のシステム時刻ms = long.MinValue;
|
||||
private static CDTX[] dtx = new CDTX[5];
|
||||
|
||||
@ -2430,7 +2431,7 @@ for (int i = 0; i < 3; i++) {
|
||||
actTextConsole = new CTextConsole();
|
||||
Trace.TraceInformation("Console initialized.");
|
||||
actTextConsole.Activate();
|
||||
//if (!ConfigIni.PreAssetsLoading)
|
||||
//if (!ConfigIni.PreAssetsLoading)
|
||||
{
|
||||
actTextConsole.CreateManagedResource();
|
||||
actTextConsole.CreateUnmanagedResource();
|
||||
@ -2904,7 +2905,7 @@ for (int i = 0; i < 3; i++) {
|
||||
Trace.Indent();
|
||||
try {
|
||||
actTextConsole.DeActivate();
|
||||
//if (!ConfigIni.PreAssetsLoading)
|
||||
//if (!ConfigIni.PreAssetsLoading)
|
||||
{
|
||||
actTextConsole.ReleaseManagedResource();
|
||||
actTextConsole.ReleaseUnmanagedResource();
|
||||
|
@ -157,6 +157,8 @@ namespace TJAPlayer3 {
|
||||
sf.data.TotalPlaycount = (int)(Int64)reader["TotalPlaycount"];
|
||||
sf.data.AIBattleModePlaycount = (int)(Int64)reader["AIBattleModePlaycount"];
|
||||
sf.data.AIBattleModeWins = (int)(Int64)reader["AIBattleModeWins"];
|
||||
sf.data.TitleRarityInt = (int)(Int64)reader["PlayerNameplateRarityInt"];
|
||||
sf.data.TitleId = (int)(Int64)reader["PlayerNameplateId"];
|
||||
sf.tInitSaveFile();
|
||||
sf.tLoadUnlockables();
|
||||
|
||||
@ -207,6 +209,8 @@ namespace TJAPlayer3 {
|
||||
PlayerNameplateType = {SaveData.TitleType},
|
||||
PlayerPuchichara = '{SaveData.PuchiChara.EscapeSingleQuotes()}',
|
||||
PlayerCharacter = {SaveData.Character},
|
||||
PlayerNameplateRarityInt = {SaveData.TitleRarityInt},
|
||||
PlayerNameplateId = {SaveData.TitleId},
|
||||
PlayerCharacterName = '{SaveData.CharacterName.EscapeSingleQuotes()}'
|
||||
WHERE SaveId = {SaveData.SaveId};
|
||||
;";
|
||||
@ -316,7 +320,7 @@ namespace TJAPlayer3 {
|
||||
currentPlay.HighScoreBoomCount = chartScore.nMine;
|
||||
}
|
||||
|
||||
// 2nd step: Overwrite the instance with best play results if exists
|
||||
// 2nd step: Overwrite the instance with best play results if exists
|
||||
{
|
||||
SqliteCommand cmd = connection.CreateCommand();
|
||||
cmd.CommandText =
|
||||
|
@ -35,6 +35,7 @@
|
||||
// CLangManager.LangInstance = new CLang_jp();
|
||||
// break;
|
||||
//}
|
||||
CLuaScript.tReloadLanguage(lang);
|
||||
}
|
||||
|
||||
public static int langToInt(string lang) {
|
||||
|
@ -24,7 +24,20 @@ namespace TJAPlayer3 {
|
||||
}
|
||||
|
||||
public string str項目名;
|
||||
public string strName {
|
||||
get {
|
||||
return str項目名;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public string str説明文;
|
||||
public string strDescription {
|
||||
get {
|
||||
return str説明文;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// コンストラクタ
|
||||
@ -92,6 +105,11 @@ namespace TJAPlayer3 {
|
||||
public virtual object obj現在値() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public string tGetValueText() {
|
||||
object value = obj現在値();
|
||||
return value == null ? "" : value.ToString();
|
||||
}
|
||||
public virtual int GetIndex() {
|
||||
return 0;
|
||||
}
|
||||
|
231
OpenTaiko/src/Lua/CLuaScript.cs
Normal file
@ -0,0 +1,231 @@
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Text.Json.Nodes;
|
||||
using FDK;
|
||||
using NLua;
|
||||
using static TJAPlayer3.CActSelect曲リスト;
|
||||
|
||||
namespace TJAPlayer3 {
|
||||
class CLuaScript : IDisposable {
|
||||
private static List<CLuaScript> listScripts = new List<CLuaScript>();
|
||||
public static void tReloadLanguage(string lang) {
|
||||
foreach (var item in listScripts) {
|
||||
item.ReloadLanguage(lang);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public string strDir { get; private set; }
|
||||
public string strTexturesDir { get; private set; }
|
||||
public string strSounsdDir { get; private set; }
|
||||
|
||||
public bool bLoadedAssets { get; private set; }
|
||||
public bool bDisposed { get; private set; }
|
||||
public bool bCrashed { get; protected set; }
|
||||
|
||||
protected Lua LuaScript { get; private set; }
|
||||
|
||||
private LuaFunction lfLoadAssets;
|
||||
private LuaFunction lfReloadLanguage;
|
||||
|
||||
private CLuaInfo luaInfo;
|
||||
private CLuaFps luaFPS = new CLuaFps();
|
||||
|
||||
private List<IDisposable> listDisposables = new List<IDisposable>();
|
||||
|
||||
protected bool Avaibale {
|
||||
get {
|
||||
return bLoadedAssets && !bDisposed && !bCrashed;
|
||||
}
|
||||
}
|
||||
|
||||
private double getNum(JsonValue x) {
|
||||
return (double)x;
|
||||
}
|
||||
|
||||
private string getText(JsonValue x) {
|
||||
return (string)x;
|
||||
}
|
||||
|
||||
private List<double> getNumArray(JsonArray x) {
|
||||
List<double> array = new List<double>();
|
||||
|
||||
foreach (double value in x) {
|
||||
array.Add(value);
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
private List<string> getTextArray(JsonArray x) {
|
||||
List<string> array = new List<string>();
|
||||
|
||||
foreach (string value in x) {
|
||||
array.Add(value);
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
protected object[] RunLuaCode(LuaFunction luaFunction, params object[] args) {
|
||||
try {
|
||||
var ret = luaFunction.Call(args);
|
||||
LuaScript.State.GarbageCollector(KeraLua.LuaGC.Collect, 0);
|
||||
return ret;
|
||||
} catch (Exception exception) {
|
||||
Crash(exception);
|
||||
}
|
||||
return new object[0];
|
||||
}
|
||||
|
||||
private JsonNode LoadConfig(string name) {
|
||||
using Stream stream = File.OpenRead($"{strDir}/{name}");
|
||||
JsonNode jsonNode = JsonNode.Parse(stream);
|
||||
return jsonNode;
|
||||
}
|
||||
|
||||
private CTexture LoadTexture(string name) {
|
||||
CTexture texture = new CTexture($"{strTexturesDir}/{name}", false);
|
||||
|
||||
listDisposables.Add(texture);
|
||||
return texture;
|
||||
}
|
||||
|
||||
private void DebugLog(string message) {
|
||||
Trace.TraceInformation("<Lua Log>: " + message);
|
||||
}
|
||||
|
||||
private CSound LoadSound(string name, string soundGroupName) {
|
||||
ESoundGroup soundGroup;
|
||||
switch (soundGroupName) {
|
||||
case "soundeffect":
|
||||
soundGroup = ESoundGroup.SoundEffect;
|
||||
break;
|
||||
case "voice":
|
||||
soundGroup = ESoundGroup.Voice;
|
||||
break;
|
||||
case "songpreview":
|
||||
soundGroup = ESoundGroup.SongPreview;
|
||||
break;
|
||||
case "songplayback":
|
||||
soundGroup = ESoundGroup.SongPlayback;
|
||||
break;
|
||||
default:
|
||||
soundGroup = ESoundGroup.Unknown;
|
||||
break;
|
||||
}
|
||||
CSound sound = TJAPlayer3.SoundManager?.tCreateSound($"{strSounsdDir}/{name}", soundGroup);
|
||||
|
||||
listDisposables.Add(sound);
|
||||
return sound;
|
||||
}
|
||||
|
||||
private CCachedFontRenderer LoadFontRenderer(int size, string fontStyleName) {
|
||||
CFontRenderer.FontStyle fontStyle;
|
||||
switch (fontStyleName) {
|
||||
case "regular":
|
||||
fontStyle = CFontRenderer.FontStyle.Regular;
|
||||
break;
|
||||
case "bold":
|
||||
fontStyle = CFontRenderer.FontStyle.Bold;
|
||||
break;
|
||||
case "italic":
|
||||
fontStyle = CFontRenderer.FontStyle.Italic;
|
||||
break;
|
||||
case "underline":
|
||||
fontStyle = CFontRenderer.FontStyle.Underline;
|
||||
break;
|
||||
case "strikeout":
|
||||
fontStyle = CFontRenderer.FontStyle.Strikeout;
|
||||
break;
|
||||
default:
|
||||
fontStyle = CFontRenderer.FontStyle.Regular;
|
||||
break;
|
||||
}
|
||||
CCachedFontRenderer fontRenderer = HPrivateFastFont.tInstantiateMainFont(size, fontStyle);
|
||||
|
||||
listDisposables.Add(fontRenderer);
|
||||
return fontRenderer;
|
||||
}
|
||||
|
||||
private TitleTextureKey CreateTitleTextureKey(string title, CCachedFontRenderer fontRenderer, int maxSize, Color? color = null, Color? edgeColor = null) {
|
||||
return new TitleTextureKey(title, fontRenderer, color ?? Color.White, edgeColor ?? Color.Black, maxSize);
|
||||
}
|
||||
|
||||
private CTexture GetTextTex(CActSelect曲リスト.TitleTextureKey titleTextureKey, bool vertical, bool keepCenter) {
|
||||
return TJAPlayer3.stageSongSelect.actSongList.ResolveTitleTexture(titleTextureKey, vertical, keepCenter);
|
||||
}
|
||||
|
||||
public CLuaScript(string dir, string? texturesDir = null, string? soundsDir = null, bool loadAssets = true) {
|
||||
strDir = dir;
|
||||
strTexturesDir = texturesDir ?? $"{dir}/Textures";
|
||||
strSounsdDir = soundsDir ?? $"{dir}/Sounds";
|
||||
|
||||
|
||||
LuaScript = new Lua();
|
||||
LuaScript.LoadCLRPackage();
|
||||
LuaScript.State.Encoding = Encoding.UTF8;
|
||||
LuaScript.DoFile($"{strDir}/Script.lua");
|
||||
|
||||
LuaScript["info"] = luaInfo = new CLuaInfo(strDir);
|
||||
LuaScript["fps"] = luaFPS;
|
||||
|
||||
|
||||
lfLoadAssets = (LuaFunction)LuaScript["loadAssets"];
|
||||
lfReloadLanguage = (LuaFunction)LuaScript["reloadLanguage"];
|
||||
|
||||
LuaScript["loadConfig"] = LoadConfig;
|
||||
LuaScript["loadTexture"] = LoadTexture;
|
||||
LuaScript["loadSound"] = LoadSound;
|
||||
LuaScript["loadFontRenderer"] = LoadFontRenderer;
|
||||
LuaScript["createTitleTextureKey"] = CreateTitleTextureKey;
|
||||
LuaScript["getTextTex"] = GetTextTex;
|
||||
LuaScript["getNum"] = getNum;
|
||||
LuaScript["getText"] = getText;
|
||||
LuaScript["getNumArray"] = getNumArray;
|
||||
LuaScript["getTextArray"] = getTextArray;
|
||||
LuaScript["displayDanPlate"] = CActSelect段位リスト.tDisplayDanPlate;
|
||||
LuaScript["debugLog"] = DebugLog;
|
||||
|
||||
|
||||
if (loadAssets) LoadAssets();
|
||||
|
||||
listScripts.Add(this);
|
||||
}
|
||||
|
||||
public void LoadAssets(params object[] args) {
|
||||
if (bLoadedAssets) return;
|
||||
|
||||
RunLuaCode(lfLoadAssets, args);
|
||||
|
||||
bLoadedAssets = true;
|
||||
bDisposed = false;
|
||||
}
|
||||
|
||||
public void ReloadLanguage(params object[] args) {
|
||||
RunLuaCode(lfReloadLanguage, args);
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
if (bDisposed) return;
|
||||
|
||||
foreach (IDisposable disposable in listDisposables) {
|
||||
disposable.Dispose();
|
||||
}
|
||||
listDisposables.Clear();
|
||||
|
||||
LuaScript.Dispose();
|
||||
|
||||
bDisposed = true;
|
||||
bLoadedAssets = false;
|
||||
|
||||
listScripts.Remove(this);
|
||||
}
|
||||
|
||||
private void Crash(Exception exception) {
|
||||
bCrashed = true;
|
||||
|
||||
LogNotification.PopError($"Lua Script Error: {exception.ToString()}");
|
||||
}
|
||||
}
|
||||
}
|
6
OpenTaiko/src/Lua/Infos/CLuaFps.cs
Normal file
@ -0,0 +1,6 @@
|
||||
namespace TJAPlayer3 {
|
||||
internal class CLuaFps {
|
||||
public double deltaTime => TJAPlayer3.FPS.DeltaTime;
|
||||
public int fps => TJAPlayer3.FPS.NowFPS;
|
||||
}
|
||||
}
|
15
OpenTaiko/src/Lua/Infos/CLuaInfo.cs
Normal file
@ -0,0 +1,15 @@
|
||||
namespace TJAPlayer3 {
|
||||
internal class CLuaInfo {
|
||||
public int playerCount => TJAPlayer3.ConfigIni.nPlayerCount;
|
||||
public string lang => TJAPlayer3.ConfigIni.sLang;
|
||||
public bool simplemode => TJAPlayer3.ConfigIni.SimpleMode;
|
||||
public bool p1IsBlue => TJAPlayer3.P1IsBlue();
|
||||
public bool online => TJAPlayer3.app.bネットワークに接続中;
|
||||
|
||||
public string dir { get; init; }
|
||||
|
||||
public CLuaInfo(string dir) {
|
||||
this.dir = dir;
|
||||
}
|
||||
}
|
||||
}
|
58
OpenTaiko/src/Lua/Scripts/CLuaNamePlateScript.cs
Normal file
@ -0,0 +1,58 @@
|
||||
using FDK;
|
||||
using NLua;
|
||||
|
||||
namespace TJAPlayer3 {
|
||||
internal class CLuaNamePlateScript : CLuaScript {
|
||||
private LuaFunction lfGetCharaOffset;
|
||||
private LuaFunction lfSetInfos;
|
||||
private LuaFunction lfDrawDan;
|
||||
private LuaFunction lfDrawTitlePlate;
|
||||
private LuaFunction lfUpdate;
|
||||
private LuaFunction lfDraw;
|
||||
|
||||
public CLuaNamePlateScript(string dir, string? texturesDir = null, string? soundsDir = null, bool loadAssets = true) : base(dir, texturesDir, soundsDir, loadAssets) {
|
||||
lfGetCharaOffset = (LuaFunction)LuaScript["getCharaOffset"];
|
||||
lfSetInfos = (LuaFunction)LuaScript["setInfos"];
|
||||
lfDrawDan = (LuaFunction)LuaScript["drawDan"];
|
||||
lfDrawTitlePlate = (LuaFunction)LuaScript["drawTitlePlate"];
|
||||
lfUpdate = (LuaFunction)LuaScript["update"];
|
||||
lfDraw = (LuaFunction)LuaScript["draw"];
|
||||
}
|
||||
|
||||
public int GetCharaOffset() {
|
||||
if (!Avaibale) return 0;
|
||||
double result = (double)RunLuaCode(lfGetCharaOffset)[0];
|
||||
return (int)result;
|
||||
}
|
||||
|
||||
public void SetInfos(int player, string name, string title, string dan, SaveFile.Data data) {
|
||||
if (!Avaibale) return;
|
||||
|
||||
RunLuaCode(lfSetInfos, player, name ?? "", title ?? "", dan ?? "", data);
|
||||
}
|
||||
|
||||
public void DrawDan(int x, int y, int opacity, int danGrade, CTexture titleTex) {
|
||||
if (!Avaibale) return;
|
||||
|
||||
RunLuaCode(lfDrawDan, x, y, opacity, danGrade, titleTex);
|
||||
}
|
||||
|
||||
public void DrawTitlePlate(int x, int y, int opacity, int type, CTexture titleTex, int rarity, int nameplateId) {
|
||||
if (!Avaibale) return;
|
||||
|
||||
RunLuaCode(lfDrawTitlePlate, x, y, opacity, type, titleTex, rarity, nameplateId);
|
||||
}
|
||||
|
||||
public void Update(params object[] args) {
|
||||
if (!Avaibale) return;
|
||||
|
||||
RunLuaCode(lfUpdate, args);
|
||||
}
|
||||
|
||||
public void Draw(int x, int y, int opacity, int player, int side) {
|
||||
if (!Avaibale) return;
|
||||
|
||||
RunLuaCode(lfDraw, x, y, opacity, player, side);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
using FDK;
|
||||
using FDK;
|
||||
using static TJAPlayer3.CActSelect曲リスト;
|
||||
using Color = System.Drawing.Color;
|
||||
using Rectangle = System.Drawing.Rectangle;
|
||||
@ -365,11 +365,11 @@ namespace TJAPlayer3 {
|
||||
if (i != 0) {
|
||||
tmpTex.color4 = CConversion.ColorToColor4(Color.DarkGray);
|
||||
TJAPlayer3.Tx.Heya_Side_Menu.color4 = CConversion.ColorToColor4(Color.DarkGray);
|
||||
TJAPlayer3.Tx.NamePlateBase.color4 = CConversion.ColorToColor4(Color.DarkGray);
|
||||
//TJAPlayer3.Tx.NamePlateBase.color4 = CConversion.ColorToColor4(Color.DarkGray);
|
||||
} else {
|
||||
tmpTex.color4 = CConversion.ColorToColor4(Color.White);
|
||||
TJAPlayer3.Tx.Heya_Side_Menu.color4 = CConversion.ColorToColor4(Color.White);
|
||||
TJAPlayer3.Tx.NamePlateBase.color4 = CConversion.ColorToColor4(Color.White);
|
||||
//TJAPlayer3.Tx.NamePlateBase.color4 = CConversion.ColorToColor4(Color.White);
|
||||
}
|
||||
|
||||
int danGrade = 0;
|
||||
@ -379,14 +379,16 @@ namespace TJAPlayer3 {
|
||||
|
||||
var scroll = DrawSide_Menu(i + (TJAPlayer3.Skin.Heya_Side_Menu_Count / 2));
|
||||
|
||||
TJAPlayer3.NamePlate.tNamePlateDisplayNamePlateBase(
|
||||
scroll.Item1 - TJAPlayer3.Tx.NamePlateBase.szTextureSize.Width / 2,
|
||||
scroll.Item2 - TJAPlayer3.Tx.NamePlateBase.szTextureSize.Height / 24,
|
||||
(8 + danGrade));
|
||||
TJAPlayer3.Tx.NamePlateBase.color4 = CConversion.ColorToColor4(Color.White);
|
||||
|
||||
tmpTex.t2D拡大率考慮上中央基準描画(scroll.Item1 + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[0], scroll.Item2 + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[1]);
|
||||
/*
|
||||
TJAPlayer3.NamePlate.tNamePlateDisplayNamePlateBase(
|
||||
scroll.Item1 - TJAPlayer3.Tx.NamePlateBase.szTextureSize.Width / 2,
|
||||
scroll.Item2 - TJAPlayer3.Tx.NamePlateBase.szTextureSize.Height / 24,
|
||||
(8 + danGrade));
|
||||
TJAPlayer3.Tx.NamePlateBase.color4 = CConversion.ColorToColor4(Color.White);
|
||||
|
||||
tmpTex.t2D拡大率考慮上中央基準描画(scroll.Item1 + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[0], scroll.Item2 + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[1]);
|
||||
*/
|
||||
TJAPlayer3.NamePlate.lcNamePlate.DrawDan(scroll.Item1, scroll.Item2, 255, danGrade, tmpTex);
|
||||
|
||||
}
|
||||
}
|
||||
@ -412,22 +414,31 @@ namespace TJAPlayer3 {
|
||||
var scroll = DrawSide_Menu(i + (TJAPlayer3.Skin.Heya_Side_Menu_Count / 2));
|
||||
|
||||
int iType = -1;
|
||||
int _rarity = 1;
|
||||
int _titleid = -1;
|
||||
|
||||
if (TJAPlayer3.SaveFileInstances[iPlayer].data.UnlockedNameplateIds != null &&
|
||||
TJAPlayer3.SaveFileInstances[iPlayer].data.UnlockedNameplateIds.Contains(this.titlesKeys[pos])) {
|
||||
var _dc = TJAPlayer3.Databases.DBNameplateUnlockables.data[this.titlesKeys[pos]];
|
||||
iType = _dc.nameplateInfo.iType;
|
||||
_rarity = HRarity.tRarityToLangInt(_dc.rarity);
|
||||
_titleid = this.titlesKeys[pos];
|
||||
//iType = TJAPlayer3.SaveFileInstances[iPlayer].data.NamePlateTitles[this.titlesKeys[pos]].iType;
|
||||
} else if (pos == 0)
|
||||
iType = 0;
|
||||
|
||||
if (iType >= 0 && iType < TJAPlayer3.Skin.Config_NamePlate_Ptn_Title) {
|
||||
TJAPlayer3.Tx.NamePlate_Title[iType][TJAPlayer3.NamePlate.ctAnimatedNamePlateTitle.CurrentValue % TJAPlayer3.Skin.Config_NamePlate_Ptn_Title_Boxes[iType]].t2D拡大率考慮上中央基準描画(
|
||||
scroll.Item1,
|
||||
scroll.Item2);
|
||||
}
|
||||
/*
|
||||
if (iType >= 0 && iType < TJAPlayer3.Skin.Config_NamePlate_Ptn_Title)
|
||||
{
|
||||
TJAPlayer3.Tx.NamePlate_Title[iType][TJAPlayer3.NamePlate.ctAnimatedNamePlateTitle.CurrentValue % TJAPlayer3.Skin.Config_NamePlate_Ptn_Title_Boxes[iType]].t2D拡大率考慮上中央基準描画(
|
||||
scroll.Item1,
|
||||
scroll.Item2);
|
||||
|
||||
tmpTex.t2D拡大率考慮上中央基準描画(scroll.Item1 + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[0], scroll.Item2 + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[1]);
|
||||
}
|
||||
*/
|
||||
TJAPlayer3.NamePlate.lcNamePlate.DrawTitlePlate(scroll.Item1, scroll.Item2, 255, iType, tmpTex, _rarity, _titleid);
|
||||
|
||||
//tmpTex.t2D拡大率考慮上中央基準描画(scroll.Item1 + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[0], scroll.Item2 + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[1]);
|
||||
|
||||
}
|
||||
}
|
||||
@ -615,10 +626,18 @@ namespace TJAPlayer3 {
|
||||
&& TJAPlayer3.SaveFileInstances[iPlayer].data.UnlockedNameplateIds.Contains(this.titlesKeys[iTitleCurrent])) {
|
||||
var _dc = TJAPlayer3.Databases.DBNameplateUnlockables.data[this.titlesKeys[iTitleCurrent]];
|
||||
TJAPlayer3.SaveFileInstances[iPlayer].data.TitleType = _dc.nameplateInfo.iType;
|
||||
} else if (iTitleCurrent == 0)
|
||||
TJAPlayer3.SaveFileInstances[iPlayer].data.TitleId = this.titlesKeys[iTitleCurrent];
|
||||
TJAPlayer3.SaveFileInstances[iPlayer].data.TitleRarityInt = HRarity.tRarityToLangInt(_dc.rarity);
|
||||
} else if (iTitleCurrent == 0) {
|
||||
TJAPlayer3.SaveFileInstances[iPlayer].data.TitleType = 0;
|
||||
else
|
||||
TJAPlayer3.SaveFileInstances[iPlayer].data.TitleId = -1;
|
||||
TJAPlayer3.SaveFileInstances[iPlayer].data.TitleRarityInt = 1;
|
||||
} else {
|
||||
TJAPlayer3.SaveFileInstances[iPlayer].data.TitleType = -1;
|
||||
TJAPlayer3.SaveFileInstances[iPlayer].data.TitleId = -1;
|
||||
TJAPlayer3.SaveFileInstances[iPlayer].data.TitleRarityInt = 1;
|
||||
}
|
||||
|
||||
|
||||
TJAPlayer3.NamePlate.tNamePlateRefreshTitles(iPlayer);
|
||||
|
||||
|
@ -514,9 +514,9 @@ namespace TJAPlayer3 {
|
||||
iType = 0;
|
||||
|
||||
if (iType >= 0 && iType < TJAPlayer3.Skin.Config_NamePlate_Ptn_Title) {
|
||||
TJAPlayer3.Tx.NamePlate_Title[iType][TJAPlayer3.NamePlate.ctAnimatedNamePlateTitle.CurrentValue % TJAPlayer3.Skin.Config_NamePlate_Ptn_Title_Boxes[iType]].t2D拡大率考慮上中央基準描画(
|
||||
x,
|
||||
y);
|
||||
//TJAPlayer3.Tx.NamePlate_Title[iType][TJAPlayer3.NamePlate.ctAnimatedNamePlateTitle.CurrentValue % TJAPlayer3.Skin.Config_NamePlate_Ptn_Title_Boxes[iType]].t2D拡大率考慮上中央基準描画(
|
||||
// x,
|
||||
// y);
|
||||
}
|
||||
|
||||
tmpTex.t2D拡大率考慮上中央基準描画(x + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[0], y + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[1]);
|
||||
@ -554,6 +554,7 @@ namespace TJAPlayer3 {
|
||||
danGrade = TJAPlayer3.SaveFileInstances[CurrentPlayer].data.DanTitles[this.ttkDanTitles[index].str文字].clearStatus;
|
||||
}
|
||||
|
||||
/*
|
||||
TJAPlayer3.NamePlate.tNamePlateDisplayNamePlateBase(
|
||||
x - TJAPlayer3.Tx.NamePlateBase.szTextureSize.Width / 2,
|
||||
y - TJAPlayer3.Tx.NamePlateBase.szTextureSize.Height / 24,
|
||||
@ -561,7 +562,7 @@ namespace TJAPlayer3 {
|
||||
TJAPlayer3.Tx.NamePlateBase.color4 = CConversion.ColorToColor4(Color.White);
|
||||
|
||||
tmpTex.t2D拡大率考慮上中央基準描画(x + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[0], y + TJAPlayer3.Skin.Heya_Side_Menu_Font_Offset[1]);
|
||||
|
||||
*/
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -1,77 +1,98 @@
|
||||
using System.Drawing;
|
||||
using FDK;
|
||||
using static TJAPlayer3.CActSelect曲リスト;
|
||||
|
||||
namespace TJAPlayer3 {
|
||||
namespace TJAPlayer3 {
|
||||
class CNamePlate {
|
||||
public CLuaNamePlateScript lcNamePlate { get; private set; }
|
||||
public void RefleshSkin() {
|
||||
/*
|
||||
for (int player = 0; player < 5; player++)
|
||||
{
|
||||
this.pfName[player]?.Dispose();
|
||||
|
||||
if (TJAPlayer3.SaveFileInstances[player].data.Title == "" || TJAPlayer3.SaveFileInstances[player].data.Title == null)
|
||||
this.pfName[player] = HPrivateFastFont.tInstantiateMainFont(TJAPlayer3.Skin.NamePlate_Font_Name_Size_Normal);
|
||||
else
|
||||
this.pfName[player] = HPrivateFastFont.tInstantiateMainFont(TJAPlayer3.Skin.NamePlate_Font_Name_Size_WithTitle);
|
||||
}
|
||||
|
||||
this.pfTitle?.Dispose();
|
||||
this.pfdan?.Dispose();
|
||||
|
||||
this.pfTitle = HPrivateFastFont.tInstantiateMainFont(TJAPlayer3.Skin.NamePlate_Font_Title_Size);
|
||||
this.pfdan = HPrivateFastFont.tInstantiateMainFont(TJAPlayer3.Skin.NamePlate_Font_Dan_Size);
|
||||
*/
|
||||
lcNamePlate?.Dispose();
|
||||
lcNamePlate = new CLuaNamePlateScript(CSkin.Path("Modules/NamePlate"));
|
||||
|
||||
for (int player = 0; player < 5; player++) {
|
||||
this.pfName[player]?.Dispose();
|
||||
|
||||
if (TJAPlayer3.SaveFileInstances[player].data.Title == "" || TJAPlayer3.SaveFileInstances[player].data.Title == null)
|
||||
this.pfName[player] = HPrivateFastFont.tInstantiateMainFont(TJAPlayer3.Skin.NamePlate_Font_Name_Size_Normal);
|
||||
else
|
||||
this.pfName[player] = HPrivateFastFont.tInstantiateMainFont(TJAPlayer3.Skin.NamePlate_Font_Name_Size_WithTitle);
|
||||
tNamePlateRefreshTitles(player);
|
||||
}
|
||||
|
||||
this.pfTitle?.Dispose();
|
||||
this.pfdan?.Dispose();
|
||||
|
||||
this.pfTitle = HPrivateFastFont.tInstantiateMainFont(TJAPlayer3.Skin.NamePlate_Font_Title_Size);
|
||||
this.pfdan = HPrivateFastFont.tInstantiateMainFont(TJAPlayer3.Skin.NamePlate_Font_Dan_Size);
|
||||
}
|
||||
|
||||
public CNamePlate() {
|
||||
RefleshSkin();
|
||||
|
||||
for (int player = 0; player < 5; player++) {
|
||||
if (TJAPlayer3.SaveFileInstances[player].data.DanType < 0) TJAPlayer3.SaveFileInstances[player].data.DanType = 0;
|
||||
else if (TJAPlayer3.SaveFileInstances[player].data.DanType > 2) TJAPlayer3.SaveFileInstances[player].data.DanType = 2;
|
||||
|
||||
if (TJAPlayer3.SaveFileInstances[player].data.TitleType < 0) TJAPlayer3.SaveFileInstances[player].data.TitleType = 0;
|
||||
|
||||
tNamePlateRefreshTitles(player);
|
||||
}
|
||||
RefleshSkin();
|
||||
|
||||
ctNamePlateEffect = new CCounter(0, 120, 16.6f, TJAPlayer3.Timer);
|
||||
ctAnimatedNamePlateTitle = new CCounter(0, 10000, 60.0f, TJAPlayer3.Timer);
|
||||
//ctNamePlateEffect = new CCounter(0, 120, 16.6f, TJAPlayer3.Timer);
|
||||
//ctAnimatedNamePlateTitle = new CCounter(0, 10000, 60.0f, TJAPlayer3.Timer);
|
||||
}
|
||||
|
||||
public void tNamePlateDisplayNamePlateBase(int x, int y, int item) {
|
||||
int namePlateBaseX = TJAPlayer3.Tx.NamePlateBase.szTextureSize.Width;
|
||||
int namePlateBaseY = TJAPlayer3.Tx.NamePlateBase.szTextureSize.Height / 12;
|
||||
/*
|
||||
public void tNamePlateDisplayNamePlateBase(int x, int y, int item)
|
||||
{
|
||||
int namePlateBaseX = TJAPlayer3.Tx.NamePlateBase.szTextureSize.Width;
|
||||
int namePlateBaseY = TJAPlayer3.Tx.NamePlateBase.szTextureSize.Height / 12;
|
||||
|
||||
TJAPlayer3.Tx.NamePlateBase?.t2D描画(x, y, new RectangleF(0, item * namePlateBaseY, namePlateBaseX, namePlateBaseY));
|
||||
TJAPlayer3.Tx.NamePlateBase?.t2D描画(x, y, new RectangleF(0, item * namePlateBaseY, namePlateBaseX, namePlateBaseY));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void tNamePlateDisplayNamePlate_Extension(int x, int y, int item) {
|
||||
int namePlateBaseX = TJAPlayer3.Tx.NamePlate_Extension.szTextureSize.Width;
|
||||
int namePlateBaseY = TJAPlayer3.Tx.NamePlate_Extension.szTextureSize.Height / 12;
|
||||
public void tNamePlateDisplayNamePlate_Extension(int x, int y, int item)
|
||||
{
|
||||
int namePlateBaseX = TJAPlayer3.Tx.NamePlate_Extension.szTextureSize.Width;
|
||||
int namePlateBaseY = TJAPlayer3.Tx.NamePlate_Extension.szTextureSize.Height / 12;
|
||||
|
||||
TJAPlayer3.Tx.NamePlate_Extension?.t2D描画(x, y, new RectangleF(0, item * namePlateBaseY, namePlateBaseX, namePlateBaseY));
|
||||
TJAPlayer3.Tx.NamePlate_Extension?.t2D描画(x, y, new RectangleF(0, item * namePlateBaseY, namePlateBaseX, namePlateBaseY));
|
||||
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
public void tNamePlateRefreshTitles(int player) {
|
||||
int actualPlayer = TJAPlayer3.GetActualPlayer(player);
|
||||
|
||||
string[] stages = { "初", "二", "三", "四", "五", "六", "七", "八", "九", "極" };
|
||||
|
||||
string name = CLangManager.LangInstance.GetString("AI_NAME");
|
||||
string title = CLangManager.LangInstance.GetString("AI_TITLE");
|
||||
string dan = stages[Math.Max(0, TJAPlayer3.ConfigIni.nAILevel - 1)] + "面";
|
||||
string name;
|
||||
string title;
|
||||
string dan;
|
||||
|
||||
if (!TJAPlayer3.ConfigIni.bAIBattleMode || actualPlayer == 0) {
|
||||
bool isAI = TJAPlayer3.ConfigIni.bAIBattleMode && player == 1;
|
||||
if (isAI) {
|
||||
name = CLangManager.LangInstance.GetString("AI_NAME");
|
||||
title = CLangManager.LangInstance.GetString("AI_TITLE");
|
||||
dan = stages[Math.Max(0, TJAPlayer3.ConfigIni.nAILevel - 1)] + "面";
|
||||
} else {
|
||||
name = TJAPlayer3.SaveFileInstances[player].data.Name;
|
||||
title = TJAPlayer3.SaveFileInstances[player].data.Title;
|
||||
dan = TJAPlayer3.SaveFileInstances[player].data.Dan;
|
||||
}
|
||||
bIsPrevAI[player] = isAI;
|
||||
|
||||
txTitle[player] = TJAPlayer3.stageSongSelect.actSongList.ResolveTitleTexture(new TitleTextureKey(title, pfTitle, Color.Black, Color.Empty, 1000));
|
||||
txName[player] = TJAPlayer3.stageSongSelect.actSongList.ResolveTitleTexture(new TitleTextureKey(name, pfName[player], Color.White, Color.Black, 1000));
|
||||
if (TJAPlayer3.SaveFileInstances[player].data.DanGold) txdan[player] = TJAPlayer3.stageSongSelect.actSongList.ResolveTitleTexture(new TitleTextureKey($"<g.#FFE34A.#EA9622>{dan}</g>", pfdan, Color.White, Color.Black, 1000));
|
||||
else txdan[player] = TJAPlayer3.stageSongSelect.actSongList.ResolveTitleTexture(new TitleTextureKey(dan, pfdan, Color.White, Color.Black, 1000));
|
||||
/*
|
||||
txTitle[player] = TJAPlayer3.stageSongSelect.actSongList.ResolveTitleTexture(new TitleTextureKey(title, pfTitle, Color.Black, Color.Empty, 1000));
|
||||
txName[player] = TJAPlayer3.stageSongSelect.actSongList.ResolveTitleTexture(new TitleTextureKey(name, pfName[player], Color.White, Color.Black, 1000));
|
||||
if (TJAPlayer3.SaveFileInstances[player].data.DanGold) txdan[player] = TJAPlayer3.stageSongSelect.actSongList.ResolveTitleTexture(new TitleTextureKey($"<g.#FFE34A.#EA9622>{dan}</g>", pfdan, Color.White, Color.Black, 1000));
|
||||
else txdan[player] = TJAPlayer3.stageSongSelect.actSongList.ResolveTitleTexture(new TitleTextureKey(dan, pfdan, Color.White, Color.Black, 1000));
|
||||
*/
|
||||
|
||||
if (TJAPlayer3.SaveFileInstances[player].data.DanGold)
|
||||
lcNamePlate.SetInfos(player, name, title, $"<g.#FFE34A.#EA9622>{dan}</g>", TJAPlayer3.SaveFileInstances[player].data);
|
||||
else
|
||||
lcNamePlate.SetInfos(player, name, title, dan, TJAPlayer3.SaveFileInstances[player].data);
|
||||
}
|
||||
|
||||
|
||||
@ -82,242 +103,15 @@ namespace TJAPlayer3 {
|
||||
int basePlayer = player;
|
||||
player = TJAPlayer3.GetActualPlayer(player);
|
||||
|
||||
tNamePlateRefreshTitles(player);
|
||||
|
||||
ctNamePlateEffect.TickLoop();
|
||||
ctAnimatedNamePlateTitle.TickLoop();
|
||||
|
||||
this.txName[player].Opacity = Opacity;
|
||||
this.txTitle[player].Opacity = Opacity;
|
||||
this.txdan[player].Opacity = Opacity;
|
||||
|
||||
TJAPlayer3.Tx.NamePlateBase.Opacity = Opacity;
|
||||
|
||||
|
||||
for (int i = 0; i < 5; i++)
|
||||
TJAPlayer3.Tx.NamePlate_Effect[i].Opacity = Opacity;
|
||||
|
||||
// White background
|
||||
tNamePlateDisplayNamePlateBase(x, y, 3);
|
||||
|
||||
// Upper (title) plate
|
||||
if (TJAPlayer3.SaveFileInstances[player].data.Title != "" && TJAPlayer3.SaveFileInstances[player].data.Title != null) {
|
||||
int tt = TJAPlayer3.SaveFileInstances[player].data.TitleType;
|
||||
if (tt >= 0 && tt < TJAPlayer3.Skin.Config_NamePlate_Ptn_Title) {
|
||||
var _tex = TJAPlayer3.Tx.NamePlate_Title[tt][ctAnimatedNamePlateTitle.CurrentValue % TJAPlayer3.Skin.Config_NamePlate_Ptn_Title_Boxes[tt]];
|
||||
|
||||
if (_tex != null) {
|
||||
_tex.Opacity = Opacity;
|
||||
_tex.t2D描画(x - (2 * resolutionScaleX), y - (2 * resolutionScaleY));
|
||||
}
|
||||
}
|
||||
bool isAI = TJAPlayer3.ConfigIni.bAIBattleMode && basePlayer == 1;
|
||||
if (bIsPrevAI[basePlayer] != isAI) {
|
||||
tNamePlateRefreshTitles(player);
|
||||
}
|
||||
bIsPrevAI[basePlayer] = isAI;
|
||||
|
||||
// Dan plate
|
||||
if (TJAPlayer3.SaveFileInstances[player].data.Dan != "" && TJAPlayer3.SaveFileInstances[player].data.Dan != null) {
|
||||
tNamePlateDisplayNamePlateBase(x, y, 7);
|
||||
tNamePlateDisplayNamePlateBase(x, y, (8 + TJAPlayer3.SaveFileInstances[player].data.DanType));
|
||||
}
|
||||
|
||||
// Glow
|
||||
tNamePlateDraw(player, x, y, Opacity);
|
||||
|
||||
// Player number
|
||||
if (TJAPlayer3.PlayerSide == 0 || TJAPlayer3.ConfigIni.nPlayerCount > 1) {
|
||||
if (basePlayer < 2) {
|
||||
tNamePlateDisplayNamePlateBase(x, y, basePlayer == 1 ? 2 : 0);
|
||||
} else {
|
||||
tNamePlateDisplayNamePlate_Extension(x, y, basePlayer - 2);
|
||||
}
|
||||
} else
|
||||
tNamePlateDisplayNamePlateBase(x, y, 1);
|
||||
|
||||
// Name text squash (to add to skin config)
|
||||
if (TJAPlayer3.SaveFileInstances[player].data.Dan != "" && TJAPlayer3.SaveFileInstances[player].data.Dan != null) {
|
||||
if (txName[player].szTextureSize.Width > TJAPlayer3.Skin.NamePlate_Name_Width_Full)
|
||||
txName[player].vcScaleRatio.X = (float)TJAPlayer3.Skin.NamePlate_Name_Width_Full / txName[player].szTextureSize.Width;
|
||||
} else {
|
||||
if (txName[player].szTextureSize.Width > TJAPlayer3.Skin.NamePlate_Name_Width_Normal)
|
||||
txName[player].vcScaleRatio.X = (float)TJAPlayer3.Skin.NamePlate_Name_Width_Normal / txName[player].szTextureSize.Width;
|
||||
}
|
||||
|
||||
// Dan text squash (to add to skin config)
|
||||
if (txdan[player].szTextureSize.Width > TJAPlayer3.Skin.NamePlate_Dan_Width)
|
||||
txdan[player].vcScaleRatio.X = (float)TJAPlayer3.Skin.NamePlate_Dan_Width / txdan[player].szTextureSize.Width;
|
||||
|
||||
// Dan text
|
||||
if (TJAPlayer3.SaveFileInstances[player].data.Dan != "" && TJAPlayer3.SaveFileInstances[player].data.Dan != null) {
|
||||
this.txdan[player].t2D拡大率考慮中央基準描画(x + TJAPlayer3.Skin.NamePlate_Dan_Offset[0], y + TJAPlayer3.Skin.NamePlate_Dan_Offset[1]);
|
||||
}
|
||||
|
||||
// Title text
|
||||
if (TJAPlayer3.SaveFileInstances[player].data.Title != "" && TJAPlayer3.SaveFileInstances[player].data.Title != null) {
|
||||
if (txTitle[player].szTextureSize.Width > TJAPlayer3.Skin.NamePlate_Title_Width) {
|
||||
txTitle[player].vcScaleRatio.X = (float)TJAPlayer3.Skin.NamePlate_Title_Width / txTitle[player].szTextureSize.Width;
|
||||
txTitle[player].vcScaleRatio.Y = (float)TJAPlayer3.Skin.NamePlate_Title_Width / txTitle[player].szTextureSize.Width;
|
||||
}
|
||||
|
||||
txTitle[player].t2D拡大率考慮中央基準描画(x + TJAPlayer3.Skin.NamePlate_Title_Offset[0], y + TJAPlayer3.Skin.NamePlate_Title_Offset[1]);
|
||||
|
||||
// Name text
|
||||
if (TJAPlayer3.SaveFileInstances[player].data.Dan == "" || TJAPlayer3.SaveFileInstances[player].data.Dan == null)
|
||||
this.txName[player].t2D拡大率考慮中央基準描画(x + TJAPlayer3.Skin.NamePlate_Name_Offset_WithTitle[0], y + TJAPlayer3.Skin.NamePlate_Name_Offset_WithTitle[1]);
|
||||
else
|
||||
this.txName[player].t2D拡大率考慮中央基準描画(x + TJAPlayer3.Skin.NamePlate_Name_Offset_Full[0], y + TJAPlayer3.Skin.NamePlate_Name_Offset_Full[1]);
|
||||
} else
|
||||
this.txName[player].t2D拡大率考慮中央基準描画(x + TJAPlayer3.Skin.NamePlate_Name_Offset_Normal[0], y + TJAPlayer3.Skin.NamePlate_Name_Offset_Normal[1]);
|
||||
|
||||
|
||||
// Overlap frame
|
||||
tNamePlateDisplayNamePlateBase(x, y, 4);
|
||||
lcNamePlate.Draw(x, y, Opacity, basePlayer, player);
|
||||
}
|
||||
|
||||
private void tNamePlateDraw(int player, int x, int y, int Opacity = 255) {
|
||||
if (Opacity == 0)
|
||||
return;
|
||||
|
||||
float resolutionScaleX = TJAPlayer3.Skin.Resolution[0] / 1280.0f;
|
||||
float resolutionScaleY = TJAPlayer3.Skin.Resolution[1] / 720.0f;
|
||||
|
||||
if (TJAPlayer3.SaveFileInstances[player].data.TitleType != 0 && !TJAPlayer3.ConfigIni.SimpleMode) {
|
||||
int Type = TJAPlayer3.SaveFileInstances[player].data.TitleType - 1;
|
||||
if (this.ctNamePlateEffect.CurrentValue <= 10) {
|
||||
tNamePlateStarDraw(player, 1.0f - (ctNamePlateEffect.CurrentValue / 10f * 1.0f), x + (63 * resolutionScaleX), y + (25 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 3 && this.ctNamePlateEffect.CurrentValue <= 10) {
|
||||
tNamePlateStarDraw(player, 1.0f - ((ctNamePlateEffect.CurrentValue - 3) / 7f * 1.0f), x + (38 * resolutionScaleX), y + (7 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 6 && this.ctNamePlateEffect.CurrentValue <= 10) {
|
||||
tNamePlateStarDraw(player, 1.0f - ((ctNamePlateEffect.CurrentValue - 6) / 4f * 1.0f), x + (51 * resolutionScaleX), y + (5 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 8 && this.ctNamePlateEffect.CurrentValue <= 10) {
|
||||
tNamePlateStarDraw(player, 0.3f - ((ctNamePlateEffect.CurrentValue - 8) / 2f * 0.3f), x + (110 * resolutionScaleX), y + (25 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 11 && this.ctNamePlateEffect.CurrentValue <= 13) {
|
||||
tNamePlateStarDraw(player, 1.0f - ((ctNamePlateEffect.CurrentValue - 11) / 2f * 1.0f), x + (38 * resolutionScaleX), y + (7 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 11 && this.ctNamePlateEffect.CurrentValue <= 15) {
|
||||
tNamePlateStarDraw(player, 1.0f, x + (51 * resolutionScaleX), y + 5);
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 11 && this.ctNamePlateEffect.CurrentValue <= 17) {
|
||||
tNamePlateStarDraw(player, 1.0f - ((ctNamePlateEffect.CurrentValue - 11) / 7f * 1.0f), x + (110 * resolutionScaleX), y + (25 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 16 && this.ctNamePlateEffect.CurrentValue <= 20) {
|
||||
tNamePlateStarDraw(player, 0.2f - ((ctNamePlateEffect.CurrentValue - 16) / 4f * 0.2f), x + (63 * resolutionScaleX), y + (25 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 17 && this.ctNamePlateEffect.CurrentValue <= 20) {
|
||||
tNamePlateStarDraw(player, 1.0f - ((ctNamePlateEffect.CurrentValue - 17) / 3f * 1.0f), x + (99 * resolutionScaleX), y + (1 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 20 && this.ctNamePlateEffect.CurrentValue <= 24) {
|
||||
tNamePlateStarDraw(player, 0.4f, x + (63 * resolutionScaleX), y + 25);
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 20 && this.ctNamePlateEffect.CurrentValue <= 25) {
|
||||
tNamePlateStarDraw(player, 1.0f, x + (99 * resolutionScaleX), y + 1);
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 20 && this.ctNamePlateEffect.CurrentValue <= 30) {
|
||||
tNamePlateStarDraw(player, 0.5f - ((this.ctNamePlateEffect.CurrentValue - 20) / 10f * 0.5f), x + (152 * resolutionScaleX), y + (7 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 31 && this.ctNamePlateEffect.CurrentValue <= 37) {
|
||||
tNamePlateStarDraw(player, 0.5f - ((this.ctNamePlateEffect.CurrentValue - 31) / 6f * 0.5f), x + (176 * resolutionScaleX), y + (8 * resolutionScaleY));
|
||||
tNamePlateStarDraw(player, 1.0f - ((this.ctNamePlateEffect.CurrentValue - 31) / 6f * 1.0f), x + (175 * resolutionScaleX), y + (25 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 31 && this.ctNamePlateEffect.CurrentValue <= 40) {
|
||||
tNamePlateStarDraw(player, 0.9f - ((this.ctNamePlateEffect.CurrentValue - 31) / 9f * 0.9f), x + (136 * resolutionScaleX), y + (24 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 34 && this.ctNamePlateEffect.CurrentValue <= 40) {
|
||||
tNamePlateStarDraw(player, 0.7f - ((this.ctNamePlateEffect.CurrentValue - 34) / 6f * 0.7f), x + (159 * resolutionScaleX), y + (25 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 41 && this.ctNamePlateEffect.CurrentValue <= 42) {
|
||||
tNamePlateStarDraw(player, 0.7f, x + (159 * resolutionScaleX), y + (25 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 43 && this.ctNamePlateEffect.CurrentValue <= 50) {
|
||||
tNamePlateStarDraw(player, 0.8f - ((this.ctNamePlateEffect.CurrentValue - 43) / 7f * 0.8f), x + (196 * resolutionScaleX), y + (23 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 51 && this.ctNamePlateEffect.CurrentValue <= 57) {
|
||||
tNamePlateStarDraw(player, 0.8f - ((this.ctNamePlateEffect.CurrentValue - 51) / 6f * 0.8f), x + (51 * resolutionScaleX), y + (5 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 51 && this.ctNamePlateEffect.CurrentValue <= 52) {
|
||||
tNamePlateStarDraw(player, 0.2f, x + (166 * resolutionScaleX), y + (22 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 51 && this.ctNamePlateEffect.CurrentValue <= 53) {
|
||||
tNamePlateStarDraw(player, 0.8f, x + (136 * resolutionScaleX), y + (24 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 51 && this.ctNamePlateEffect.CurrentValue <= 55) {
|
||||
tNamePlateStarDraw(player, 1.0f, x + (176 * resolutionScaleX), y + (8 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 51 && this.ctNamePlateEffect.CurrentValue <= 55) {
|
||||
tNamePlateStarDraw(player, 1.0f, x + (176 * resolutionScaleX), y + (8 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 61 && this.ctNamePlateEffect.CurrentValue <= 70) {
|
||||
tNamePlateStarDraw(player, 1.0f - ((this.ctNamePlateEffect.CurrentValue - 61) / 9f * 1.0f), x + (196 * resolutionScaleX), y + (23 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 61 && this.ctNamePlateEffect.CurrentValue <= 67) {
|
||||
tNamePlateStarDraw(player, 0.7f - ((this.ctNamePlateEffect.CurrentValue - 61) / 6f * 0.7f), x + (214 * resolutionScaleX), y + (14 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 63 && this.ctNamePlateEffect.CurrentValue <= 70) {
|
||||
tNamePlateStarDraw(player, 0.5f - ((this.ctNamePlateEffect.CurrentValue - 63) / 7f * 0.5f), x + (129 * resolutionScaleX), y + (24 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 63 && this.ctNamePlateEffect.CurrentValue <= 70) {
|
||||
tNamePlateStarDraw(player, 0.5f - ((this.ctNamePlateEffect.CurrentValue - 63) / 7f * 0.5f), x + (129 * resolutionScaleX), y + (24 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 65 && this.ctNamePlateEffect.CurrentValue <= 70) {
|
||||
tNamePlateStarDraw(player, 0.8f - ((this.ctNamePlateEffect.CurrentValue - 65) / 5f * 0.8f), x + (117 * resolutionScaleX), y + (7 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 71 && this.ctNamePlateEffect.CurrentValue <= 72) {
|
||||
tNamePlateStarDraw(player, 0.8f, x + (151 * resolutionScaleX), y + (25 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 71 && this.ctNamePlateEffect.CurrentValue <= 74) {
|
||||
tNamePlateStarDraw(player, 0.8f, x + (117 * resolutionScaleX), y + (7 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 85 && this.ctNamePlateEffect.CurrentValue <= 112) {
|
||||
TJAPlayer3.Tx.NamePlate_Effect[4].Opacity = (int)(1400 - (this.ctNamePlateEffect.CurrentValue - 85) * 50f);
|
||||
|
||||
TJAPlayer3.Tx.NamePlate_Effect[4].t2D描画(x + ((((this.ctNamePlateEffect.CurrentValue - 85) * (150f / 27f))) * resolutionScaleX), y + (7 * resolutionScaleY));
|
||||
}
|
||||
if (this.ctNamePlateEffect.CurrentValue >= 105 && this.ctNamePlateEffect.CurrentValue <= 120) {
|
||||
/*
|
||||
TJAPlayer3.Tx.NamePlate_Effect[TJAPlayer3.NamePlateConfig.data.TitleType[player] + 1].Opacity = this.ctNamePlateEffect.n現在の値 >= 112 ? (int)(255 - (this.ctNamePlateEffect.n現在の値 - 112) * 31.875f) : 255;
|
||||
TJAPlayer3.Tx.NamePlate_Effect[TJAPlayer3.NamePlateConfig.data.TitleType[player] + 1].vc拡大縮小倍率.X = this.ctNamePlateEffect.n現在の値 >= 112 ? 1.0f : (this.ctNamePlateEffect.n現在の値 - 105) / 8f;
|
||||
TJAPlayer3.Tx.NamePlate_Effect[TJAPlayer3.NamePlateConfig.data.TitleType[player] + 1].vc拡大縮小倍率.Y = this.ctNamePlateEffect.n現在の値 >= 112 ? 1.0f : (this.ctNamePlateEffect.n現在の値 - 105) / 8f;
|
||||
TJAPlayer3.Tx.NamePlate_Effect[TJAPlayer3.NamePlateConfig.data.TitleType[player] + 1].t2D拡大率考慮中央基準描画(x + 193, y + 6);
|
||||
*/
|
||||
|
||||
int tt = TJAPlayer3.SaveFileInstances[player].data.TitleType;
|
||||
if (tt >= 0 && tt < TJAPlayer3.Skin.Config_NamePlate_Ptn_Title && TJAPlayer3.Tx.NamePlate_Title_Big[tt] != null) {
|
||||
TJAPlayer3.Tx.NamePlate_Title_Big[tt].Opacity = this.ctNamePlateEffect.CurrentValue >= 112 ? (int)(255 - (this.ctNamePlateEffect.CurrentValue - 112) * 31.875f) : 255;
|
||||
TJAPlayer3.Tx.NamePlate_Title_Big[tt].vcScaleRatio.X = this.ctNamePlateEffect.CurrentValue >= 112 ? 1.0f : (this.ctNamePlateEffect.CurrentValue - 105) / 8f;
|
||||
TJAPlayer3.Tx.NamePlate_Title_Big[tt].vcScaleRatio.Y = this.ctNamePlateEffect.CurrentValue >= 112 ? 1.0f : (this.ctNamePlateEffect.CurrentValue - 105) / 8f;
|
||||
TJAPlayer3.Tx.NamePlate_Title_Big[tt].t2D拡大率考慮中央基準描画(x + (193 * resolutionScaleX), y + (6 * resolutionScaleY));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void tNamePlateStarDraw(int player, float Scale, float x, float y) {
|
||||
/*
|
||||
TJAPlayer3.Tx.NamePlate_Effect[TJAPlayer3.NamePlateConfig.data.TitleType[player] - 1].vc拡大縮小倍率.X = Scale;
|
||||
TJAPlayer3.Tx.NamePlate_Effect[TJAPlayer3.NamePlateConfig.data.TitleType[player] - 1].vc拡大縮小倍率.Y = Scale;
|
||||
TJAPlayer3.Tx.NamePlate_Effect[TJAPlayer3.NamePlateConfig.data.TitleType[player] - 1].t2D拡大率考慮中央基準描画(x, y);
|
||||
*/
|
||||
int tt = TJAPlayer3.SaveFileInstances[player].data.TitleType;
|
||||
if (tt >= 0 && tt < TJAPlayer3.Skin.Config_NamePlate_Ptn_Title && TJAPlayer3.Tx.NamePlate_Title_Small[tt] != null) {
|
||||
TJAPlayer3.Tx.NamePlate_Title_Small[tt].vcScaleRatio.X = Scale;
|
||||
TJAPlayer3.Tx.NamePlate_Title_Small[tt].vcScaleRatio.Y = Scale;
|
||||
TJAPlayer3.Tx.NamePlate_Title_Small[tt].t2D拡大率考慮中央基準描画(x, y);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private CCachedFontRenderer[] pfName = new CCachedFontRenderer[5];
|
||||
private CCachedFontRenderer pfTitle;
|
||||
private CCachedFontRenderer pfdan;
|
||||
private CCounter ctNamePlateEffect;
|
||||
|
||||
public CCounter ctAnimatedNamePlateTitle;
|
||||
|
||||
private CTexture[] txName = new CTexture[5];
|
||||
private CTexture[] txTitle = new CTexture[5];
|
||||
private CTexture[] txdan = new CTexture[5];
|
||||
}
|
||||
private bool[] bIsPrevAI = new bool[5];
|
||||
}
|
||||
}
|
||||
|