
com.threerings.cast.CharacterComponent 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.Set;
import java.io.Serializable;
import com.samskivert.util.StringUtil;
import com.threerings.media.sprite.Sprite;
/**
* The character component represents a single component that can be composited with other
* character components to generate an image representing a complete character displayable in any
* of the eight compass directions as detailed in the {@link Sprite} class direction constants.
*/
public class CharacterComponent implements Serializable
{
/** The unique component identifier. */
public int componentId;
/** The component's name. */
public String name;
/** The class of components to which this one belongs. */
public ComponentClass componentClass;
/**
* Constructs a character component with the specified id of the specified class.
*/
public CharacterComponent (
int componentId, String name, ComponentClass compClass, FrameProvider fprov)
{
this.componentId = componentId;
this.name = name;
this.componentClass = compClass;
_frameProvider = fprov;
}
/**
* Returns the render priority appropriate for this component at the specified action and
* orientation.
*/
public int getRenderPriority (String action, int orientation)
{
return componentClass.getRenderPriority(action, name, orientation);
}
/**
* Returns the image frames for the specified action animation or null if no animation for the
* specified action is available for this component.
*
* @param type null for the normal action frames or one of the custom action sub-types:
* {@link StandardActions#SHADOW_TYPE}, etc.
*/
public ActionFrames getFrames (String action, String type)
{
return _frameProvider.getFrames(this, action, type);
}
/**
* Returns the path to the image frames for the specified action animation or null if no
* animation for the specified action is available for this component.
*
* @param type null for the normal action frames or one of the custom action sub-types:
* {@link StandardActions#SHADOW_TYPE}, etc.
*
* @param existentPaths the set of all paths for which there are valid frames.
*/
public String getFramePath (String action, String type, Set existentPaths)
{
return _frameProvider.getFramePath(this, action, type, existentPaths);
}
@Override
public boolean equals (Object other)
{
if (other instanceof CharacterComponent) {
return componentId == ((CharacterComponent)other).componentId;
} else {
return false;
}
}
@Override
public int hashCode ()
{
return componentId;
}
@Override
public String toString ()
{
return StringUtil.fieldsToString(this);
}
/** The entity from which we obtain our animation frames. */
protected FrameProvider _frameProvider;
/** Increase this value when object's serialized state is impacted by
* a class change (modification of fields, inheritance). */
private static final long serialVersionUID = 1;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy