2024-04-22 13:48:40 +08:00
|
|
|
|
using CDSAE3_Lian_Lian_Kan.Extensions;
|
|
|
|
|
using CDSAE3_Lian_Lian_Kan.Forms.Interface;
|
|
|
|
|
using CDSAE3_Lian_Lian_Kan.Sound;
|
2024-04-19 10:00:37 +08:00
|
|
|
|
using System.Drawing.Drawing2D;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Timers;
|
|
|
|
|
using Timer = System.Timers.Timer;
|
|
|
|
|
|
|
|
|
|
namespace CDSAE3_Lian_Lian_Kan.Forms
|
|
|
|
|
{
|
|
|
|
|
public partial class Challenge_Mode : Form, IGameMode
|
|
|
|
|
{
|
|
|
|
|
GameControl gameControl;
|
|
|
|
|
public Challenge_Mode()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
2024-04-22 13:48:40 +08:00
|
|
|
|
timer = new Timer { Interval = 100, AutoReset = true, Enabled = false };
|
2024-04-19 10:00:37 +08:00
|
|
|
|
timer.Elapsed += TimerTick;
|
|
|
|
|
Etcs.current_difficulty = Etcs.Difficulty.challenge;
|
|
|
|
|
Etcs.loadFinished = false;
|
2024-04-22 13:48:40 +08:00
|
|
|
|
gameControl = new GameControl((t) => Challenge_Mode_LoadAsync(this, new EventArgs()));
|
2024-04-19 10:00:37 +08:00
|
|
|
|
game_Panel.Controls.Add(gameControl);
|
|
|
|
|
gameControl.Dock = DockStyle.Fill;
|
|
|
|
|
}
|
2024-04-22 13:48:40 +08:00
|
|
|
|
|
2024-04-19 10:00:37 +08:00
|
|
|
|
Timer timer;
|
|
|
|
|
double curTime = 0;
|
2024-04-22 13:48:40 +08:00
|
|
|
|
private int Score
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return score;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (value > score)
|
|
|
|
|
AddScoreLabel(value - score);
|
|
|
|
|
else
|
|
|
|
|
SubScoreLabel(score - value);
|
|
|
|
|
score = value;
|
|
|
|
|
SetScoreLabel();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Thread? scoreSetThread;
|
|
|
|
|
private void SetScoreLabel()
|
|
|
|
|
{
|
|
|
|
|
if (scoreSetThread != null && scoreSetThread.IsAlive)
|
|
|
|
|
scoreSetThread.Interrupt();
|
|
|
|
|
scoreSetThread = new Thread(() =>
|
|
|
|
|
{
|
|
|
|
|
StringBuilder target = new StringBuilder(score.ToString().PadLeft(6, '0'));
|
|
|
|
|
StringBuilder src = new StringBuilder(scoreLabel.Text);
|
|
|
|
|
List<string> duration = new();
|
|
|
|
|
while (src.ToString() != target.ToString())
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < src.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
if (src[i] != target[i])
|
|
|
|
|
{
|
|
|
|
|
if (target[i] > src[i])
|
|
|
|
|
{
|
|
|
|
|
if (target[i] - src[i] <= 5)
|
|
|
|
|
src[i]++;
|
|
|
|
|
else
|
|
|
|
|
src[i] = (char)((Convert.ToInt32(src[i] + 9)) % 10 + '0');
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (src[i] - target[i] <= 5)
|
|
|
|
|
src[i]--;
|
|
|
|
|
else
|
|
|
|
|
src[i] = (char)((Convert.ToInt32(src[i] + 11)) % 10 + '0');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
duration.Add(src.ToString());
|
|
|
|
|
}
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < duration.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
BeginInvoke(() => scoreLabel.Text = duration[i]);
|
|
|
|
|
Thread.Sleep(50);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (ThreadInterruptedException) { }
|
|
|
|
|
});
|
|
|
|
|
scoreSetThread.Start();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int score = 0;
|
2024-04-19 10:00:37 +08:00
|
|
|
|
private void TimerTick(object? sender, ElapsedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
curTime += 0.1;
|
2024-04-22 13:48:40 +08:00
|
|
|
|
timeLine.set_progress(curTime / 136);
|
2024-04-19 10:00:37 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async void Challenge_Mode_LoadAsync(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
bool loopStop = false;
|
|
|
|
|
PausePanel.BringToFront();
|
|
|
|
|
int oriSongVolume = Etcs.Song_Volume;
|
|
|
|
|
{
|
|
|
|
|
while (Etcs.Song_Volume != 0)
|
|
|
|
|
{
|
|
|
|
|
Etcs.Song_Volume = Math.Max(Etcs.Song_Volume - 7, 0);
|
|
|
|
|
Etcs.song_Audio_Processer.volume_change(Etcs.Song_Volume);
|
|
|
|
|
await Task.Delay(100);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
Action<string, AudioPlayer> loopPlay = null!;
|
|
|
|
|
loopPlay = (s, player) =>
|
|
|
|
|
{
|
|
|
|
|
if (!loopStop)
|
|
|
|
|
Etcs.song_Audio_Processer.set_song("Ambient", 50, loopPlay);
|
|
|
|
|
};
|
|
|
|
|
Etcs.info_Audio_Processer.playMusicClip("Ambient", 50, loopPlay);
|
|
|
|
|
Label label = new Label { TextAlign = ContentAlignment.MiddleCenter, Font = new Font("Microsoft YaHei UI", 20F), ForeColor = Color.White, BackColor = Color.FromArgb(0, 0, 0, 0), AutoSize = false, Size = new Size(1220, 55), Location = new Point(110, 330) };
|
|
|
|
|
Controls.Add(label);
|
|
|
|
|
label.BringToFront();
|
|
|
|
|
string[] strings = { "你也许意识到了", "连连看的实现并不如其规则那样简单", "忙碌的CLR,处理着数以千计的事件", "委托,反射,线程冲突不断发生在各处", "代码的堆叠已经到达极限", "这是最后的连连看,集中精力,不要犯错,在歌曲结束前击败它" };
|
|
|
|
|
//4* 7 28s 18s in game 10s
|
|
|
|
|
for (int i = 0; i < 6; i++)
|
|
|
|
|
{
|
|
|
|
|
label.Text = strings[i];
|
|
|
|
|
Etcs.info_Audio_Processer.playMusicClip("Message", 60);
|
|
|
|
|
await Task.Delay(4000);
|
|
|
|
|
if (i == 2)
|
|
|
|
|
{
|
|
|
|
|
loopStop = true;
|
|
|
|
|
while (Etcs.Song_Volume != 0)
|
|
|
|
|
{
|
|
|
|
|
Etcs.Song_Volume = Math.Max(Etcs.Song_Volume - 7, 0);
|
|
|
|
|
Etcs.song_Audio_Processer.volume_change(Etcs.Song_Volume);
|
|
|
|
|
await Task.Delay(100);
|
|
|
|
|
}
|
|
|
|
|
Etcs.song_Audio_Processer.pause_song();
|
|
|
|
|
Etcs.song_Audio_Processer.set_albums("Tatsh");
|
|
|
|
|
Etcs.song_Audio_Processer.set_song(Etcs.song_Audio_Processer.get_next_song());
|
2024-04-22 13:48:40 +08:00
|
|
|
|
timer.Enabled = true;
|
2024-04-19 10:00:37 +08:00
|
|
|
|
Thread thread = new Thread(async () =>
|
|
|
|
|
{
|
|
|
|
|
for (int n = 0; n < 8; n++)
|
|
|
|
|
{
|
|
|
|
|
Etcs.Song_Volume += 7;
|
|
|
|
|
Etcs.song_Audio_Processer.volume_change(Etcs.Song_Volume);
|
|
|
|
|
await Task.Delay(500);
|
|
|
|
|
}
|
|
|
|
|
await Task.Delay(9000);
|
|
|
|
|
foreach (var item in new Label[] { 返回主菜单, 继续游戏, 游戏暂停 })
|
|
|
|
|
Invoke(() => item.Visible = true);
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
thread.Start();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
_pauseAllow = true;
|
|
|
|
|
label.SendToBack();
|
|
|
|
|
label.Visible = false;
|
|
|
|
|
label.Dispose();
|
|
|
|
|
}
|
|
|
|
|
PausePanel.Visible = false;
|
|
|
|
|
Etcs.song_Audio_Processer.SongFinished += Song_Audio_Processer_SongFinished;
|
|
|
|
|
ShowAudioVisualizer();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async void Song_Audio_Processer_SongFinished(Sound.Song_Audio_processer s, Sound.SongFinishedEventArgs e)
|
|
|
|
|
{
|
2024-04-22 13:48:40 +08:00
|
|
|
|
timer.Stop();
|
|
|
|
|
if (finished)
|
|
|
|
|
return;
|
2024-04-19 10:00:37 +08:00
|
|
|
|
foreach (var item in new Label[] { 返回主菜单, 继续游戏, 游戏暂停 })
|
|
|
|
|
item.Visible = false;
|
|
|
|
|
PausePanel.Visible = true;
|
|
|
|
|
PausePanel.BackgroundImage = Properties.Resources.trans;
|
2024-04-22 13:48:40 +08:00
|
|
|
|
for (int i = 0; i < 200; i += 10)
|
2024-04-19 10:00:37 +08:00
|
|
|
|
{
|
|
|
|
|
Color animRed = Color.FromArgb(i, 0, 0);
|
|
|
|
|
game_Panel.BackColor = animRed;
|
|
|
|
|
PausePanel.BackColor = animRed;
|
|
|
|
|
await Task.Delay(10);
|
|
|
|
|
}
|
|
|
|
|
PausePanel.BringToFront();
|
2024-04-22 13:48:40 +08:00
|
|
|
|
for (int i = 200; i < 255; i += 10)
|
2024-04-19 10:00:37 +08:00
|
|
|
|
{
|
|
|
|
|
Color animRed = Color.FromArgb(i, 0, 0);
|
|
|
|
|
PausePanel.BackColor = animRed;
|
|
|
|
|
await Task.Delay(10);
|
|
|
|
|
}
|
|
|
|
|
Etcs.info_Audio_Processer.playMusicClip("failed");
|
|
|
|
|
Finished_Handler(this, new FinishArgs { finishType = FinishArgs.FinishType.Time_out });
|
|
|
|
|
}
|
|
|
|
|
int cur_score = 0;
|
2024-04-22 13:48:40 +08:00
|
|
|
|
bool finished = false;
|
2024-04-19 10:00:37 +08:00
|
|
|
|
public void Finished_Handler(object sender, FinishArgs e)
|
|
|
|
|
{
|
2024-04-22 13:48:40 +08:00
|
|
|
|
BeginInvoke(async () =>
|
2024-04-19 10:00:37 +08:00
|
|
|
|
{
|
2024-04-22 13:48:40 +08:00
|
|
|
|
finished = true;
|
2024-04-19 10:00:37 +08:00
|
|
|
|
switch (e.finishType)
|
|
|
|
|
{
|
|
|
|
|
case FinishArgs.FinishType.All_done:
|
2024-04-22 13:48:40 +08:00
|
|
|
|
timer.Stop();
|
|
|
|
|
new Thread(() =>
|
|
|
|
|
{
|
|
|
|
|
while (Etcs.Song_Volume != 0)
|
|
|
|
|
{
|
|
|
|
|
Etcs.Song_Volume = Math.Max(Etcs.Song_Volume - 7, 0);
|
|
|
|
|
Etcs.song_Audio_Processer.volume_change(Etcs.Song_Volume);
|
|
|
|
|
Thread.Sleep(500);
|
|
|
|
|
}
|
|
|
|
|
Etcs.song_Audio_Processer.pause_song();
|
|
|
|
|
}).Start();
|
|
|
|
|
foreach (var item in new Label[] { 返回主菜单, 继续游戏, 游戏暂停 })
|
|
|
|
|
item.Visible = false;
|
|
|
|
|
PausePanel.Visible = true;
|
|
|
|
|
PausePanel.BackgroundImage = Properties.Resources.trans;
|
|
|
|
|
for (int i = 0; i < 200; i += 10)
|
|
|
|
|
{
|
|
|
|
|
Color animRed = Color.FromArgb(i, i, i);
|
|
|
|
|
game_Panel.BackColor = animRed;
|
|
|
|
|
PausePanel.BackColor = animRed;
|
|
|
|
|
await Task.Delay(10);
|
|
|
|
|
}
|
|
|
|
|
PausePanel.BringToFront();
|
|
|
|
|
for (int i = 200; i < 260; i += 10)
|
|
|
|
|
{
|
|
|
|
|
Color animRed = Color.FromArgb(i, i, i);
|
|
|
|
|
PausePanel.BackColor = animRed;
|
|
|
|
|
await Task.Delay(10);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Label label = new Label { TextAlign = ContentAlignment.MiddleCenter, Font = new Font("Microsoft YaHei UI", 20F), ForeColor = Color.White, BackColor = Color.FromArgb(0, 0, 0, 0), AutoSize = false, Size = new Size(1220, 55), Location = new Point(110, 330) };
|
|
|
|
|
string[] strings = { "Mission Accomplish", "下次再见", "The End" };
|
|
|
|
|
for (int i = 0; i < strings.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
label.Text = strings[i];
|
|
|
|
|
Etcs.info_Audio_Processer.playMusicClip("Message", 60);
|
|
|
|
|
}
|
|
|
|
|
label.Visible = false;
|
|
|
|
|
label.Dispose();
|
|
|
|
|
Form form = new FinishedMessageBox(score, (int)curTime);
|
2024-04-19 10:00:37 +08:00
|
|
|
|
form.FormClosed += ((sender, args) =>
|
|
|
|
|
{
|
|
|
|
|
Dispose();
|
|
|
|
|
Close();
|
|
|
|
|
Etcs.form?.change_form(Etcs.charts, false, null, null);
|
|
|
|
|
});
|
|
|
|
|
form.ShowDialog();
|
|
|
|
|
break;
|
|
|
|
|
case FinishArgs.FinishType.Time_out:
|
|
|
|
|
退出_Click(this, new EventArgs());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
private bool _pauseState = false;
|
|
|
|
|
private bool search_mode;
|
|
|
|
|
private int search_left_use_time;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 需要测试!!
|
|
|
|
|
/// </summary>
|
|
|
|
|
private bool _pauseAllow = false;
|
|
|
|
|
private void DoPause()
|
|
|
|
|
{
|
|
|
|
|
if (!_pauseAllow)
|
|
|
|
|
return;
|
|
|
|
|
timer.Enabled = false;
|
|
|
|
|
Etcs.song_Audio_Processer.pause_song();
|
|
|
|
|
_pauseState = true;
|
|
|
|
|
Bitmap bit = new Bitmap(Width, Height);
|
|
|
|
|
Graphics g = Graphics.FromImage(bit);
|
|
|
|
|
g.CompositingQuality = CompositingQuality.HighQuality;
|
2024-04-22 13:48:40 +08:00
|
|
|
|
g.CopyFromScreen(Etcs.form!.Left + 5, Etcs.form!.Top + 43, 0, 0, new Size(Width, Height));
|
2024-04-19 10:00:37 +08:00
|
|
|
|
PausePanel.BringToFront();
|
2024-04-22 13:48:40 +08:00
|
|
|
|
Rectangle rectangle = new Rectangle(0, 0, bit.Width, bit.Height);
|
|
|
|
|
PausePanel.BackgroundImage = bit.GaussianBlur();
|
2024-04-19 10:00:37 +08:00
|
|
|
|
PausePanel.Visible = true;
|
|
|
|
|
GC.Collect();
|
|
|
|
|
}
|
|
|
|
|
private void DePause()
|
|
|
|
|
{
|
|
|
|
|
Etcs.song_Audio_Processer.resume_song();
|
|
|
|
|
_pauseState = false;
|
|
|
|
|
timer.Enabled = true;
|
|
|
|
|
PausePanel.Visible = false;
|
|
|
|
|
PausePanel.SendToBack();
|
|
|
|
|
}
|
|
|
|
|
public void TogglePause()
|
|
|
|
|
{
|
|
|
|
|
if (_pauseState)
|
|
|
|
|
DePause();
|
|
|
|
|
else
|
|
|
|
|
DoPause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ShowAudioVisualizer()
|
|
|
|
|
{
|
|
|
|
|
Form audioVisualizer = new AudioVisualizer.MainWindow();
|
|
|
|
|
audioVisualizer.TopLevel = false;
|
|
|
|
|
audioVisualizer.Dock = DockStyle.Fill;
|
|
|
|
|
AudioVisualizerPanel.Controls.Add(audioVisualizer);
|
|
|
|
|
audioVisualizer.Show();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void 继续游戏_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
DePause();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void 退出_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Dispose();
|
|
|
|
|
Close();
|
|
|
|
|
Etcs.hunderd_millsecond_timer.Elapsed -= TimerTick;
|
|
|
|
|
Etcs.gameMenuForm!.playFormToMenu();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CanClickLabel_MouseEnter(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
(sender as Label)!.BackColor = Color.FromArgb(100, 100, 100);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CanClickLabel_MouseLeave(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
(sender as Label)!.BackColor = Color.FromArgb(0, 0, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void De_pause(object sender, EventArgs e) { }
|
|
|
|
|
public void Score_Change(object sender, ChangeScoreArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (e.add)
|
|
|
|
|
{
|
2024-04-22 13:48:40 +08:00
|
|
|
|
new Thread(() => Score += e.score).Start();
|
|
|
|
|
if (search_mode)
|
2024-04-19 10:00:37 +08:00
|
|
|
|
{
|
|
|
|
|
search_left_use_time--;
|
2024-04-22 13:48:40 +08:00
|
|
|
|
if (search_left_use_time == 0)
|
2024-04-19 10:00:37 +08:00
|
|
|
|
{
|
|
|
|
|
search_mode = false;
|
|
|
|
|
gameControl.Search_Handler(this, new SearchEventArgs { set_search = false });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
2024-04-22 13:48:40 +08:00
|
|
|
|
new Thread(() => Score = Math.Max(0, Score - e.score)).Start();
|
2024-04-19 10:00:37 +08:00
|
|
|
|
}
|
2024-04-22 13:48:40 +08:00
|
|
|
|
Thread? ScoreChange;
|
|
|
|
|
public void AddScoreLabel(int score)
|
|
|
|
|
{
|
|
|
|
|
if (ScoreChange != null && ScoreChange.IsAlive)
|
|
|
|
|
ScoreChange.Interrupt();
|
|
|
|
|
ScoreChange = new Thread(() =>
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
BeginInvoke(() => scoreChangeLabel.Text = "+" + score);
|
|
|
|
|
BeginInvoke(() => scoreChangeLabel.ForeColor = Color.FromArgb(0, 255, 0));
|
|
|
|
|
BeginInvoke(() => scoreChangeLabel.Visible = true);
|
|
|
|
|
for (int i = 255; i > 0; i -= 20)
|
|
|
|
|
{
|
|
|
|
|
BeginInvoke(() => scoreChangeLabel.ForeColor = Color.FromArgb(0, i, 0));
|
|
|
|
|
Thread.Sleep(80);
|
|
|
|
|
}
|
|
|
|
|
BeginInvoke(() => scoreChangeLabel.Visible = false);
|
|
|
|
|
}
|
|
|
|
|
catch (ThreadInterruptedException) { return; }
|
|
|
|
|
});
|
|
|
|
|
ScoreChange.Start();
|
|
|
|
|
}
|
|
|
|
|
public void SubScoreLabel(int score)
|
|
|
|
|
{
|
|
|
|
|
if (ScoreChange != null && ScoreChange.IsAlive)
|
|
|
|
|
ScoreChange.Interrupt();
|
|
|
|
|
ScoreChange = new Thread(() =>
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
BeginInvoke(() => scoreChangeLabel.Text = "-" + score);
|
|
|
|
|
BeginInvoke(() => scoreChangeLabel.ForeColor = Color.FromArgb(255, 0, 0));
|
|
|
|
|
BeginInvoke(() => scoreChangeLabel.Visible = true);
|
|
|
|
|
for (int i = 255; i > 0; i -= 20)
|
|
|
|
|
{
|
|
|
|
|
BeginInvoke(() => scoreChangeLabel.ForeColor = Color.FromArgb(i, 0, 0));
|
|
|
|
|
Thread.Sleep(80);
|
|
|
|
|
}
|
|
|
|
|
BeginInvoke(() => scoreChangeLabel.Visible = false);
|
|
|
|
|
}
|
|
|
|
|
catch (ThreadInterruptedException) { return; }
|
|
|
|
|
});
|
|
|
|
|
ScoreChange.Start();
|
|
|
|
|
}
|
|
|
|
|
public void SetTheme()
|
|
|
|
|
{
|
2024-04-19 10:00:37 +08:00
|
|
|
|
Etcs.current_block_theme = Etcs.Theme.code;
|
|
|
|
|
Etcs.gameModeForm = this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void DoSearch()
|
|
|
|
|
{
|
|
|
|
|
gameControl.Search_Handler(this, new SearchEventArgs { set_search = true });
|
|
|
|
|
search_mode = true;
|
|
|
|
|
search_left_use_time = 3;
|
|
|
|
|
}
|
|
|
|
|
private void DoRemake()
|
|
|
|
|
{
|
|
|
|
|
Task.Run(() => gameControl.Exchange_Handler(this, new EventArgs()));
|
|
|
|
|
}
|
|
|
|
|
public void GetGift_Handler(object sender, GiftArgs e)
|
|
|
|
|
{
|
|
|
|
|
Etcs.info_Audio_Processer.playMusicClip("HitSong");
|
|
|
|
|
switch (e.giftType)
|
|
|
|
|
{
|
|
|
|
|
case GiftArgs.GiftType.Search:
|
|
|
|
|
DoSearch();
|
|
|
|
|
break;
|
|
|
|
|
case GiftArgs.GiftType.ReMake:
|
|
|
|
|
DoRemake();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-04-22 13:48:40 +08:00
|
|
|
|
|
|
|
|
|
public void Back()
|
|
|
|
|
{
|
|
|
|
|
TogglePause();
|
|
|
|
|
}
|
2024-04-19 10:00:37 +08:00
|
|
|
|
}
|
|
|
|
|
}
|