一些修改

This commit is contained in:
milimoe 2025-04-13 19:57:00 +08:00
parent ccd88c5473
commit 131338ce80
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
36 changed files with 356 additions and 1758 deletions

7
OshimaModes/App.xaml Normal file
View File

@ -0,0 +1,7 @@
<Application x:Class="Oshima.FunGame.OshimaModes.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>

6
OshimaModes/App.xaml.cs Normal file
View File

@ -0,0 +1,6 @@
namespace Oshima.FunGame.OshimaModes
{
public partial class App : System.Windows.Application
{
}
}

View File

@ -6,6 +6,7 @@ using Milimoe.FunGame.Core.Library.Common.Event;
using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Model; using Milimoe.FunGame.Core.Model;
using Oshima.Core.Constant; using Oshima.Core.Constant;
using Application = System.Windows.Application;
namespace Oshima.FunGame.OshimaModes namespace Oshima.FunGame.OshimaModes
{ {
@ -37,18 +38,40 @@ namespace Oshima.FunGame.OshimaModes
public override void StartUI(params object[] args) public override void StartUI(params object[] args)
{ {
if (Application.MessageLoop) try
{ {
FastAutoUI f = new(); // 确保在 UI 线程执行
f.Invoke(f.Show); if (Application.Current != null)
{
Application.Current.Dispatcher.Invoke(() =>
{
try
{
MainWindow mainWindow = new();
mainWindow.Closed += (s, e) =>
{
Controller.WriteLine("MainWindow closed");
};
mainWindow.Show();
}
catch (Exception ex)
{
Controller.Error(ex);
throw;
}
});
} }
else else
{ {
ApplicationConfiguration.Initialize(); throw new InvalidOperationException("WPF Application not initialized.");
Application.Run(new FastAutoUI()); }
}
catch (Exception ex)
{
Controller.Error(ex);
throw;
} }
} }
public void GamingUpdateInfoEvent(object sender, GamingEventArgs e, Dictionary<string, object> data) public void GamingUpdateInfoEvent(object sender, GamingEventArgs e, Dictionary<string, object> data)
{ {

View File

@ -1,133 +0,0 @@
using System.Windows.Forms;
namespace Oshima.FunGame.OshimaModes
{
partial class FastAutoUI
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
mainTableLayoutPanel = new TableLayoutPanel();
rightTableLayoutPanel = new TableLayoutPanel();
richTextBox = new RichTextBox();
leftTableLayoutPanel = new TableLayoutPanel();
characterStatus1 = new CharacterStatus();
mainTableLayoutPanel.SuspendLayout();
leftTableLayoutPanel.SuspendLayout();
SuspendLayout();
//
// mainTableLayoutPanel
//
mainTableLayoutPanel.ColumnCount = 3;
mainTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
mainTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
mainTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
mainTableLayoutPanel.Controls.Add(rightTableLayoutPanel, 2, 1);
mainTableLayoutPanel.Controls.Add(richTextBox, 1, 1);
mainTableLayoutPanel.Controls.Add(leftTableLayoutPanel, 0, 1);
mainTableLayoutPanel.Dock = DockStyle.Fill;
mainTableLayoutPanel.Location = new Point(0, 0);
mainTableLayoutPanel.Name = "mainTableLayoutPanel";
mainTableLayoutPanel.RowCount = 3;
mainTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
mainTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 70F));
mainTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 20F));
mainTableLayoutPanel.Size = new Size(1688, 943);
mainTableLayoutPanel.TabIndex = 0;
//
// rightTableLayoutPanel
//
rightTableLayoutPanel.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
rightTableLayoutPanel.ColumnCount = 2;
rightTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
rightTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
rightTableLayoutPanel.Location = new Point(1269, 97);
rightTableLayoutPanel.Name = "rightTableLayoutPanel";
rightTableLayoutPanel.RowCount = 3;
rightTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F));
rightTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F));
rightTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F));
rightTableLayoutPanel.Size = new Size(416, 654);
rightTableLayoutPanel.TabIndex = 1;
//
// richTextBox
//
richTextBox.Dock = DockStyle.Fill;
richTextBox.Location = new Point(425, 97);
richTextBox.Name = "richTextBox";
richTextBox.ReadOnly = true;
richTextBox.Size = new Size(838, 654);
richTextBox.TabIndex = 2;
richTextBox.Text = "";
//
// leftTableLayoutPanel
//
leftTableLayoutPanel.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
leftTableLayoutPanel.ColumnCount = 2;
leftTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
leftTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
leftTableLayoutPanel.Controls.Add(characterStatus1, 0, 0);
leftTableLayoutPanel.Location = new Point(3, 97);
leftTableLayoutPanel.Name = "leftTableLayoutPanel";
leftTableLayoutPanel.RowCount = 3;
leftTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F));
leftTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F));
leftTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F));
leftTableLayoutPanel.Size = new Size(416, 654);
leftTableLayoutPanel.TabIndex = 0;
//
// characterStatus1
//
characterStatus1.Location = new Point(3, 3);
characterStatus1.Name = "characterStatus1";
characterStatus1.Size = new Size(202, 211);
characterStatus1.TabIndex = 0;
//
// FastAutoUI
//
AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(1688, 943);
Controls.Add(mainTableLayoutPanel);
FormBorderStyle = FormBorderStyle.FixedSingle;
MaximizeBox = false;
Name = "FastAutoUI";
Text = "游戏界面";
mainTableLayoutPanel.ResumeLayout(false);
leftTableLayoutPanel.ResumeLayout(false);
ResumeLayout(false);
}
private System.Windows.Forms.TableLayoutPanel mainTableLayoutPanel;
private System.Windows.Forms.TableLayoutPanel leftTableLayoutPanel;
private System.Windows.Forms.TableLayoutPanel rightTableLayoutPanel;
private System.Windows.Forms.RichTextBox richTextBox;
#endregion
private CharacterStatus characterStatus1;
}
}

View File

@ -1,57 +0,0 @@
namespace Oshima.FunGame.OshimaModes
{
public partial class FastAutoUI : Form
{
public FastAutoUI()
{
InitializeComponent();
// 根据玩家数量,添加格子
AddPlayers(7);
}
// 动态添加玩家格子
private void AddPlayers(int playerCount)
{
int leftIndex = 0; // 左侧的奇数玩家计数器
int rightIndex = 0; // 右侧的偶数玩家计数器
for (int i = 1; i <= playerCount; i++)
{
// 每个格子用Button表示
CharacterStatus playerSlot = new();
if (i % 2 == 1) // 奇数玩家,左侧
{
AddToLeftPanel(playerSlot, leftIndex);
leftIndex++;
}
else // 偶数玩家,右侧
{
AddToRightPanel(playerSlot, rightIndex);
rightIndex++;
}
}
}
// 添加奇数玩家到左侧TableLayoutPanel
private void AddToLeftPanel(Control control, int index)
{
int col = index / 3; // 每列容纳3个玩家
int row = index % 3; // 行号从0到2
leftTableLayoutPanel.Controls.Add(control, col, row);
}
// 添加偶数玩家到右侧TableLayoutPanel
private void AddToRightPanel(Control control, int index)
{
// 偶数玩家的排列规则:
// - 第一列: Player 10, Player 11, Player 12 (根据index从3开始)
// - 第二列: Player 2, Player 4, Player 6 (根据index从0开始)
int col = (index >= 3) ? 0 : 1; // 超过 3 位玩家的偶数编号应该在第一列,否则在第二列
int row = index % 3; // 行号从0到2
rightTableLayoutPanel.Controls.Add(control, col, row);
}
}
}

View File

@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,52 +1,47 @@
<Window x:Class="Oshima.FunGame.OshimaModes.MainWindow" <Window x:Class="Oshima.FunGame.OshimaModes.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="FunGame WPF UI" Height="720" Width="1280"> xmlns:local="clr-namespace:Oshima.FunGame.OshimaModes"
Title="游戏界面" Height="943" Width="1688" ResizeMode="NoResize">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/> <ColumnDefinition Width="25*" />
<ColumnDefinition Width="*"/> <ColumnDefinition Width="50*" />
<ColumnDefinition Width="25*" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<!-- 玩家信息区域 -->
<ItemsControl Grid.Column="0" ItemsSource="{Binding Players}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Black" BorderThickness="1" Margin="5">
<StackPanel>
<TextBlock Text="{Binding PlayerName}" FontWeight="Bold"/>
<Image Source="{Binding PlayerImage}" Width="100" Height="100"/>
<TextBlock Text="{Binding HP}"/>
<TextBlock Text="{Binding MP}"/>
<!-- 其他玩家信息 -->
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<!-- 游戏信息/聊天区域 -->
<Grid Grid.Column="1">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="*"/> <RowDefinition Height="10*" />
<RowDefinition Height="Auto"/> <RowDefinition Height="70*" />
<RowDefinition Height="20*" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<!-- 游戏信息显示 --> <!-- 左侧玩家面板 -->
<ScrollViewer Grid.Row="0" VerticalScrollBarVisibility="Auto"> <Grid x:Name="leftTableLayoutPanel" Grid.Column="0" Grid.Row="1">
<TextBlock x:Name="GameInfoTextBlock" TextWrapping="Wrap"/> <Grid.ColumnDefinitions>
</ScrollViewer> <ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
</Grid>
<!-- 聊天输入框 --> <!-- 中间文本框 -->
<StackPanel Grid.Row="1" Orientation="Horizontal"> <RichTextBox x:Name="richTextBox" Grid.Column="1" Grid.Row="1" IsReadOnly="True" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
<TextBox Width="200" x:Name="ChatInputTextBox" KeyDown="ChatInputTextBox_KeyDown"/>
<Button Content="发送" Click="SendButton_Click"/> <!-- 右侧玩家面板 -->
</StackPanel> <Grid x:Name="rightTableLayoutPanel" Grid.Column="2" Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
</Grid> </Grid>
</Grid> </Grid>
</Window> </Window>

View File

@ -1,37 +1,60 @@
using System.Windows; using System.Windows;
using System.Windows.Input; using System.Windows.Controls;
namespace Oshima.FunGame.OshimaModes namespace Oshima.FunGame.OshimaModes
{ {
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window public partial class MainWindow : Window
{ {
private MainWindowViewModel ViewModel;
public MainWindow() public MainWindow()
{ {
InitializeComponent(); InitializeComponent();
ViewModel = new MainWindowViewModel(); AddPlayers(7); // 初始化时添加7个玩家
DataContext = ViewModel;
Show();
} }
private void SendButton_Click(object sender, RoutedEventArgs e) // 动态添加玩家格子
private void AddPlayers(int playerCount)
{ {
// 发送聊天消息的逻辑 int leftIndex = 0; // 左侧奇数玩家计数器
string message = ChatInputTextBox.Text; int rightIndex = 0; // 右侧偶数玩家计数器
ViewModel.GameInfoText += $"You: {message}\n";
ChatInputTextBox.Clear(); for (int i = 1; i <= playerCount; i++)
{
// 使用 CharacterStatus 控件表示玩家
CharacterStatus playerSlot = new();
if (i % 2 == 1) // 奇数玩家,左侧
{
AddToLeftPanel(playerSlot, leftIndex);
leftIndex++;
}
else // 偶数玩家,右侧
{
AddToRightPanel(playerSlot, rightIndex);
rightIndex++;
}
}
} }
private void ChatInputTextBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) // 添加奇数玩家到左侧 Grid
private void AddToLeftPanel(CharacterStatus control, int index)
{ {
if (e.Key == Key.Enter) int col = index / 3; // 每列容纳3个玩家
int row = index % 3; // 行号从0到2
Grid.SetColumn(control, col);
Grid.SetRow(control, row);
leftTableLayoutPanel.Children.Add(control);
}
// 添加偶数玩家到右侧 Grid
private void AddToRightPanel(CharacterStatus control, int index)
{ {
SendButton_Click(sender, null); int col = (index >= 3) ? 0 : 1; // 超过3位玩家的偶数编号在第一列否则在第二列
} int row = index % 3; // 行号从0到2
Grid.SetColumn(control, col);
Grid.SetRow(control, row);
rightTableLayoutPanel.Children.Add(control);
} }
} }
} }

View File

@ -1,10 +1,5 @@
using System; using System.Collections.ObjectModel;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel; using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Imaging; using System.Windows.Media.Imaging;
namespace Oshima.FunGame.OshimaModes namespace Oshima.FunGame.OshimaModes

View File

@ -20,9 +20,12 @@
<NoWarn>1701;1702;IDE0130</NoWarn> <NoWarn>1701;1702;IDE0130</NoWarn>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<Page Include="App.xaml" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\FunGame.Core\FunGame.Core.csproj" /> <ProjectReference Include="..\..\FunGame.Core\FunGame.Core.csproj" />
<ProjectReference Include="..\..\FunGame.Desktop\FunGame.Desktop\FunGame.Desktop.csproj" />
<ProjectReference Include="..\OshimaMaps\OshimaMaps.csproj" /> <ProjectReference Include="..\OshimaMaps\OshimaMaps.csproj" />
<ProjectReference Include="..\OshimaModules\OshimaModules.csproj" /> <ProjectReference Include="..\OshimaModules\OshimaModules.csproj" />
</ItemGroup> </ItemGroup>

View File

@ -1,17 +0,0 @@
namespace Oshima.FunGame.OshimaModes
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
Application.Run(new FastAutoUI());
}
}
}

View File

@ -0,0 +1,88 @@
<UserControl x:Class="Oshima.FunGame.OshimaModes.CharacterStatus"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Oshima.FunGame.OshimaModes"
Width="315" Height="357">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="31" />
<RowDefinition Height="223" />
<RowDefinition Height="*" />
<RowDefinition Height="20" />
<RowDefinition Height="20" />
<RowDefinition Height="21" />
<RowDefinition Height="30" />
</Grid.RowDefinitions>
<!-- 角色名称 -->
<TextBlock x:Name="CharacterName"
Grid.Row="0"
Text="角色名称"
FontFamily="霞鹜文楷"
FontSize="14"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
<!-- 角色头像 -->
<Image x:Name="CharacterAvatar"
Grid.Row="1"
Stretch="Uniform"
Margin="0" />
<!-- HP 进度条 -->
<ProgressBar x:Name="HPBar"
Grid.Row="3"
Height="20"
Foreground="Red"
BorderBrush="Black"
BorderThickness="1"
FontFamily="霞鹜文楷"
FontSize="10.5"
FontWeight="Bold"
Value="50"
Maximum="100" />
<!-- MP 进度条 -->
<ProgressBar x:Name="MPBar"
Grid.Row="4"
Height="20"
Foreground="Blue"
BorderBrush="Black"
BorderThickness="1"
FontFamily="霞鹜文楷"
FontSize="10.5"
FontWeight="Bold"
Value="50"
Maximum="100" />
<!-- EP 进度条 -->
<ProgressBar x:Name="EPBar"
Grid.Row="5"
Height="21"
Foreground="Yellow"
BorderBrush="Black"
BorderThickness="1"
FontFamily="霞鹜文楷"
FontSize="10.5"
FontWeight="Bold"
Value="50"
Maximum="100" />
<!-- 状态图标区域 -->
<StackPanel x:Name="flowLayoutPanel1"
Grid.Row="6"
Orientation="Horizontal"
HorizontalAlignment="Left">
<Image x:Name="pictureBox1"
Width="25"
Height="25"
Margin="3"
Stretch="Uniform" />
<Image x:Name="pictureBox2"
Width="25"
Height="25"
Margin="3"
Stretch="Uniform" />
</StackPanel>
</Grid>
</UserControl>

View File

@ -0,0 +1,73 @@
using System.Windows.Media;
namespace Oshima.FunGame.OshimaModes
{
public partial class CharacterStatus : System.Windows.Controls.UserControl
{
public CharacterStatus()
{
InitializeComponent();
}
// 公开控件属性以便外部访问
public string CharacterNameText
{
get => CharacterName.Text;
set => CharacterName.Text = value;
}
public ImageSource CharacterAvatarSource
{
get => CharacterAvatar.Source;
set => CharacterAvatar.Source = value;
}
public double HPBarValue
{
get => HPBar.Value;
set => HPBar.Value = value;
}
public double HPBarMaximum
{
get => HPBar.Maximum;
set => HPBar.Maximum = value;
}
public double MPBarValue
{
get => MPBar.Value;
set => MPBar.Value = value;
}
public double MPBarMaximum
{
get => MPBar.Maximum;
set => MPBar.Maximum = value;
}
public double EPBarValue
{
get => EPBar.Value;
set => EPBar.Value = value;
}
public double EPBarMaximum
{
get => EPBar.Maximum;
set => EPBar.Maximum = value;
}
public ImageSource PictureBox1Source
{
get => pictureBox1.Source;
set => pictureBox1.Source = value;
}
public ImageSource PictureBox2Source
{
get => pictureBox2.Source;
set => pictureBox2.Source = value;
}
}
}

View File

@ -0,0 +1,12 @@
<UserControl x:Class="Oshima.FunGame.OshimaModes.CustomProgressBar"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="20">
<ProgressBar x:Name="progressBar"
Value="50"
Minimum="0"
Maximum="100"
Height="{Binding Height, RelativeSource={RelativeSource AncestorType=UserControl}}"
BorderBrush="{Binding BorderBrush, RelativeSource={RelativeSource AncestorType=UserControl}}"
BorderThickness="{Binding BorderThickness, RelativeSource={RelativeSource AncestorType=UserControl}}"/>
</UserControl>

View File

@ -0,0 +1,46 @@
using System.Windows;
namespace Oshima.FunGame.OshimaModes
{
public partial class CustomProgressBar : System.Windows.Controls.UserControl
{
public CustomProgressBar()
{
InitializeComponent();
}
// 进度值依赖属性
public static readonly DependencyProperty ValueProperty = DependencyProperty.Register(
"Value", typeof(double), typeof(CustomProgressBar),
new PropertyMetadata(0.0, OnValueChanged));
public double Value
{
get => (double)GetValue(ValueProperty);
set => SetValue(ValueProperty, value);
}
private static void OnValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var control = (CustomProgressBar)d;
control.progressBar.Value = (double)e.NewValue;
}
// 最大值依赖属性
public static readonly DependencyProperty MaximumProperty = DependencyProperty.Register(
"Maximum", typeof(double), typeof(CustomProgressBar),
new PropertyMetadata(100.0, OnMaximumChanged));
public double Maximum
{
get => (double)GetValue(MaximumProperty);
set => SetValue(MaximumProperty, value);
}
private static void OnMaximumChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var control = (CustomProgressBar)d;
control.progressBar.Maximum = (double)e.NewValue;
}
}
}

View File

@ -1,216 +0,0 @@
namespace Oshima.FunGame.OshimaModes
{
partial class CharacterStatus
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CharacterStatus));
CharacterName = new Label();
HPBar = new CustomProgressBar();
MPBar = new CustomProgressBar();
CharacterAvatar = new PictureBox();
EPBar = new CustomProgressBar();
pictureBox8 = new PictureBox();
pictureBox9 = new PictureBox();
pictureBox10 = new PictureBox();
pictureBox11 = new PictureBox();
flowLayoutPanel1 = new FlowLayoutPanel();
pictureBox1 = new PictureBox();
pictureBox2 = new PictureBox();
((System.ComponentModel.ISupportInitialize)CharacterAvatar).BeginInit();
((System.ComponentModel.ISupportInitialize)pictureBox8).BeginInit();
((System.ComponentModel.ISupportInitialize)pictureBox9).BeginInit();
((System.ComponentModel.ISupportInitialize)pictureBox10).BeginInit();
((System.ComponentModel.ISupportInitialize)pictureBox11).BeginInit();
flowLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
((System.ComponentModel.ISupportInitialize)pictureBox2).BeginInit();
SuspendLayout();
//
// CharacterName
//
CharacterName.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
CharacterName.Font = new Font("霞鹜文楷", 14.9999981F, FontStyle.Regular, GraphicsUnit.Point, 134);
CharacterName.Location = new Point(0, 0);
CharacterName.Name = "CharacterName";
CharacterName.Size = new Size(315, 31);
CharacterName.TabIndex = 0;
CharacterName.Text = "角色名称";
CharacterName.TextAlign = ContentAlignment.MiddleCenter;
//
// HPBar
//
HPBar.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
HPBar.BorderStyle = BorderStyle.FixedSingle;
HPBar.Font = new Font("霞鹜文楷", 10.5F, FontStyle.Bold);
HPBar.Location = new Point(0, 260);
HPBar.Maximum = 1000D;
HPBar.Name = "HPBar";
HPBar.ProgressColor = Color.PaleVioletRed;
HPBar.Size = new Size(315, 20);
HPBar.TabIndex = 1;
HPBar.Value = 325D;
//
// MPBar
//
MPBar.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
MPBar.BorderStyle = BorderStyle.FixedSingle;
MPBar.Font = new Font("霞鹜文楷", 10.5F, FontStyle.Bold);
MPBar.Location = new Point(0, 280);
MPBar.Maximum = 142D;
MPBar.Name = "MPBar";
MPBar.ProgressColor = Color.SteelBlue;
MPBar.Size = new Size(315, 20);
MPBar.TabIndex = 2;
MPBar.Value = 24D;
//
// CharacterAvatar
//
CharacterAvatar.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
CharacterAvatar.Image = (Image)resources.GetObject("CharacterAvatar.Image");
CharacterAvatar.Location = new Point(0, 31);
CharacterAvatar.Name = "CharacterAvatar";
CharacterAvatar.Size = new Size(315, 192);
CharacterAvatar.SizeMode = PictureBoxSizeMode.Zoom;
CharacterAvatar.TabIndex = 3;
CharacterAvatar.TabStop = false;
//
// EPBar
//
EPBar.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
EPBar.BorderStyle = BorderStyle.FixedSingle;
EPBar.Font = new Font("霞鹜文楷", 10.5F, FontStyle.Bold);
EPBar.Location = new Point(0, 300);
EPBar.Maximum = 200D;
EPBar.Name = "EPBar";
EPBar.ProgressColor = Color.LightGoldenrodYellow;
EPBar.Size = new Size(315, 21);
EPBar.TabIndex = 4;
EPBar.Value = 54D;
//
// pictureBox8
//
pictureBox8.Location = new Point(0, 0);
pictureBox8.Name = "pictureBox8";
pictureBox8.Size = new Size(100, 50);
pictureBox8.TabIndex = 0;
pictureBox8.TabStop = false;
//
// pictureBox9
//
pictureBox9.Location = new Point(0, 0);
pictureBox9.Name = "pictureBox9";
pictureBox9.Size = new Size(100, 50);
pictureBox9.TabIndex = 0;
pictureBox9.TabStop = false;
//
// pictureBox10
//
pictureBox10.Location = new Point(0, 0);
pictureBox10.Name = "pictureBox10";
pictureBox10.Size = new Size(100, 50);
pictureBox10.TabIndex = 0;
pictureBox10.TabStop = false;
//
// pictureBox11
//
pictureBox11.Location = new Point(0, 0);
pictureBox11.Name = "pictureBox11";
pictureBox11.Size = new Size(100, 50);
pictureBox11.TabIndex = 0;
pictureBox11.TabStop = false;
//
// flowLayoutPanel1
//
flowLayoutPanel1.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
flowLayoutPanel1.BackColor = Color.Transparent;
flowLayoutPanel1.Controls.Add(pictureBox1);
flowLayoutPanel1.Controls.Add(pictureBox2);
flowLayoutPanel1.Location = new Point(0, 324);
flowLayoutPanel1.Name = "flowLayoutPanel1";
flowLayoutPanel1.Size = new Size(315, 30);
flowLayoutPanel1.TabIndex = 5;
//
// pictureBox1
//
pictureBox1.Image = (Image)resources.GetObject("pictureBox1.Image");
pictureBox1.Location = new Point(3, 3);
pictureBox1.Name = "pictureBox1";
pictureBox1.Size = new Size(25, 25);
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
pictureBox1.TabIndex = 0;
pictureBox1.TabStop = false;
//
// pictureBox2
//
pictureBox2.Image = (Image)resources.GetObject("pictureBox2.Image");
pictureBox2.Location = new Point(34, 3);
pictureBox2.Name = "pictureBox2";
pictureBox2.Size = new Size(25, 25);
pictureBox2.SizeMode = PictureBoxSizeMode.Zoom;
pictureBox2.TabIndex = 1;
pictureBox2.TabStop = false;
//
// CharacterStatus
//
AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font;
Controls.Add(CharacterName);
Controls.Add(HPBar);
Controls.Add(MPBar);
Controls.Add(EPBar);
Controls.Add(flowLayoutPanel1);
Controls.Add(CharacterAvatar);
Name = "CharacterStatus";
Size = new Size(315, 357);
((System.ComponentModel.ISupportInitialize)CharacterAvatar).EndInit();
((System.ComponentModel.ISupportInitialize)pictureBox8).EndInit();
((System.ComponentModel.ISupportInitialize)pictureBox9).EndInit();
((System.ComponentModel.ISupportInitialize)pictureBox10).EndInit();
((System.ComponentModel.ISupportInitialize)pictureBox11).EndInit();
flowLayoutPanel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
((System.ComponentModel.ISupportInitialize)pictureBox2).EndInit();
ResumeLayout(false);
}
#endregion
private Label CharacterName;
private CustomProgressBar HPBar;
private CustomProgressBar MPBar;
private PictureBox CharacterAvatar;
private CustomProgressBar EPBar;
private PictureBox pictureBox8;
private PictureBox pictureBox9;
private PictureBox pictureBox10;
private PictureBox pictureBox11;
private FlowLayoutPanel flowLayoutPanel1;
private PictureBox pictureBox1;
private PictureBox pictureBox2;
}
}

View File

@ -1,10 +0,0 @@
namespace Oshima.FunGame.OshimaModes
{
public partial class CharacterStatus : UserControl
{
public CharacterStatus()
{
InitializeComponent();
}
}
}

View File

@ -1,749 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="CharacterAvatar.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
AElFTkSuQmCC
</value>
</data>
<data name="pictureBox2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH
DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp
bGUAAEjHnZZ3VFTXFofPvXd6oc0w0hl6ky4wgPQuIB0EURhmBhjKAMMMTWyIqEBEEREBRZCggAGjoUis
iGIhKKhgD0gQUGIwiqioZEbWSnx5ee/l5ffHvd/aZ+9z99l7n7UuACRPHy4vBZYCIJkn4Ad6ONNXhUfQ
sf0ABniAAaYAMFnpqb5B7sFAJC83F3q6yAn8i94MAUj8vmXo6U+ng/9P0qxUvgAAyF/E5mxOOkvE+SJO
yhSkiu0zIqbGJIoZRomZL0pQxHJijlvkpZ99FtlRzOxkHlvE4pxT2clsMfeIeHuGkCNixEfEBRlcTqaI
b4tYM0mYzBXxW3FsMoeZDgCKJLYLOKx4EZuImMQPDnQR8XIAcKS4LzjmCxZwsgTiQ7mkpGbzuXHxArou
S49uam3NoHtyMpM4AoGhP5OVyOSz6S4pyalMXjYAi2f+LBlxbemiIluaWltaGpoZmX5RqP+6+Dcl7u0i
vQr43DOI1veH7a/8UuoAYMyKarPrD1vMfgA6tgIgd/8Pm+YhACRFfWu/8cV5aOJ5iRcIUm2MjTMzM424
HJaRuKC/6386/A198T0j8Xa/l4fuyollCpMEdHHdWClJKUI+PT2VyeLQDf88xP848K/zWBrIieXwOTxR
RKhoyri8OFG7eWyugJvCo3N5/6mJ/zDsT1qca5Eo9Z8ANcoISN2gAuTnPoCiEAESeVDc9d/75oMPBeKb
F6Y6sTj3nwX9+65wifiRzo37HOcSGExnCfkZi2viawnQgAAkARXIAxWgAXSBITADVsAWOAI3sAL4gWAQ
DtYCFogHyYAPMkEu2AwKQBHYBfaCSlAD6kEjaAEnQAc4DS6Ay+A6uAnugAdgBIyD52AGvAHzEARhITJE
geQhVUgLMoDMIAZkD7lBPlAgFA5FQ3EQDxJCudAWqAgqhSqhWqgR+hY6BV2ArkID0D1oFJqCfoXewwhM
gqmwMqwNG8MM2An2hoPhNXAcnAbnwPnwTrgCroOPwe3wBfg6fAcegZ/DswhAiAgNUUMMEQbigvghEUgs
wkc2IIVIOVKHtCBdSC9yCxlBppF3KAyKgqKjDFG2KE9UCIqFSkNtQBWjKlFHUe2oHtQt1ChqBvUJTUYr
oQ3QNmgv9Cp0HDoTXYAuRzeg29CX0HfQ4+g3GAyGhtHBWGE8MeGYBMw6TDHmAKYVcx4zgBnDzGKxWHms
AdYO64dlYgXYAux+7DHsOewgdhz7FkfEqeLMcO64CBwPl4crxzXhzuIGcRO4ebwUXgtvg/fDs/HZ+BJ8
Pb4LfwM/jp8nSBN0CHaEYEICYTOhgtBCuER4SHhFJBLVidbEACKXuIlYQTxOvEIcJb4jyZD0SS6kSJKQ
tJN0hHSedI/0ikwma5MdyRFkAXknuZF8kfyY/FaCImEk4SXBltgoUSXRLjEo8UISL6kl6SS5VjJHslzy
pOQNyWkpvJS2lIsUU2qDVJXUKalhqVlpirSptJ90snSxdJP0VelJGayMtoybDFsmX+awzEWZMQpC0aC4
UFiULZR6yiXKOBVD1aF6UROoRdRvqP3UGVkZ2WWyobJZslWyZ2RHaAhNm+ZFS6KV0E7QhmjvlygvcVrC
WbJjScuSwSVzcopyjnIcuUK5Vrk7cu/l6fJu8onyu+U75B8poBT0FQIUMhUOKlxSmFakKtoqshQLFU8o
3leClfSVApXWKR1W6lOaVVZR9lBOVd6vfFF5WoWm4qiSoFKmclZlSpWiaq/KVS1TPaf6jC5Ld6In0Svo
PfQZNSU1TzWhWq1av9q8uo56iHqeeqv6Iw2CBkMjVqNMo1tjRlNV01czV7NZ874WXouhFa+1T6tXa05b
RztMe5t2h/akjpyOl06OTrPOQ12yroNumm6d7m09jB5DL1HvgN5NfVjfQj9ev0r/hgFsYGnANThgMLAU
vdR6KW9p3dJhQ5Khk2GGYbPhqBHNyMcoz6jD6IWxpnGE8W7jXuNPJhYmSSb1Jg9MZUxXmOaZdpn+aqZv
xjKrMrttTjZ3N99o3mn+cpnBMs6yg8vuWlAsfC22WXRbfLS0suRbtlhOWWlaRVtVWw0zqAx/RjHjijXa
2tl6o/Vp63c2ljYCmxM2v9ga2ibaNtlOLtdZzllev3zMTt2OaVdrN2JPt4+2P2Q/4qDmwHSoc3jiqOHI
dmxwnHDSc0pwOub0wtnEme/c5jznYuOy3uW8K+Lq4Vro2u8m4xbiVun22F3dPc692X3Gw8Jjncd5T7Sn
t+duz2EvZS+WV6PXzAqrFetX9HiTvIO8K72f+Oj78H26fGHfFb57fB+u1FrJW9nhB/y8/Pb4PfLX8U/z
/z4AE+AfUBXwNNA0MDewN4gSFBXUFPQm2Dm4JPhBiG6IMKQ7VDI0MrQxdC7MNaw0bGSV8ar1q66HK4Rz
wzsjsBGhEQ0Rs6vdVu9dPR5pEVkQObRGZ03WmqtrFdYmrT0TJRnFjDoZjY4Oi26K/sD0Y9YxZ2O8Yqpj
ZlgurH2s52xHdhl7imPHKeVMxNrFlsZOxtnF7YmbineIL4+f5rpwK7kvEzwTahLmEv0SjyQuJIUltSbj
kqOTT/FkeIm8nhSVlKyUgVSD1ILUkTSbtL1pM3xvfkM6lL4mvVNAFf1M9Ql1hVuFoxn2GVUZbzNDM09m
SWfxsvqy9bN3ZE/kuOd8vQ61jrWuO1ctd3Pu6Hqn9bUboA0xG7o3amzM3zi+yWPT0c2EzYmbf8gzySvN
e70lbEtXvnL+pvyxrR5bmwskCvgFw9tst9VsR23nbu/fYb5j/45PhezCa0UmReVFH4pZxde+Mv2q4quF
nbE7+0ssSw7uwuzi7Rra7bD7aKl0aU7p2B7fPe1l9LLCstd7o/ZeLV9WXrOPsE+4b6TCp6Jzv+b+Xfs/
VMZX3qlyrmqtVqreUT13gH1g8KDjwZYa5ZqimveHuIfu1nrUttdp15UfxhzOOPy0PrS+92vG140NCg1F
DR+P8I6MHA082tNo1djYpNRU0gw3C5unjkUeu/mN6zedLYYtta201qLj4Ljw+LNvo78dOuF9ovsk42TL
d1rfVbdR2grbofbs9pmO+I6RzvDOgVMrTnV32Xa1fW/0/ZHTaqerzsieKTlLOJt/duFczrnZ86nnpy/E
XRjrjup+cHHVxds9AT39l7wvXbnsfvlir1PvuSt2V05ftbl66hrjWsd1y+vtfRZ9bT9Y/NDWb9nffsPq
RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP
lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l
f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK
j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAALDwAACw8BkvkDpQAACBFJREFUWEfFlgtQVNcZ
x8++F3aB1ZXHivIKsMtDNBAVo1tBWVjAFVF5CVsUQcAnSoiAGAKihpfLw0BMSDSaSc2oUwdQK4TgC2pG
m0RJE6LNhJmkNTbttBoT3/z73bvYIGKaaWrzzfzP3XPvOff77fd959zDAPyi4hs7uZxJxWLGmZiuMpmM
SaVSrutJWqCk5wqlkikUCqaUMSZ3CWYivywm9kl+vLyThvVTeI10zolvHgGgvlAo5LqdpFukTOVwAOcp
TxaATEDqKiksxrsdHRAJhTSSrVQqOQABRSDkyQEMWXdudjY9stp7nV0PIMwKWxsm8YxlIm36MAej6GcA
HF6Zm0u3gUHSjfv8T5zqPgkRDafn8RJtCmPe6UzgxTkhkTPRQw6H5LuEZHX+owD2XM6tzn+bmZVFt6w2
QM4v3wVuDfU7OzpB48CUuj3MM2kfs9UfF00wvStwX3CIaaJ3M6eoOqY21DL13O1MHZbGHOeE031v0VOJ
Eolv6iPOOfGNRMRb27rCQur+YNdIX1t//tta//gJpHIxCiubUHHqc9jGNMIxqhae5t1wT26GV/ouuCVa
4Di3BKoZebCdvGJQ4rvkS4pSKk0fHUAgEm1Uu7igwmJBNam0qhJ5a9ZgZ8/vcej6tygpLkZBRQWKyjej
8KVyyOQMz3qMRc35K3Bauh8usfUIyOtASPlZ6JsvwbD/b4g6cANz3rqKsNcGCLAcFJ23RzrnxDc2crne
WaEooxSUk7JJ50hYf7EP2+7cwZiQUC73JAcw9WS4TjZBu3Ad3BbXQK0vgGp6LtQz18Nx9vMYp8+Hc0QJ
nCKKEbDhEIwHr8E5dhvYuMimkc45WQFo03ETiZidtRBdbRzGDKz9YgAWevgc1UEO1YF7dAzc3J7B2s+B
17nckDVevAtxdBOco2vgnvQG3BJaMHFRE8YvqEfQihZ4mF7ELIqIxlQF5hj1eAAmoLXNuWZspsrJBav6
L2MzPUi6B5huAsvodw7JJ9oAZ58wvPM9dcgs576FMGIHXGJ2wDenHQHrOxFUfBr+BScRuasffhlNmF77
ATTzqzmAZpoyOoCAAMim2bp53k66+nespptJpBRS2tDVTFpOsjeEI1xvxODgIBo/ug2hgQCMNdCtasek
57sQmN8B7eqjCN3aA19zI2bU92F8XA3VgPFVmj46gJ1S6S6TSOAyZSr8q2vhVVZCRbUGE1LS8PT6PGjM
y+CUYYauOA8eifE0i2GnpRqH/gGII+soBTugXXUEgQQQsOE4tGuOYca2XitA3UVKyX8AcHBwmKJyUFXb
yWXllIpSisdeF9fpMOcWwVETjNTk5TBkFcNncSFCkouxeF0pzvb2YNel2xAb6qCJreP/dWBBJw+gW3uM
j4B3aj1mWC7ANb6WWwUtI51z4ht7e3uSA1PZCpgD7fdMFqoLTKjFcdoKPRdWofOL77HlOtXDRaqFAeA0
TeKs4vQ1iKgGNKYG+K0+hgAKP58CigAH4MMB1P1EAJVCzBzsbJnMI4oxlSEmwFSElj8BXrHFaDn1GVZ8
CER1Ahk9tAou0yyy7e9/B6mxniJggXYlFSH9+x8Aeq0Alo/gunAHl4I3OF8jxTdjKO4KRy8m8k2jr1wm
Y/azYv1Mm/AKOfI2lRDAJWScB+Z1AekE0HKJZpFVnCWA6AZaBfUEcOShCEwnAGsKCGCRhQPYw/kaKb6x
0dABg/ZqoS6DPh6pBDBznm5eEV6lNe+/sAyvnbyE9HNAfDetBop/Uz/NIivrvQGZsQGaeY3QkVMOICDf
WgPTtpzBUykWAvgQExLqwJyjHg8g5L7t5Jj/slkB5mspAlUfA7r4Mrz32ddYShFY1H0fWT33sf3Cfdyh
iS/2fgc5nwIqQloFfASe64DPqjbMbe6nFDTgme29cEtqJADjvuGOH4hvHv6EEoBiWuKkxK3YQilg2nS0
d59FHw1ceGIQGafuoqbvLv+F3HzmOmxiX8Z4UyO0Oa2YRKvAa8VhhFZegOHl9+EaWQDDvq/gltJMANEH
HzgdrlEAljA2zmAY93Q6LH8BIl45D6aag7auE7hCg9dSJDb94R5oUeCFIQDX+Tvhm90Kr8zDeLbmE8yu
PQOP8GUwNZ5EbPtdjA0rop3QsP+B0+F6FIAk0f2aMTt9pSY0ExUcRNMHNDIEzU17+UPKsb8C39C1tOcG
5FSEY8Or4J3djqg3v0RI0QFojdnIPNiPuCO3yflGch5xRuS1WPfA6XCNCsCdYqT+yxgTBpfYe8Vh48f3
YD76DQ0MQ7I5H9c4CrKN3dfAgssQmNeG+b/5CkFZdfBfkIcMIjTu/yckk5aDKaYeEHunCCXatEecc+Kb
RwBI3ARJIC1JxawlAnUYMls/RR4tPxaYA5VnDN4+8Dvspk0pfNenmFnWDm3iJgRn1yP1+E1MoXOBwDOR
Uverl8T0HmuB/8iR7LEAJKl/BtVEpJ6xgIHwF97Bhj8DQYXtdC6Ig3Z+IaI270Vg2laEVZ9AXNstuKa8
DjY2jAt7ttSPO7jSuZDXfwkgoYkS/6VM4JHgyNiUoy76bCQcuQrj4ZtQm2oxdd0emCj3uvwu2IasoV0t
rE8wMW66REdz+X/+swG4ky1JZ7YWp+2MdKaafcUrrQH6nf30BTwFZegmCCYuoKjMqRT5cPnmHNM7/qcA
9DI6XFJKuGgsUjNFaINUa4Y8KIu22YhWgXt8sERrprlWZ/w7ngQAD8FFg/pMY1zHxseU0vix/Jhhzvh3
/FSAX1Kj3vz/CexfKfrmUAd3jBQAAAAASUVORK5CYII=
</value>
</data>
</root>

View File

@ -1,72 +0,0 @@
using System.ComponentModel;
namespace Oshima.FunGame.OshimaModes
{
public class CustomProgressBar : UserControl
{
private double _value = 0;
private double _maximum = 100;
private Color _progressColor = Color.Red;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public double Value
{
get => _value;
set
{
_value = Math.Max(0, Math.Min(value, _maximum)); // 限制值在范围内
Invalidate(); // 触发重绘
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public double Maximum
{
get => _maximum;
set
{
_maximum = Math.Max(1, value); // 最大值不能小于1
Invalidate(); // 触发重绘
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public Color ProgressColor
{
get => _progressColor;
set
{
_progressColor = value;
Invalidate(); // 触发重绘
}
}
public CustomProgressBar()
{
this.SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint |
ControlStyles.OptimizedDoubleBuffer, true);
this.Height = 20; // 设置控件的默认高度
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
// 计算进度条填充宽度
double percent = _value / _maximum;
int fillWidth = (int)(this.Width * percent);
// 填充背景(灰色)
e.Graphics.FillRectangle(Brushes.LightGray, 0, 0, this.Width, this.Height);
// 填充进度条(自定义颜色)
e.Graphics.FillRectangle(new SolidBrush(_progressColor), 0, 0, fillWidth, this.Height);
// 可选:绘制进度百分比文字
string text = $"{_value} / {_maximum}";
SizeF textSize = e.Graphics.MeasureString(text, this.Font);
e.Graphics.DrawString(text, this.Font, Brushes.Black,
(this.Width - textSize.Width) / 2, (this.Height - textSize.Height) / 2);
}
}
}

View File

@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,59 +0,0 @@
namespace Oshima.FunGame.OshimaModes
{
public partial class PlayerStatusControl : UserControl
{
public Label PlayerNameLabel { get; }
public PictureBox AvatarBox { get; }
public CustomProgressBar HPBar { get; }
public CustomProgressBar MPBar { get; }
public PlayerStatusControl(int index)
{
// 玩家名标签
PlayerNameLabel = new()
{
Text = "Player " + index,
TextAlign = ContentAlignment.MiddleCenter,
ImageAlign = ContentAlignment.MiddleCenter,
Dock = DockStyle.Top,
AutoSize = true
};
// 头像框
AvatarBox = new()
{
BorderStyle = BorderStyle.FixedSingle,
SizeMode = PictureBoxSizeMode.StretchImage,
Height = 100,
Width = 100,
Dock = DockStyle.Top
};
// HP条
HPBar = new()
{
Maximum = 100,
Value = 75.5, // 支持浮点数
ProgressColor = Color.Red, // 自定义颜色
Dock = DockStyle.Bottom,
Height = 20
};
// MP条
MPBar = new()
{
Maximum = 100,
Value = 50.7, // 支持浮点数
ProgressColor = Color.Blue, // 自定义颜色
Dock = DockStyle.Bottom,
Height = 20
};
// 添加控件到用户控件
this.Controls.Add(MPBar);
this.Controls.Add(HPBar);
this.Controls.Add(AvatarBox);
this.Controls.Add(PlayerNameLabel);
}
}
}

View File

@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -74,7 +74,7 @@ namespace Oshima.FunGame.OshimaModules.Items
Effects.Add(new ExATK(this, values, character)); Effects.Add(new ExATK(this, values, character));
} }
public override IEnumerable<Effect> AddInactiveEffectToCharacter() public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{ {
return Effects; return Effects;
} }

View File

@ -40,7 +40,7 @@ namespace Oshima.FunGame.OshimaModules.Items
Effects.Add(new NormalAttackHardTimeReduce(this, values, character)); Effects.Add(new NormalAttackHardTimeReduce(this, values, character));
} }
public override IEnumerable<Effect> AddInactiveEffectToCharacter() public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{ {
return Effects; return Effects;
} }

View File

@ -15,7 +15,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
Effects.Add(new (this)); Effects.Add(new (this));
} }
public override IEnumerable<Effect> AddInactiveEffectToCharacter() public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{ {
return Effects; return Effects;
} }

View File

@ -14,7 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
Effects.Add(new (this)); Effects.Add(new (this));
} }
public override IEnumerable<Effect> AddInactiveEffectToCharacter() public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{ {
return Effects; return Effects;
} }

View File

@ -14,7 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
Effects.Add(new (this)); Effects.Add(new (this));
} }
public override IEnumerable<Effect> AddInactiveEffectToCharacter() public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{ {
return Effects; return Effects;
} }

View File

@ -14,7 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
Effects.Add(new (this)); Effects.Add(new (this));
} }
public override IEnumerable<Effect> AddInactiveEffectToCharacter() public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{ {
return Effects; return Effects;
} }

View File

@ -14,7 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
Effects.Add(new (this)); Effects.Add(new (this));
} }
public override IEnumerable<Effect> AddInactiveEffectToCharacter() public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{ {
return Effects; return Effects;
} }

View File

@ -14,7 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
Effects.Add(new META马特效(this)); Effects.Add(new META马特效(this));
} }
public override IEnumerable<Effect> AddInactiveEffectToCharacter() public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{ {
return Effects; return Effects;
} }

View File

@ -19,7 +19,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
})); }));
} }
public override IEnumerable<Effect> AddInactiveEffectToCharacter() public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{ {
return Effects; return Effects;
} }

View File

@ -14,7 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
Effects.Add(new (this)); Effects.Add(new (this));
} }
public override IEnumerable<Effect> AddInactiveEffectToCharacter() public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{ {
return Effects; return Effects;
} }

View File

@ -14,7 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
Effects.Add(new (this)); Effects.Add(new (this));
} }
public override IEnumerable<Effect> AddInactiveEffectToCharacter() public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{ {
return Effects; return Effects;
} }

View File

@ -14,7 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
Effects.Add(new (this)); Effects.Add(new (this));
} }
public override IEnumerable<Effect> AddInactiveEffectToCharacter() public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{ {
return Effects; return Effects;
} }

View File

@ -15,7 +15,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
Effects.Add(new (this)); Effects.Add(new (this));
} }
public override IEnumerable<Effect> AddInactiveEffectToCharacter() public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{ {
return Effects; return Effects;
} }

View File

@ -14,7 +14,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
Effects.Add(new (this)); Effects.Add(new (this));
} }
public override IEnumerable<Effect> AddInactiveEffectToCharacter() public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{ {
return Effects; return Effects;
} }