FunGame-Godot/scripts/Chapter/GameConstant.cs
2026-02-03 01:38:51 +08:00

188 lines
7.0 KiB
C#

using System;
using System.Collections.Generic;
using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules;
using Oshima.FunGame.OshimaModules.Models;
namespace Milimoe.GodotGame
{
public class GameConstant
{
public static bool Initialized { get; set; } = false;
public static bool Pause { get; set; } = false;
public static Dictionary<long, Character> Characters { get; set; } = [];
public static Dictionary<Character, Region> CharacterInRegion { get; set; } = [];
public static Dictionary<long, Region> Regions { get; set; } = [];
public static string ChapterInGame { get; set; } = "";
public static string AreaInGame { get; set; } = "";
public static string NovelName { get; set; } = "";
public static string SceneName { get; set; } = "";
public static string NovelNodeKey { get; set; } = "";
public static CharacterModule CharacterModule { get; set; } = new();
public static SkillModule SkillModule { get; set; } = new();
public static ItemModule ItemModule { get; set; } = new();
public static void InitGame()
{
if (Initialized)
{
return;
}
Initialized = true;
FunGameConstant.InitFunGame();
CharacterModule.Load();
SkillModule.Load();
ItemModule.Load();
General.GameplayEquilibriumConstant.MaxLevel = 100;
Character character = Factory.GetCharacter();
character.Id = 1;
character.Name = "雷恩";
character.FirstName = "";
character.NickName = "Rayne";
character.PrimaryAttribute = PrimaryAttribute.AGI;
character.InitialATK = 21;
character.InitialHP = 120;
character.InitialMP = 20;
character.InitialSTR = 7;
character.STRGrowth = 1;
character.InitialAGI = 21;
character.AGIGrowth = 1.8;
character.InitialINT = 2;
character.INTGrowth = 0.2;
character.InitialSPD = 300;
character.InitialHR = 4;
character.InitialMR = 2;
character.Level = 100;
character.Recovery();
Characters.Add(character.Id, character);
character = Factory.GetCharacter();
character.Id = 2;
character.Name = "艾琳";
character.FirstName = "";
character.NickName = "Irene";
character.PrimaryAttribute = PrimaryAttribute.INT;
character.InitialATK = 17;
character.InitialHP = 110;
character.InitialMP = 80;
character.InitialSTR = 6;
character.STRGrowth = 0.5;
character.InitialAGI = 4;
character.AGIGrowth = 0.5;
character.InitialINT = 20;
character.INTGrowth = 2;
character.InitialSPD = 270;
character.InitialHR = 4;
character.InitialMR = 2;
character.Level = 100;
character.Recovery();
Characters.Add(character.Id, character);
Region region = new()
{
Id = 1,
Guid = Guid.NewGuid(),
Name = "霜语城废墟",
Category = "主线地图",
Description = "第一章",
Difficulty = RarityType.OneStar,
Weathers = { ["晴"] = 15, ["阴"] = 10, ["雨"] = 5 }
};
region.ChangeRandomWeather();
Regions.Add(region.Id, region);
region = new()
{
Id = 2,
Guid = Guid.NewGuid(),
Name = "幽暗密林",
Category = "主线地图",
Description = "第一章",
Difficulty = RarityType.OneStar,
Weathers = { ["晴"] = 15, ["阴"] = 10, ["雨"] = 5 }
};
region.ChangeRandomWeather();
Regions.Add(region.Id, region);
region = new()
{
Id = 3,
Guid = Guid.NewGuid(),
Name = "翡翠回廊",
Category = "主线地图",
Description = "第二章",
Difficulty = RarityType.OneStar,
Weathers = { ["晴"] = 15, ["阴"] = 10, ["雨"] = 5 }
};
region.ChangeRandomWeather();
Regions.Add(region.Id, region);
region = new()
{
Id = 4,
Guid = Guid.NewGuid(),
Name = "炼狱裂谷",
Category = "主线地图",
Description = "第三章",
Difficulty = RarityType.OneStar,
Weathers = { ["晴"] = 15, ["阴"] = 10, ["雨"] = 5 }
};
region.ChangeRandomWeather();
Regions.Add(region.Id, region);
region = new()
{
Id = 5,
Guid = Guid.NewGuid(),
Name = "虚空回廊",
Category = "主线地图",
Description = "第四章",
Difficulty = RarityType.OneStar,
Weathers = { ["晴"] = 15, ["阴"] = 10, ["雨"] = 5 }
};
region.ChangeRandomWeather();
Regions.Add(region.Id, region);
region = new()
{
Id = 6,
Guid = Guid.NewGuid(),
Name = "地脉祭坛",
Category = "主线地图",
Description = "第五章",
Difficulty = RarityType.OneStar,
Weathers = { ["晴"] = 15, ["阴"] = 10, ["雨"] = 5 }
};
region.ChangeRandomWeather();
Regions.Add(region.Id, region);
region = new()
{
Id = 7,
Guid = Guid.NewGuid(),
Name = "天空圣殿",
Category = "主线地图",
Description = "终章",
Difficulty = RarityType.OneStar,
Weathers = { ["晴"] = 15, ["阴"] = 10, ["雨"] = 5 }
};
region.ChangeRandomWeather();
Regions.Add(region.Id, region);
foreach (Character c in Characters.Values)
{
CharacterInRegion[c] = Regions[1];
}
}
public static void AutoSave(int index)
{
PluginConfig config = new("Saved", $"auto{index}")
{
{ "SavedTime", $"保存时间:{DateTime.Now.ToString(General.GeneralDateTimeFormatChinese)}" },
{ "ChapterInGame", ChapterInGame },
{ "AreaInGame", AreaInGame },
{ "NovelName", NovelName },
{ "SceneName", SceneName },
{ "NovelNodeKey", NovelNodeKey },
{ "Characters", new List<Character>(Characters.Values) }
};
config.SaveConfig();
}
}
}