public IkonComposite Save() { var data = new IkonComposite(TableTag); var colorData = new IkonArray(); colorData.Add(new IkonInteger(this.Color.R)); colorData.Add(new IkonInteger(this.Color.G)); colorData.Add(new IkonInteger(this.Color.B)); data.Add(ColorKey, colorData); data.Add(SizeKey, new IkonFloat(this.ImageSizeScale)); data.Add(NameKey, this.Name.Save()); var positionData = new IkonArray(); positionData.Add(new IkonFloat(this.Position.X)); positionData.Add(new IkonFloat(this.Position.Y)); data.Add(PositionKey, positionData); var traitsData = new IkonArray(); foreach (var item in this.Traits) { traitsData.Add(item.Save()); } data.Add(TraitsKey, traitsData); return(data); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(NameKey, new IkonText(this.Name)); var colorData = new IkonArray(); colorData.Add(new IkonInteger(this.Color.R)); colorData.Add(new IkonInteger(this.Color.G)); colorData.Add(new IkonInteger(this.Color.B)); data.Add(ColorKey, colorData); data.Add(ControlTypeKey, new IkonComposite(this.ControlType.ToString())); data.Add(OffscreenControlKey, this.OffscreenControl != null ? this.OffscreenControl.Save() : new IkonComposite("None")); var unlockedDesignsData = new IkonArray(); foreach (var item in this.UnlockedDesigns) { unlockedDesignsData.Add(new IkonInteger(indexer.IndexOf(item))); } data.Add(UnlockedDesignsKey, unlockedDesignsData); data.Add(IntelligenceKey, this.Intelligence.Save(indexer)); return(data); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(OwnerKey, new IkonInteger(indexer.IndexOf(this.Owner))); var positionData = new IkonArray(); positionData.Add(new IkonFloat(this.Position.X)); positionData.Add(new IkonFloat(this.Position.Y)); data.Add(PositionKey, positionData); var missionsData = new IkonArray(); foreach (var item in this.Missions) { missionsData.Add(item.Save(indexer)); } data.Add(MissionsKey, missionsData); var shipsData = new IkonArray(); foreach (var item in this.Ships) { shipsData.Add(item.Save(indexer)); } data.Add(ShipsKey, shipsData); return(data); }
static void Main(string[] args) { if (args.Length < 1) { Console.WriteLine("Usage: TextureAtlas <folder> [options]"); return; } else { ReadParameters(args); } var builder = new AtlasBuilder( items.Select(x => new KeyValuePair <string, Size>(x.Key, x.Value.Size)).ToArray(), margin, new Size(width, heigth) ); var atlasIkon = new IkonComposite(compositeTag); var atlasImage = new Bitmap(width, heigth); using (Graphics g = Graphics.FromImage(atlasImage)) foreach (var x in builder.Build()) { Console.WriteLine(x.Key + " " + x.Value); string[] nameParams = x.Key.Split('-'); var bounds = x.Value; foreach (var param in nameParams) { if (param.StartsWith("hStretch")) { int amount; if (!int.TryParse(param.Substring("hStretch".Length), out amount)) { amount = 1; } bounds.Inflate(-amount, 0); } } var textureCoords = new IkonArray(); textureCoords.Add(serializeRectangle(bounds.Left, bounds.Top)); textureCoords.Add(serializeRectangle(bounds.Right, bounds.Top)); textureCoords.Add(serializeRectangle(bounds.Right, bounds.Bottom)); textureCoords.Add(serializeRectangle(bounds.Left, bounds.Bottom)); atlasIkon.Add(nameParams[0], textureCoords); var destRect = new Rectangle(x.Value.Location, x.Value.Size); g.DrawImage(items[x.Key], destRect); } using (var outStream = new StreamWriter(outputIkonPath)) { var writer = new IkadnWriter(outStream); atlasIkon.Compose(writer); } atlasImage.Save(outputImagePath, ImageFormat.Png); }
private static Ikadn.IkadnBaseObject serializeRectangle(float x, float y) { var result = new IkonArray(); result.Add(new IkonNumeric(x / width)); result.Add(new IkonNumeric(y / heigth)); return(result); }
Ikadn.IkadnBaseObject serializeSpriteCorner(int x, int y, Size atlasSize) { var result = new IkonArray(); result.Add(new IkonFloat(x / (double)atlasSize.Width)); result.Add(new IkonFloat(y / (double)atlasSize.Height)); return(result); }
private IkonBaseObject serializeChildren <K, V>(IDictionary <K, V> originalDictionary, SaveSession session) { var data = new IkonArray(); foreach (var element in originalDictionary) { data.Add(session.Serialize(element.Key)); data.Add(session.Serialize(element.Value)); } return(data); }
public IkadnBaseObject Save() { var data = new IkonArray(); data.Add(new IkonText(this.TypeInfo.IdCode)); data.Add(new IkonInteger(this.Level)); if (this.TypeInfo.CanHaveMultiple) { data.Add(new IkonInteger(this.Quantity)); } return(data); }
public IkonBaseObject Make() { //TODO(later) assumes single player var player = this.controller.LocalHumanPlayers().First(); var starData = new IkonArray(); foreach (var star in player.Stars) { var data = new IkonComposite(StarTag); data.Add("x", new IkonFloat(star.Position.X)); data.Add("y", new IkonFloat(star.Position.Y)); data.Add(ColorKey, new IkonArray( new [] { new IkonInteger(star.Color.R), new IkonInteger(star.Color.G), new IkonInteger(star.Color.B) } )); starData.Add(data); } var previewData = new IkonComposite(Tag); previewData.Add(TurnKey, new IkonInteger(player.Turn)); previewData.Add(StarsKey, starData); return(previewData); }
internal IkonComposite Save() { ObjectIndexer indexer = this.GenerateIndices(); var gameData = new IkonComposite(SaveGameTag); var playersData = new IkonArray(); var ordersData = new IkonArray(); gameData.Add(TurnKey, new IkonInteger(this.Turn)); gameData.Add(StatesKey, this.States.Save(indexer)); foreach (var player in this.MainPlayers) { playersData.Add(player.Save(indexer)); } gameData.Add(PlayersKey, playersData); gameData.Add(OrganellePlayerKey, this.StareaterOrganelles.Save(indexer)); foreach (var player in this.MainPlayers) { ordersData.Add(player.Orders.Save(indexer)); } gameData.Add(OrdersKey, ordersData); gameData.Add(OrganelleOrdersKey, this.StareaterOrganelles.Orders.Save(indexer)); return(gameData); }
public virtual IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(LocationKey, this.Location.Save(indexer)); data.Add(OwnerKey, new IkonInteger(indexer.IndexOf(this.Owner))); var buildingsData = new IkonArray(); foreach (var item in this.Buildings) { var itemData = new IkonComposite(BuildingsTag); itemData.Add(BuildingTypeKey, new IkonText(item.Key)); itemData.Add(BuildingAmountKey, new IkonFloat(item.Value)); buildingsData.Add(itemData); } data.Add(BuildingsKey, buildingsData); var stockpileData = new IkonArray(); foreach (var item in this.Stockpile) { var itemData = new IkonComposite(StockpileTag); itemData.Add(StockpileGroupKey, new IkonText(item.Key)); itemData.Add(StockpileAmountKey, new IkonFloat(item.Value)); stockpileData.Add(itemData); } data.Add(StockpileKey, stockpileData); return(data); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(DevelopmentFocusIndexKey, new IkonInteger(this.DevelopmentFocusIndex)); data.Add(DevelopmentQueueKey, saveDevelopment()); data.Add(ResearchFocusKey, new IkonText(this.ResearchFocus)); data.Add(ConstructionPlansKey, saveConstruction(indexer)); data.Add(ShipOrdersKey, saveShipOrders(indexer)); data.Add(ColonizationOrdersKey, saveColonizationOrders(indexer)); data.Add(RefitOrdersKey, saveRefitOrders(indexer)); var audienceRequestsData = new IkonArray(); foreach (var item in this.AudienceRequests) { audienceRequestsData.Add(new IkonInteger(item)); } data.Add(AudienceRequestsKey, audienceRequestsData); return(data); }
private IkadnBaseObject saveConstruction(ObjectIndexer indexer) { var queue = new IkonArray(); foreach (var plan in this.ConstructionPlans) { IkonComposite planData; if (plan.Key.Location.Planet == null) { planData = new IkonComposite(StellarisConstructionTag); planData.Add(LocationKey, new IkonInteger(indexer.IndexOf((StellarisAdmin)plan.Key))); } else { planData = new IkonComposite(ColonyConstructionTag); planData.Add(LocationKey, new IkonInteger(indexer.IndexOf((Colony)plan.Key))); } planData.Add(OrdersKey, plan.Value.Save(indexer)); queue.Add(planData); } return(queue); }
private IkonComposite loadAtlas() { var atlasFile = new FileInfo(AtlasImagePath); var metadataFile = new FileInfo(AtlasIkonPath); var extraSprites = new DirectoryInfo(SpritesPath).GetFiles().Where(x => x.Name != atlasFile.Name && x.Name != metadataFile.Name).ToList(); IkonComposite ikonData; using (var ikonParser = new IkonParser(new StreamReader(AtlasIkonPath))) ikonData = ikonParser.ParseNext(AtlasTag).To <IkonComposite>(); using (var atlasImage = new Bitmap(AtlasImagePath)) { if (extraSprites.Any()) { #if DEBUG System.Diagnostics.Trace.WriteLine("Adding loose sprites to atlas: " + string.Join(" ", extraSprites.Select(x => x.Name))); #endif var atlasBuilder = new AtlasBuilder(ikonData, SpriteMargin, atlasImage.Size); using (Graphics g = Graphics.FromImage(atlasImage)) { g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.None; foreach (var spriteFile in extraSprites) { using (var sprite = new Bitmap(spriteFile.FullName)) { var spriteRegion = atlasBuilder.Add(sprite.Size); g.DrawImage(sprite, spriteRegion); var textureCoords = new IkonArray(); textureCoords.Add(serializeSpriteCorner(spriteRegion.Left, spriteRegion.Top, atlasImage.Size)); textureCoords.Add(serializeSpriteCorner(spriteRegion.Right, spriteRegion.Top, atlasImage.Size)); textureCoords.Add(serializeSpriteCorner(spriteRegion.Right, spriteRegion.Bottom, atlasImage.Size)); textureCoords.Add(serializeSpriteCorner(spriteRegion.Left, spriteRegion.Bottom, atlasImage.Size)); ikonData.Add(Path.GetFileNameWithoutExtension(spriteFile.Name), textureCoords); } } } } this.textureId = TextureUtils.CreateTexture(atlasImage); } return(ikonData); }
private void save(FileInfo saveFile, string title, IkonBaseObject previewData) { using (var output = new StreamWriter(saveFile.Create())) { var version = System.Reflection.Assembly.GetEntryAssembly().GetName().Version; var versionData = new IkonArray(); versionData.Add(new IkonInteger(version.Major)); versionData.Add(new IkonInteger(version.Minor)); versionData.Add(new IkonInteger(version.Revision)); versionData.Add(new IkonInteger(version.Build)); var writer = new IkadnWriter(output); versionData.Compose(writer); new IkonText(title).Compose(writer); previewData.Compose(writer); gameController.Save().Compose(writer); } }
private IkonBaseObject serializeChildren <T>(ICollection <T> originalCollection, SaveSession session) { var data = new IkonArray(); foreach (var element in originalCollection) { data.Add(session.Serialize(element)); } return(data); }
private IkadnBaseObject saveDevelopment() { var queue = new IkonArray(); foreach (var techId in this.DevelopmentQueue.OrderBy(x => x.Value)) { queue.Add(new IkonText(techId.Key)); } return(queue); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(DestinationKey, new IkonInteger(indexer.IndexOf(this.Destination))); var sourcesData = new IkonArray(); foreach(var item in this.Sources) sourcesData.Add(new IkonInteger(indexer.IndexOf(item))); data.Add(SourcesKey, sourcesData); return data; }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(IdCodeKey, new IkonText(this.IdCode)); data.Add(OwnerKey, new IkonInteger(indexer.IndexOf(this.Owner))); data.Add(IsObsoleteKey, new IkonInteger(this.IsObsolete ? 1 : -1)); data.Add(IsVirtualKey, new IkonInteger(this.IsVirtual ? 1 : -1)); data.Add(NameKey, new IkonText(this.Name)); data.Add(ImageIndexKey, new IkonInteger(this.ImageIndex)); data.Add(ArmorKey, this.Armor.Save()); data.Add(HullKey, this.Hull.Save()); if (this.IsDrive != null) { data.Add(IsDriveKey, this.IsDrive.Save()); } data.Add(ReactorKey, this.Reactor.Save()); data.Add(SensorsKey, this.Sensors.Save()); if (this.Shield != null) { data.Add(ShieldKey, this.Shield.Save()); } var missionEquipmentData = new IkonArray(); foreach (var item in this.MissionEquipment) { missionEquipmentData.Add(item.Save()); } data.Add(EquipmentKey, missionEquipmentData); var specialEquipmentData = new IkonArray(); foreach (var item in this.SpecialEquipment) { specialEquipmentData.Add(item.Save()); } data.Add(SpecialsKey, specialEquipmentData); data.Add(ThrustersKey, this.Thrusters.Save()); return(data); }
public IkonArray Save(IMapBuilderPiece generator) { this.data = new IkonArray(); data.Add(new IkonText(generator.Code)); foreach (var parameter in generator.Parameters) { parameter.Accept(this); } return(this.data); }
private IkadnBaseObject saveRefitOrders(ObjectIndexer indexer) { var list = new IkonArray(); foreach (var order in this.RefitOrders) { if (order.Value == null) { list.Add(new IkonComposite(DisbandOrderTag)); } else { var orderData = new IkonComposite(RefitOrderTag); orderData.Add(FromDesignKey, new IkonInteger(indexer.IndexOf(order.Key))); orderData.Add(ToDesignKey, new IkonInteger(indexer.IndexOf(order.Value))); list.Add(orderData); } } return(list); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); var starKnowledgeData = new IkonArray(); foreach (var item in this.starKnowledge) { var itemData = new IkonComposite(StarIntellTag); itemData.Add(StarDataKey, new IkonInteger(indexer.IndexOf(item.Key))); itemData.Add(StarIntelligenceKey, item.Value.Save(indexer)); starKnowledgeData.Add(itemData); } data.Add(StarKnowledgeKey, starKnowledgeData); return(data); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(SpendingRatioKey, new IkonFloat(this.SpendingRatio)); var queueData = new IkonArray(); foreach (var item in this.Queue) { queueData.Add(new IkonText(item.IdCode)); } data.Add(QueueKey, queueData); return(data); }
private IkadnBaseObject saveColonizationOrders(ObjectIndexer indexer) { var queue = new IkonArray(); foreach (var order in this.ColonizationOrders) { IkonComposite orderData; orderData = new IkonComposite(ColonizationOrdersTag); orderData.Add(ColonizationDestinationTag, new IkonInteger(indexer.IndexOf(order.Value.Destination))); orderData.Add(ColonizationSourcesTag, new IkonArray(order.Value.Sources.Select(x => new IkonInteger(indexer.IndexOf(x))))); queue.Add(orderData); } return(queue); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(LastVisitedKey, new IkonInteger(this.LastVisited)); var planetsData = new IkonArray(); foreach (var item in this.Planets) { var itemData = new IkonComposite(PlanetIntellTag); itemData.Add(PlanetKey, new IkonInteger(indexer.IndexOf(item.Key))); itemData.Add(PlanetIntelligenceKey, item.Value.Save()); planetsData.Add(itemData); } data.Add(PlanetsKey, planetsData); return(data); }
private IkadnBaseObject saveShipOrders(ObjectIndexer indexer) { var queue = new IkonArray(); foreach (var order in this.ShipOrders) { var orderData = new IkonComposite(ShipOrderTag); orderData.Add(Position, new IkonArray(). Add(new IkonFloat(order.Key.X)). Add(new IkonFloat(order.Key.Y)) ); orderData.Add(Fleets, new IkonArray(order.Value.Select(x => x.Save(indexer)))); queue.Add(orderData); } return(queue); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(StarKey, new IkonInteger(indexer.IndexOf(this.Star))); data.Add(PositionKey, new IkonInteger(this.Position)); data.Add(TypeKey, new IkonComposite(this.Type.ToString())); data.Add(SizeKey, new IkonFloat(this.Size)); var traitsData = new IkonArray(); foreach (var item in this.Traits) { traitsData.Add(item.Save()); } data.Add(TraitsKey, traitsData); return(data); }