Android Open Source - android-store Virtual Item






From Project

Back to project page android-store.

License

The source code is released under:

Copyright (c) 2012 SOOMLA http://project.soom.la/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to...

If you think the Android project android-store listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2012-2014 Soomla Inc.// www. j a v a2 s  .c om
 *
 * 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 com.soomla.store.domain;

import com.soomla.SoomlaEntity;
import com.soomla.SoomlaUtils;
import com.soomla.store.data.StoreJSONConsts;

import org.json.JSONException;
import org.json.JSONObject;

/**
 * This is the parent class of all virtual items in the application.
 * Almost every entity in your virtual economy will be a virtual item. There are many types
 * of virtual items, each one will extend this class. Each one of the various types extends
 * <code>VirtualItem</code> and adds its own behavior on top of it.
 */
public abstract class VirtualItem extends SoomlaEntity<VirtualItem> {

    /**
     * Constructor.
     *
     * @param mName the name of the virtual item
     * @param mDescription the description of the virtual item
     * @param mItemId the itemId of the virtual item
     */
    public VirtualItem(String mName, String mDescription, String mItemId) {
        super(mName, mDescription, mItemId);
    }

    /**
     * Constructor.
     * Generates an instance of <code>VirtualItem</code> from the given <code>JSONObject</code>.
     *
     * @param jsonObject A JSONObject representation of the wanted <code>VirtualItem</code>.
     * @throws JSONException
     */
    public VirtualItem(JSONObject jsonObject) throws JSONException{
        super(jsonObject);
    }

    /**
     * Converts the current <code>VirtualItem</code> to a JSONObject.
     *
     * @return A <code>JSONObject</code> representation of the current <code>VirtualItem</code>.
     */
    public JSONObject toJSONObject(){
        return super.toJSONObject();
    }

    /**
     * Gives your user the given amount of the specific virtual item.
     * For example, when your users play your game for the first time you GIVE them 1000 gems.
     *
     * NOTE: This action is different than <code>PurchasableVirtualItem</code>'s <code>buy()</code>:
     * You use <code>give(int amount)</code> to give your user something for free.
     * You use <code>buy()</code> to give your user something and get something in return.
     *
     * @param amount the amount of the specific item to be given
     * @return balance after the giving process
     */
    public int give(int amount) {
        return give(amount, true);
    }

    /**
     * Works like {@link #give(int)} but receives an argument, notify, to indicate
     * if there has been a change in the balance of the current virtual item.
     *
     * @param amount the amount of the specific item to be given
     * @param notify notify of change in user's balance of current virtual item
     * @return balance after the giving process
     */
    public abstract int give(int amount, boolean notify);

    /**
     * Takes from your user the given amount of the specific virtual item.
     * For example, when your user requests a refund, you need to TAKE the item he/she is returning.
     *
     * @param amount the amount of the specific item to be taken
     * @return balance after the taking process
     */
    public int take(int amount) {
        return take(amount, true);
    }

    /**
     * Works like {@link #take(int)} but receives an argument, notify, to indicate
     * if there has been a change in the balance of the current virtual item.
     *
     * @param amount the amount of the specific item to be taken
     * @param notify notify of change in user's balance of current virtual item
     * @return balance after the taking process
     */
    public abstract int take(int amount, boolean notify);

    /**
     * Resets this <code>VirtualItem</code>'s balance to the given balance.
     *
     * @param balance the balance of the current virtual item
     * @return balance after the reset process
     */
    public int resetBalance(int balance) {
        return resetBalance(balance, true);
    }

    /**
     * Works like {@link #resetBalance(int)} but receives an argument, notify, to indicate
     * if there has been a change in the balance of the current virtual item.
     *
     * @param balance the balance of the current virtual item
     * @param notify notify of change in user's balance of current virtual item
     * @return balance after the reset process
     */
    public abstract int resetBalance(int balance, boolean notify);

    public String getItemId(){
        return mID;
    }


    /** Private Members **/

    private static final String TAG = "SOOMLA VirtualItem"; //used for Log messages
}




Java Source Code List

com.soomla.example.ExampleEventHandler.java
com.soomla.example.MuffinRushAssets.java
com.soomla.example.StoreExampleActivity.java
com.soomla.example.StoreGoodsActivity.java
com.soomla.example.StorePacksActivity.java
com.soomla.rewards.VirtualItemReward.java
com.soomla.store.IStoreAssets.java
com.soomla.store.SoomlaStore.java
com.soomla.store.StoreConfig.java
com.soomla.store.StoreForeground.java
com.soomla.store.StoreInventory.java
com.soomla.store.billing.IIabService.java
com.soomla.store.billing.IabCallbacks.java
com.soomla.store.billing.IabException.java
com.soomla.store.billing.IabHelper.java
com.soomla.store.billing.IabInventory.java
com.soomla.store.billing.IabPurchase.java
com.soomla.store.billing.IabResult.java
com.soomla.store.billing.IabSkuDetails.java
com.soomla.store.data.StorageManager.java
com.soomla.store.data.StoreInfo.java
com.soomla.store.data.StoreJSONConsts.java
com.soomla.store.data.VirtualCurrencyStorage.java
com.soomla.store.data.VirtualGoodsStorage.java
com.soomla.store.data.VirtualItemStorage.java
com.soomla.store.domain.MarketItem.java
com.soomla.store.domain.PurchasableVirtualItem.java
com.soomla.store.domain.VirtualCategory.java
com.soomla.store.domain.VirtualItem.java
com.soomla.store.domain.virtualCurrencies.VirtualCurrencyPack.java
com.soomla.store.domain.virtualCurrencies.VirtualCurrency.java
com.soomla.store.domain.virtualGoods.EquippableVG.java
com.soomla.store.domain.virtualGoods.LifetimeVG.java
com.soomla.store.domain.virtualGoods.SingleUsePackVG.java
com.soomla.store.domain.virtualGoods.SingleUseVG.java
com.soomla.store.domain.virtualGoods.UpgradeVG.java
com.soomla.store.domain.virtualGoods.VirtualGood.java
com.soomla.store.events.BillingNotSupportedEvent.java
com.soomla.store.events.BillingSupportedEvent.java
com.soomla.store.events.CurrencyBalanceChangedEvent.java
com.soomla.store.events.GoodBalanceChangedEvent.java
com.soomla.store.events.GoodEquippedEvent.java
com.soomla.store.events.GoodUnEquippedEvent.java
com.soomla.store.events.GoodUpgradeEvent.java
com.soomla.store.events.IabServiceStartedEvent.java
com.soomla.store.events.IabServiceStoppedEvent.java
com.soomla.store.events.ItemPurchaseStartedEvent.java
com.soomla.store.events.ItemPurchasedEvent.java
com.soomla.store.events.MarketItemsRefreshFinishedEvent.java
com.soomla.store.events.MarketItemsRefreshStartedEvent.java
com.soomla.store.events.MarketPurchaseCancelledEvent.java
com.soomla.store.events.MarketPurchaseEvent.java
com.soomla.store.events.MarketPurchaseStartedEvent.java
com.soomla.store.events.MarketRefundEvent.java
com.soomla.store.events.RestoreTransactionsFinishedEvent.java
com.soomla.store.events.RestoreTransactionsStartedEvent.java
com.soomla.store.events.SoomlaStoreInitializedEvent.java
com.soomla.store.events.UnexpectedStoreErrorEvent.java
com.soomla.store.exceptions.InsufficientFundsException.java
com.soomla.store.exceptions.NotEnoughGoodsException.java
com.soomla.store.exceptions.VirtualItemNotFoundException.java
com.soomla.store.purchaseTypes.PurchaseType.java
com.soomla.store.purchaseTypes.PurchaseWithMarket.java
com.soomla.store.purchaseTypes.PurchaseWithVirtualItem.java