Exemple #1
0
 public CampaignInfo()
 {
     campaignId = String.Empty;
     campaignName = String.Empty;
     ListPlayerInfo = new List<PlayerInfo>();
     FieldDimension = new clsSektorKoordinaten();
     SektorField = new SektorInfo[0, 0];
     ListUnits = new List<UnitInfo>();
     objCampaignData = new CampaignState();
 }
        public string saveGameState(CampaignState state)
        {
            string strState = state.ToString();
            string timeKey = DateTime.Now.ToString("s");
            bool ret = m_db.Set(timeKey, strState);
            m_db.SaveIndex();

            if (ret)
                return timeKey;
            else
                throw new Exception("did not save");
        }
        private CampaignState getTestState()
        {
            CampaignState result = new CampaignState();

            var fixture = new Fixture();
            result.CampaignId = fixture.Create<string>();
            result.CampaignName = fixture.Create<string>();
            result.ListPlayers = fixture.Create<List<PlayerInfo>>();
            result.ListSektorInfo = fixture.Create<List<SektorInfo>>();
            result.FieldDimension = fixture.Create<clsSektorKoordinaten>();
            result.FieldType = fixture.Create<string>();
            result.ListUnitInfo = fixture.Create<List<UnitInfo>>();
            result.ListUnitTypes = fixture.Create<List<UnitTypeInfo>>();
            result.ListResourceInfo = fixture.Create<List<ResourceInfo>>();
            return result;
        }
 public CampaignState getState()
 {
     CampaignState state = new CampaignState();
     state.CampaignName = this.CampaignName;
     state.CampaignId = this.CampaignId;
     state.ListPlayers = this.lisPlayers.Select(p => p.getPlayerInfo()).ToList<PlayerInfo>();
     //state.DicSektors = this.FieldField.dicSektors;
     //state.ListSektorInfo = this.FieldField.dicSektors.Select(s => s.Value.getInfo
     state.FieldDimension = this.FieldField.FieldDimension;
     state.FieldType = this.FieldField.GetType().AssemblyQualifiedName;
     state.ListUnitInfo = this.getUnitInfo();
     state.ListUnitTypes = clsUnit.objUnitTypeFountain.UnitTypeList;
     state.ListResourceInfo = this.ResourceHandler.getResourceInfo();
     return state;
 }
        public static CampaignEngine restoreFromState(CampaignState state)
        {
            List<Player> lstPlayers = new List<Player>();
            foreach (var pi in state.ListPlayers)
            {
                Player p = new Player(pi);
                lstPlayers.Add(p);
            }

            // Feld erstellen;
            //Type fieldType = Type.GetType(state.getFieldtype());  // Todo: GetType funktioniert nicht obwohl GenericCampaignMasterModel.Field korrekt ist

            // Feld mit Sektoren erzeugen.
            clsSektorKoordinaten objSekKoord = state.FieldDimension;
            Type fieldType = typeof(GenericCampaignMasterModel.Field);
            Field field = (Field)Activator.CreateInstance(fieldType, new object[] { objSekKoord });

            // Engine erstellen
            CampaignEngine engine = new CampaignEngine((Field)field);
            engine.CampaignId = state.CampaignId;
            engine.CampaignName = state.CampaignName;
            engine.setPlayerList(lstPlayers);

            clsUnit.objUnitTypeFountain.dicUnitTypeData = state.getDicUnitTypeInfo();

            // Units platzieren
            foreach (UnitInfo uInfo in state.ListUnitInfo)
            {
                //UnitTypeBase newUnitType = (UnitTypeBase)Activator.CreateInstance(unitType);

                Player aktP = (from p in lstPlayers
                               where p.Id == uInfo.playerId
                               select p).First();

                clsUnit unit = aktP.getUnitByID(uInfo.unitId);

                //clsUnit unit = new clsUnit(uInfo.unitId);
                field.dicSektors[uInfo.sektorId].addUnit(unit);
            }

            // Ressourcehandler erzeugen und Ressourcen wiederherstellen
            ResourceHandler resHandler = new ResourceHandler();
            engine.ResourceHandler = resHandler;
            foreach (ResourceInfo resInfo in state.ListResourceInfo)
            {
                string strResType = resInfo.resourceableType;
                Type resType = Type.GetType(strResType);
                Object typeObj = Activator.CreateInstance(resType);

                Player resourceOwner = (from p in lstPlayers
                                        where p.Id == resInfo.ownerId
                                        select p).First() as Player;

                resHandler.addRessourcableObject(resourceOwner, (IResourceable)typeObj);
            }

            return engine;
        }
 private CampaignState getEmptyTestState()
 {
     CampaignState result = new CampaignState();
     return result;
 }