using UnityEngine;
using System.Collections;
using CommonAIClient.Unity.Utils;
using System;
using CommonAI.ZoneClient;
using CommonAIClient.Client;

namespace CommonAIClient.Unity.Battle
{
    public abstract class BattleFactroy
    {
        private static BattleFactroy gInstance;

        public static BattleFactroy Instance
        {
            get { return gInstance; }
        }

        protected BattleFactroy()
        {
            gInstance = this;
        }

        public abstract BattleScene CreateBattleScene(AbstractBattle battle);
        public abstract GameObjectAdapter GameObjectAdapter { get; }
        public abstract TerrainAdapter TerrainAdapter { get; }
        public abstract SoundAdapter SoundAdapter { get; }
        public abstract int StageNavLay { get; }
        public abstract DisplayCell CreateDisplayCell(GameObject root, string name = "DisplayCell");
        public abstract ComAICell CreateComAICell(BattleScene battleScene, CommonAI.ZoneClient.ZoneObject obj);
        public abstract void OnError(string msg);
        public abstract void MakeDamplingJoint(GameObject body, GameObject form, GameObject to);
    }

}