示例#1
0
        private void LoadSmartTiles(bool all)
        {
            if (J2L.HasTiles)
            {
                bool maxTiles4096      = J2L.MaxTiles == 4096;
                int  max               = all ? J2L.Tilesets.Count : 1;
                uint previousTileCount = 0;
                for (int i = 0; i < max; ++i)
                {
                    J2L.Tilesets[i].LoadSmartTiles(maxTiles4096, previousTileCount);
                    previousTileCount += J2L.Tilesets[i].TileCount;
                }
            }

            SmartTiles.Clear();
            SmartTile zero = new SmartTile(J2L.MaxTiles == 4096, null);

            zero.Assignments[11].Tiles.Add(0);
            zero.TilesICanPlace.Add(0);
            zero.PreviewTileIDs = new ushort[9];
            zero.Name           = "(Blank)";
            zero.Available      = true;
            SmartTiles.Add(zero);
            foreach (J2TFile tileset in J2L.Tilesets)
            {
                SmartTiles.AddRange(tileset.SmartTiles);
            }
            OverSmartTiles.Visible = SmartTiles.Count > 1;
        }
示例#2
0
 internal void UpdateTilesIGonextTo(List <SmartTile> smartTiles)
 {
     foreach (int friendID in Friends)
     {
         SmartTile smartTile = smartTiles[friendID];
         TilesIGoNextTo.UnionWith(smartTile.TilesICanPlace);
         TilesIGoNextTo.UnionWith(smartTile.Extras);
     }
 }
示例#3
0
 internal SmartTile(SmartTile other)
 {
     Assignments    = other.Assignments.Select(ass => new Assignment(ass)).ToArray();
     PreviewTileIDs = other.PreviewTileIDs.Clone() as ushort[];
     Name           = other.Name;
     Friends        = new List <int>(other.Friends);
     TilesICanPlace = new HashSet <ushort>(other.TilesICanPlace.Comparer);
     TilesICanPlace.UnionWith(other.TilesICanPlace);
     TilesIGoNextTo = new HashSet <ushort>(other.TilesIGoNextTo.Comparer);
     TilesIGoNextTo.UnionWith(other.TilesIGoNextTo);
     Tileset = other.Tileset;
 }
示例#4
0
        internal DialogResult ShowForm(SmartTile workingSmartTile, J2TFile tileset, int workingSmartTileIndex = -1)
        {
            Tileset          = tileset;
            WorkingSmartTile = workingSmartTile;
            List <SmartTile> smartTiles = tileset.SmartTiles;

            if (smartTiles.Count >= 1)
            {
                AllSmartTileNames = smartTiles.Select(smartTile => smartTile.Name).ToList();
            }
            else
            {
                AllSmartTileNames = new List <string>();
            }
            if (workingSmartTileIndex == -1)
            {
                AllSmartTileNames.Add("[this]");
                button1.Hide();
            }
            if (smartTiles.Count > 1)
            {
                for (int otherSmartTileID = 0; otherSmartTileID < smartTiles.Count; ++otherSmartTileID)
                {
                    checkedComboBox1.Items.Add(
                        otherSmartTileID != workingSmartTileIndex ? AllSmartTileNames[otherSmartTileID] : "[this]",
                        otherSmartTileID == workingSmartTileIndex ?
                        CheckState.Indeterminate :
                        workingSmartTile.Friends.Contains(otherSmartTileID) ?
                        CheckState.Checked :
                        CheckState.Unchecked
                        );
                }
                checkedComboBox1.SetItemCheckState(0, checkedComboBox1.GetItemCheckState(0)); //fixes issue of control not updating text preview in response to Items.Add
                checkedComboBox1.ItemCheck += (s, e) => { if (e.CurrentValue == CheckState.Indeterminate)
                                                          {
                                                              e.NewValue = CheckState.Indeterminate;
                                                          }
                };                                                                                                                                  //don't let the indeterminate item (this smarttile itself) be altered
            }
            else
            {
                checkedComboBox1.Hide();
            }
            AndValue      = ((SmartTile.ushortComparer)WorkingSmartTile.TilesICanPlace.Comparer).AndValue;
            textBox1.Text = WorkingSmartTile.Name;
            CreateImageFromTileset();

            using (new System.Threading.Timer(RedrawTiles, null, TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(0.5)))
                ShowDialog();
            return(Result);
        }