1ce6951cb6
image stuff went into media.image. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2100 542714f4-19e9-0310-aa3c-eee0fc999fb1
127 lines
3.6 KiB
Java
127 lines
3.6 KiB
Java
//
|
|
// $Id: CharacterDescriptor.java,v 1.10 2003/01/08 04:09:02 mdb Exp $
|
|
|
|
package com.threerings.cast;
|
|
|
|
import java.util.Arrays;
|
|
import com.samskivert.util.StringUtil;
|
|
import com.threerings.media.image.Colorization;
|
|
|
|
/**
|
|
* The character descriptor object details the components that are
|
|
* pieced together to create a single character image.
|
|
*/
|
|
public class CharacterDescriptor
|
|
{
|
|
/**
|
|
* Constructs a character descriptor.
|
|
*
|
|
* @param components the component ids of the individual components
|
|
* that make up this character.
|
|
* @param zations the colorizations to apply to each of the character
|
|
* component images when compositing actions (an array of
|
|
* colorizations for each component, elements of which can be null to
|
|
* make it easier to support per-component specialized colorizations).
|
|
* This can be null if image recolorization is not desired.
|
|
*/
|
|
public CharacterDescriptor (int[] components, Colorization[][] zations)
|
|
{
|
|
_components = components;
|
|
_zations = zations;
|
|
}
|
|
|
|
/**
|
|
* Returns an array of the component identifiers comprising the
|
|
* character described by this descriptor.
|
|
*/
|
|
public int[] getComponentIds ()
|
|
{
|
|
return _components;
|
|
}
|
|
|
|
/**
|
|
* Returns an array of colorization arrays to be applied to the
|
|
* components when compositing action images (one array per
|
|
* component).
|
|
*/
|
|
public Colorization[][] getColorizations ()
|
|
{
|
|
return _zations;
|
|
}
|
|
|
|
/**
|
|
* Updates the colorizations to be used by this character descriptor.
|
|
*/
|
|
public void setColorizations (Colorization[][] zations)
|
|
{
|
|
_zations = zations;
|
|
}
|
|
|
|
/**
|
|
* Compute a sensible hashcode for this object.
|
|
*/
|
|
public int hashCode ()
|
|
{
|
|
int code = 0, clength = _components.length;
|
|
for (int i = 0; i < clength; i++) {
|
|
code ^= _components[i];
|
|
}
|
|
return code;
|
|
}
|
|
|
|
/**
|
|
* Compares this character descriptor to another.
|
|
*/
|
|
public boolean equals (Object other)
|
|
{
|
|
if (!(other instanceof CharacterDescriptor)) {
|
|
return false;
|
|
}
|
|
|
|
// both the component ids and the colorizations must be equal
|
|
CharacterDescriptor odesc = (CharacterDescriptor)other;
|
|
if (!Arrays.equals(_components, odesc._components)) {
|
|
return false;
|
|
}
|
|
|
|
Colorization[][] zations = odesc._zations;
|
|
if (zations == null && _zations == null) {
|
|
// if neither has colorizations, we're clear
|
|
return true;
|
|
|
|
} else if (zations == null || _zations == null) {
|
|
// if one has colorizations whilst the other doesn't, they
|
|
// can't be equal
|
|
return false;
|
|
}
|
|
|
|
// otherwise, all of the colorizations must be equal as well
|
|
int zlength = zations.length;
|
|
if (zlength != _zations.length) {
|
|
return false;
|
|
}
|
|
for (int ii = 0; ii < zlength; ii++) {
|
|
if (!Arrays.equals(_zations[ii], zations[ii])) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Returns a string representation of this character descriptor.
|
|
*/
|
|
public String toString ()
|
|
{
|
|
return "[cids=" + StringUtil.toString(_components) +
|
|
", colors=" + StringUtil.toString(_zations) + "]";
|
|
}
|
|
|
|
/** The component identifiers comprising the character. */
|
|
protected int[] _components;
|
|
|
|
/** The colorizations to apply when compositing this character. */
|
|
protected Colorization[][] _zations;
|
|
}
|