public SrpgPropertyImpl AddProperty(string name) { SrpgPropertyImpl prop = new SrpgPropertyImpl(name); _properties.Add(prop); return(prop); }
public void CopyValuesTo(SrpgPropertyImpl other) { other.b = _b; other.n = _n; other.f = _f; other.s = _s; }
public void CopyProperties(List <SrpgPropertyImpl> srcProperties) { _properties.Clear(); foreach (SrpgPropertyImpl srcProp in srcProperties) { SrpgPropertyImpl newProp = new SrpgPropertyImpl(srcProp.name); srcProp.CopyValuesTo(newProp); _properties.Add(newProp); } }
public override bool IsTileWalkable(SrpgTile tile) { SrpgPropertyImpl prop = null; if (tile.TryGetProperty("Walkable", out prop)) { if (!prop.b) { return(false); } } return(true); }
//public virtual bool IsTileWalkable() //{ //} public bool TryGetProperty(string name, out SrpgPropertyImpl outProp) { outProp = null; foreach (SrpgPropertyImpl prop in _properties) { if (prop.name == name) { outProp = prop; return(true); } } return(false); }
public override void OnInspectorGUI() { GUI.enabled = false; _target.x = EditorGUILayout.IntField("X", _target.x); _target.y = EditorGUILayout.IntField("Y", _target.y); GUI.enabled = true; EditorGUILayout.Space(); SrpgLayer parentLayer = _target.transform.parent.GetComponent <SrpgLayer>(); if (parentLayer == null || parentLayer.propertySchemes.Count == 0) { return; } Undo.RecordObject(_target, _target.name); EditorGUILayout.BeginVertical("box"); { EditorGUILayout.LabelField("Layer Properties"); GUILayoutOption valueWidth = GUILayout.Width(100); foreach (SrpgPropertyScheme scheme in parentLayer.propertySchemes) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField(scheme.name); SrpgPropertyImpl prop = null; if (!_target.TryGetProperty(scheme.name, out prop)) { if (GUILayout.Button("Use", GUILayout.Width(100), GUILayout.Height(14))) { prop = _target.AddProperty(scheme.name); if (scheme.type == SrpgPropertyScheme.PropType.Bool) { prop.b = false; } else if (scheme.type == SrpgPropertyScheme.PropType.Int) { prop.n = 0; } else if (scheme.type == SrpgPropertyScheme.PropType.Float) { prop.f = 0f; } else if (scheme.type == SrpgPropertyScheme.PropType.String) { prop.s = ""; } else { Debug.LogError("Wrong type property!"); } } } else { if (scheme.type == SrpgPropertyScheme.PropType.Bool) { prop.b = EditorGUILayout.Toggle(prop.b, valueWidth); } else if (scheme.type == SrpgPropertyScheme.PropType.Int) { prop.n = EditorGUILayout.IntField(prop.n, valueWidth); } else if (scheme.type == SrpgPropertyScheme.PropType.Float) { prop.f = EditorGUILayout.FloatField(prop.f, valueWidth); } else if (scheme.type == SrpgPropertyScheme.PropType.String) { prop.s = EditorGUILayout.TextField(prop.s, valueWidth); } else { Debug.LogError("Wrong type property!"); } } } EditorGUILayout.EndHorizontal(); } if (GUILayout.Button("Apply to same tiles")) { SrpgTile[] layerTiles = parentLayer.GetComponentsInChildren <SrpgTile>(); foreach (SrpgTile tile in layerTiles) { if (tile == _target) { continue; } if (tile.IsSameTile(_target)) { tile.CopyProperties(_target.properties); } } } } EditorGUILayout.EndVertical(); }