public void PrintResource(IResourceObject resourceObject) { Console.WriteLine("==="); foreach (var stateValuePair in resourceObject.State) { Console.WriteLine("-> " + stateValuePair.Value.Name + " => " + stateValuePair.Value.Value); } if (resourceObject.Embedded.Count > 0) { Console.WriteLine("Embedded: "); foreach (var emb in resourceObject.Embedded) { Console.WriteLine("-> " + emb.Key); foreach (var value in emb.Value) { foreach (var stateValuePair in value.State) { Console.WriteLine(stateValuePair.Value.Name + " => " + stateValuePair.Value.Value); } } } } Console.WriteLine("==="); }
/// <summary> /// Removes the given <paramref name="obj"/> from /// the <see cref="ResourceGrid"/>. /// </summary> /// <param name="obj">Object to remove.</param> public IResourceObject RemoveObject(IResourceObject obj) { if (obj == null) { throw new ArgumentNullException(nameof(obj)); } for (int y = 0; y < ResourceGrid.GetLength(1); y++) { for (int x = 0; x < ResourceGrid.GetLength(0); x++) { var objInGrid = ResourceGrid[x, y]; if (objInGrid == obj) { if (objInGrid is IConnectable connectableObj) { // disconnect all ports connectableObj.Top.DisconnectFromPort(); connectableObj.Right.DisconnectFromPort(); connectableObj.Bottom.DisconnectFromPort(); connectableObj.Left.DisconnectFromPort(); } ResourceGrid[x, y] = null; return(objInGrid); } } } throw new ArgumentException("Given object not in the grid"); }
public async Task <object> MaterializeResourceObject(IResourceObject resourceObject, CancellationToken cancellationToken) { var registration = _registry.GetRegistrationForResourceTypeName(resourceObject.Type); var relationshipsToInclude = new List <ResourceTypeRelationship>(); if (resourceObject.Relationships != null) { relationshipsToInclude.AddRange( resourceObject.Relationships .Select(relationshipObject => registration.GetFieldByName(relationshipObject.Key)) .OfType <ResourceTypeRelationship>()); } var material = await GetExistingRecord(registration, resourceObject.Id, relationshipsToInclude.ToArray(), cancellationToken); if (material == null) { material = Activator.CreateInstance(registration.Type); await SetIdForNewResource(resourceObject, material, registration); _dbContext.Set(registration.Type).Add(material); } await MergeFieldsIntoProperties(resourceObject, material, registration, cancellationToken); return(material); }
/// <summary>私有构造函数</summary> /// <param name="resourceObject"></param> /// <param name="maxResource"></param> private PoolingManagement(IResourceObject <T> resourceObject, int maxResource) { this.IResourceObject = resourceObject; PoolingManagement <T> .maxResource = maxResource; messages = new Dictionary <long, ResourceWatcher <T> >(); }
/// <summary> /// Allows implementers to control how a new resource's ID should be set. /// </summary> protected virtual Task SetIdForNewResource(IResourceObject resourceObject, object newObject, IResourceTypeRegistration typeRegistration) { if (resourceObject.Id != null) { typeRegistration.IdProperty.SetValue(newObject, Convert.ChangeType(resourceObject.Id, typeRegistration.IdProperty.PropertyType)); } return(Task.FromResult(0)); }
public ResourceObjectEventArgs(IResourceObject resourceobject) { if (resourceobject == null) { throw new ArgumentNullException("resourceobject"); } _resourceobject = resourceobject; }
public override bool Equals(object obj) { IResourceObject other = obj as IResourceObject; if (other == null) { return(false); } return(Resource.Id.Equals(other.Resource.Id)); }
///<summary> ///Compares the current instance with another object of the same type. ///</summary> /// ///<returns> ///A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance is less than obj. Zero This instance is equal to obj. Greater than zero This instance is greater than obj. ///</returns> /// ///<param name="obj">An object to compare with this instance. </param> ///<exception cref="T:System.ArgumentException">obj is not the same type as this instance. </exception><filterpriority>2</filterpriority> public int CompareTo(object obj) { IResourceObject other = obj as IResourceObject; if (other == null) { return(-1); } return(Resource.Id.CompareTo(other.Resource.Id)); }
protected override Task SetIdForNewResource(IResourceObject resourceObject, object newObject, IResourceTypeRegistration typeRegistration) { // This is to facilitate testing creation of a resource with a server-provided ID if (typeRegistration.Type == typeof(Post) && String.IsNullOrEmpty(resourceObject.Id)) { ((Post)newObject).Id = "230"; return(Task.FromResult(0)); } return(base.SetIdForNewResource(resourceObject, newObject, typeRegistration)); }
void RemoveObject(IEnumerable <IResourceObject> col, IResourceObject obj) { if (TargetType == ResourceType.Location) { ((SPlusCollection <Location>)col).Remove((Location)obj); } else { ((SPlusCollection <StaffMember>)col).Remove((StaffMember)obj); } }
protected override Task SetIdForNewResource(IResourceObject resourceObject, object newObject, IResourceTypeRegistration typeRegistration) { // This is to facilitate testing creation of a resource with a server-provided ID if (typeRegistration.Type == typeof (Post) && String.IsNullOrEmpty(resourceObject.Id)) { ((Post) newObject).Id = "230"; return Task.FromResult(0); } return base.SetIdForNewResource(resourceObject, newObject, typeRegistration); }
public HexControl(IResourceObject<Texture2D> Texture, Cell[] cells) { Cells = cells; foreach (Cell c in cells) { c.Color = Color.White * 0.8f; } Scale = 1; this.Texture = Texture; Origin = new Vector2(Texture.Instance.Width / 2, Texture.Instance.Height / 2); }
public static Identifier AsIdentifier(this IResourceObject resource) { try { return(new Identifier { Classification = resource.State["classification"].Value, Id = resource.State["id"].Value }); } catch (KeyNotFoundException ex) { throw new ProjectionException(resource.GetType(), typeof(Identifier), ex); } }
/// <summary>返回一个资源池,采用单件模式。</summary> /// <param name="IResourceObject"></param> /// <returns></returns> public static PoolingManagement <T> Instance(IResourceObject <T> IResourceObject, int maxResource) { if (pool == null) { lock (key3) { if (pool == null) { pool = new PoolingManagement <T>(IResourceObject, maxResource); } } } return(pool); }
public async Task <ISingleResourceDocument> Deserialize(JsonReader reader, string currentPath) { if (reader.TokenType != JsonToken.StartObject) { throw new DeserializationException("Invalid document root", "Document root is not an object!", currentPath); } IResourceObject primaryData = null; IMetadata metadata = null; while (reader.Read()) { if (reader.TokenType != JsonToken.PropertyName) { break; } // Has to be a property name var propertyName = (string)reader.Value; reader.Read(); switch (propertyName) { case RelatedDataKeyName: // TODO: If we want to capture related resources, this would be the place to do it reader.Skip(); break; case PrimaryDataKeyName: primaryData = await DeserializePrimaryData(reader, currentPath + "/" + PrimaryDataKeyName); break; case MetaKeyName: metadata = await MetadataFormatter.Deserialize(reader, currentPath + "/" + MetaKeyName); break; default: reader.Skip(); break; } } return(new SingleResourceDocument(primaryData, new IResourceObject[] { }, metadata)); }
public virtual void Dispose(bool isDisposing) { foreach (long key in messages.Keys) { //释放资源 messages[key].Resource.Dispose(); } if (isDisposing) { key1 = null; key2 = null; key3 = null; IResourceObject = null; } }
/// <summary> /// Places the given <paramref name="obj"/> /// at the given <paramref name="coordinate"/> in /// the <see cref="ResourceGrid"/>. /// </summary> /// <param name="obj">Object to place.</param> /// <param name="coordinate">Coordinate to place object at.</param> public void PlaceObject(IResourceObject obj, Point coordinate) { if (ObjectAt(coordinate) != null) { throw new Exception("Spot not empty"); } if (obj is IConnectable connectableObj) { // connect to upper field ConnectObject(connectableObj, new Point(coordinate.X, coordinate.Y - 1), ConnectDirection.Top); // connect right field ConnectObject(connectableObj, new Point(coordinate.X + 1, coordinate.Y), ConnectDirection.Right); // connect bottom field ConnectObject(connectableObj, new Point(coordinate.X, coordinate.Y + 1), ConnectDirection.Bottom); // connect left field ConnectObject(connectableObj, new Point(coordinate.X - 1, coordinate.Y), ConnectDirection.Left); } ResourceGrid[(int)coordinate.X, (int)coordinate.Y] = obj; }
public static RankedIdentifier AsRankedIdentifier(this IResourceObject resource) { try { return(new RankedIdentifier { Classification = resource.State["classification"].Value, Id = resource.State["id"].Value, Rank = int.Parse(resource.State["rank"].Value) }); } catch (FormatException ex) { throw new ProjectionException(resource.GetType(), typeof(RankedIdentifier), ex); } catch (OverflowException ex) { throw new ProjectionException(resource.GetType(), typeof(RankedIdentifier), ex); } catch (KeyNotFoundException ex) { throw new ProjectionException(resource.GetType(), typeof(RankedIdentifier), ex); } }
internal void Resource_Visible(IResourceObject obj) { visibleResource.Add(obj); }
[InlineCode("{self}.${@action}({ob},{success})")] public static IResourceObject Action(this IResourceObject self, string action, object ob, Action <IResourceObject, HttpResponseHeaders> success) { return(default(IResourceObject)); }
[InlineCode("{self}.${@action}({ob},{success},{error})")] public static IResourceObject Action(this IResourceObject self, string action, object ob, Action success, Action error) { return(default(IResourceObject)); }
public Task Serialize(IResourceObject resourceObject, JsonWriter writer) { if (resourceObject == null) { writer.WriteNull(); return Task.FromResult(0); } writer.WriteStartObject(); writer.WritePropertyName(TypeKeyName); writer.WriteValue(resourceObject.Type); writer.WritePropertyName(IdKeyName); writer.WriteValue(resourceObject.Id); if (resourceObject.Attributes != null && resourceObject.Attributes.Any()) { writer.WritePropertyName(AttributesKeyName); writer.WriteStartObject(); foreach (var attribute in resourceObject.Attributes) { writer.WritePropertyName(attribute.Key); if (attribute.Value == null) writer.WriteNull(); else { if (attribute.Value.Type == JTokenType.Integer) { var ulongValue = attribute.Value.Value<ulong>(); if (ulongValue > long.MaxValue) { writer.WriteRawValue(ulongValue.ToString()); continue; } } attribute.Value.WriteTo(writer); } } writer.WriteEndObject(); } if (resourceObject.Relationships != null) { var relationshipsToRender = resourceObject.Relationships.Where(r => r.Value != null).ToArray(); if (relationshipsToRender.Any()) { writer.WritePropertyName(RelationshipsKeyName); writer.WriteStartObject(); foreach (var relationship in relationshipsToRender) { if (relationship.Value == null) continue; writer.WritePropertyName(relationship.Key); _relationshipObjectFormatter.Serialize(relationship.Value, writer); } writer.WriteEndObject(); } } if (resourceObject.SelfLink != null) { writer.WritePropertyName(LinksKeyName); writer.WriteStartObject(); writer.WritePropertyName(SelfLinkKeyName); _linkFormatter.Serialize(resourceObject.SelfLink, writer); writer.WriteEndObject(); } if (resourceObject.Metadata != null) { writer.WritePropertyName(MetaKeyName); _metadataFormatter.Serialize(resourceObject.Metadata, writer); } writer.WriteEndObject(); return Task.FromResult(0); }
[InlineCode("{self}.${@action}({ob})")] public static IResourceObject Action(this IResourceObject self, string action, object ob) { return(default(IResourceObject)); }
public DropboxApi(IInMemoryJsonStorage <UserAccount> storage) { Drive = new DropboxCloudDrive(storage); Resources = new DropboxResources(); }
/// <summary> /// Merges the field values of the given resource object into the materialized object /// </summary> /// <param name="resourceObject"></param> /// <param name="material"></param> /// <param name="registration"></param> /// <param name="cancellationToken"></param> /// <returns></returns> /// <exception cref="DeserializationException">Thrown when a semantically incorrect part of the document is encountered</exception> protected virtual async Task MergeFieldsIntoProperties(IResourceObject resourceObject, object material, IResourceTypeRegistration registration, CancellationToken cancellationToken) { foreach (var attributeValue in resourceObject.Attributes) { var attribute = registration.GetFieldByName(attributeValue.Key) as ResourceTypeAttribute; if (attribute == null) { continue; } attribute.SetValue(material, attributeValue.Value); } foreach (var relationshipValue in resourceObject.Relationships) { var linkage = relationshipValue.Value.Linkage; var typeRelationship = registration.GetFieldByName(relationshipValue.Key) as ResourceTypeRelationship; if (typeRelationship == null) { continue; } if (typeRelationship.IsToMany) { if (linkage == null) { throw new DeserializationException("Missing linkage for to-many relationship", "Expected an array for to-many linkage, but no linkage was specified.", "/data/relationships/" + relationshipValue.Key); } if (!linkage.IsToMany) { throw new DeserializationException("Invalid linkage for to-many relationship", "Expected an array for to-many linkage.", "/data/relationships/" + relationshipValue.Key + "/data"); } // TODO: One query per related object is going to be slow. At the very least, we should be able to group the queries by type var newCollection = new List <object>(); foreach (var resourceIdentifier in linkage.Identifiers) { var relatedObjectRegistration = _registry.GetRegistrationForResourceTypeName(resourceIdentifier.Type); var relatedObject = await GetExistingRecord(relatedObjectRegistration, resourceIdentifier.Id, null, cancellationToken); newCollection.Add(relatedObject); } var method = _openSetToManyRelationshipValueMethod.MakeGenericMethod(typeRelationship.RelatedType); method.Invoke(this, new[] { material, newCollection, typeRelationship }); } else { if (linkage == null) { throw new DeserializationException("Missing linkage for to-one relationship", "Expected an object for to-one linkage, but no linkage was specified.", "/data/relationships/" + relationshipValue.Key); } if (linkage.IsToMany) { throw new DeserializationException("Invalid linkage for to-one relationship", "Expected an object or null for to-one linkage", "/data/relationships/" + relationshipValue.Key + "/data"); } var identifier = linkage.Identifiers.FirstOrDefault(); if (identifier == null) { typeRelationship.Property.SetValue(material, null); } else { var relatedObjectRegistration = _registry.GetRegistrationForResourceTypeName(identifier.Type); var relatedObject = await GetExistingRecord(relatedObjectRegistration, identifier.Id, null, cancellationToken); typeRelationship.Property.SetValue(material, relatedObject); } } } }
/// <summary> /// Constructs a single resource document /// </summary> public SingleResourceDocument(IResourceObject primaryData, IResourceObject[] relatedData, IMetadata metadata) { PrimaryData = primaryData; RelatedData = relatedData; Metadata = metadata; }
/// <summary> /// Convert a resource object into a material record managed by EntityFramework. /// </summary> /// <returns></returns> protected virtual async Task <object> MaterializeAsync(IResourceObject resourceObject, CancellationToken cancellationToken) { return(await _entityFrameworkResourceObjectMaterializer.MaterializeResourceObject(resourceObject, cancellationToken)); }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { Locale = LocalizationData.Locale; Locale = "ru"; RCS = GetService(typeof(IResourceCacheService)) as IResourceCacheService; // Create a new SpriteBatch, which can be used to draw textures. factory.GetHexFill(410, new Vector2(512, 512)); //Load splash screen Splash = Content.Load<Texture2D>(string.Format("Splash_{0}",Locale)); spriteBatch.Begin(); spriteBatch.Draw(Splash, Vector2.Zero, Color.White); spriteBatch.End(); GraphicsDevice.Present(); SoundContent = new ContentManager(this, "Content"); soundTrack = SoundContent.Load<Song>(string.Format("Sound/Music/Song{0}", (DateTime.Now.Second % 5) + 1)); MenuItemSelected = Content.Load<SoundEffect>("Sound\\Effects\\10"); DoResearch = Content.Load<SoundEffect>("Sound\\Effects\\08"); PlanetSelected = Content.Load<SoundEffect>("Sound\\Effects\\07"); PlanetSelectedInstance = PlanetSelected.CreateInstance(); FleetSend = Content.Load<SoundEffect>("Sound\\Effects\\08"); MediaPlayer.MediaStateChanged += new EventHandler<EventArgs>(MediaPlayer_MediaStateChanged); if (MediaPlayer.GameHasControl) { MediaPlayer.Play(soundTrack); } SOMAWP7.SomaAd PublicAd = new SOMAWP7.SomaAd(); PublicAd.Kws = "Space,Gods,Veles,Conflict,Windows,Phone,Cosmos,Astronomy,Sci-Fi,Russia"; PublicAd.Adspace = 65766349; // Developer Ads PublicAd.Pub = 923863405; // Developer Ads PublicAd.AdSpaceHeight = 50; PublicAd.AdSpaceWidth = 300; //AdGameComponent.Initialize(this, "c8eda0b9-c5d9-4dc8-856b-8f0791cd3ddd"); //AdGameComponent.Current.CountryOrRegion = System.Globalization.RegionInfo.CurrentRegion.TwoLetterISORegionName; //DrawableAd bannerAd = AdGameComponent.Current.CreateAd("10040438", new Rectangle(0, 0, 300, 50), true); adManager = new AdManager(PublicAd); RCS.PreCache<Texture2D>("Menues/Main/MainOverlay"); #region Load Stuff GameOverlay = RCS.GetObject<Texture2D>("battle_03v"); // // // //IResourceObject<Texture2D> StrategicOverlay = RCS.GetObject<Texture2D>("Menues/Strategic/Strategy"); //RCS.PreCache<Texture2D>("selection"); RCS.PreCache<Texture2D>("Menues/11v"); RCS.PreCache<Texture2D>("Menues/LeftButton"); RCS.PreCache<Texture2D>("Menues/RightButton"); RCS.PreCache<Texture2D>("Menues/Base/bg_ext"); Font = Content.Load<SpriteFont>("GameFont"); IResourceObject<Texture2D> MainButton = RCS.GetObject<Texture2D>("Menues/Main/button"); IResourceObject<Texture2D> CampaingButton = RCS.GetObject<Texture2D>("Menues/Campaing/SelectionButton"); Campaign campaign1 = new Campaign(); Campaign campaign2 = new Campaign(); Campaign tutorial = new Campaign(); using (XmlReader reader = XmlReader.Create(string.Format("Campaigns/Campaign1_{0}.xml", Locale))) { campaign1.Load(reader); } using (XmlReader reader = XmlReader.Create(string.Format("Campaigns/Campaign2_{0}.xml", Locale))) { campaign2.Load(reader); } using (XmlReader reader = XmlReader.Create(string.Format("Campaigns/Tutorial_{0}.xml", Locale))) { tutorial.Load(reader); } textSettings = new TextManagerSettings(); textSettings.Font = Font; textSettings.Offset = new Vector2(425, 60); textSettings.Width = 310; textManager = new TextManager(); textManager.Settings = textSettings; textManager.Text = campaign1.ShortDescription; textManager.Parse(); selectedCampaing = tutorial; selectedEpisode = selectedCampaing.Episodes[0]; selectedMission = selectedEpisode.Missions[0]; #endregion #region Main Menu IResourceObject<Texture2D> MainOverlay = RCS.GetObject<Texture2D>("Menues/Main/MainOverlay"); IAnimator<Vector2> MainAnimatorOut = new SmoothVectorAnimator(); MainAnimatorOut.AtStart = Vector2.Zero; MainAnimatorOut.AtEnd = new Vector2(-120, 425); MainAnimatorOut.Duration = 450; IAnimator<Vector2> MainAnimatorIn = new LinearVectorAnimator(); MainAnimatorIn.AtStart = new Vector2(120, -425); MainAnimatorIn.AtEnd = Vector2.Zero; MainAnimatorIn.Duration = 375; Manager = new MenuManager(); Manager.ExitOnBack = true; Menu One = new Menu(MainAnimatorIn, MainAnimatorOut, BuildMessageBox()); One.Controls.Add(new Image() { Texture = MainOverlay, Position = Vector2.Zero, Depth = 0.5f }); Manager.Menues.Add("Main", One); bool Nab = playerData.FirstLoad || (playerData.GetProgress("Campaing1") == 1 && playerData.GetProgress("Campaing2") == 1 && playerData.GetProgress("Campaing3") == 1); One.Controls.Add(new AdControl(adManager) { Position = new Vector2(417, 411), Scale = 1, Depth = 0 }); { if (Nab) { HybridButton tb = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 0, 85 + 0 * 55)); tb.Text = LocalizationData.NewGame; tb.TextPosition = new Vector2(15, -47); tb.Sound = MenuItemSelected.CreateInstance(); tb.UseSound = true; tb.Font = Font; tb.Depth = 0.9f; tb.HoverColor = new Color(50, 238, 50); tb.Origin = new Vector2(0, MainButton.Instance.Height - 7); tb.NextMenu = "Difficulty"; One.Controls.Add(tb); } else { HybridButton tb = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 0, 85 + 0 * 55)); tb.Text = LocalizationData.Continue; tb.TextPosition = new Vector2(15, -47); tb.Font = Font; tb.Depth = 0.9f; tb.Sound = MenuItemSelected.CreateInstance(); tb.HoverColor = new Color(50, 238, 50); tb.UseSound = true; tb.Origin = new Vector2(0, MainButton.Instance.Height - 7); tb.NextMenu = "Campaing"; One.Controls.Add(tb); } } { if (Nab) { HybridButton tb = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 1, 85 + 1 * 55)); tb.Text = LocalizationData.Continue; tb.TextPosition = new Vector2(15, -47); tb.Font = Font; tb.Depth = 0.9f; tb.Sound = MenuItemSelected.CreateInstance(); tb.HoverColor = new Color(50, 238, 50); tb.UseSound = true; tb.Origin = new Vector2(0, MainButton.Instance.Height - 7); tb.NextMenu = "Campaing"; One.Controls.Add(tb); } else { HybridButton tb = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 1, 85 + 1 * 55)); tb.Text = LocalizationData.NewGame; tb.TextPosition = new Vector2(15, -47); tb.Sound = MenuItemSelected.CreateInstance(); tb.HoverColor = new Color(50, 238, 50); tb.UseSound = true; tb.Font = Font; tb.Depth = 0.9f; tb.Origin = new Vector2(0, MainButton.Instance.Height - 7); tb.NextMenu = "Difficulty"; One.Controls.Add(tb); } } { HybridButton tb = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 2, 85 + 2 * 55)); tb.Text = LocalizationData.Multiplayer; tb.TextPosition = new Vector2(15, -47); tb.NextMenu = "MultiplayerMain"; tb.HoverColor = new Color(50, 238, 50); tb.Sound = MenuItemSelected.CreateInstance(); tb.UseSound = true; tb.Font = Font; tb.Depth = 0.9f; tb.Origin = new Vector2(0, MainButton.Instance.Height - 7); One.Controls.Add(tb); } { HybridButton tb = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 3, 85 + 3 * 55)); tb.Text = LocalizationData.Rate; tb.TextPosition = new Vector2(15, -47); tb.Sound = MenuItemSelected.CreateInstance(); tb.HoverColor = new Color(50, 238, 50); tb.UseSound = true; tb.Font = Font; tb.Depth = 0.9f; tb.Origin = new Vector2(0, MainButton.Instance.Height - 7); tb.OnClick += new EventHandler(Rate_OnClick); One.Controls.Add(tb); } { HybridButton tb = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 4, 85 + 4 * 55)); tb.Text = LocalizationData.Share; tb.TextPosition = new Vector2(15, -47); tb.Sound = MenuItemSelected.CreateInstance(); tb.HoverColor = new Color(50, 238, 50); tb.OnClick += new EventHandler(share_OnClick); tb.UseSound = true; tb.Font = Font; tb.Depth = 0.9f; tb.Origin = new Vector2(0, MainButton.Instance.Height - 7); One.Controls.Add(tb); } /* { HybridButton tb = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 4, 85 + 4 * 55)); tb.Text = "Editor"; tb.OnClick+=new EventHandler(EnterEditorMode); tb.TextPosition = new Vector2(15, -47); tb.HoverColor = new Color(50, 238, 50); tb.Sound = MenuItemSelected.CreateInstance(); tb.UseSound = true; tb.Font = Font; tb.Depth = 0.9f; tb.Origin = new Vector2(0, MainButton.Instance.Height - 7); One.Controls.Add(tb); } */ { HybridButton tb = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 5, 85 + 5 * 55)); tb.Text = LocalizationData.Exit; tb.TextPosition = new Vector2(15, -47); tb.HoverColor = new Color(50, 238, 50); tb.Sound = MenuItemSelected.CreateInstance(); tb.UseSound = true; tb.Font = Font; tb.Depth = 0.9f; tb.Origin = new Vector2(0, MainButton.Instance.Height - 7); tb.NextMenu = "%Exit%"; //Change One.Controls.Add(tb); } #endregion #region Campaing Menu RCS.PreCache<Texture2D>("Menues/Base/Base"); RCS.PreCache<Texture2D>("Menues/Campaing/Overlay"); IResourceObject<Texture2D> CampaingOverlay = RCS.GetObject<Texture2D>("Menues/Campaing/Overlay"); IAnimator<Vector2> CampaingOut = new SmoothVectorAnimator(); CampaingOut.AtStart = Vector2.Zero; CampaingOut.AtEnd = new Vector2(0, 480); CampaingOut.Duration = 500; IAnimator<Vector2> CampaingIn = new SmoothVectorAnimator(); CampaingIn.AtStart = new Vector2(0, -480); CampaingIn.AtEnd = Vector2.Zero; CampaingIn.Duration = 500; Menu Two = new Menu(CampaingIn, CampaingOut, BuildMessageBox()); Two.Controls.Add(new Image() { Texture = CampaingOverlay, Position = Vector2.Zero, Depth = 0.5f }); Two.Controls.Add(new AdControl(adManager) { Position = new Vector2(252, 415), Scale = 1, Depth = 0 }); Two.OnDraw += CampaignOnDraw; Manager.Menues.Add("Campaing", Two); { HybridButton tb = new HybridButton(CampaingButton, CampaingButton, new Vector2(57, 45 + 0 * 53)); tb.Origin = new Vector2(0, 0); tb.Depth = 0.51f; tb.Color = Color.LightGreen; tb.HoverColor = new Color(50, 238, 50); tb.Font = Font; tb.UseSound = true; tb.Sound = MenuItemSelected.CreateInstance(); tb.Text = tutorial.Name; tb.Tag = tutorial; tb.OnClick += CampaignSelected; tb.TextPosition = new Vector2(20, CampaingButton.Instance.Height / 4); Two.Controls.Add(tb); } { HybridButton tb = new HybridButton(CampaingButton, CampaingButton, new Vector2(57, 45 + 1 * 53)); tb.Origin = new Vector2(0, 0); tb.Depth = 0.51f; tb.Font = Font; tb.HoverColor = new Color(50, 238, 50); tb.UseSound = true; tb.Sound = MenuItemSelected.CreateInstance(); tb.Text = campaign1.Name; tb.Tag = campaign1; tb.OnClick += CampaignSelected; tb.TextPosition = new Vector2(20, CampaingButton.Instance.Height / 4); Two.Controls.Add(tb); } { HybridButton tb = new HybridButton(CampaingButton, CampaingButton, new Vector2(57, 45 + 2 * 53)); tb.Origin = new Vector2(0, 0); tb.Depth = 0.51f; tb.Font = Font; tb.HoverColor = new Color(50, 238, 50); tb.UseSound = true; tb.Sound = MenuItemSelected.CreateInstance(); tb.Text = campaign2.Name; tb.Tag = campaign2; tb.OnClick += CampaignSelected; tb.TextPosition = new Vector2(20, CampaingButton.Instance.Height / 4); Two.Controls.Add(tb); } //{ // HybridButton tb = new HybridButton(CampaingButton, CampaingButton, new Vector2(57, 45 + 1 * 53)); // tb.Origin = new Vector2(0, 0); // tb.Depth = 0.51f; // tb.Font = Font; // tb.Text = campaign2.Name; // tb.Tag = campaign2; // tb.OnClick += CampaignSelected; // tb.TextPosition = new Vector2(20, CampaingButton.Height / 4); // Two.Controls.Add(tb); //} HybridButton Left = new HybridButton(RCS.GetObject<Texture2D>("Menues/LeftButton"), RCS.GetObject<Texture2D>("Menues/LeftButton"), new Vector2(43, 444)); Left.Origin = new Vector2(0, 62); Left.NextMenu = "%Back%"; Left.HoverColor = new Color(50, 238, 50); Left.CanOffset = false; Left.UseSound = true; Left.Sound = MenuItemSelected.CreateInstance(); Left.Depth = 0.01f; Left.Font = Font; Left.TextPosition = -Left.Origin + new Vector2(50, 23); Left.Text = LocalizationData.Back; HybridButton Right = new HybridButton(RCS.GetObject<Texture2D>("Menues/RightButton"), RCS.GetObject<Texture2D>("Menues/RightButton"), new Vector2(757, 444)); Right.Origin = new Vector2(172, 62); Right.CanOffset = false; Right.Depth = 0.01f; Right.HoverColor = new Color(50, 238, 50); Right.UseSound = true; Right.Sound = MenuItemSelected.CreateInstance(); Right.NextMenu = "Base"; Right.Font = Font; Right.TextPosition = -Right.Origin + new Vector2(60, 23); Right.Text = LocalizationData.Play; Two.Controls.Add(Left); Two.Controls.Add(Right); #endregion #region Base Menu IAnimator<Vector2> Empty = new SmoothVectorAnimator(); Empty.AtStart = Vector2.Zero; Empty.AtEnd = Vector2.Zero; Empty.Duration = 0; #endregion MultiplayerMenu multiplayerMenu = new MultiplayerMenu(); Manager.Menues.Add("MultiplayerMain", multiplayerMenu); //Define the strategic menu, but don't bother giving it any controls Menu Strategic = new Menu(Empty, Empty, BuildMessageBox()); Manager.Menues.Add("Strategic", Strategic); Strategic.OnDraw += new EventHandler(Strategic_OnDraw); //Define the mission menu too Menu MissionSelection = new Menu(Empty, Empty, BuildMessageBox()); Manager.Menues.Add("Mission", MissionSelection); MissionSelection.OnDraw += new EventHandler(MissionSelection_OnDraw); Menu DifficultySelection = new Menu(MainAnimatorIn, MainAnimatorOut, BuildMessageBox()); DifficultySelection.NotReturnable = true; Manager.Menues.Add("Difficulty", DifficultySelection); /* HybridButton Easy = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 0, 85 + 0 * 55)); Easy.Tag = "Easy"; Easy.OnClick += new EventHandler(Easy_OnClick); Easy.Text = LocalizationData.DifficultyEasy; Easy.Font = Font; Easy.UseSound = true; Easy.Sound = MenuItemSelected.CreateInstance(); Easy.Depth = 0.9f; Easy.NextMenu = "Campaing"; Easy.Origin = new Vector2(0, MainButton.Instance.Height - 7); Easy.TextPosition = new Vector2(15, -47); */ HybridButton Medium = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 0, 85 + 0 * 55)); Medium.Tag = "Medium"; Medium.OnClick += Easy_OnClick; Medium.UseSound = true; Medium.HoverColor = new Color(50, 238, 50); Medium.Sound = MenuItemSelected.CreateInstance(); Medium.Text = LocalizationData.DifficultyEasy; Medium.NextMenu = "Campaing"; Medium.Font = Font; Medium.Depth = 0.9f; Medium.Origin = new Vector2(0, MainButton.Instance.Height - 7); Medium.TextPosition = new Vector2(15, -47); HybridButton Hard = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 1, 85 + 1 * 55)); Hard.Tag = "Hard"; Hard.OnClick += Easy_OnClick; Hard.UseSound = true; Hard.HoverColor = new Color(50, 238, 50); Hard.Sound = MenuItemSelected.CreateInstance(); Hard.Text = LocalizationData.DifficultyMedium; Hard.Font = Font; Hard.NextMenu = "Campaing"; Hard.Depth = 0.9f; Hard.Origin = new Vector2(0, MainButton.Instance.Height - 7); Hard.TextPosition = new Vector2(15, -47); HybridButton Insane = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 2, 85 + 2 * 55)); Insane.Tag = "Insane"; Insane.OnClick += Easy_OnClick; Insane.Text = LocalizationData.DifficultyHard; Insane.UseSound = true; Insane.HoverColor = new Color(50, 238, 50); Insane.Sound = MenuItemSelected.CreateInstance(); Insane.Font = Font; Insane.NextMenu = "Campaing"; Insane.Depth = 0.9f; Insane.Origin = new Vector2(0, MainButton.Instance.Height - 7); Insane.TextPosition = new Vector2(15, -47); HybridButton DiffBack = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 3, 85 + 3 * 55)); DiffBack.Text = LocalizationData.Back; DiffBack.Font = Font; DiffBack.HoverColor = new Color(50, 238, 50); DiffBack.UseSound = true; DiffBack.Sound = MenuItemSelected.CreateInstance(); DiffBack.NextMenu = "%Back%"; DiffBack.Depth = 0.9f; DiffBack.Origin = new Vector2(0, MainButton.Instance.Height - 7); DiffBack.TextPosition = new Vector2(15, -47); DifficultySelection.Controls.Add(new AdControl(adManager) { Position = new Vector2(417, 411), Scale = 1, Depth = 0 }); //DifficultySelection.Controls.Add(Easy); DifficultySelection.Controls.Add(Medium); DifficultySelection.Controls.Add(Hard); DifficultySelection.Controls.Add(Insane); DifficultySelection.Controls.Add(DiffBack); DifficultySelection.Controls.Add(new Image() { Texture = MainOverlay, Position = Vector2.Zero, Depth = 0.5f }); PauseManager = new MenuManager(); PauseManager.ExitOnBack = false; PauseManager.Enabled = false; Menu PauseMenu = new Menu(MainAnimatorIn, MainAnimatorOut, BuildMessageBox()); PauseManager.Menues.Add("Pause", PauseMenu); PauseManager.SetMenu("Pause"); HybridButton Continue = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 0, 85 + 0 * 55)); Continue.UseSound = true; Continue.Sound = MenuItemSelected.CreateInstance(); Continue.OnClick += new EventHandler(Continue_OnClick); Continue.Text = LocalizationData.Continue; Continue.Font = Font; Continue.HoverColor = new Color(50, 238, 50); Continue.Depth = 0.6f; Continue.Origin = new Vector2(0, MainButton.Instance.Height - 7); Continue.TextPosition = new Vector2(15, -47); PauseMenu.Controls.Add(new AdControl(adManager) { Position = new Vector2(417, 411), Scale = 1, Depth = 0 }); HybridButton ChangeDifficulty = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 1, 85 + 1 * 55)); ChangeDifficulty.UseSound = true; ChangeDifficulty.HoverColor = new Color(50, 238, 50); ChangeDifficulty.Sound = MenuItemSelected.CreateInstance(); ChangeDifficulty.Text = LocalizationData.Difficulty; ChangeDifficulty.Font = Font; ChangeDifficulty.Depth = 0.6f; ChangeDifficulty.Origin = new Vector2(0, MainButton.Instance.Height - 7); ChangeDifficulty.TextPosition = new Vector2(15, -47); ChangeDifficulty.NextMenu = "Difficulty"; HybridButton Exit = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 2, 85 + 2 * 55)); Exit.OnClick += new EventHandler(Exit_OnClick); Exit.HoverColor = new Color(50, 238, 50); Exit.UseSound = true; Exit.Sound = MenuItemSelected.CreateInstance(); Exit.Text = LocalizationData.Exit; Exit.Font = Font; Exit.Depth = 0.6f; Exit.Origin = new Vector2(0, MainButton.Instance.Height - 7); Exit.TextPosition = new Vector2(15, -47); PauseMenu.Controls.Add(Continue); PauseMenu.Controls.Add(Exit); PauseMenu.Controls.Add(ChangeDifficulty); PauseMenu.Controls.Add(new Image() { Texture = MainOverlay, Position = Vector2.Zero, Depth = 0.5f }); Menu PauseMenuDifficulty = new Menu(MainAnimatorIn, MainAnimatorOut, BuildMessageBox()); PauseManager.Menues.Add("Difficulty",PauseMenuDifficulty); /* HybridButton PauseMenuDifficultyEasy = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 0, 85 + 0 * 55)); PauseMenuDifficultyEasy.Tag = "Easy"; PauseMenuDifficultyEasy.OnClick += new EventHandler(PauseMenuDifficultyEasy_OnClick); PauseMenuDifficultyEasy.Text = LocalizationData.DifficultyEasy; PauseMenuDifficultyEasy.Font = Font; PauseMenuDifficultyEasy.UseSound = true; PauseMenuDifficultyEasy.Sound = MenuItemSelected.CreateInstance(); PauseMenuDifficultyEasy.Depth = 0.9f; PauseMenuDifficultyEasy.NextMenu = "%Back%"; PauseMenuDifficultyEasy.Origin = new Vector2(0, MainButton.Instance.Height - 7); PauseMenuDifficultyEasy.TextPosition = new Vector2(15, -47); */ HybridButton PauseMenuDifficultyMedium = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 0, 85 + 0 * 55)); PauseMenuDifficultyMedium.Tag = "Medium"; PauseMenuDifficultyMedium.HoverColor = new Color(50, 238, 50); PauseMenuDifficultyMedium.OnClick += new EventHandler(PauseMenuDifficultyEasy_OnClick); PauseMenuDifficultyMedium.UseSound = true; PauseMenuDifficultyMedium.Sound = MenuItemSelected.CreateInstance(); PauseMenuDifficultyMedium.Text = LocalizationData.DifficultyEasy; PauseMenuDifficultyMedium.NextMenu = "%Back%"; PauseMenuDifficultyMedium.Font = Font; PauseMenuDifficultyMedium.Depth = 0.9f; PauseMenuDifficultyMedium.Origin = new Vector2(0, MainButton.Instance.Height - 7); PauseMenuDifficultyMedium.TextPosition = new Vector2(15, -47); HybridButton PauseMenuDifficultyHard = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 1, 85 + 1 * 55)); PauseMenuDifficultyHard.Tag = "Hard"; PauseMenuDifficultyHard.HoverColor = new Color(50, 238, 50); PauseMenuDifficultyHard.OnClick += new EventHandler(PauseMenuDifficultyEasy_OnClick); PauseMenuDifficultyHard.UseSound = true; PauseMenuDifficultyHard.Sound = MenuItemSelected.CreateInstance(); PauseMenuDifficultyHard.Text = LocalizationData.DifficultyMedium; PauseMenuDifficultyHard.Font = Font; PauseMenuDifficultyHard.NextMenu = "%Back%"; PauseMenuDifficultyHard.Depth = 0.9f; PauseMenuDifficultyHard.Origin = new Vector2(0, MainButton.Instance.Height - 7); PauseMenuDifficultyHard.TextPosition = new Vector2(15, -47); HybridButton PauseMenuDifficultyInsane = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 2, 85 + 2 * 55)); PauseMenuDifficultyInsane.Tag = "Insane"; PauseMenuDifficultyInsane.HoverColor = new Color(50, 238, 50); PauseMenuDifficultyInsane.OnClick += new EventHandler(PauseMenuDifficultyEasy_OnClick); PauseMenuDifficultyInsane.Text = LocalizationData.DifficultyHard; PauseMenuDifficultyInsane.UseSound = true; PauseMenuDifficultyInsane.Sound = MenuItemSelected.CreateInstance(); PauseMenuDifficultyInsane.Font = Font; PauseMenuDifficultyInsane.NextMenu = "%Back%"; PauseMenuDifficultyInsane.Depth = 0.9f; PauseMenuDifficultyInsane.Origin = new Vector2(0, MainButton.Instance.Height - 7); PauseMenuDifficultyInsane.TextPosition = new Vector2(15, -47); HybridButton PauseMenuDifficultyDiffBack = new HybridButton(MainButton, MainButton, new Vector2(120 - 15 * 3, 85 + 3 * 55)); PauseMenuDifficultyDiffBack.Text = LocalizationData.Back; PauseMenuDifficultyDiffBack.Font = Font; PauseMenuDifficultyDiffBack.HoverColor = new Color(50, 238, 50); PauseMenuDifficultyDiffBack.UseSound = true; PauseMenuDifficultyDiffBack.Sound = MenuItemSelected.CreateInstance(); PauseMenuDifficultyDiffBack.NextMenu = "%Back%"; PauseMenuDifficultyDiffBack.Depth = 0.9f; PauseMenuDifficultyDiffBack.Origin = new Vector2(0, MainButton.Instance.Height - 7); PauseMenuDifficultyDiffBack.TextPosition = new Vector2(15, -47); PauseMenuDifficulty.Controls.Add(new AdControl(adManager) { Position = new Vector2(417, 411), Scale = 1, Depth = 0 }); //PauseMenuDifficulty.Controls.Add(PauseMenuDifficultyEasy); PauseMenuDifficulty.Controls.Add(PauseMenuDifficultyMedium); PauseMenuDifficulty.Controls.Add(PauseMenuDifficultyHard); PauseMenuDifficulty.Controls.Add(PauseMenuDifficultyInsane); PauseMenuDifficulty.Controls.Add(PauseMenuDifficultyDiffBack); PauseMenuDifficulty.Controls.Add(new Image() { Texture = MainOverlay, Position = Vector2.Zero, Depth = 0.5f }); Manager.SetMenu("Main"); Manager.Enabled = true; PopupMB = new MessageBox("", 700, 300, Font, RCS.GetObject<Texture2D>("Corner"), RCS.GetObject<Texture2D>("Border"), RCS.GetObject<Texture2D>("BackgroundPattern")); PopupMB.Depth = 0.01f; PopupMB.OnClosed += new Action(PopupMB_OnClosed); PopupMB.Origin = new Vector2(350, 150); PopupMB.Position = new Vector2(400, 240); PopupTextManager = new TextManager(); PopupTextManager.Settings = PopupTextSettings = new TextManagerSettings(); PopupTextSettings.Depth = 0; PopupTextSettings.Font = Font; PopupTextSettings.Origin = new Vector2(400, 240); PopupTextManager.Settings.Offset = new Vector2(100 - 34, 105); PopupTextSettings.Width = 700 - 28; textSettings.Depth = 0.49f; IInputService input = Atom.Shared.Globals.Engine.GetService(typeof(IInputService)) as IInputService; MainMenuContract = input.CreateContract(); MainMenuContract.SubscribedTouchEvents = TouchStates.OnDrag | TouchStates.OnDoubleTap | TouchStates.OnTap | TouchStates.OnFlick; MainMenuContract.TouchEventHandler += new EventHandler<TouchEventArgs>(contract_TouchEventHandler); SinglePlayerContract = input.CreateContract(); SinglePlayerContract.Enabled = false; SinglePlayerContract.SubscribedTouchEvents = TouchStates.OnDrag | TouchStates.OnTap | TouchStates.OnDoubleTap | TouchStates.OnPinch | TouchStates.OnFlick; SinglePlayerContract.TouchEventHandler += new EventHandler<TouchEventArgs>(SinglePlayerContract_TouchEventHandler); Manager.OnEndMenuChange += new EventHandler<MenuChangeEventArgs>(Manager_OnEndMenuChange); Manager.OnBeginMenuChange += new EventHandler<MenuChangeEventArgs>(Manager_OnBeginMenuChange); Background = RCS.GetObject<Texture2D>("Menues/11v"); foreach (KeyValuePair<string, Menu> menu in Manager.Menues) { menu.Value.InitializeControls(); } }
void Manager_OnBeginMenuChange(object sender, MenuChangeEventArgs e) { offsetVelocity = Vector2.Zero; if (e.Menu == Manager.Menues["Campaing"]) { selectedEpisode = selectedCampaing.Episodes[0]; selectedMission = selectedEpisode.Missions[0]; TutorialMode = selectedCampaing.InternalName == "Tutorial"; TutorialProgress = 0; textManager.Text = selectedCampaing.Name + "\n\n\n" + selectedCampaing.ShortDescription; textManager.Parse(); RCS.PreCache<Texture2D>("Menues/Strategic/Strategy"); RCS.PreCache<Texture2D>("Menues/Strategic/06"); RCS.PreCache<Texture2D>("Menues/Strategic/Hex2"); RCS.PreCache<Texture2D>("Menues/Strategic/Screen"); RCS.PreCache<Texture2D>("Menues/Strategic/science_screen"); for (int i = 1; i <= 4; i++) { //Load science for (int j = 1; j <= 6; j++) { RCS.PreCache<Texture2D>(string.Format("Science/{0}_{1}", i, j)); } } RCS.PreCache<Texture2D>("Menues/Strategic/selection_tactical"); textSettings.Width = 310; textSettings.Offset = new Vector2(425, 60); textManager.Text = selectedCampaing.Name + "\n\n\n" + selectedCampaing.ShortDescription; textManager.Parse(); RCS.PreCache<Texture2D>("Menues/Strategic/06"); if (SSL == null) { SSL = new SpriteSheetLoader(); ScienceAnimator.AtStart = new Vector2(462, 8); ScienceAnimator.AtEnd = new Vector2(25, 319); ScienceAnimator.Duration = 1000; ScienceAnimatorReversed.AtEnd = new Vector2(462, 8); ScienceAnimatorReversed.AtStart = new Vector2(25, 319); ScienceAnimatorReversed.Duration = 1000; IAnimator<Vector2> Empty = new SmoothVectorAnimator(); Empty.AtStart = Vector2.Zero; Empty.AtEnd = Vector2.Zero; Empty.Duration = 0; IResourceObject<Texture2D> BaseOverlay = RCS.GetObject<Texture2D>("Menues/Base/Base"); Menu Three = new Menu(Empty, Empty, BuildMessageBox()); Three.OnDraw += CampaignDescriptionOnDraw; Manager.Menues.Add("Base", Three); Three.Controls.Add(new Image() { Texture = BaseOverlay, Position = Vector2.Zero, Depth = 0.48f }); Three.Controls.Add(new Image() { Texture = RCS.GetObject<Texture2D>("Menues/Base/bg_ext"), Position = new Vector2(0, 0), Depth = 0.6f }); Three.Controls.Add(new AdControl(adManager) { Position = new Vector2(252, 415), Scale = 1, Depth = 0 }); HybridButton LeftBase = new HybridButton(RCS.GetObject<Texture2D>("Menues/LeftButton"), RCS.GetObject<Texture2D>("Menues/LeftButton"), new Vector2(43, 444)); LeftBase.Origin = new Vector2(0, 62); LeftBase.NextMenu = "%Back%"; LeftBase.CanOffset = false; LeftBase.Depth = 0.01f; LeftBase.Font = Font; LeftBase.HoverColor = new Color(50, 238, 50); LeftBase.UseSound = true; LeftBase.Sound = MenuItemSelected.CreateInstance(); LeftBase.TextPosition = -LeftBase.Origin + new Vector2(50, 23); LeftBase.Text = LocalizationData.Back; HybridButton RightBase = new HybridButton(RCS.GetObject<Texture2D>("Menues/RightButton"), RCS.GetObject<Texture2D>("Menues/RightButton"), new Vector2(757, 444)); RightBase.Origin = new Vector2(172, 62); RightBase.CanOffset = false; RightBase.Depth = 0.01f; RightBase.HoverColor = new Color(50, 238, 50); RightBase.UseSound = true; RightBase.Sound = MenuItemSelected.CreateInstance(); RightBase.NextMenu = "Strategic"; RightBase.Font = Font; RightBase.TextPosition = -RightBase.Origin + new Vector2(60, 23); RightBase.Text = LocalizationData.Select; Three.Controls.Add(LeftBase); Three.Controls.Add(RightBase); EpilogueMenu eMenu = new EpilogueMenu(); Manager.Menues.Add("Epilogue", eMenu); } } else if (e.Menu == Manager.Menues["Strategic"]) { if (TutorialMode) { if (TutorialProgress == 0) { e.Menu.MessageBox.Text = LocalizationData.Tutorial0; e.Menu.MessageBox.Show(true); e.Menu.MessageBox.OnClosed += new Action(MessageBox_OnClosed); TutorialProgress++; } } if (GalaxyImage == null) GalaxyImage = new Image() { Texture = RCS.GetObject<Texture2D>("Menues/Strategic/06"), CanOffset = true, Depth = 0.9f }; ScienceDNA = RCS.GetObject<Texture2D>("Menues/Strategic/science_screen"); textManager.Settings.Width = 200; textManager.Settings.Offset = new Vector2(545, 50); textManager.Text = ""; textManager.Parse(); e.Menu.Controls.Clear(); e.Menu.Controls.Add(new AdControl(adManager) { Position = new Vector2(252, 415), Scale = 1, Depth = 0 }); HybridButton LeftStrategic = new HybridButton(RCS.GetObject<Texture2D>("Menues/LeftButton"), RCS.GetObject<Texture2D>("Menues/LeftButton"), new Vector2(43, 444)); LeftStrategic.Origin = new Vector2(0, 62); LeftStrategic.NextMenu = "%Back%"; LeftStrategic.UseSound = true; LeftStrategic.HoverColor = new Color(50, 238, 50); LeftStrategic.Sound = MenuItemSelected.CreateInstance(); LeftStrategic.CanOffset = false; LeftStrategic.Depth = 0.01f; LeftStrategic.Font = Font; LeftStrategic.TextPosition = -LeftStrategic.Origin + new Vector2(50, 23); LeftStrategic.Text = LocalizationData.Back; HybridButton RightStrategic = new HybridButton(RCS.GetObject<Texture2D>("Menues/RightButton"), RCS.GetObject<Texture2D>("Menues/RightButton"), new Vector2(757, 444)); RightStrategic.Origin = new Vector2(172, 62); RightStrategic.NextMenu = "Mission"; RightStrategic.CanOffset = false; RightStrategic.UseSound = true; RightStrategic.HoverColor = new Color(50, 238, 50); RightStrategic.Sound = MenuItemSelected.CreateInstance(); RightStrategic.Depth = 0.01f; RightStrategic.Font = Font; RightStrategic.TextPosition = -RightStrategic.Origin + new Vector2(60, 23); RightStrategic.Text = LocalizationData.Select; e.Menu.Controls.Add(new Image() { Texture = RCS.GetObject<Texture2D>("Menues/Strategic/Strategy"), Position = Vector2.Zero, Depth = 0.1f }); e.Menu.Controls.Add(new Image() { Texture = RCS.GetObject<Texture2D>("Menues/Strategic/Screen"), Position = Vector2.Zero, Depth = 0.7f }); e.Menu.Controls.Add(GalaxyImage); e.Menu.Controls.Add(LeftStrategic); e.Menu.Controls.Add(RightStrategic); int TextureNumber = playerData.Research["Growth"] + 1; if (TextureNumber >= 6) { TextureNumber = 6; } TexturedButton Science1 = new TexturedButton(RCS.GetObject<Texture2D>(string.Format("Science/1_{0}", TextureNumber)), RCS.GetObject<Texture2D>(string.Format("Science/1_{0}", TextureNumber)), new Vector2(100, 10) - new Vector2(37, 319)); TextureNumber = playerData.Research["Speed"] + 1; if (TextureNumber >= 6) { TextureNumber = 6; } TexturedButton Science2 = new TexturedButton(RCS.GetObject<Texture2D>(string.Format("Science/2_{0}", TextureNumber)), RCS.GetObject<Texture2D>(string.Format("Science/2_{0}", TextureNumber)), new Vector2(100 + 164, 10) - new Vector2(37, 319)); TextureNumber = playerData.Research["Attack"] + 1; if (TextureNumber >= 6) { TextureNumber = 6; } TexturedButton Science3 = new TexturedButton(RCS.GetObject<Texture2D>(string.Format("Science/3_{0}", TextureNumber)), RCS.GetObject<Texture2D>(string.Format("Science/3_{0}", TextureNumber)), new Vector2(100, 10 + 164) - new Vector2(37, 319)); TextureNumber = playerData.Research["Defense"] + 1; if (TextureNumber >= 6) { TextureNumber = 6; } TexturedButton Science4 = new TexturedButton(RCS.GetObject<Texture2D>(string.Format("Science/4_{0}", TextureNumber)), RCS.GetObject<Texture2D>(string.Format("Science/1_{0}", TextureNumber)), new Vector2(100 + 164, 10 + 164) - new Vector2(37, 319)); Science1.Visible = Science1.Enabled = true; Science1.Scale = 0.640625f; Science2.Visible = Science2.Enabled = true; Science2.Scale = 0.640625f; Science3.Visible = Science3.Enabled = true; Science3.Scale = 0.640625f; Science4.Visible = Science4.Enabled = true; Science4.Scale = 0.640625f; Science1.Tag = "Science1"; Science2.Tag = "Science2"; Science3.Tag = "Science3"; Science4.Tag = "Science4"; Science1.OnClick += ScienceOnClick; Science2.OnClick += ScienceOnClick; Science3.OnClick += ScienceOnClick; Science4.OnClick += ScienceOnClick; Science1.UseSound = true; Science2.UseSound = true; Science3.UseSound = true; Science4.UseSound = true; Science1.Sound = MenuItemSelected.CreateInstance(); Science2.Sound = MenuItemSelected.CreateInstance(); Science3.Sound = MenuItemSelected.CreateInstance(); Science4.Sound = MenuItemSelected.CreateInstance(); e.Menu.Controls.Add(Science1); e.Menu.Controls.Add(Science2); e.Menu.Controls.Add(Science3); e.Menu.Controls.Add(Science4); int tC = 4; Control[] controls = (from c in e.Menu.Controls where CheckScienceTag(c.Tag) select c).ToArray(); foreach (Control control in controls) { Image image = new Image(); image.CanOffset = false; image.Position = (control as TexturedButton).Position; image.Enabled = true; image.Visible = true; image.Scale = 1f; image.Depth = 0.72f; image.Color = Color.White; image.Tag = "Science" + (tC.ToString()); tC++; image.Texture = RCS.GetObject<Texture2D>("Science/science_icon_bg"); e.Menu.Controls.Add(image); } EpisodeProgressCounter = 0; HexControl hexControl = new HexControl(RCS.GetObject<Texture2D>("Menues/Strategic/Hex2"), factory.GetHexFill(410, new Vector2(512, 512))); hexControl.Depth = 0.8f; foreach (Episode episode in selectedCampaing.Episodes) { if (EpisodeProgressCounter < playerData.GetProgress(selectedCampaing.InternalName)) { selectedEpisode = episode; selectedMission = selectedEpisode.Missions[0]; hexControl[episode.Position].Color = Color.Yellow * 0.7f; EpisodeProgressCounter += episode.Missions.Count; } else { hexControl[episode.Position].Color = Color.White * 0.8f; } if (EpisodeProgressCounter < playerData.GetProgress(selectedCampaing.InternalName)) { hexControl[episode.Position].Color = new Color(53, 234, 28) * 0.7f; foreach (int cell in episode.Cells) hexControl[cell].Color = new Color(53, 234, 28) * 0.7f; } hexControl[episode.Position].Tag = episode; hexControl[episode.Position].OnClick += new Action<Cell>(hexControl_OnClick); } textManager.Text = selectedEpisode.Name + "\n\n\n\n\n" + selectedEpisode.Description; textManager.Parse(); e.Menu.Controls.Add(hexControl); /* foreach (Episode episode in selectedCampaing.Episodes) { AnimatedButton animated = new AnimatedButton(SSL.DescriptorList["StrategicEpisodeSelection"]); animated.Position = episode.Position; animated.Origin = new Vector2(32, 32); if (EpisodeProgressCounter < playerData.GetProgress(selectedCampaing.InternalName)) { animated.Enabled = true; EpisodeProgressCounter += episode.Missions.Count; } else { animated.Enabled = false; } animated.CanOffset = true; animated.Depth = 0.8f; animated.Color = animated.Enabled ? Color.Khaki : Color.Gray; animated.Tag = episode; animated.OnClick += new EventHandler(animated_OnClick); e.Menu.Controls.Add(animated); } */ EpisodeProgressCounter = 0; foreach (Episode ep in selectedCampaing.Episodes) { if (ep != selectedEpisode) EpisodeProgressCounter += ep.Missions.Count; else break; } e.Menu.InitializeControls(); } else if (e.Menu == Manager.Menues["Mission"]) { if (TutorialMode) if (TutorialProgress == 4) { e.Menu.MessageBox.Text = LocalizationData.Tutorial4; e.Menu.MessageBox.Show(true); TutorialProgress++; } MissionOffset = Vector2.Zero; textManager.Settings.Width = 200; textManager.Settings.Offset = new Vector2(545, 50); e.Menu.Controls.Clear(); e.Menu.Controls.Add(new AdControl(adManager) { Position = new Vector2(252, 415), Scale = 1, Depth = 0 }); HybridButton LeftMission = new HybridButton(RCS.GetObject<Texture2D>("Menues/LeftButton"), RCS.GetObject<Texture2D>("Menues/LeftButton"), new Vector2(43, 444)); LeftMission.Origin = new Vector2(0, 62); LeftMission.NextMenu = "%Back%"; LeftMission.CanOffset = false; LeftMission.Depth = 0.01f; LeftMission.HoverColor = new Color(50, 238, 50); LeftMission.UseSound = true; LeftMission.Sound = MenuItemSelected.CreateInstance(); LeftMission.Font = Font; LeftMission.TextPosition = -LeftMission.Origin + new Vector2(50, 23); LeftMission.Text = LocalizationData.Back; HybridButton RightMission = new HybridButton(RCS.GetObject<Texture2D>("Menues/RightButton"), RCS.GetObject<Texture2D>("Menues/RightButton"), new Vector2(757, 444)); RightMission.Origin = new Vector2(172, 62); RightMission.CanOffset = false; RightMission.Depth = 0.01f; RightMission.HoverColor = new Color(50, 238, 50); RightMission.Font = Font; RightMission.UseSound = true; RightMission.Sound = MenuItemSelected.CreateInstance(); RightMission.TextPosition = -RightMission.Origin + new Vector2(60, 23); RightMission.Text = LocalizationData.Play; RightMission.OnClick += new EventHandler(RightMission_OnClick); e.Menu.Controls.Add(LeftMission); e.Menu.Controls.Add(RightMission); e.Menu.Controls.Add(new Image() { Texture = RCS.GetObject<Texture2D>("Menues/Strategic/Strategy"), Position = Vector2.Zero, Depth = 0.1f }); e.Menu.Controls.Add(new Image() { Texture = RCS.GetObject<Texture2D>("Menues/Strategic/Screen"), Position = Vector2.Zero, Depth = 0.7f }); e.Menu.Controls.Add(PopupMB); int Counter = EpisodeProgressCounter; if (EpisodeProgressCounter == playerData.GetProgress(selectedCampaing.InternalName) - 1) { if (!String.IsNullOrWhiteSpace(selectedEpisode.EpisodePopup)) { PopupTextManager.Text = selectedEpisode.EpisodePopup; PopupTextManager.Parse(); PopupMB.Show(true); } } foreach (Mission mission in selectedEpisode.Missions) { Vector2 Position = Vector2.Zero; if (Counter - EpisodeProgressCounter == 0 || Counter - EpisodeProgressCounter == selectedEpisode.Missions.Count - 1) { Position = new Vector2(150 + (Counter - EpisodeProgressCounter) * 256, 240); } else { bool Even = (Counter - EpisodeProgressCounter - 1) % 2 == 0; if (Even) { Position = new Vector2(150 + (Counter - EpisodeProgressCounter) * 256, 140); } else { Position = new Vector2(150 + (Counter - EpisodeProgressCounter) * 256, 340); } } Position.Y -= 30; TexturedButton tb = new TexturedButton(RCS.GetObject<Texture2D>("Menues/Strategic/selection_tactical"), RCS.GetObject<Texture2D>("Menues/Strategic/selection_tactical"), Position); tb.CanOffset = true; tb.Scale = 0.5f; tb.Origin = new Vector2(128, 128); tb.Color = Counter < playerData.GetProgress(selectedCampaing.InternalName) ? Color.White : Color.Black; if (tb.Color == Color.White) selectedMission=mission; tb.Depth = 0.8f; tb.Enabled = Counter < playerData.GetProgress(selectedCampaing.InternalName) ? true : false; tb.Tag = mission; tb.OnClick += new EventHandler(tb_OnClick); e.Menu.Controls.Add(tb); Counter++; } (from control in e.Menu.Controls where control.Tag == selectedMission select control).First().Color = Color.Gray; textManager.Text = selectedMission.Name + "\n\n\n\n\n" + selectedMission.Description; textManager.Parse(); e.Menu.InitializeControls(); } }
/// <summary> /// Constructs a resource collection document /// </summary> public ResourceCollectionDocument(IResourceObject[] primaryData, IResourceObject[] relatedData, IMetadata metadata) { PrimaryData = primaryData; RelatedData = relatedData; Metadata = metadata; }
private void update() { lock (locker) { try { startQueued(); for (int i = 0; i < downloading.Count; i++) { var down = downloading[i]; switch (down.dtype) { case LoadType.File: { Task task = down.Task; IResourceObject res = null; if (task.Status == TaskStatus.RanToCompletion) { switch (down.type) { case ResourceType.Image: #if ANDROID Task <Bitmap> t = (Task <Bitmap>)task; res = new ImageResource(t.Result); #elif IOS Task <UIImage> t = (Task <UIImage>)task; res = new ImageResource(t.Result); #else throw new NotImplementedException(); #endif if (down.store) { resources.Add(down.path.OriginalString, res); } downloading.RemoveAt(i); i--; for (int j = 0; j < down.Callbacks.Count; j++) { Delegate del = (Delegate)down.Callbacks[j]; del.DynamicInvoke(res); //down.Callbacks[j](res); } break; } } } break; case LoadType.Download: { down.client.Dispose(); var task = (Task <byte[]>)down.Task; if (task.Status == TaskStatus.RanToCompletion) { // success IResourceObject res = null; switch (down.type) { case ResourceType.Image: res = new ImageResource(task.Result); if (task.Result.Length < 10) { // decode error string error = WebUtil.GetASCIIString(task.Result); continue; } break; case ResourceType.String: res = new StringResource(task.Result); break; } if (down.store) { resources.Add(down.path.OriginalString, res); } downloading.RemoveAt(i); i--; for (int j = 0; j < down.Callbacks.Count; j++) { Delegate del = (Delegate)down.Callbacks[j]; del.DynamicInvoke(res); //down.Callbacks[j](res); } } else if (task.Status == TaskStatus.Canceled || task.Status == TaskStatus.Faulted) { // failure downloading.RemoveAt(i); i--; for (int j = 0; j < down.failureCallbacks.Count; j++) { down.failureCallbacks[j](); } } } break; } } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); if (ex is WebException) { WebException web = (WebException)ex; using (Stream stream = web.Response.GetResponseStream()) { StreamReader reader = new StreamReader(stream); string data = reader.ReadToEnd(); } } } } }
/// <summary> /// Allows implementers to control how a new resource's ID should be set. /// </summary> protected virtual Task SetIdForNewResource(IResourceObject resourceObject, object newObject, IResourceTypeRegistration typeRegistration) { typeRegistration.IdProperty.SetValue(newObject, resourceObject.Id); return(Task.FromResult(0)); }
public override void Setup(Material mat, ref RenderOperation op) { if (mode == RenderMode.Depth) { Matrix lightPrjTrans; Matrix.Multiply(ref op.Transformation, ref EffectParams.DepthViewProj, out lightPrjTrans); shdVtxShader.SetValue("mvp", ref lightPrjTrans); } else if (mode == RenderMode.DeferredNormal) { Matrix worldView = op.Transformation * EffectParams.CurrentCamera.ViewMatrix; Matrix mvp = worldView * EffectParams.CurrentCamera.ProjectionMatrix; nrmGenVShader.SetValue("mvp", ref mvp); nrmGenVShader.SetValue("worldView", ref worldView); if (!stateSetted) { ShaderSamplerState state = new ShaderSamplerState(); state.AddressU = TextureAddressMode.Wrap; state.AddressV = TextureAddressMode.Wrap; state.AddressW = TextureAddressMode.Wrap; state.MinFilter = TextureFilter.Linear; state.MagFilter = TextureFilter.Linear; state.MipFilter = TextureFilter.Linear; state.MaxAnisotropy = 8; state.MipMapLODBias = 0; nrmGenPShader.SetSamplerState("texDif", ref state); ResourceHandle <Texture> clrTex = mat.GetTexture(0); if (clrTex == null) { nrmGenPShader.SetTexture("texDif", noTexture); } else { nrmGenPShader.SetTexture("texDif", clrTex); } } } else { Matrix mvp = op.Transformation * EffectParams.CurrentCamera.ViewMatrix * EffectParams.CurrentCamera.ProjectionMatrix; vtxShader.SetValue("mvp", ref mvp); vtxShader.SetValue("world", ref op.Transformation); Matrix lightPrjTrans; Matrix.Multiply(ref op.Transformation, ref EffectParams.DepthViewProj, out lightPrjTrans); vtxShader.SetValue("smTrans", lightPrjTrans); IResourceObject res = op.Sender as IResourceObject; if (res != null) { pixShader.SetValue("amount", new Vector2(res.AmountPer, res.MaxValue)); } else { pixShader.SetValue("amount", new Vector2(123, 456)); } WorldObject wo = op.Sender as WorldObject; if (wo != null) { pixShader.SetValue("visiblity", wo.Visiblity); } else { pixShader.SetValue("visiblity", 0.0f); } if (!stateSetted) { ShaderSamplerState state = new ShaderSamplerState(); state.AddressU = TextureAddressMode.Wrap; state.AddressV = TextureAddressMode.Wrap; state.AddressW = TextureAddressMode.Wrap; state.MinFilter = TextureFilter.Anisotropic; state.MagFilter = TextureFilter.Anisotropic; state.MipFilter = TextureFilter.Linear; state.MaxAnisotropy = 8; state.MipMapLODBias = 0; pixShader.SetValue("k_a", mat.Ambient); pixShader.SetValue("k_d", mat.Diffuse); pixShader.SetSamplerState("texDif", ref state); ResourceHandle <Texture> clrTex = mat.GetTexture(0); if (clrTex == null) { pixShader.SetTexture("texDif", noTexture); } else { pixShader.SetTexture("texDif", clrTex); } stateSetted = true; } } }
public Task Serialize(IResourceObject resourceObject, JsonWriter writer) { if (resourceObject == null) { writer.WriteNull(); return(Task.FromResult(0)); } writer.WriteStartObject(); writer.WritePropertyName(TypeKeyName); writer.WriteValue(resourceObject.Type); writer.WritePropertyName(IdKeyName); writer.WriteValue(resourceObject.Id); if (resourceObject.Attributes != null && resourceObject.Attributes.Any()) { writer.WritePropertyName(AttributesKeyName); writer.WriteStartObject(); foreach (var attribute in resourceObject.Attributes) { writer.WritePropertyName(attribute.Key); if (attribute.Value == null) { writer.WriteNull(); } else { if (attribute.Value.Type == JTokenType.Integer) { var ulongValue = attribute.Value.Value <ulong>(); if (ulongValue > long.MaxValue) { writer.WriteRawValue(ulongValue.ToString()); continue; } } attribute.Value.WriteTo(writer); } } writer.WriteEndObject(); } if (resourceObject.Relationships != null) { var relationshipsToRender = resourceObject.Relationships.Where(r => r.Value != null).ToArray(); if (relationshipsToRender.Any()) { writer.WritePropertyName(RelationshipsKeyName); writer.WriteStartObject(); foreach (var relationship in relationshipsToRender) { if (relationship.Value == null) { continue; } writer.WritePropertyName(relationship.Key); RelationshipObjectFormatter.Serialize(relationship.Value, writer); } writer.WriteEndObject(); } } if (resourceObject.SelfLink != null) { writer.WritePropertyName(LinksKeyName); writer.WriteStartObject(); writer.WritePropertyName(SelfLinkKeyName); LinkFormatter.Serialize(resourceObject.SelfLink, writer); writer.WriteEndObject(); } if (resourceObject.Metadata != null) { writer.WritePropertyName(MetaKeyName); MetadataFormatter.Serialize(resourceObject.Metadata, writer); } writer.WriteEndObject(); return(Task.FromResult(0)); }
public YaDiskApi(IInMemoryJsonStorage <UserAccount> storage) { Drive = new YaDiskCloudDrive(storage); Resources = new YaDiskResources(); }