Example #1
0
 private static SpaceshipRig RigByGuid(Guid guid)
 {
     if (guid == Guid.Empty)
     {
         return(null);
     }
     if (rigGuidDict == null)
     {
         rigGuidDict = new Dictionary <Guid, SpaceshipRig>();
     }
     if (rigGuidDict.ContainsKey(guid))
     {
         return(rigGuidDict[guid]);
     }
     else
     {
         string q = SpaceshipRigQuery(0, 0, "", false);
         q += $" AND rig_code = CAST('{guid.ToString()}' AS uniqueidentifier)";
         SqlDataReader r      = DataConnection.GetReader(q);
         SpaceshipRig  curRig = null;
         if (r.HasRows)
         {
             r.Read();
             curRig = new SpaceshipRig(r);
         }
         r.Close();
         return(curRig);
     }
 }
Example #2
0
        public HttpResponseMessage StartBattleWithRigInDb(int battleSceneId)
        {
            string steamId  = User.Identity.Name;
            int    playerId = PlayerDataSql.PlayerId(steamId);

            SpaceshipRig rig = SpaceshipRig.RigForBattle(playerId, battleSceneId);

            Battle battle = null;

            if (rig != null)
            {
                if (rig.Id == 0)
                {
                    rig.SaveData(playerId, "");
                }
            }
            else
            {
                rig = SpaceshipRig.RigForBattle(playerId, battleSceneId);
            }

            battle     = Battle.CreateBattle(playerId, battleSceneId, rig.Id, true);
            battle.Rig = rig;


            string serializedElement = JsonConvert.SerializeObject(battle);

            serializedElement = CommonFunctions.Compress(serializedElement);
            var response = new HttpResponseMessage(HttpStatusCode.OK);

            response.Content = new StringContent(serializedElement);
            return(response);
        }
Example #3
0
 public PlayerAsset(int playerId)
 {
     Rigs     = SpaceshipRig.PlayerRigs(playerId);
     Officers = Crew.CrewOfficer.OfficersForPlayer(playerId, false);
     Ships    = Ship.PlayerShips(playerId);
     Modules  = ShipModule.PlayerModules(playerId);
     //CreateModuleTypeDictionary();
 }
Example #4
0
    public void CalculateParameters()
    {
        SpaceshipRig Rig = EnemyType.Rig;

        /*Rig.RecalculateParameters();
         * pEnemyStructurePoints = (int)Math.Round(EnemyStatsMultiplier * Rig.Params.ParameterValue(SpaceshipParameters.SpaceShipParameter.StructureHitpoints));
         * pEnemyShieldPoints = (int)Math.Round(EnemyStatsMultiplier * Rig.Params.ParameterValue(SpaceshipParameters.SpaceShipParameter.ShieldPoints));
         * pEnemyShieldRegen = (int)Math.Round(EnemyStatsMultiplier * Rig.Params.ParameterValue(SpaceshipParameters.SpaceShipParameter.ShieldRegen));*/
    }
Example #5
0
 private static void UpdateRigDict(SpaceshipRig rig)
 {
     if (StaticMembers.rigsDict == null)
     {
         StaticMembers.rigsDict = new Dictionary <int, SpaceshipRig>();
     }
     if (!StaticMembers.rigsDict.ContainsKey(rig.Id))
     {
         StaticMembers.rigsDict.Add(rig.Id, rig);
     }
 }
Example #6
0
        private void buttonCreateRig_Click(object sender, EventArgs e)
        {
            ShipModel curModel = GetCurrentModel();

            if (curModel == null)
            {
                return;
            }

            saRig = new SpaceshipRig();
            saRig.LoadShipModel(curModel);
            FillRig();
        }
Example #7
0
        public HttpResponseMessage RigForBattle(int BattleSceneId)
        {
            string steamId  = User.Identity.Name;
            int    playerId = PlayerDataSql.PlayerId(steamId);

            var rig = SpaceshipRig.RigForBattle(playerId, BattleSceneId);

            string serializedElement = JsonConvert.SerializeObject(rig);
            var    response          = new HttpResponseMessage(HttpStatusCode.OK);

            response.Content = new StringContent(serializedElement);
            return(response);
        }
Example #8
0
        public HttpResponseMessage RegisterRigCompleted(SpaceshipRig rig)
        {
            string steamId  = User.Identity.Name;
            int    playerId = PlayerDataSql.PlayerId(steamId);

            if (rig != null)
            {
                rig.SaveData(playerId, "");
            }

            var response = new HttpResponseMessage(HttpStatusCode.OK);

            return(response);
        }
Example #9
0
    public static SpaceshipRig RigById(int id)
    {
        if (id == 0)
        {
            return(null);
        }
        if (StaticMembers.rigsDict == null)
        {
            StaticMembers.rigsDict = new Dictionary <int, SpaceshipRig>();
        }
        if (!StaticMembers.rigsDict.ContainsKey(id))
        {
            SpaceshipRig newRig = new SpaceshipRig(id);
            StaticMembers.rigsDict.Add(newRig.Id, newRig);
        }

        return(StaticMembers.rigsDict[id]);
    }
Example #10
0
        private void buttonSaDeleteRig_Click(object sender, EventArgs e)
        {
            TreeNode n = treeSaRigs.SelectedNode;

            if (n == null)
            {
                return;
            }
            SpaceshipRig rig = (SpaceshipRig)n.Tag;

            if (MessageBox.Show(null, "Delete rig?", "", MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            rig.Delete();
            treeSaRigs.Nodes.Remove(n);
        }
Example #11
0
        public HttpResponseMessage ContinueBattle(int battleSceneId)
        {
            string steamId  = User.Identity.Name;
            int    playerId = PlayerDataSql.PlayerId(steamId);

            Battle      battle  = Battle.BattleByTypeId(playerId, battleSceneId);
            BattleScene tBattle = new BattleScene(BattleSceneType.SceneById(battleSceneId));

            battle.battleScene = new UnityBattleScene(tBattle);
            battle.Rig         = SpaceshipRig.RigById(battle.RigId);

            string serializedElement = JsonConvert.SerializeObject(battle);

            serializedElement = CommonFunctions.Compress(serializedElement);
            var response = new HttpResponseMessage(HttpStatusCode.OK);

            response.Content = new StringContent(serializedElement);
            return(response);
        }
Example #12
0
        private void FillRigTree()
        {
            treeSaRigs.Nodes.Clear();
            string rigQuery;

            rigQuery = SpaceshipRig.SpaceshipRigQuery(0, 0, "", false);
            SqlDataReader r = DataConnection.GetReader(rigQuery);

            if (r.HasRows)
            {
                while (r.Read())
                {
                    SpaceshipRig rig = new SpaceshipRig(r);
                    TreeNode     n   = treeSaRigs.Nodes.Add(rig.ToString());
                    n.Tag = rig;
                }
            }
            r.Close();
        }
Example #13
0
        private void buttonLoadPlayerShip_Click(object sender, EventArgs e)
        {
            if (treePlayerShipsRig.SelectedNode == null)
            {
                return;
            }
            Ship ship = (Ship)treePlayerShipsRig.SelectedNode.Tag;

            ship.Model.ClearSlotDuplicates();

            saRig = new SpaceshipRig();
            saRig.LoadShip(ship);
            FillRig();
            SpaceShipParameters Params = new SpaceShipParameters();

            Params.rig = saRig;
            Params.CalculateParameters();
            textSaBottomLine.Text = Params.BottomLineString();
        }
Example #14
0
        private void buttonSaLoadRig_Click(object sender, EventArgs e)
        {
            TreeNode n = treeSaRigs.SelectedNode;

            if (n == null)
            {
                return;
            }
            SpaceshipRig rig = (SpaceshipRig)n.Tag;

            saRig                    = rig;
            textSaRigTag.Text        = rig.Tag;
            checkSaForPlayer.Checked = saRig.PlayerId > 0;
            FillRig();
            SpaceShipParameters Params = new SpaceShipParameters();

            Params.rig = saRig;
            Params.CalculateParameters();
            textSaBottomLine.Text = Params.BottomLineString();
        }
Example #15
0
    public static SpaceshipRig RigForPlayer(int playerId)
    {
        SpaceshipRig  tRig = null;
        string        q    = SpaceshipRigQuery(0, playerId, "", false);
        SqlDataReader r    = DataConnection.GetReader(q);

        if (r.HasRows)
        {
            r.Read();
            tRig = new SpaceshipRig(r);
        }
        r.Close();
        if (tRig != null)
        {
            return(tRig);
        }


        List <Ship> ships = Ship.PlayerShips(playerId);

        if (ships.Count == 0)
        {
            return(null);
        }
        tRig = new SpaceshipRig();
        tRig.LoadShip(ships[0]);

        var moduleList = ShipModule.PlayerModules(playerId);

        tRig.LoadModules(moduleList);

        List <CrewOfficer> officers = CrewOfficer.OfficersForPlayer(playerId, true);

        officers.Add(new CrewOfficer(playerId));
        tRig.LoadOfficers(officers);
        return(tRig);
    }
Example #16
0
    /// <summary>
    /// Возвращает имя и идентификатор объекта, который в данный момент доступен для игрока.
    /// Начинается всё со сцены истории story 1 потом битва и так далее пока не дойдёт до
    /// базы. Там будем разрабатывать систему миссий которая будет выглядеть несколько
    /// по-другому.
    /// </summary>
    /// <param name="steamId"></param>
    /// <returns></returns>
    public static StringAndInt NextStoryObject(string steamId)
    {
        int          playerId = PlayerId(steamId);
        StringAndInt curData  = PlayerStoryFlowHub.CurrentProgressElementForPlayer(playerId).ToStringAndInt();

        //Если битва еще не началась, то игрока надо кинуть на сцену рига корабля
        if (curData.StrValue == "battle")
        {
            int battleId = curData.IntValue;

            //Проверка на то, что битва уже идёт
            Battle curBattle = Battle.BattleByTypeId(playerId, battleId);

            //Если битва не идёт надо проверить нет ли уже готового рига под эту битву
            if (curBattle == null)
            {
                SpaceshipRig rig = SpaceshipRig.RigForBattle(playerId, battleId);
                if (rig == null)
                {
                    curData.StrValue = "rig";
                }
                else
                {
                    curData.StrValue = "launch battle";
                }
            }
        }

        //Если следующий объект истории - станция, тогда нужно поставить специальную пометку в профиль игрока что у него есть станция
        if (curData.StrValue == "station")
        {
            PlayerStoryFlowHub.SetStationAvailable(playerId);
        }

        return(curData);
    }
Example #17
0
    public string SaveData(int playerId, string tag)
    {
        if (playerId > 0)
        {
            SpaceshipRig rigByGuid = RigByGuid(this.RigCode);
            if (rigByGuid != null)
            {
                if (rigByGuid.PlayerId != playerId)
                {
                    return("Wrong guid");
                }
                Id = rigByGuid.Id;
            }
        }


        string        q;
        List <string> names = new List <string> {
            tag
        };
        int shipId = 0;

        if (Ship != null)
        {
            Ship baseShip = Ship.GetShipByGuid(Ship.ShipCode);
            if (baseShip == null)
            {
                return("ship can't be found");
            }
            if (baseShip.PlayerId != playerId)
            {
                return("Error ship ownership");
            }
            Ship   = baseShip;
            shipId = Ship.Id;
        }

        if (Id == 0)
        {
            if (RigCode == Guid.Empty)
            {
                RigCode = Guid.NewGuid();
            }
            q  = $@"
                INSERT INTO ss_rigs(ship_model_id, ship_id, player_id, tag, rig_code, for_battle_id) 
                             VALUES({sModel.Id}, {shipId}, {playerId}, @str1, CAST('{RigCode.ToString()}' AS uniqueidentifier), {ForBattleId})
                SELECT @@IDENTITY AS Result";
            Id = DataConnection.GetResultInt(q, names);
        }
        else
        {
            q = $@"
                UPDATE ss_rigs SET
                    ship_model_id = {sModel.Id},
                    ship_id = {shipId},
                    player_id = {playerId},
                    tag = @str1,
                    for_battle_id = {ForBattleId}
                WHERE
                    id = {Id}";
            DataConnection.Execute(q, names);
        }

        string idsDoNotDelete = "";

        if (Slots.Count > 0)
        {
            foreach (RigSlot slot in Slots)
            {
                slot.SaveData(Id);
                if (idsDoNotDelete != "")
                {
                    idsDoNotDelete += ",";
                }
                idsDoNotDelete += slot.Id;
            }
        }

        q = $"DELETE FROM ss_rigs_slots WHERE ss_rig_id = {Id} ";
        if (idsDoNotDelete != "")
        {
            q += " AND id NOT IN (" + idsDoNotDelete + ")";
        }
        DataConnection.Execute(q);

        UpdateRigDict(this);

        if (Ship != null)
        {
            Ship.RigId = Id;
            Ship.Save();
        }

        return("");
    }
Example #18
0
 private void LoadRigs()
 {
     rigList = SpaceshipRig.BuiltInRigs();
 }