00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 package com.realtime.crossfire.jxclient.faces;
00023
00024 import java.util.Arrays;
00025 import org.jetbrains.annotations.NotNull;
00026
00031 public class FaceCache {
00032
00036 @NotNull
00037 private final Face[] faces = new Face[65536];
00038
00042 public FaceCache() {
00043 faces[0] = new Face(0, "empty", 0);
00044 }
00045
00050 public void addFace(@NotNull final Face face) {
00051 faces[face.getFaceNum()] = face;
00052 }
00053
00059 @NotNull
00060 public Face getFace(final int faceNum) {
00061 final Face face = faces[faceNum];
00062 if (face != null) {
00063 return face;
00064 }
00065
00066 System.err.println("Warning: accessing undefined face "+faceNum);
00067 faces[faceNum] = new Face(faceNum, "face#"+faceNum, 0);
00068 return faces[faceNum];
00069 }
00070
00075 public void reset() {
00076 Arrays.fill(faces, null);
00077 faces[0] = new Face(0, "empty", 0);
00078 }
00079
00087 public void addFace(final int faceNum, final int faceSetNum, final int faceChecksum, @NotNull final String faceName) {
00088
00089 if (faces[faceNum] != null) {
00090 System.err.println("Warning: defining duplicate face "+faceNum+" ("+faceName+")");
00091 }
00092 faces[faceNum] = new Face(faceNum, faceName, faceChecksum);
00093 }
00094
00095 }