Browse Source

Planeten aus der Datenbank

bolt_update
laurids 4 years ago
parent
commit
c2a60cc332
5 changed files with 1544 additions and 301 deletions
  1. +2
    -1
      Assets/GWConquest/Prefabs/Factory.prefab
  2. +5
    -13
      Assets/GWConquest/Prefabs/Planet.prefab
  3. +1437
    -285
      Assets/GWConquest/Scenes/GalaxyMap.unity
  4. +98
    -0
      Assets/GWConquest/Scripts/Planet.cs
  5. +2
    -2
      Assets/GWConquest/Scripts/PlanetRegistry.cs

+ 2
- 1
Assets/GWConquest/Prefabs/Factory.prefab View File

@ -79,7 +79,8 @@ MonoBehaviour:
DefaultSprite: {fileID: 21300000, guid: 3b81d9ff9816c8240b02293797c69234, type: 3}
DistrictName: Primus
Description:
IsCityDistrict: 1
IsCityDistrict: 0
DistrictType: 0
--- !u!114 &3732992427129260454
MonoBehaviour:
m_ObjectHideFlags: 0


+ 5
- 13
Assets/GWConquest/Prefabs/Planet.prefab View File

@ -100,7 +100,6 @@ MonoBehaviour:
- {fileID: 4678135251998877762}
- {fileID: 4678135252239284612}
groundZones:
- {fileID: 8445641380723648303}
- {fileID: 4678135251355824059}
showPlanetName: 1
planetName:
@ -286,6 +285,11 @@ PrefabInstance:
propertyPath: m_Name
value: GroundMain
objectReference: {fileID: 0}
- target: {fileID: 1355812926097278600, guid: fc3eae9e9964d5446a5c38fbf9a203bb,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6365986322515139274, guid: fc3eae9e9964d5446a5c38fbf9a203bb,
type: 3}
propertyPath: m_LocalPosition.x
@ -364,15 +368,3 @@ Transform:
type: 3}
m_PrefabInstance: {fileID: 1690981885650063855}
m_PrefabAsset: {fileID: 0}
--- !u!114 &8445641380723648303 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7080609719325669056, guid: fc3eae9e9964d5446a5c38fbf9a203bb,
type: 3}
m_PrefabInstance: {fileID: 1690981885650063855}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59300c3dd14d29d4895f5f18e85d7eb3, type: 3}
m_Name:
m_EditorClassIdentifier:

+ 1437
- 285
Assets/GWConquest/Scenes/GalaxyMap.unity
File diff suppressed because it is too large
View File


+ 98
- 0
Assets/GWConquest/Scripts/Planet.cs View File

@ -173,6 +173,104 @@ namespace GWConquest
}
UnityEditor.PrefabUtility.RecordPrefabInstancePropertyModifications(this);
}
[ContextMenu("Setup Zones From Database")]
public void SetupZonesFromDatabase()
{
UnityEditor.Undo.RecordObject(this, "Setting up zones");
var facotryPrefab = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>("Assets/GWConquest/Prefabs/Factory.prefab");
var data = PlanetData;
foreach(Zone z in groundZones)
{
if(!z.attackZone)
{
DestroyImmediate(z.gameObject);
UnityEditor.ArrayUtility.Remove(ref groundZones, z);
}
}
foreach(DistrictConnection conn in GetComponentsInChildren<DistrictConnection>())
{
DestroyImmediate(conn.gameObject);
}
District lastDistrict = null;
for(int i = 0; i < data.DistrictData.Length; i++)
{
var districtData = data.DistrictData[i];
Zone zone;
if (districtData.DistrictType == DistrictType.Civil || districtData.DistrictType == DistrictType.Factory)
{
var go = UnityEditor.PrefabUtility.InstantiatePrefab(facotryPrefab) as GameObject;
zone = go.GetComponent<Zone>();
go.name = districtData.Name;
go.transform.SetParent(transform);
go.transform.localPosition = Vector3.zero;
go.transform.localRotation = Quaternion.identity;
go.transform.localScale = Vector3.one;
}
else
{
zone = CreateZone(districtData.Name);
zone.gameObject.AddComponent<District>();
}
var coll = GetComponentInChildren<SphereCollider>();
float radius = coll.radius * coll.transform.lossyScale.x;
Vector3 basePoint = (planetCameraTransform.position - transform.position).normalized;
Vector3 randomPoint = UnityEngine.Random.onUnitSphere;
Vector3 dPoint = Vector3.RotateTowards(basePoint, randomPoint, UnityEngine.Random.Range(0f, Mathf.PI / 8f), 0f);
zone.transform.position = transform.position + radius * dPoint;
District d = zone.GetComponent<District>();
d.DistrictType = districtData.DistrictType;
d.DistrictName = districtData.Name;
if (districtData.DistrictType == DistrictType.Civil || districtData.DistrictType == DistrictType.Factory)
{
var factory = zone.GetComponent<DistrictFactory>();
factory.FactoryType = districtData.DistrictType == DistrictType.Factory ? FactoryType.Infantry : FactoryType.City;
}
if(i >= 1)
{
GameObject connGO = gameObject.CreateEmpty("Connection");
var conn = connGO.AddComponent<DistrictConnection>();
conn.district1 = lastDistrict;
conn.district2 = d;
}
lastDistrict = d;
Util.ArrayAppend(ref groundZones, zone);
}
UnityEditor.PrefabUtility.RecordPrefabInstancePropertyModifications(this);
}
[ContextMenu("Setup Zones From Database - All")]
public void SetupAllZones()
{
foreach(Planet p in AllPlanets)
{
Debug.LogFormat("Setting up zones on {0}", p.gameObject.name);
try
{
p.SetupZonesFromDatabase();
}
catch(Exception ex)
{
Debug.LogException(ex);
}
}
}
#endif
}
}

+ 2
- 2
Assets/GWConquest/Scripts/PlanetRegistry.cs View File

@ -23,8 +23,8 @@ namespace GWConquest
public class PlanetRegistry
{
public static string[] CivilNames = new string[] { "Prime", "Secundi", "Tri", "For" };
public static string[] DistrictNames = new string[] { "I", "II", "III", "IV" };
private static string[] CivilNames = new string[] { "Prime", "Secundi", "Tri", "For" };
private static string[] DistrictNames = new string[] { "I", "II", "III", "IV" };
private static Dictionary<string, PlanetData> planetDataMap;


Loading…
Cancel
Save