public object DOMParse(XmlElement element, params object[] parameters) { var mapScene = new MapScene(element.Attributes["id"].Value); var chapter = parameters[0] as Chapter; mapScene.CameraType = ExParsers.ParseEnum <CameraType>(ExString.Default(element.GetAttribute("cameraType"), CameraType.Aerial2D.ToString())); mapScene.RenderStyle = ExParsers.ParseEnum <RenderStyle>(ExString.Default(element.GetAttribute("renderStyle"), RenderStyle.Tile.ToString())); mapScene.TileMetaIdentifier = ExString.Default(element.GetAttribute("tileMetaIdentifier"), "OSMTile"); mapScene.UsesGameplayArea = ExString.EqualsDefault(element.GetAttribute("usesGameplayArea"), "yes", false); mapScene.GameplayArea = ExParsers.ParseDefault(element.GetAttribute("gameplayArea"), new RectD(Vector2d.zero, Vector2d.zero)); mapScene.LatLon = ExParsers.ParseDefault(element.GetAttribute("center"), Vector2d.zero); mapScene.Zoom = ExParsers.ParseDefault(element.GetAttribute("zoom"), 19); bool initialScene = ExString.EqualsDefault(element.GetAttribute("start"), "yes", false); if (initialScene) { chapter.setTargetId(mapScene.getId()); } int layer = 0; foreach (var e in element.SelectNodes("map-element")) { var mapElementNode = e as XmlElement; MapElement mapElement = null; XmlElement extElemNode; var targetId = mapElementNode.GetAttribute("targetId"); if ((extElemNode = (XmlElement)mapElementNode.SelectSingleNode("ext-elem-ref")) != null) { var extElem = new ExtElemReference(targetId); mapElement = extElem; extElem.TransformManagerDescriptor = GetDescriptor(ExString.Default(extElemNode.GetAttribute("transformManager"), typeof(GeopositionedDescriptor).FullName)); foreach (var param in extElem.TransformManagerDescriptor.ParameterDescription) { var paramNode = extElemNode.SelectSingleNode("param[@name=\"" + param.Key + "\"]"); if (paramNode != null) { extElem.TransformManagerParameters.Add(param.Key, parseParam(param.Value.Type, paramNode.InnerText)); } } } else { mapElement = new GeoReference(targetId); } mapElement.Conditions = DOMParserUtility.DOMParse <Conditions>(mapElementNode.SelectSingleNode("condition") as XmlElement, parameters); mapElement.Layer = ExParsers.ParseDefault(mapElementNode.GetAttribute("layer"), layer); mapElement.Scale = ExParsers.ParseDefault(mapElementNode.GetAttribute("scale"), 1f); mapElement.Orientation = (Orientation)ExParsers.ParseDefault(mapElementNode.GetAttribute("orientation"), 2); layer = Mathf.Max(mapElement.Layer, layer) + 1; mapScene.Elements.Add(mapElement); } return(mapScene); }
public TransformManagerDataControl(ExtElementRefDataControl extElemReferencedataControl) { this.extElemReferencedataControl = extElemReferencedataControl; this.extElemReference = extElemReferencedataControl.getContent() as ExtElemReference; registerChanges = false; this.positionManager = GuiMapPositionManagerFactory.Instance.CreateInstance(extElemReference.TransformManagerDescriptor, this); registerChanges = true; extElemReferencedataControl.Subscribe(this); }
private Element FindElement(ExtElemReference reference) { if (!cache.ContainsKey(reference)) { var elem = Game.Instance.GameState.FindElement <Element>(reference.getTargetId()); cache.Add(reference, elem); } return(cache.ContainsKey(reference) ? cache[reference] : null); }
public object DOMParse(XmlElement element, params object[] parameters) { var mapScene = new MapScene(element.Attributes["id"].Value); var chapter = parameters[0] as Chapter; mapScene.CameraType = element.Attributes["cameraType"].Value.ToEnum <CameraType>(); var tmpArgVal = element.GetAttribute("start"); if (!string.IsNullOrEmpty(tmpArgVal)) { if (tmpArgVal.Equals("yes")) { chapter.setTargetId(mapScene.getId()); } } tmpArgVal = element.GetAttribute("center"); if (!string.IsNullOrEmpty(tmpArgVal)) { mapScene.LatLon = (Vector2d)parseParam(typeof(Vector2d), tmpArgVal); } foreach (var e in element.SelectNodes("map-element")) { var mapElementNode = e as XmlElement; MapElement mapElement = null; XmlElement extElemNode; if ((extElemNode = (XmlElement)mapElementNode.SelectSingleNode("ext-elem-ref")) != null) { var extElem = new ExtElemReference(mapElementNode.Attributes["targetId"].Value); mapElement = extElem; extElem.TransformManagerDescriptor = GetDescriptor(extElemNode.Attributes["transformManager"].Value); foreach (var param in extElem.TransformManagerDescriptor.ParameterDescription) { var paramNode = extElemNode.SelectSingleNode("param[@name=\"" + param.Key + "\"]"); if (paramNode != null) { extElem.TransformManagerParameters.Add(param.Key, parseParam(param.Value.Type, paramNode.InnerText)); } } } else { mapElement = new GeoReference(mapElementNode.Attributes["targetId"].Value); } mapElement.Conditions = (Conditions)DOMParserUtility.DOMParse(mapElementNode.SelectSingleNode("condition") as XmlElement, parameters); mapElement.Layer = int.Parse(mapElementNode.Attributes["layer"].Value); mapScene.Elements.Add(mapElement); } return(mapScene); }
private void DrawMapElement(Rect rect, int index, bool active, bool focused) { MapElement mapElement = (MapElement)mapElementReorderableList.list[index]; EditorGUI.LabelField(infoRect.GUIAdapt(rect), mapElement.getTargetId()); if (mapElement is ExtElemReference) { var extReference = mapElement as ExtElemReference; // Trasnform manager descriptor selection var avaliableDescriptors = TransformManagerDescriptorFactory.Instance.AvaliableTransformManagers.ToList(); var selected = avaliableDescriptors.FindIndex(d => d.Key == extReference.TransformManagerDescriptor.GetType()); var newSelected = EditorGUI.Popup(typePopupRect.GUIAdapt(rect), selected, avaliableDescriptors.ConvertAll(d => d.Value).ToArray()); if (newSelected != selected) { // In case of change, reinstance a new one extReference.TransformManagerDescriptor = TransformManagerDescriptorFactory.Instance.CreateDescriptor(avaliableDescriptors[newSelected].Key); UpdateMapResources(); } using (new EditorGUI.DisabledScope()) { if (GUI.Button(typeConfigRect.GUIAdapt(rect), "*")) { var o = DrawerParametersMenu.ShowAtPosition(typeConfigRect.GUIAdapt(rect)); DrawerParametersMenu.s_DrawerParametersMenu.ExtElemReference = extReference; if (o) { GUIUtility.ExitGUI(); } } } if (GUI.Button(centerButtonRect.GUIAdapt(rect), "Move")) { movingReference = extReference; } } if (GUI.Button(editButtonRect.GUIAdapt(rect), "Conditions")) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(mapElement.Conditions); } }
private void DrawMapElement(Rect rect, int index, bool active, bool focused) { MapElement mapElement = (MapElement)mapElementReorderableList.list[index]; EditorGUI.LabelField(infoRect.GUIAdapt(rect), mapElement.getTargetId()); //geo.Type = (GMLGeometry.GeometryType)EditorGUI.EnumPopup(typePopupRect.GUIAdapt(rect), geo.Type); var center = map.Center; if (mapElement is GeoReference) { var geoReference = mapElement as GeoReference; var geoElement = Controller.getInstance().getSelectedChapterDataControl().getObjects <GeoElement>().Find(e => e.Id == geoReference.getTargetId()); if (geoElement != null && geoElement.Geometry.Points.Count > 0) { center = geoElement.Geometry.Center; } } else if (mapElement is ExtElemReference) { var extReference = mapElement as ExtElemReference; // Trasnform manager descriptor selection var avaliableDescriptors = TransformManagerDescriptorFactory.Instance.AvaliableTransformManagers.ToList(); var selected = avaliableDescriptors.FindIndex(d => d.Key == extReference.TransformManagerDescriptor.GetType()); var newSelected = EditorGUI.Popup(typePopupRect.GUIAdapt(rect), selected, avaliableDescriptors.ConvertAll(d => d.Value).ToArray()); if (newSelected != selected) { // In case of change, reinstance a new one extReference.TransformManagerDescriptor = TransformManagerDescriptorFactory.Instance.CreateDescriptor(avaliableDescriptors[newSelected].Key); UpdateMapResources(); } using (new EditorGUI.DisabledScope()) { if (GUI.Button(typeConfigRect.GUIAdapt(rect), "*")) { //DrawerParametersMenu.s_SpriteEditor = this; var o = DrawerParametersMenu.ShowAtPosition(typeConfigRect.GUIAdapt(rect)); DrawerParametersMenu.s_DrawerParametersMenu.ExtElemReference = extReference; if (o) { GUIUtility.ExitGUI(); } } } if (GUI.Button(centerButtonRect.GUIAdapt(rect), "Move")) { movingReference = extReference; } } /*if (GUI.Button(centerButtonRect.GUIAdapt(rect), "Center")) * { * map.Center = center; * }*/ /*if (GUI.Button(editButtonRect.GUIAdapt(rect), editing != geo ? "Unlocked" : "Locked")) * { * editing = editing == geo ? null : geo; * }*/ if (GUI.Button(editButtonRect.GUIAdapt(rect), "Conditions")) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(mapElement.Conditions); } }
public MapSceneDataControl(MapScene mapScene) { this.mapScene = mapScene; this.gameplaAreaDataControl = new GameplayAreaDataControl(this); var mapParametersGatherer = new Action <Action <object> >[] { callback => callback(LatLon), callback => callback(Zoom) }; this.mapElementListDataControl = new ListDataControl <MapSceneDataControl, MapElementDataControl>(this, mapScene.Elements, new ListDataControl <MapSceneDataControl, MapElementDataControl> .ElementFactoryView() { Titles = { { GEO_REFERENCE, "Operation.AddGeoReferenceTitle" } }, Messages = { { GEO_REFERENCE, "Operation.AddGeoReferenceMessage" } }, Errors = { { GEO_REFERENCE, "Operation.AddGeoReferenceErrorNoItems" } }, ElementFactory = new DefaultElementFactory <MapElementDataControl>(new DefaultElementFactory <MapElementDataControl> .ElementCreator() { CreateDataControl = o => new GeoElementRefDataControl(o as GeoReference), CreateElement = (type, targetId, _) => new GeoElementRefDataControl(new GeoReference(targetId)), TypeDescriptors = new DefaultElementFactory <MapElementDataControl> .ElementCreator.TypeDescriptor[] { new DefaultElementFactory <MapElementDataControl> .ElementCreator.TypeDescriptor() { Type = GEO_REFERENCE, ContentType = typeof(GeoReference), ValidReferenceTypes = new[] { typeof(GeoElement) }, ReferencesId = true } } }) }, new ListDataControl <MapSceneDataControl, MapElementDataControl> .ElementFactoryView() { Titles = { { Controller.ITEM_REFERENCE, "Operation.AddItemReferenceTitle" }, { Controller.ATREZZO_REFERENCE, "Operation.AddAtrezzoReferenceTitle" }, { Controller.NPC_REFERENCE, "Operation.AddNPCReferenceTitle" } }, Messages = { { Controller.ITEM_REFERENCE, "Operation.AddItemReferenceMessage" }, { Controller.ATREZZO_REFERENCE, "Operation.AddAtrezzoReferenceMessage" }, { Controller.NPC_REFERENCE, "Operation.AddNPCReferenceMessage" } }, Errors = { { Controller.ITEM_REFERENCE, "Operation.AddItemReferenceErrorNoItems" }, { Controller.ATREZZO_REFERENCE, "Operation.AddReferenceErrorNoAtrezzo" }, { Controller.NPC_REFERENCE, "Operation.AddReferenceErrorNoNPC" } }, ElementFactory = new DefaultElementFactory <MapElementDataControl>(new DefaultElementFactory <MapElementDataControl> .ElementCreator() { CreateDataControl = o => new ExtElementRefDataControl(o as ExtElemReference), CreateElement = (type, targetId, extra) => { var extElementRef = new ExtElemReference(targetId); extElementRef.TransformManagerParameters["Position"] = (Vector2d)extra[0]; var zoom = (int)extra[1]; var pixelScale = GM.MetersToPixels(GM.PixelsToMeters(new Vector2d(1, 1), zoom), 19); extElementRef.Scale = (float)pixelScale.x; return(new ExtElementRefDataControl(extElementRef)); }, TypeDescriptors = new DefaultElementFactory <MapElementDataControl> .ElementCreator.TypeDescriptor[] { new DefaultElementFactory <MapElementDataControl> .ElementCreator.TypeDescriptor() { Type = Controller.ITEM_REFERENCE, ContentType = typeof(ExtElemReference), ValidReferenceTypes = new[] { typeof(Item) }, ExtraParameters = mapParametersGatherer, ReferencesId = true }, new DefaultElementFactory <MapElementDataControl> .ElementCreator.TypeDescriptor() { Type = Controller.ATREZZO_REFERENCE, ContentType = typeof(ExtElemReference), ValidReferenceTypes = new[] { typeof(Atrezzo) }, ExtraParameters = mapParametersGatherer, ReferencesId = true }, new DefaultElementFactory <MapElementDataControl> .ElementCreator.TypeDescriptor() { Type = Controller.NPC_REFERENCE, ContentType = typeof(ExtElemReference), ValidReferenceTypes = new[] { typeof(NPC) }, ExtraParameters = mapParametersGatherer, ReferencesId = true } } }) }); xApiOptions = new Dictionary <string, List <string> >(); var accessibleOptions = Enum.GetValues(typeof(AccessibleTracker.Accessible)) .Cast <AccessibleTracker.Accessible>() .Select(v => v.ToString().ToLower()) .ToList(); xApiOptions.Add("accesible", accessibleOptions); var alternativeOptions = Enum.GetValues(typeof(AlternativeTracker.Alternative)) .Cast <AlternativeTracker.Alternative>() .Select(v => v.ToString().ToLower()) .ToList(); xApiOptions.Add("alternative", alternativeOptions); }
public ExtElementRefDataControl(ExtElemReference extElemReference) : base(extElemReference) { this.extElemReference = extElemReference; type = getReferenceType(extElemReference.getTargetId()); this.transformManagerDataControl = new TransformManagerDataControl(this); }
public ExtElementRefDataControl(ExtElemReference extElemReference) : base(extElemReference) { this.extElemReference = extElemReference; type = getReferenceType(extElemReference.getTargetId()); this.transformManagerDataControl = new TransformManagerDataControl(this); geoActionDataControls = new ListDataControl <ExtElementRefDataControl, GeoActionDataControl>(this, extElemReference.Actions, new [] { new ListDataControl <ExtElementRefDataControl, GeoActionDataControl> .ElementFactoryView { Titles = { { GeoElementDataControl.ENTER_ACTION, "Geo.Create.Title.EnterAction" }, { GeoElementDataControl.EXIT_ACTION, "Geo.Create.Title.ExitAction" }, { GeoElementDataControl.LOOK_TO_ACTION, "Geo.Create.Title.LookToAction" } }, Messages = { { GeoElementDataControl.ENTER_ACTION, "Geo.Create.Message.EnterAction" }, { GeoElementDataControl.EXIT_ACTION, "Geo.Create.Message.ExitAction" }, { GeoElementDataControl.LOOK_TO_ACTION, "Geo.Create.Message.LookToAction" } }, Errors = { { GeoElementDataControl.ENTER_ACTION, "Geo.Create.Error.EnterAction" }, { GeoElementDataControl.EXIT_ACTION, "Geo.Create.Error.ExitAction" }, { GeoElementDataControl.LOOK_TO_ACTION, "Geo.Create.Error.LookToAction" } }, ElementFactory = new DefaultElementFactory <GeoActionDataControl>(new DefaultElementFactory <GeoActionDataControl> .ElementCreator() { TypeDescriptors = new [] { new TD { Type = GeoElementDataControl.ENTER_ACTION, ContentType = typeof(EnterAction) }, new TD { Type = GeoElementDataControl.EXIT_ACTION, ContentType = typeof(ExitAction) }, new TD { Type = GeoElementDataControl.LOOK_TO_ACTION, ContentType = typeof(InspectAction) } }, CreateDataControl = action => new GeoActionDataControl(action as GeoAction), CreateElement = (type, id, _) => { switch (type) { case GeoElementDataControl.ENTER_ACTION: return(new GeoActionDataControl(new EnterAction())); case GeoElementDataControl.EXIT_ACTION: return(new GeoActionDataControl(new ExitAction())); case GeoElementDataControl.LOOK_TO_ACTION: return(new GeoActionDataControl(new LookToAction())); default: return(null); } } }) } }); }