/* * Copyright (c) 2015 Shervin Asgari * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package no.asgari.civilization.server.model; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import no.asgari.civilization.server.SheetName; @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT, property = "type") @JsonSubTypes({ @JsonSubTypes.Type(value = Citystate.class, name = "citystate"), @JsonSubTypes.Type(value = Civ.class, name = "civ"), @JsonSubTypes.Type(value = CultureI.class, name = "cultureI"), @JsonSubTypes.Type(value = CultureII.class, name = "cultureII"), @JsonSubTypes.Type(value = CultureIII.class, name = "cultureIII"), @JsonSubTypes.Type(value = GreatPerson.class, name = "greatperson"), @JsonSubTypes.Type(value = Hut.class, name = "hut"), @JsonSubTypes.Type(value = Tile.class, name = "tile"), @JsonSubTypes.Type(value = Village.class, name = "village"), @JsonSubTypes.Type(value = Wonder.class, name = "wonder"), @JsonSubTypes.Type(value = Infantry.class, name = "infantry"), @JsonSubTypes.Type(value = Mounted.class, name = "mounted"), @JsonSubTypes.Type(value = Artillery.class, name = "artillery"), @JsonSubTypes.Type(value = Aircraft.class, name = "aircraft"), @JsonSubTypes.Type(value = Tech.class, name = "tech"), @JsonSubTypes.Type(value = SocialPolicy.class, name = "socialpolicy") }) public interface Spreadsheet { public abstract SheetName getSheetName(); /** * Is used to reveal hidden public information about the item. Will not reveal the content, just the type* */ @JsonIgnore public abstract String revealPublic(); @JsonIgnore /** Is used to hidden all information about the item. **/ public abstract String revealAll(); }