
com.threerings.cast.CharacterDescriptor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of nenya Show documentation
Show all versions of nenya Show documentation
Facilities for making networked multiplayer games.
The newest version!
//
// Nenya library - tools for developing networked games
// Copyright (C) 2002-2012 Three Rings Design, Inc., All Rights Reserved
// https://github.com/threerings/nenya
//
// This library is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published
// by the Free Software Foundation; either version 2.1 of the License, or
// (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
package com.threerings.cast;
import java.util.Arrays;
import java.awt.Point;
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;
}
/**
* Returns the array of translations to be applied to the components
* when compositing action images.
*/
public Point[] getTranslations ()
{
return _xlations;
}
/**
* Updates the translations to be used by this character descriptor.
*/
public void setTranslations (Point[] xlations)
{
_xlations = xlations;
}
@Override
public int hashCode ()
{
int code = 0, clength = _components.length;
for (int ii = 0; ii < clength; ii++) {
code ^= _components[ii];
}
return code;
}
@Override
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 Arrays.equals(_xlations, odesc._xlations);
}
@Override
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;
/** The translations to apply when compositing this character. */
protected Point[] _xlations;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy