Commit eeacc9b8 authored by 潘栩锋's avatar 潘栩锋 🚴
parents 9eb6d6b4 cba15236
......@@ -500,5 +500,109 @@ namespace Misc
}
return data_new;
}
/// <summary>
/// 对环形数据 分区移位
/// </summary>
/// <param name="data">原始数据</param>
/// <param name="map">key=old_idx, value=new_idx</param>
/// <returns></returns>
public static double[] Map(IEnumerable<double> data, Dictionary<int, int> map)
{
if (map == null || map.Count() == 0)
return data.ToArray();
double[] data_new = new double[data.Count()];
if (map.Count() == 1)
{
//只是平移而已
int old_idx0 = map.Keys.ElementAt(0);
int new_idx0 = map[old_idx0];
for (int i = 0; i < data.Count(); i++)
{
int new_idx = i;
int old_idx = (old_idx0 - new_idx0) + new_idx;
if (old_idx >= data.Count())
old_idx -= data.Count();
else if (old_idx < 0)
old_idx += data.Count();
data_new[new_idx] = data.ElementAt(old_idx);
}
return data_new;
}
for (int i = 0; i < map.Count(); i++)
{
int old_idx0 = map.Keys.ElementAt(i);
int new_idx0 = map[old_idx0];
int i_next = i + 1;
if (i_next >= map.Count())
i_next = 0;
int old_idx1 = map.Keys.ElementAt(i_next);
int new_idx1 = map[old_idx1];
int cnt = new_idx1 - new_idx0;
if (cnt < 0)
cnt += data.Count();
int cnt_old = old_idx1 - old_idx0;
if (cnt_old < 0)
cnt_old += data.Count();
double w = 1.0 * cnt_old / cnt;
for (int j = 0; j < cnt; j++)
{
int new_idx = j + new_idx0;
if (new_idx >= data.Count())
new_idx -= data.Count();
double old_idx = j * w + old_idx0;
int o1 = (int)Math.Ceiling(old_idx);
int o0 = (int)old_idx;
if (o0 == o1)
{
int old_idx_0 = o0;
if (old_idx_0 >= data.Count())
old_idx_0 -= data.Count();
data_new[new_idx] = data.ElementAt(old_idx_0);
}
else
{
int old_idx_0 = o0;
if (old_idx_0 >= data.Count())
old_idx_0 -= data.Count();
int old_idx_1 = o1;
if (old_idx_1 >= data.Count())
old_idx_1 -= data.Count();
if (double.IsNaN(data.ElementAt(old_idx_1)) && double.IsNaN(data.ElementAt(old_idx_0)))
{
data_new[new_idx] = (data.ElementAt(old_idx_1) * (old_idx - o0) + data.ElementAt(old_idx_0) * (o1 - old_idx));
}
else if (double.IsNaN(data.ElementAt(old_idx_0)))
{
data_new[new_idx] = data.ElementAt(old_idx_0);
}
else if (double.IsNaN(data.ElementAt(old_idx_1)))
{
data_new[new_idx] = data.ElementAt(old_idx_1);
}
else
{
data_new[new_idx] = double.NaN;
}
}
}
}
return data_new;
}
}
}
......@@ -43,7 +43,7 @@ namespace WpfApp1
{
string xmindPath = openFileDialog.FileName;
string outDirPath = System.IO.Path.GetDirectoryName(xmindPath);
if (Xmind2UnityConfigCore.TopicExt.ToUnity(openFileDialog.FileName, null) == 0) {
if (Xmind2UnityConfigCore.XMindTypeExt.ToUnity(openFileDialog.FileName, null, true) == 0) {
MessageBox.Show($@"完成 输出到{outDirPath}\unity");
}
}
......
......@@ -5,7 +5,7 @@
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{840673C1-3705-42EC-A3EB-6A7F803590CF}</ProjectGuid>
<OutputType>WinExe</OutputType>
<OutputType>Exe</OutputType>
<RootNamespace>Xmind2UnityConfigUI</RootNamespace>
<AssemblyName>Xmind2UnityConfigUI</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
......
......@@ -17,11 +17,15 @@ namespace Xmind2UnityConfig
}
else if (args.Length == 1)
{
return Xmind2UnityConfigCore.TopicExt.ToUnity(args[0], null);
return Xmind2UnityConfigCore.XMindTypeExt.ToUnity(args[0], null, true);
}
else
else if (args.Length == 2)
{
return Xmind2UnityConfigCore.TopicExt.ToUnity(args[0], args[1]);
return Xmind2UnityConfigCore.XMindTypeExt.ToUnity(args[0], args[1], true);
}
else// if (args.Length == 2)
{
return Xmind2UnityConfigCore.XMindTypeExt.ToUnity(args[0], args[1], bool.Parse(args[2]));
}
}
}
......
......@@ -39,6 +39,12 @@ namespace Xmind2UnityConfigCore
string filePath = System.IO.Path.Combine(tempPath, "content.json");
string json = File.ReadAllText(filePath);
//var xmind = JsonConvert.DeserializeObject<XMindRootTopic[]>(json);
//转义title
//string unescape = System.Text.RegularExpressions.Regex.Unescape(str);
JArray jArray = JsonConvert.DeserializeObject(json) as JArray;
var jobject_topic = jArray.First() as JObject;
......@@ -82,6 +88,7 @@ namespace Xmind2UnityConfigCore
return topic;
}
static void ToUnity(Topic rootTopic, string path)
{
path = System.IO.Path.Combine(path, "unity");
......@@ -97,6 +104,8 @@ namespace Xmind2UnityConfigCore
File.WriteAllText(System.IO.Path.Combine(path, "relationship.json"), json);
}
static RelationShip ToRelationShip(Topic topic, string path)
{
RelationShip relationShip = new RelationShip();
......@@ -291,4 +300,6 @@ namespace Xmind2UnityConfigCore
xdoc.Save(filepath);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Xmind2UnityConfigCore
{
public class XMindRootTopic
{
public XMindTopic rootTopic;
public override string ToString()
{
return rootTopic.ToString();
}
}
public class XMindTopic
{
public string title;
public XMindChildren children;
public override string ToString()
{
return title;
}
}
public class XMindChildren
{
public List<XMindTopic> attached;
}
}
This diff is collapsed.
......@@ -46,6 +46,8 @@
<Compile Include="Topic.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TopicExt.cs" />
<Compile Include="XMindType.cs" />
<Compile Include="XMindTypeExt.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment