protected void onTouchDown(PointerEventData eventData) { UIObject tObj = null; long tKey = 0L; int tIndex = -1; _clickObjectMap.forEach((obj, index) => { if (checkTouchObject(obj, eventData)) { long t = _clickObjectIndexMap.get(obj); if (tObj == null || t > tKey) { tObj = obj; tKey = t; tIndex = index; } } }); if (tObj != null) { setObjectTouchDown(tObj, eventData, tIndex); } }
/// <summary> /// 根据格子对象获取格子索引 /// </summary> public int getGridIndex(UIObject grid) { if (_gridIndexMap.contains(grid)) { return(_gridIndexMap.get(grid)); } return(-1); }
private static TypeInfo getTypeInfo(string name) { TypeInfo typeInfo = _typeDic.get(name); if (typeInfo != null) { typeInfo.init(); } return(typeInfo); }
private static StringBuilderPool getPoolByThread(Thread thread) { StringBuilderPool pool = _dic.get(thread); if (pool == null) { _dic.put(thread, pool = new StringBuilderPool()); } return(pool); }
public void test1() { _dic.clear(); for (int i = 1; i < _len; ++i) { _dic.put(i, _arr[i]); } for (int i = 1; i < _len; ++i) { _re = _dic.get(i).level; } }
/// <summary> /// 放回一个 /// </summary> public virtual void back(T obj) { if (obj == null) { Ctrl.throwError("对象池添加空对象"); return; } if (!_enable || _queue.size() >= _maxSize) { if (_releaseFunc != null) { _releaseFunc(obj); } return; } if (_needClear) { if (obj is IPoolObject) { ((IPoolObject)obj).clear(); } } if (ShineSetting.openCheck) { if (_checkSet.contains(obj)) { Ctrl.print("上次调用", _callStackDic.get(obj)); Ctrl.throwError("对象池重复添加!", obj); return; } _checkSet.add(obj); string stackTrace = Ctrl.getStackTrace(); stackTrace = stackTrace.Replace("\n", " "); _callStackDic.put(obj, stackTrace); } _queue.add(obj); }
/** 添加方法 */ public FMethod addMethod(string type, string mark) { bool isOverride = false; string name = type; string rType = type; if (mark != "" && type.StartsWith(mark)) { string last = type.Substring(1); string first = last[0].ToString(); //首字母是大写的 if (first == first.ToUpper()) { name = last; FMethod pMethod = parentMethodDic.get(last); if (pMethod != null) { rType = pMethod.returnType; isOverride = true; } } } FMethod method = new FMethod(); method.name = name; method.returnType = rType; method.isOverride = isOverride; method.useClsName = type; toAddMethod(method); return(method); }
public DirtWordNode this[char c] { get { return(children.get(c)); } }
private static void doOneGenerate(string xmlPath, string controlClsPath, string adapterOutPath, int projectType) { clearGenerate(); _isShine = projectType == 0; //TODO:根据类型取父factory XML xml = FileUtils.readFileForXML(xmlPath); int aLen = "Assets/".Length; //处理屏蔽 foreach (XML xl in xml.getChildrenByName("ignoreMethod")) { string[] methods = xl.getProperty("methods").Split(','); SSet <string> dd = new SSet <string>(); dd.addAll(methods); _clsIgnoreMethods.put(xl.getProperty("cls"), dd); } foreach (XML xl in xml.getChildrenByName("allowMethod")) { string[] methods = xl.getProperty("methods").Split(','); SSet <string> dd = new SSet <string>(); dd.addAll(methods); _clsAllowMethods.put(xl.getProperty("cls"), dd); } //先处理包路径 foreach (XML xl in xml.getChildrenByName("root")) { SList <string> ignoreList = new SList <string>(); foreach (XML pXml in xl.getChildrenByName("ignorePath")) { ignoreList.add(pXml.getProperty("path")); } StringIntMap hotfixPathDic = new StringIntMap(); foreach (XML pXml in xl.getChildrenByName("hotfixPath")) { hotfixPathDic.put(pXml.getProperty("path"), pXml.getProperty("needFactory").Equals("true") ? 1 : 0); } string rootPath = "Assets/" + xl.getProperty("path"); string[] deepFileList = FileUtils.getDeepFileList(rootPath, "cs"); foreach (string s in deepFileList) { //编辑器类的跳过 if (s.Contains("/Editor/")) { continue; } string tailPath = s.Substring(rootPath.Length + 1); bool failed = false; //排除组 foreach (string ig in ignoreList) { if (tailPath.StartsWith(ig)) { failed = true; break; } } if (failed) { continue; } string fQName = FileUtils.getFileFrontName(s.Substring(aLen)); String fName = FileUtils.getFileName(fQName); _clsNameToPathDic.put(fName, fQName); string[] keys = hotfixPathDic.getKeys(); int[] values = hotfixPathDic.getValues(); string k; int v; for (int i = keys.Length - 1; i >= 0; --i) { if ((k = keys[i]) != null) { v = values[i]; //需要 if (tailPath.StartsWith(k)) { _adapterClsDic.add(fName); if (v == 1) { _factoryClsDic.add(fName); } break; } } } } } //再处理命名空间 foreach (XML xl in xml.getChildrenByName("namespace")) { _allowNameSpace.add(xl.getProperty("name")); } //项目程序集 Assembly assembly = typeof(ShineSetup).Assembly; Type[] types = assembly.GetTypes(); foreach (Type vType in types) { string fullName = vType.FullName; //内部类不统计 if (!fullName.Contains("+")) { //命名空间允许 if (string.IsNullOrEmpty(vType.Namespace) || _allowNameSpace.contains(vType.Namespace)) { string vName = vType.Name; int index = vName.IndexOf('`'); //去掉泛型标记 if (index > 0) { vName = vName.Substring(0, index); } TypeInfo typeInfo = new TypeInfo(); typeInfo.clsName = vName; typeInfo.clsType = vType; if (_typeDic.contains(vName)) { // Ctrl.print("类名重复",vName); continue; } _typeDic.put(vName, typeInfo); //类路径 typeInfo.clsPath = _clsNameToPathDic.get(vName); } } } string clsStr = FileUtils.readFileForUTF(controlClsPath); string factoryClsPath = getFactoryClsPath(projectType); ClsAnalysis.FactoryClassInfo factoryClass = ClsAnalysis.readFactory(factoryClsPath); string projectMark = getProjectMark(projectType); string factoryClsName = FileUtils.getFileFrontName(FileUtils.getFileName(factoryClsPath)); //遍历父 for (int i = projectType - 1; i >= Project_Common; i--) { ClsAnalysis.FactoryClassInfo parentFactoryCls = ClsAnalysis.readFactory(getFactoryClsPath(i)); factoryClass.addParent(parentFactoryCls); } StringBuilder sb = new StringBuilder(); endClsLine(sb); if (!_isShine) { sb.Append("base.initOtherAdapters(appdomain);"); endClsLine(sb); } XML reXMl = new XML(); reXMl.name = "info"; //工厂最后执行 TypeInfo factoryTypeInfo = getTypeInfo(factoryClsName); _clsNameToPathDic.remove(factoryClsName); foreach (string k in _clsNameToPathDic.getSortedMapKeys()) { TypeInfo typeInfo = getTypeInfo(k); if (typeInfo == null) { Ctrl.throwError("不该找不到类型", k); } if (typeInfo.hasHotfixMark || !typeInfo.isEmpty()) { //需要工厂,并且不是虚类 if (!typeInfo.iCls.isAbstract && (typeInfo.needFactory || _factoryClsDic.contains(k))) { ClsAnalysis.FMethod method = factoryClass.addMethod(k, projectMark); //补方法 factoryTypeInfo.iCls.addMethod("create" + method.name, method.returnType, VisitType.Public, true); } //需要适配器 if (typeInfo.hasHotfixMark || _adapterClsDic.contains(k)) { doOneClass(typeInfo.iCls, adapterOutPath, _isShine, sb); } // reXMl.appendChild(typeInfo.writeXML()); } } doOneClass(factoryTypeInfo.iCls, adapterOutPath, _isShine, sb); //去掉最后一个tab sb.Remove(sb.Length - 1, 1); clsStr = replaceMethod(clsStr, "protected " + (_isShine ? "virtual" : "override") + " void initOtherAdapters(AppDomain appdomain)", sb.ToString()); factoryClass.writeToPath(factoryClsPath); FileUtils.writeFileForUTF(controlClsPath, clsStr); // FileUtils.writeFileForXML("/Users/sunming/E/temp3/aa.xml",reXMl); }