use first 3 elements in data (MagicEvent) and choiceResults (MagicItemOnStack) to compute hash

master
melvin 2011-06-20 10:55:51 +08:00
parent f7a4d19c6f
commit 640d3b9adc
2 changed files with 15 additions and 7 deletions

View File

@ -194,10 +194,12 @@ public class MagicEvent implements MagicCopyable {
public long getEventId() {
long[] keys = {
(player != null ? player.getIndex() : 7),
(source != null ? source.getId() : 7),
(action != null ? action.hashCode() : 7),
(data.length > 0 && data[0] instanceof MagicTarget) ? ((MagicTarget)data[0]).getId() : 7,
(player != null ? player.getIndex() : -1L),
(source != null ? source.getId() : -1L),
(action != null ? action.hashCode() : -1L),
(data.length > 0 && data[0] instanceof MagicTarget) ? ((MagicTarget)data[0]).getId() : -1L,
(data.length > 1 && data[1] instanceof MagicTarget) ? ((MagicTarget)data[1]).getId() : -1L,
(data.length > 2 && data[2] instanceof MagicTarget) ? ((MagicTarget)data[2]).getId() : -1L,
};
return magic.MurmurHash3.hash(keys);
}

View File

@ -145,10 +145,16 @@ public abstract class MagicItemOnStack implements MagicTarget {
}
public long getItemId() {
return
event.getEventId() +
final long[] keys = {
event.getEventId(),
((choiceResults.length > 0 && choiceResults[0] instanceof MagicTarget) ?
((MagicTarget)choiceResults[0]).getId() : 7);
((MagicTarget)choiceResults[0]).getId() : -1L),
((choiceResults.length > 1 && choiceResults[1] instanceof MagicTarget) ?
((MagicTarget)choiceResults[1]).getId() : -1L),
((choiceResults.length > 2 && choiceResults[2] instanceof MagicTarget) ?
((MagicTarget)choiceResults[2]).getId() : -1L),
};
return magic.MurmurHash3.hash(keys);
}
public abstract boolean isSpell();