Pārlūkot izejas kodu

Search scripts in cdb for refs

Clement Espeute 2 gadi atpakaļ
vecāks
revīzija
cc9ef3ff29
1 mainītis faili ar 71 papildinājumiem un 1 dzēšanām
  1. 71 1
      hide/comp/cdb/Editor.hx

+ 71 - 1
hide/comp/cdb/Editor.hx

@@ -951,8 +951,9 @@ class Editor extends Component {
 				}
 			}
 			var paths : Array<String> = this.config.get("cdb.prefabsSearchPaths");
+			var scriptStr = new EReg("\\b"+sheet.name.charAt(0).toUpperCase() + sheet.name.substr(1) + "\\." + id + "\\b","");
+
 			if( paths != null ) {
-				var scriptStr = new EReg("\\b"+sheet.name.charAt(0).toUpperCase() + sheet.name.substr(1) + "\\." + id + "\\b","");
 				function lookupPrefabRec(path) {
 					for( f in sys.FileSystem.readDirectory(path) ) {
 						var fpath = path+"/"+f;
@@ -977,6 +978,75 @@ class Editor extends Component {
 						lookupPrefabRec(path);
 				}
 			}
+
+			{
+
+				var results = [];
+				for( s in sheet.base.sheets ) {
+					for( c in s.columns )
+						switch( c.type ) {
+						case TString:
+							if (c.kind == cdb.Data.ColumnKind.Script) {
+								var sheets = [];
+								var p = { s : s, c : c.name, id : null };
+								while( true ) {
+									for( c in p.s.columns )
+										switch( c.type ) {
+										case TId: p.id = c.name; break;
+										default:
+										}
+									sheets.unshift(p);
+									var p2 = p.s.getParent();
+									if( p2 == null ) break;
+									p = { s : p2.s, c : p2.c, id : null };
+								}
+								var objs = s.getObjects();
+								var i = 0;
+								for( sheetline => o in objs ) {
+									if (i == 18) {
+										trace("break");
+									}
+									i += 1;
+									var obj = o.path[o.path.length - 1];
+									var content = Reflect.field(obj, c.name);
+									if( !scriptStr.match(content) ) continue;
+									for( line => str in content.split("\n") ) {
+										if( scriptStr.match(str) )
+										{
+											var idname = sheets[sheets.length-1].id;
+											var refname = Std.string(sheetline);
+											if (idname != null) {
+												refname = Reflect.field(obj, idname);
+											}
+											message.push([for(s in sheets) s.s.name].join("/")+"." + refname + "." + c.name + ":"+(line+1));
+										}
+									}
+								}
+							}
+
+						/*case TRef(sname) if( sname == sheet.sheet.name ):
+							var sheets = [];
+							var p = { s : s, c : c.name, id : null };
+							while( true ) {
+								for( c in p.s.columns )
+									switch( c.type ) {
+									case TId: p.id = c.name; break;
+									default:
+									}
+								sheets.unshift(p);
+								var p2 = p.s.getParent();
+								if( p2 == null ) break;
+								p = { s : p2.s, c : p2.c, id : null };
+							}
+							for( o in s.getObjects() ) {
+								var obj = o.path[o.path.length - 1];
+								if( Reflect.field(obj, c.name) == id )
+									results.push({ s : sheets, o : o });
+							}*/
+						default:
+						}
+				}
+			}
 		}
 		return message;
 	}