silkedit 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/commands/journal.rb +3 -3
- data/lib/config/parser.rb +1 -1
- data/lib/silkedit/cheats/merger.rb +7 -3
- data/lib/silkedit/cheats/silksong_cheats.rb +6 -0
- data/lib/silkedit/cheats/silksong_enemyjournal.rb +5 -4
- data/lib/silkedit/config/silksong/cheatdata.yaml +52 -0
- data/lib/silkedit/config/silksong/permasaves.yaml +4 -4
- data/lib/silkedit/savegame/diff.rb +38 -37
- data/lib/silkedit/version.rb +1 -1
- metadata +1 -1
| @@ -7,49 +7,50 @@ module Silkedit::Savegame | |
| 7 7 |  | 
| 8 8 | 
             
                  diff = nil
         | 
| 9 9 |  | 
| 10 | 
            -
                  if old.is_a?(Hash)
         | 
| 10 | 
            +
                  if old.is_a?(Hash) || new.is_a?(Hash)
         | 
| 11 11 | 
             
                    diff = {}
         | 
| 12 12 | 
             
                    (old.keys + new.keys).uniq.each do |k|
         | 
| 13 13 | 
             
                      itemdiff = mkdiff(old[k], new[k])
         | 
| 14 14 | 
             
                      diff[k] = itemdiff unless itemdiff.nil? || itemdiff.empty?
         | 
| 15 15 | 
             
                    end
         | 
| 16 | 
            -
                  elsif old.is_a?(Array)
         | 
| 16 | 
            +
                  elsif old.is_a?(Array) || new.is_a?(Array)
         | 
| 17 17 | 
             
                    diff = []
         | 
| 18 | 
            -
                    if old.first.is_a?(Hash)
         | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
                       | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
                       | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
                           | 
| 38 | 
            -
                           | 
| 39 | 
            -
                          keycomps.each { |k| newobj[k] = o[k] }
         | 
| 40 | 
            -
                          diff.append(newobj.merge(itemdiff))
         | 
| 41 | 
            -
                        end
         | 
| 42 | 
            -
                        new.each do |n|
         | 
| 43 | 
            -
                          o = old.find { |e| keycomps.map { |k| e[k] == n[k] }.reduce { |a, b| a && b } }
         | 
| 44 | 
            -
                          next unless o.nil?
         | 
| 45 | 
            -
                          itemdiff = mkdiff(
         | 
| 46 | 
            -
                            nil,
         | 
| 47 | 
            -
                            n.reject { |k, _v| keycomps.include?(k) }
         | 
| 48 | 
            -
                          )
         | 
| 49 | 
            -
                          newobj = {}
         | 
| 50 | 
            -
                          keycomps.each { |k| newobj[k] = n[k] }
         | 
| 51 | 
            -
                          diff.append(newobj.merge(itemdiff))
         | 
| 18 | 
            +
                    if (old.first.is_a?(Hash) && old.first.key?('Name')) ||
         | 
| 19 | 
            +
                       (new.first.is_a?(Hash) && new.first.key?('Name'))
         | 
| 20 | 
            +
                      keycomps = %w[Name]
         | 
| 21 | 
            +
                    elsif (old.first.is_a?(Hash) && old.first.key?('SceneName') && old.first.key?('ID')) ||
         | 
| 22 | 
            +
                          (new.first.is_a?(Hash) && new.first.key?('SceneName') && new.first.key?('ID'))
         | 
| 23 | 
            +
                      keycomps = %w[SceneName ID]
         | 
| 24 | 
            +
                    elsif (old.first.is_a?(Hash) && old.first.key?('SceneName') && old.first.key?('EventType')) ||
         | 
| 25 | 
            +
                          (new.first.is_a?(Hash) && new.first.key?('SceneName') && new.first.key?('EventType'))
         | 
| 26 | 
            +
                      keycomps = %w[SceneName EventType]
         | 
| 27 | 
            +
                    else
         | 
| 28 | 
            +
                      keycomps = nil
         | 
| 29 | 
            +
                    end
         | 
| 30 | 
            +
                    if keycomps.nil?
         | 
| 31 | 
            +
                      diff = { old: old.reject { |e| new.include?(e) }, new: new.reject { |e| old.include?(e) } }
         | 
| 32 | 
            +
                      diff = nil if diff[:old].empty? && diff[:new].empty?
         | 
| 33 | 
            +
                    else
         | 
| 34 | 
            +
                      old.each do |o|
         | 
| 35 | 
            +
                        n = new.find { |e| keycomps.map { |k| e[k] == o[k] }.reduce { |a, b| a && b } }
         | 
| 36 | 
            +
                        if n.nil?
         | 
| 37 | 
            +
                          diff.append({new: n, old: o})
         | 
| 38 | 
            +
                          next
         | 
| 52 39 | 
             
                        end
         | 
| 40 | 
            +
                        itemdiff = mkdiff(
         | 
| 41 | 
            +
                          o.reject { |k, _v| keycomps.include?(k) },
         | 
| 42 | 
            +
                          n.nil? ? nil : n.reject { |k, _v| keycomps.include?(k) }
         | 
| 43 | 
            +
                        )
         | 
| 44 | 
            +
                        next if itemdiff.empty?
         | 
| 45 | 
            +
                        newobj = {}
         | 
| 46 | 
            +
                        keycomps.each { |k| newobj[k] = o[k] }
         | 
| 47 | 
            +
                        diff.append(newobj.merge(itemdiff))
         | 
| 48 | 
            +
                      end
         | 
| 49 | 
            +
                      new.each do |n|
         | 
| 50 | 
            +
                        o = old.find { |e| keycomps.map { |k| e[k] == n[k] }.reduce { |a, b| a && b } }
         | 
| 51 | 
            +
                        next unless o.nil?
         | 
| 52 | 
            +
                        diff.append({new: n, old: o})
         | 
| 53 | 
            +
                        next
         | 
| 53 54 | 
             
                      end
         | 
| 54 55 | 
             
                    end
         | 
| 55 56 | 
             
                  elsif old != new
         | 
| @@ -71,7 +72,7 @@ module Silkedit::Savegame | |
| 71 72 | 
             
                        if line[i] == '-' && blank_leadup
         | 
| 72 73 | 
             
                          colored_string += line[i].colorize(:yellow)
         | 
| 73 74 | 
             
                          i += 1
         | 
| 74 | 
            -
                        elsif line[i] == ':' && blank_leadup
         | 
| 75 | 
            +
                        elsif line[i] == ':' && (blank_leadup || line[0..i-1].sub('-', '').chars.map { |c| c == ' ' }.all?)
         | 
| 75 76 | 
             
                          j = i + line[i+1..-1].index(':')
         | 
| 76 77 | 
             
                          colored_string += line[i..j].colorize(:magenta)
         | 
| 77 78 | 
             
                          i += j - i + 1
         | 
    
        data/lib/silkedit/version.rb
    CHANGED