From: <js...@us...> - 2011-02-25 05:05:20
|
Revision: 6913 http://exult.svn.sourceforge.net/exult/?rev=6913&view=rev Author: jsf Date: 2011-02-25 05:05:14 +0000 (Fri, 25 Feb 2011) Log Message: ----------- Added PaperdollInfo class. Modified Paths: -------------- ExultAndroid/src/com/exult/android/ShapeInfo.java Added Paths: ----------- ExultAndroid/src/com/exult/android/shapeinf/PaperdollItem.java Modified: ExultAndroid/src/com/exult/android/ShapeInfo.java =================================================================== --- ExultAndroid/src/com/exult/android/ShapeInfo.java 2011-02-25 01:22:24 UTC (rev 6912) +++ ExultAndroid/src/com/exult/android/ShapeInfo.java 2011-02-25 05:05:14 UTC (rev 6913) @@ -25,7 +25,7 @@ //+++++++++FINISH private PaperdollNpc npcpaperdoll; // These vectors should be totally ordered by the strict-weak // order operator defined for the classes. - //+++++++FINISH private vector<Paperdoll_item> objpaperdoll; + private Vector<PaperdollItem> objpaperdoll; private Vector<EffectiveHpInfo> hpinf; private Vector<FrameNameInfo> nameinf; private Vector<FrameFlagsInfo> frflagsinf; @@ -199,18 +199,27 @@ public void setBodyInfo(BodyInfo i) { body = i; } -/*++++++++FINISH -bool has_paperdoll_info() {; -private vector<Paperdoll_item>& get_paperdoll_info() -{ return objpaperdoll; } -private vector<Paperdoll_item>& set_paperdoll_info(bool tf); -void clean_invalid_paperdolls(); -void clear_paperdoll_info(); -void add_paperdoll_info(Paperdoll_item& add); -Paperdoll_item *get_item_paperdoll(int frame, int spot); -*/ + public Vector<PaperdollItem> getPaperdollInfo() { + return objpaperdoll; + } + public void setPaperdollInfo(Vector<PaperdollItem> i) { + objpaperdoll = i; + } + PaperdollItem getItemPaperdoll(int frame, int spot) { + if (spot == Ready.both_hands) + spot = Ready.lhand; + else if (spot == Ready.lrgloves) + spot = Ready.lfinger; + else if (spot == Ready.neck) + spot = Ready.amulet; + else if (spot == Ready.scabbard) + spot = Ready.belt; + PaperdollItem inf = BaseInfo.FrameInfo.searchDoubleWildCards( + objpaperdoll, frame, spot); + return inf; + } public final boolean isObjectAllowed(int frame, int spot) { - return true;// +++++FINISHreturn get_item_paperdoll(frame, spot) != 0; + return true;// +++++FINISHreturn getItemPaperdoll(frame, spot) != null; } public Vector<ContentRules> getContentRules() { return cntrules; } Added: ExultAndroid/src/com/exult/android/shapeinf/PaperdollItem.java =================================================================== --- ExultAndroid/src/com/exult/android/shapeinf/PaperdollItem.java (rev 0) +++ ExultAndroid/src/com/exult/android/shapeinf/PaperdollItem.java 2011-02-25 05:05:14 UTC (rev 6913) @@ -0,0 +1,89 @@ +package com.exult.android.shapeinf; +import java.io.PushbackInputStream; +import java.io.InputStream; +import com.exult.android.ShapeInfo; +import com.exult.android.EUtil; +import com.exult.android.DataUtils; +import java.io.InputStream; + +import com.exult.android.ShapeInfo; +/* + * Information about an object's paperdoll. + * This is meant to be stored in a totally ordered vector. + */ +public class PaperdollItem extends BaseInfo.FrameInfo { + // FrameInfo.frame is the frame in the world (-1 for all) + // FrameInfo.quality is the spot placed in. + private short type; // For weapons, the arm frame type to use. + // For headgear, head frame to use. + // Meaningless for all others. + private boolean translucent; // If the paperdoll should be drawn translucently or not + private boolean gender; // Is this object gender specific + + private short shape; // The shape (if -1 use world shape and frame) + private short frames[] = new short[4]; // The paperdoll frame and alternates. + + private boolean readNew(InputStream in, int version, boolean patch, int game, + ShapeInfo info) { + PushbackInputStream txtin = (PushbackInputStream)in; + frame = (short)EUtil.ReadInt(txtin); + translucent = EUtil.ReadInt(txtin) != 0; + int ty = EUtil.ReadInt(txtin); + if (ty == -255) { // 'Invalid' marker. + setInvalid(true); + return true; // Ignore remainder of the line. + } + if (quality != 0 && quality != 3) // Field only valid for these spots. + type = 0; // Ignore it. + else if (version == 1) { + switch (ty) // Convert old data. + { + case 2: + case 7: + type = 1; break; + case 3: + type = 2; break; + default: + type = 0; break; + } + } else + type = (short)ty; + gender = EUtil.ReadInt(txtin) != 0; + shape = (short)EUtil.ReadInt(txtin); + frames[0] = (short)EUtil.ReadInt(txtin); + // Not all items have all entries; those that need, do, though. + frames[1] = (short)EUtil.ReadInt(txtin, -1); + frames[2] = (short)EUtil.ReadInt(txtin, -1); + frames[3] = (short)EUtil.ReadInt(txtin, -1); + + info.setPaperdollInfo(addVectorInfo(this, info.getPaperdollInfo())); + return true; + } + @Override + public boolean read(InputStream in, int version, boolean patch, int game, + ShapeInfo info) { + return (new PaperdollItem()).readNew(in, version, patch, game, info); + } + public void invalidate() + { type = -255; setInvalid(true); } + public int getWorldFrame() + { return frame; } + public int getObjectSpot() + { return quality; } + public short getSpotFrame() + { return type; } + public boolean isTranslucent() + { return translucent; } + public boolean isGenderBased() + { return gender; } + public int getPaperdollShape() + { return shape; } + public int getPaperdollBaseframe() { + return frames[0]; + } + public int getPaperdollFrame(int num) { + if (num < 4) + return frames[num]; + return num; + } +} Property changes on: ExultAndroid/src/com/exult/android/shapeinf/PaperdollItem.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |