public void LoadData()
        {
            var patron = (Patron)Session["Patron"];

            int tp = PatronPoints.GetTotalPatronPoints(patron.PID);

            lblPoints.Text = tp.ToInt();
            var pgm = Programs.FetchObject(patron.ProgID);

            if (pgm.ProgramGameID > 0)
            {
                if (ProgramGame.FetchObject(pgm.ProgramGameID) != null)
                {
                    LoadNextLevelInfo(patron, pgm, tp);
                }
            }
        }
        public void GetGameInfo(Patron patron, Programs pgm, int StartingPoints, out int level, out int points, out bool bonus)
        {
            //Tally up the points
            level  = 0;
            points = 0;
            bonus  = false;
            if (pgm.ProgramGameID > 0)
            {
                // only if we have a game we can earn badges by reading ....
                var gm = ProgramGame.FetchObject(pgm.ProgramGameID);
                var ds = ProgramGameLevel.GetAll(gm.PGID);

                var normalLevelTotalPoints = GetGameCompletionPoints(ds);
                var bonusLevelTotalPoints  = GetGameCompletionBonusPoints(ds, gm.BonusLevelPointMultiplier);

                bonus = (StartingPoints > normalLevelTotalPoints);

                // loop thru the levels to see where we are at ... before awarding the new points
                var rp = StartingPoints;   //remaining points
                if (bonus)
                {
                    // if we are on the bonus, eliminate the "fully completed boards/levels) and then see what the remainder of the points is.
                    rp    = rp - normalLevelTotalPoints;
                    level = ds.Tables[0].Rows.Count + 1;   // completed all the levels for the "normal"

                    level = level + (int)((int)rp / (int)bonusLevelTotalPoints) * (ds.Tables[0].Rows.Count + 1);

                    rp = rp % bonusLevelTotalPoints;
                }

                for (var i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    var multiplier  = (bonus ? gm.BonusLevelPointMultiplier : 1.00m);
                    var levelPoints = Convert.ToInt32(Convert.ToInt32(ds.Tables[0].Rows[i]["PointNumber"]) * multiplier);
                    rp = rp - levelPoints;
                    if (rp < 0)
                    {
                        points = -rp;
                        break;
                    }
                    level++;
                }
            }
        }
示例#3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Session["Patron"] == null)
                {
                    Response.Redirect("/");
                }

                var patron   = (Patron)Session["Patron"];
                var pgm      = Programs.FetchObject(patron.ProgID);
                int tp       = PatronPoints.GetTotalPatronPoints(patron.PID);
                var gm       = ProgramGame.FetchObject(pgm.ProgramGameID);
                var defMGID1 = 0;
                var defMGID2 = 0;
                if (gm != null)
                {
                    defMGID1 = gm.Minigame1ID;
                    defMGID2 = gm.Minigame2ID;
                }

                /*
                 * string LevelIDs = GetGameInfo(patron, pgm, gm, tp);
                 *
                 * var getMinigames0 = DAL.Programs.GetProgramMinigames(LevelIDs, 0, defMGID1);
                 * rptrx1.DataSource = getMinigames0;
                 * rptrx1.DataBind();
                 * var getMinigames1 = DAL.Programs.GetProgramMinigames(LevelIDs, 1, defMGID2);
                 * rptrx2.DataSource = getMinigames1;
                 * rptrx2.DataBind();
                 */

                var getMinigames0 = DAL.Minigame.GetMinigamesList(GetMGIDs(patron, pgm, gm, tp, defMGID1, 1));
                rptrx1.DataSource = getMinigames0;
                rptrx1.DataBind();
                var getMinigames1 = DAL.Minigame.GetMinigamesList(GetMGIDs(patron, pgm, gm, tp, defMGID2, 2));
                rptrx2.DataSource = getMinigames1;
                rptrx2.DataBind();

                NoAdventures.Visible = getMinigames0.Tables[0].Rows.Count == 0 &&
                                       getMinigames1.Tables[0].Rows.Count == 0;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                SetPageRibbon(StandardModuleRibbons.SetupRibbon());
            }

            //MasterPage.RequiredPermission = PERMISSIONID;
            MasterPage.IsSecure  = true;
            MasterPage.PageTitle = string.Format("{0}", "Game Level Add / Edit");

            if (!IsPostBack)
            {
                lblPK.Text = Request["PK"];
                PGID.Text  = Request["PK2"];
                if (lblPK.Text.Length == 0 && PGID.Text == "")
                {
                    Response.Redirect("ProgramGameLevelList.aspx");
                }
                if (PGID.Text != "")
                {
                    var o = ProgramGame.FetchObject(int.Parse(PGID.Text));
                    lblGameName.Text = o.GameName;
                }
                if (lblPK.Text.Length == 0)
                {
                    dv.ChangeMode(DetailsViewMode.Insert);
                }
                else
                {
                    dv.ChangeMode(DetailsViewMode.Edit);
                    var o = ProgramGame.FetchObject(ProgramGameLevel.FetchObject(int.Parse(lblPK.Text)).PGID);
                    PGID.Text        = o.PGID.ToString();
                    lblGameName.Text = o.GameName;
                }
                Page.DataBind();
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            var patron = Session[SessionKey.Patron] as Patron;

            if (patron == null)
            {
                Response.Redirect("~");
            }

            Programs    pg = null;
            ProgramGame gm = null;
            var         pp = 0;

            try {
                pg = Programs.FetchObject(patron.ProgID);
                gm = GetGame(patron);
                pp = PatronPoints.GetTotalPatronPoints(patron.PID);
            } catch {
                pg = null;
                gm = null;
            }
            if (pg == null || gm == null)
            {
                Response.Redirect(Server.MapPath("~/images/game_map_icon.png"));
            }

            var PID        = pg.PID;
            var numSquares = gm.BoardWidth;
            var width      = 800;
            var height     = 800;

            var squareSize = width / numSquares;

            width = height = squareSize * numSquares;

            var backImageFile   = Server.MapPath(new Logic.Game().GetGameboardPath(patron, gm.PGID));
            var stampImageFile  = Server.MapPath(string.Format(StampBasePath, gm.PGID));
            var avatarImageFile = Server.MapPath(string.Format(AvatarBasePath, patron.AvatarID));

            var newBmp = new System.Drawing.Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

            System.Drawing.Image avatarImage = null;
            System.Drawing.Image stampImage  = null;
            ;
            try {
                newBmp.SetResolution(72, 72);
                newBmp.MakeTransparent();
            } catch { }

            var newGraphic = System.Drawing.Graphics.FromImage(newBmp);

            try {
                newGraphic.SmoothingMode     = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
                newGraphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                var backImage = System.Drawing.Image.FromFile(backImageFile);
                newGraphic.DrawImage(backImage, 0, 0, width, height);
            } catch { }

            try {
                avatarImage = System.Drawing.Image.FromFile(avatarImageFile);
            } catch { }
            try {
                stampImage = System.Drawing.Image.FromFile(stampImageFile);
            } catch { }
            // ----------------------------------------------
            if (Request["p"] != null)
            {
                int.TryParse(Request["p"].ToString(), out pp);
            }
            // -------------------------------------------
            var ds = ProgramGameLevel.GetAll(GetGame(patron).PGID);


            var normalLevelTotalPoints = GetGameCompletionPoints(ds);
            var bonusLevelTotalPoints  = GetGameCompletionBonusPoints(ds, patron);


            // in bonus levels if we have more points accumulated than the total normal level points
            var bonus        = (pp > normalLevelTotalPoints);
            var bonusPostfix = (bonus ? "Bonus" : "");
            var rp           = pp; //remaining points

            if (bonus)
            {
                // if we are on the bonus, eliminate the "fully completed boards/levels) and then see what the remainder of the points is.
                rp = rp - normalLevelTotalPoints;
                rp = rp % bonusLevelTotalPoints;
            }
            var idx = 0;

            // ----------------------------------------------

            for (var i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                idx++;
                var multiplier  = (bonus ? GetGame(patron).BonusLevelPointMultiplier : 1.00m);
                var levelPoints = Convert.ToInt32(Convert.ToInt32(ds.Tables[0].Rows[i]["PointNumber"]) * multiplier);

                var locX = Convert.ToInt32(ds.Tables[0].Rows[i]["LocationX" + bonusPostfix]) - 1;
                var locY = Convert.ToInt32(ds.Tables[0].Rows[i]["LocationY" + bonusPostfix]) - 1;
                rp = rp - levelPoints;
                if (rp < 0)
                {
                    if (avatarImage != null)
                    {
                        newGraphic.DrawImage(avatarImage, locX * squareSize, locY * squareSize, squareSize, squareSize);
                    }
                    break;
                }
                else
                {
                    if (stampImage != null)
                    {
                        newGraphic.DrawImage(stampImage, locX * squareSize, locY * squareSize, squareSize, squareSize);
                    }
                }
            }



            Response.ContentType = "image/png";
            EnableViewState      = false;
            newBmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);

            if (stampImage != null)
            {
                stampImage.Dispose();
            }
            if (avatarImage != null)
            {
                avatarImage.Dispose();
            }
            newGraphic.Dispose();
            newBmp.Dispose();
            Response.End();
        }
示例#6
0
        protected void DvItemCommand(object sender, DetailsViewCommandEventArgs e)
        {
            string returnURL = "~/ControlRoom/Modules/Setup/BoardGameList.aspx";
            string levelURL  = "~/ControlRoom/Modules/Setup/ProgramGameLevelList.aspx";

            if (e.CommandName.ToLower() == "back")
            {
                Response.Redirect(returnURL);
            }
            if (e.CommandName.ToLower() == "refresh")
            {
                try
                {
                    odsData.DataBind();
                    dv.DataBind();
                    dv.ChangeMode(DetailsViewMode.Edit);

                    var masterPage = (IControlRoomMaster)Master;
                    if (masterPage != null)
                    {
                        masterPage.PageMessage = SRPResources.RefreshOK;
                    }
                }
                catch (Exception ex)
                {
                    var masterPage = (IControlRoomMaster)Master;
                    masterPage.PageError = String.Format(SRPResources.ApplicationError1, ex.Message);
                }
            }
            if (e.CommandName.ToLower() == "add" || e.CommandName.ToLower() == "addandback")
            {
                try
                {
                    var obj = new ProgramGame();

                    obj.GameName = ((TextBox)((DetailsView)sender).FindControl("GameName")).Text;
                    //obj.MapImage = ((TextBox)((DetailsView)sender).FindControl("MapImage")).Text;
                    //obj.BonusMapImage = ((TextBox)((DetailsView)sender).FindControl("BonusMapImage")).Text;
                    obj.BoardWidth = FormatHelper.SafeToInt(((TextBox)((DetailsView)sender).FindControl("BoardWidth")).Text);
                    //obj.BoardHeight = FormatHelper.SafeToInt(((TextBox)((DetailsView)sender).FindControl("BoardHeight")).Text);
                    obj.BonusLevelPointMultiplier = FormatHelper.SafeToDecimal(((TextBox)((DetailsView)sender).FindControl("BonusLevelPointMultiplier")).Text);
                    //obj.LevelCompleteImage = ((TextBox)((DetailsView)sender).FindControl("LevelCompleteImage")).Text;

                    obj.AddedDate   = DateTime.Now;
                    obj.AddedUser   = ((SRPUser)Session[SessionData.UserProfile.ToString()]).Username; //"N/A";  // Get from session
                    obj.LastModDate = obj.AddedDate;
                    obj.LastModUser = obj.AddedUser;

                    if (obj.IsValid(BusinessRulesValidationMode.INSERT))
                    {
                        obj.Insert();
                        if (e.CommandName.ToLower() == "addandback")
                        {
                            Response.Redirect(returnURL);
                        }

                        lblPK.Text = obj.PGID.ToString();

                        odsData.DataBind();
                        dv.DataBind();
                        dv.ChangeMode(DetailsViewMode.Edit);

                        var masterPage = (IControlRoomMaster)Master;
                        masterPage.PageMessage = SRPResources.AddedOK;
                    }
                    else
                    {
                        var    masterPage = (IControlRoomMaster)Master;
                        string message    = String.Format(SRPResources.ApplicationError1, "<ul>");
                        foreach (BusinessRulesValidationMessage m in obj.ErrorCodes)
                        {
                            message = string.Format(String.Format("{0}<li>{{0}}</li>", message), m.ErrorMessage);
                        }
                        message = string.Format("{0}</ul>", message);
                        masterPage.PageError = message;
                    }
                }
                catch (Exception ex)
                {
                    var masterPage = (IControlRoomMaster)Master;
                    masterPage.PageError = String.Format(SRPResources.ApplicationError1, ex.Message);
                }
            }
            if (e.CommandName.ToLower() == "levels")
            {
                Response.Redirect(levelURL + "?PGID=" + ((DetailsView)sender).Rows[0].Cells[1].Text);
            }
            if (e.CommandName.ToLower() == "save" || e.CommandName.ToLower() == "saveandback")
            {
                try
                {
                    var obj = new ProgramGame();
                    int pk  = int.Parse(((DetailsView)sender).Rows[0].Cells[1].Text);
                    obj.Fetch(pk);

                    obj.GameName = ((TextBox)((DetailsView)sender).FindControl("GameName")).Text;
                    //obj.MapImage = ((TextBox)((DetailsView)sender).FindControl("MapImage")).Text;
                    //obj.BonusMapImage = ((TextBox)((DetailsView)sender).FindControl("BonusMapImage")).Text;
                    obj.BoardWidth = FormatHelper.SafeToInt(((TextBox)((DetailsView)sender).FindControl("BoardWidth")).Text);
                    //obj.BoardHeight = FormatHelper.SafeToInt(((TextBox)((DetailsView)sender).FindControl("BoardHeight")).Text);
                    obj.BonusLevelPointMultiplier = FormatHelper.SafeToDecimal(((TextBox)((DetailsView)sender).FindControl("BonusLevelPointMultiplier")).Text);
                    //obj.LevelCompleteImage = ((TextBox)((DetailsView)sender).FindControl("LevelCompleteImage")).Text;

                    obj.LastModDate = DateTime.Now;
                    obj.LastModUser = ((SRPUser)Session[SessionData.UserProfile.ToString()]).Username;  //"N/A";  // Get from session

                    if (obj.IsValid(BusinessRulesValidationMode.UPDATE))
                    {
                        obj.Update();
                        if (e.CommandName.ToLower() == "saveandback")
                        {
                            Response.Redirect(returnURL);
                        }

                        odsData.DataBind();
                        dv.DataBind();
                        dv.ChangeMode(DetailsViewMode.Edit);

                        var masterPage = (IControlRoomMaster)Master;
                        masterPage.PageMessage = SRPResources.SaveOK;
                    }
                    else
                    {
                        var    masterPage = (IControlRoomMaster)Master;
                        string message    = String.Format(SRPResources.ApplicationError1, "<ul>");
                        foreach (BusinessRulesValidationMessage m in obj.ErrorCodes)
                        {
                            message = string.Format(String.Format("{0}<li>{{0}}</li>", message), m.ErrorMessage);
                        }
                        message = string.Format("{0}</ul>", message);
                        masterPage.PageError = message;
                    }
                }
                catch (Exception ex)
                {
                    var masterPage = (IControlRoomMaster)Master;
                    masterPage.PageError = String.Format(SRPResources.ApplicationError1, ex.Message);
                }
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            var pg = new Programs();
            var gm = new ProgramGame();
            var pp = 0;

            try {
                pg = Programs.FetchObject(int.Parse(Session["PatronProgramID"].ToString()));
                gm = ProgramGame.FetchObject(pg.ProgramGameID);
                pp = PatronPoints.GetTotalPatronPoints(((Patron)Session["Patron"]).PID);
            }
            catch
            {
                Response.Redirect("/images/game_map_icon.png");
            }

            var PID        = pg.PID;
            var numSquares = gm.BoardWidth;
            var width      = 800;
            var height     = 800;

            //var AID = 5;

            var squareSize = width / numSquares;

            width = height = squareSize * numSquares;

            var backImageFile   = Server.MapPath(GameBoardImage());
            var stampImageFile  = Server.MapPath(GameBoardStamp);
            var avatarImageFile = Server.MapPath(GameBoardAvatarStamp);

            var newBmp = new System.Drawing.Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

            System.Drawing.Image avatarImage = null;
            System.Drawing.Image stampImage  = null;;
            try
            {
                newBmp.SetResolution(72, 72);
                newBmp.MakeTransparent();
            }catch {}

            var newGraphic = System.Drawing.Graphics.FromImage(newBmp);

            try
            {
                newGraphic.SmoothingMode     = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
                newGraphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                var backImage = System.Drawing.Image.FromFile(backImageFile);
                newGraphic.DrawImage(backImage, 0, 0, width, height);
            }
            catch { }

            try
            {
                avatarImage = System.Drawing.Image.FromFile(avatarImageFile);
            }
            catch { }
            try
            {
                stampImage = System.Drawing.Image.FromFile(stampImageFile);
            }
            catch { }
            // ----------------------------------------------
            if (Request["p"] != null)
            {
                int.TryParse(Request["p"].ToString(), out pp);
            }
            // -------------------------------------------
            var ds = ProgramGameLevel.GetAll(GetGame().PGID);


            var normalLevelTotalPoints = GetGameCompletionPoints(ds);
            var bonusLevelTotalPoints  = GetGameCompletionBonusPoints(ds);


            // in bonus levels if we have more points accumulated than the total normal level points
            var bonus = (pp > normalLevelTotalPoints);
            var rp    = pp; //remaining points

            if (bonus)
            {
                // if we are on the bonus, eliminate the "fully completed boards/levels) and then see what the remainder of the points is.
                rp = rp - normalLevelTotalPoints;
                rp = rp % bonusLevelTotalPoints;
            }
            var idx = 0;

            // ----------------------------------------------

            for (var i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                idx++;
                var multiplier  = (bonus ? GetGame().BonusLevelPointMultiplier : 1.00m);
                var levelPoints = Convert.ToInt32(Convert.ToInt32(ds.Tables[0].Rows[i]["PointNumber"]) * multiplier);
                //var levelTd = (Convert.ToInt32(ds.Tables[0].Rows[i]["LocationY"]) - 1) * GameBoardWidth +
                //              Convert.ToInt32(ds.Tables[0].Rows[i]["LocationX"]);
                var locX = Convert.ToInt32(ds.Tables[0].Rows[i]["LocationX"]) - 1;
                var locY = Convert.ToInt32(ds.Tables[0].Rows[i]["LocationY"]) - 1;
                rp = rp - levelPoints;
                if (rp < 0)
                {
                    //ret = string.Format("{0}\r\n$(\"#Td{1}\").html(\"<img src='{2}' class='BoardSquareImg'/>\");", ret, levelTd, GameBoardAvatarStamp);
                    if (avatarImage != null)
                    {
                        newGraphic.DrawImage(avatarImage, locX * squareSize, locY * squareSize, squareSize, squareSize);
                    }
                    break;
                }
                else
                {
                    //ret = string.Format("{0}\r\n$(\"#Td{1}\").html(\"<img src='{2}' class='BoardSquareImg'/>\");", ret, levelTd, GameBoardStamp);
                    if (stampImage != null)
                    {
                        newGraphic.DrawImage(stampImage, locX * squareSize, locY * squareSize, squareSize, squareSize);
                    }
                }
            }



            Response.ContentType = "image/png";
            //Response.AppendHeader("Content-Disposition", "attachment; filename=GameLevelStatsReportResults.xlsx");
            EnableViewState = false;
            newBmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);

            if (stampImage != null)
            {
                stampImage.Dispose();
            }
            if (avatarImage != null)
            {
                avatarImage.Dispose();
            }
            newGraphic.Dispose();
            newBmp.Dispose();
            Response.End();
        }
        public Badge TallyPoints(Patron patron, Programs pgm, int StartingPoints, int EndingPoints, ref List <Badge> EarnedBadges)
        {
            Badge b = null;

            //Tally up the points and figure out if we need to award a badge.
            if (pgm.ProgramGameID > 0)
            {
                // only if we have a game we can earn badges by reading ....
                var gm = ProgramGame.FetchObject(pgm.ProgramGameID);
                var ds = ProgramGameLevel.GetAll(gm.PGID);

                var normalLevelTotalPoints = GetGameCompletionPoints(ds);
                var bonusLevelTotalPoints  = GetGameCompletionBonusPoints(ds, gm.BonusLevelPointMultiplier);

                var bonus = (StartingPoints > normalLevelTotalPoints);
                var bonusPostfix = (bonus ? "Bonus" : "");
                int BeforeLevel = 0, AfterLevel = 0;

                // loop thru the levels to see where we are at ... before awarding the new points
                var rp = StartingPoints;   //remaining points
                if (bonus)
                {
                    // if we are on the bonus, eliminate the "fully completed boards/levels) and then see what the remainder of the points is.
                    rp = rp - normalLevelTotalPoints;
                    rp = rp % bonusLevelTotalPoints;
                }

                for (var i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    var multiplier  = (bonus ? gm.BonusLevelPointMultiplier : 1.00m);
                    var levelPoints = Convert.ToInt32(Convert.ToInt32(ds.Tables[0].Rows[i]["PointNumber"]) * multiplier);
                    rp = rp - levelPoints;
                    if (rp < 0)
                    {
                        BeforeLevel = i;
                        break;
                    }
                }


                // loop thru the levels to see where we are at ... AFTER awarding the new points
                rp = EndingPoints;   //remaining points
                if (bonus)
                {
                    // if we are on the bonus, eliminate the "fully completed boards/levels) and then see what the remainder of the points is.
                    rp = rp - normalLevelTotalPoints;
                    rp = rp % bonusLevelTotalPoints;
                }
                for (var i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    var multiplier  = (bonus ? gm.BonusLevelPointMultiplier : 1.00m);
                    var levelPoints = Convert.ToInt32(Convert.ToInt32(ds.Tables[0].Rows[i]["PointNumber"]) * multiplier);
                    rp         = rp - levelPoints;
                    AfterLevel = i;
                    if (rp < 0)
                    {
                        break;
                    }
                    else
                    {
                        if (!((i + 1) < ds.Tables[0].Rows.Count))
                        {
                            AfterLevel = (i + 1);
                        }
                    }
                }

                if (BeforeLevel != AfterLevel)
                {
                    // completed the "beforeLevel" and moved up to the "AfterLevel" , so check if we need to award a badge
                    for (var i = BeforeLevel; i < AfterLevel; i++)
                    {
                        var badgeToAward = Convert.ToInt32(ds.Tables[0].Rows[i]["AwardBadgeID" + bonusPostfix]);
                        if (badgeToAward > 0)
                        {
                            b = Badge.GetBadge(badgeToAward);
                            EarnedBadges.Add(b);
                        }
                    }
                }
            }
            return(b);
        }