public void drawLauncherControls() { btnLeft.Draw(); btnRight.Draw(); btnModuleName.Draw(); btnExit.Draw(); }
//INVENTORY SCREEN (COMBAT and MAIN) public void redrawTokenSelector() { //IF CONTROLS ARE NULL, CREATE THEM if (btnAction == null) { setControlsStart(); } int pW = (int)((float)gv.screenWidth / 100.0f); int pH = (int)((float)gv.screenHeight / 100.0f); int locY = 0; int locX = pW * 4; int textH = (int)gv.drawFontRegHeight; int spacing = textH; int tabX = pW * 4; int tabX2 = 5 * gv.squareSize + pW * 2; int leftStartY = pH * 4; int tabStartY = 5 * gv.squareSize + pW * 10; //DRAW TEXT locY = (pH * 2); gv.DrawText("Token Selection", locX + (gv.squareSize * 8), locY); //DRAW LEFT/RIGHT ARROWS and PAGE INDEX btnPageIndex.Draw(); btnTokensLeft.Draw(); btnTokensRight.Draw(); //DRAW ALL INVENTORY SLOTS int cntSlot = 0; foreach (IbbButton btn in btnTokenSlot) { if (cntSlot == tknSlotIndex) { btn.glowOn = true; } else { btn.glowOn = false; } if ((cntSlot + (tknPageIndex * slotsPerPage)) < playerTokenList.Count) { gv.cc.DisposeOfBitmap(ref btn.Img2); btn.Img2 = gv.cc.LoadBitmap(playerTokenList[cntSlot + (tknPageIndex * slotsPerPage)]); } else { btn.Img2 = null; } btn.Draw(); cntSlot++; } btnAction.Draw(); btnExit.Draw(); }
public void drawTitleControls() { btnNewGame.Draw(); btnLoadSavedGame.Draw(); btnPlayerGuide.Draw(); btnBeginnerGuide.Draw(); btnAbout.Draw(); btnExit.Draw(); }
//CAST SELECTOR SCREEN (COMBAT and MAIN) public void redrawCastSelector(bool inCombat) { Player pc = getCastingPlayer(); isInCombat = inCombat; //IF CONTROLS ARE NULL, CREATE THEM if (btnSelect == null) { setControlsStart(); } btnSelect.Text = pc.playerClass.labelForCastAction.ToUpper() + " SELECTED " + gv.mod.getPlayerClass(getCastingPlayer().classTag).spellLabelSingular.ToUpper(); int pW = (int)((float)gv.screenWidth / 100.0f); int pH = (int)((float)gv.screenHeight / 100.0f); int locY = 0; int locX = pW * 4; //int textH = (int)gv.cc.MeasureString("GetHeight", gv.drawFontReg, gv.Width).Height; int textH = (int)gv.drawFontRegHeight; int spacing = textH; //int spacing = (int)gv.mSheetTextPaint.getTextSize() + pH; int tabX = pW * 4; int noticeX = pW * 5; int noticeY = pH * 3 + spacing; int leftStartY = pH * 3; int tabStartY = 4 * gv.squareSize + pW * 10; //DRAW TEXT locY = (gv.squareSize * 0) + (pH * 2); //gv.mSheetTextPaint.setColor(Color.LTGRAY); gv.DrawText("Select a " + gv.mod.getPlayerClass(pc.classTag).spellLabelSingular + " to " + gv.mod.getPlayerClass(pc.classTag).labelForCastAction, noticeX, pH * 3); //gv.DrawText("Select a " + gv.mod.getPlayerClass(pc.classTag).spellLabelSingular + " to Cast", noticeX, pH * 3, "wh"); //gv.mSheetTextPaint.setColor(Color.YELLOW); gv.DrawText(getCastingPlayer().name + " SP: " + getCastingPlayer().sp + "/" + getCastingPlayer().spMax, pW * 55, leftStartY); gv.DrawText(getCastingPlayer().name + " HP: " + getCastingPlayer().hp + "/" + getCastingPlayer().hpMax, pW * 55, leftStartY + (int)(gv.squareSize / 3)); //DRAW NOTIFICATIONS //here insert sortTraitsForLevelUp(pc); if (isSelectedSpellSlotInKnownSpellsRange()) { Spell sp = GetCurrentlySelectedSpell(); //Player pc = getCastingPlayer(); bool swiftBlocked = false; if (sp.isSwiftAction && gv.mod.swiftActionHasBeenUsedThisTurn) { swiftBlocked = true; } bool coolBlocked = false; int coolDownTime = 0; for (int i = 0; i < pc.coolingSpellsByTag.Count; i++) { if (pc.coolingSpellsByTag[i] == sp.tag) { coolBlocked = true; coolDownTime = pc.coolDownTimes[i]; if (coolDownTime < sp.coolDownTime) { coolDownTime++; } } } if (coolBlocked) { gv.DrawText("This is still cooling down for " + coolDownTime + " turn(s).", noticeX, noticeY, 1.0f, Color.Red); } else if (swiftBlocked) { gv.DrawText("Swift action already used this turn.", noticeX, noticeY, 1.0f, Color.Red); } else if ((pc.sp >= sp.costSP) && ((pc.hp - 1) >= sp.costHP) && !gv.mod.nonRepeatableFreeActionsUsedThisTurnBySpellTag.Contains(sp.tag)) { //gv.mSheetTextPaint.setColor(Color.GREEN); gv.DrawText("Available", noticeX, noticeY, 1.0f, Color.Lime); } else if (!gv.mod.nonRepeatableFreeActionsUsedThisTurnBySpellTag.Contains(sp.tag)) //if known but not enough spell points, "Insufficient SP to Cast" in yellow { //gv.mSheetTextPaint.setColor(Color.YELLOW); gv.DrawText("Insufficient SP or HP", noticeX, noticeY, 1.0f, Color.Red); } else { gv.DrawText("This can only be used once per turn.", noticeX, noticeY, 1.0f, Color.Red); } } //DRAW ALL SPELL SLOTS int cntSlot = 0; foreach (IbbButton btn in btnSpellSlots) { //Player pc = getCastingPlayer(); if (cntSlot == spellSlotIndex) { btn.glowOn = true; } else { btn.glowOn = false; } if (isInCombat) { if ((cntSlot + (tknPageIndex * slotsPerPage)) < backupKnownSpellTagsInCombat.Count) { Spell sp = gv.mod.getSpellByTag(backupKnownSpellTagsInCombat[cntSlot + (tknPageIndex * slotsPerPage)]); //TraitAllowed ta = backupTraitsAllowed[cntSlot + (tknPageIndex * slotsPerPage)]; gv.cc.DisposeOfBitmap(ref btn.Img2); btn.Img2 = gv.cc.LoadBitmap(sp.spellImage); gv.cc.DisposeOfBitmap(ref btn.Img2Off); btn.Img2Off = gv.cc.LoadBitmap(sp.spellImage + "_off"); btn.btnState = buttonState.Normal; } else { gv.cc.DisposeOfBitmap(ref btn.Img); btn.Img = gv.cc.LoadBitmap("btn_small_off"); btn.Img2 = null; btn.Img2Off = null; btn.Img3 = null; btn.btnState = buttonState.Off; } } //outside combat else { if ((cntSlot + (tknPageIndex * slotsPerPage)) < backupKnownSpellTagsOutsideCombat.Count) { Spell sp = gv.mod.getSpellByTag(backupKnownSpellTagsOutsideCombat[cntSlot + (tknPageIndex * slotsPerPage)]); //TraitAllowed ta = backupTraitsAllowed[cntSlot + (tknPageIndex * slotsPerPage)]; gv.cc.DisposeOfBitmap(ref btn.Img2); btn.Img2 = gv.cc.LoadBitmap(sp.spellImage); gv.cc.DisposeOfBitmap(ref btn.Img2Off); btn.Img2Off = gv.cc.LoadBitmap(sp.spellImage + "_off"); btn.btnState = buttonState.Normal; } else { gv.cc.DisposeOfBitmap(ref btn.Img); btn.Img = gv.cc.LoadBitmap("btn_small_off"); btn.Img2 = null; btn.Img2Off = null; btn.Img3 = null; btn.btnState = buttonState.Off; } } btn.Draw(); cntSlot++; } //DRAW DESCRIPTION BOX locY = tabStartY; if (isSelectedSpellSlotInKnownSpellsRange()) { Spell sp = GetCurrentlySelectedSpell(); //string textToSpan = "<u>Description</u>" + "<BR>" + "<BR>"; string textToSpan = "<b><i><big>" + sp.name + "</big></i></b><BR>"; if (sp.isSwiftAction && !sp.usesTurnToActivate) { textToSpan += "Swift action" + "<BR>"; } else if (sp.onlyOncePerTurn && !sp.usesTurnToActivate) { textToSpan += "Free action, not repeatable" + "<BR>"; } else if (!sp.onlyOncePerTurn && !sp.usesTurnToActivate) { textToSpan += "Free action, repeatable" + "<BR>"; } else if (sp.castTimeInTurns > 0) { textToSpan += "Takes " + sp.castTimeInTurns + " full turn(s)" + "<BR>"; } if (sp.coolDownTime > 0) { textToSpan += "Cool down time: " + sp.coolDownTime + " turn(s)" + "<BR>"; } textToSpan += "SP Cost: " + sp.costSP + "<BR>"; textToSpan += "HP Cost: " + sp.costHP + "<BR>"; textToSpan += "Target Range: " + sp.range + "<BR>"; textToSpan += "Area of Effect Radius: " + sp.aoeRadius + "<BR>"; textToSpan += "Available at Level: " + getLevelAvailable(sp.tag) + "<BR>"; textToSpan += "<BR>"; textToSpan += sp.description; description.tbXloc = 11 * gv.squareSize; description.tbYloc = 2 * gv.squareSize; description.tbWidth = pW * 40; description.tbHeight = pH * 80; description.logLinesList.Clear(); description.AddHtmlTextToLog(textToSpan); description.onDrawLogBox(); } btnHelp.Draw(); btnExit.Draw(); btnSelect.Draw(); btnTokensLeft.Draw(); btnTokensRight.Draw(); btnPageIndex.Draw(); }
//PARTY SCREEN public void redrawPartyBuild() { if (partyScreenPcIndex >= gv.mod.playerList.Count) { partyScreenPcIndex = 0; } if (pcIndex >= pcList.Count) { pcIndex = 0; } Player pc = null; if ((gv.mod.playerList.Count > 0) && (lastClickedPlayerList)) { pc = gv.mod.playerList[partyScreenPcIndex]; } else if ((pcList.Count > 0) && (!lastClickedPlayerList)) { pc = pcList[pcIndex]; } if (pc != null) { gv.sf.UpdateStats(pc); } int pW = (int)((float)gv.screenWidth / 100.0f); int pH = (int)((float)gv.screenHeight / 100.0f); int padH = gv.squareSize / 6; int locY = 0; int locX = 2 * gv.squareSize + gv.oXshift; int spacing = (int)gv.drawFontRegHeight; int tabX = pW * 50; int tabX2 = pW * 60; int leftStartY = 5 * gv.squareSize + (pH * 6); //Draw screen title name string text = "Party Members [" + gv.mod.numberOfPlayerMadePcsAllowed + " player made PC(s) allowed, " + gv.mod.numberOfPlayerMadePcsRequired + " required]"; // Measure string. float stringSize = gv.cc.MeasureString(text, SharpDX.DirectWrite.FontWeight.Normal, SharpDX.DirectWrite.FontStyle.Normal, gv.drawFontRegHeight); int ulX = (gv.screenWidth / 2) - ((int)stringSize / 2); gv.DrawText(text, ulX, pH * 3, 1.0f, Color.White); //DRAW EACH PC BUTTON this.refreshPlayerTokens(); int cntPCs = 0; foreach (IbbButton btn in btnPartyIndex) { if (cntPCs < gv.mod.playerList.Count) { if (cntPCs == partyScreenPcIndex) { btn.glowOn = true; } else { btn.glowOn = false; } btn.Draw(); } cntPCs++; } btnLeft.Draw(); btnRight.Draw(); btnAdd.Draw(); btnRemove.Draw(); btnCreate.Draw(); btnHelp.Draw(); btnReturn.Draw(); if (pcList.Count > 0) { gv.cc.DisposeOfBitmap(ref btnPcListIndex.Img2); btnPcListIndex.Img2 = gv.cc.LoadBitmap(pcList[pcIndex].tokenFilename); } else { btnPcListIndex.Img2 = null; } btnPcListIndex.Draw(); if (pc != null) { //DRAW LEFT STATS gv.DrawText("Name: " + pc.name, locX, locY += leftStartY); gv.DrawText(gv.mod.raceLabel + ": " + gv.mod.getRace(pc.raceTag).name, locX, locY += spacing); if (pc.isMale) { gv.DrawText("Gender: Male", locX, locY += spacing); } else { gv.DrawText("Gender: Female", locX, locY += spacing); } gv.DrawText("Class: " + gv.mod.getPlayerClass(pc.classTag).name, locX, locY += spacing); gv.DrawText("Level: " + pc.classLevel, locX, locY += spacing); gv.DrawText("XP: " + pc.XP + "/" + pc.XPNeeded, locX, locY += spacing); gv.DrawText("---------------", locX, locY += spacing); //draw spells known list string allSpells = ""; foreach (string s in pc.knownSpellsTags) { Spell sp = gv.mod.getSpellByTag(s); allSpells += sp.name + ", "; } gv.DrawText(gv.mod.getPlayerClass(pc.classTag).spellLabelPlural + ": " + allSpells, locX, locY += spacing); //draw traits known list string allTraits = ""; foreach (string s in pc.knownTraitsTags) { Trait tr = gv.mod.getTraitByTag(s); if (tr != null) { allTraits += tr.name + ", "; } } gv.DrawText(gv.mod.getPlayerClass(pc.classTag).traitLabelPlural + ": " + allTraits, locX, locY += spacing); //DRAW RIGHT STATS int actext = 0; if (gv.mod.ArmorClassAscending) { actext = pc.AC; } else { actext = 20 - pc.AC; } locY = 0; int locY2 = 0; if (gv.mod.useOrbitronFont == true) { locX = tabX - 3 * gv.squareSize; locY += leftStartY; //tabX2 = 0; locY2 += leftStartY - spacing * 3; //STR gv.DrawText("STR:", locX + pW, locY); gv.DrawText(pc.baseStr.ToString(), locX + 3 * pW * 2, locY); if (pc.strength - pc.baseStr >= 0) { gv.DrawText(" + ", locX + 4 * pW * 2, locY); } else { gv.DrawText(" - ", locX + 4 * pW * 2, locY); } int racial = pc.strength - pc.baseStr; if (racial < 0) { racial *= -1; } gv.DrawText(racial.ToString(), locX + 5 * pW * 2, locY); gv.DrawText(" = ", locX + 11 * pW, locY); gv.DrawText(pc.strength.ToString(), locX + 13 * pW, locY); if (((pc.strength - 10) / 2) > 0) { gv.DrawText(" (+" + ((pc.strength - 10) / 2) + ")", locX + 15 * pW, locY); } else { gv.DrawText(" (" + ((pc.strength - 10) / 2) + ")", locX + 15 * pW, locY); } gv.DrawText("AC: " + actext, tabX2, locY2 += (spacing * 3)); gv.DrawText("BAB: " + pc.baseAttBonus + ", Melee to hit/damage: " + (pc.baseAttBonus + ((pc.strength - 10) / 2)) + "/" + ((pc.strength - 10) / 2) + ", Ranged to hit: " + (pc.baseAttBonus + ((pc.dexterity - 10) / 2)), tabX2, locY2 += spacing); //DEX gv.DrawText("DEX:", locX + pW, locY += (spacing)); gv.DrawText(pc.baseDex.ToString(), locX + 3 * pW * 2, locY); if (pc.dexterity - pc.baseDex >= 0) { gv.DrawText(" + ", locX + 4 * pW * 2, locY); } else { gv.DrawText(" - ", locX + 4 * pW * 2, locY); } racial = pc.dexterity - pc.baseDex; if (racial < 0) { racial *= -1; } gv.DrawText(racial.ToString(), locX + 5 * pW * 2, locY); gv.DrawText(" = ", locX + 11 * pW, locY); gv.DrawText(pc.dexterity.ToString(), locX + 13 * pW, locY); if (((pc.dexterity - 10) / 2) > 0) { gv.DrawText(" (+" + ((pc.dexterity - 10) / 2) + ")", locX + 15 * pW, locY); } else { gv.DrawText(" (" + ((pc.dexterity - 10) / 2) + ")", locX + 15 * pW, locY); } gv.DrawText("HP: " + pc.hp + "/" + pc.hpMax, tabX2, locY2 += spacing); //CON gv.DrawText("CON:", locX + pW, locY += (spacing)); gv.DrawText(pc.baseCon.ToString(), locX + 3 * pW * 2, locY); if (pc.constitution - pc.baseCon >= 0) { gv.DrawText(" + ", locX + 4 * pW * 2, locY); } else { gv.DrawText(" - ", locX + 4 * pW * 2, locY); } racial = pc.constitution - pc.baseCon; if (racial < 0) { racial *= -1; } gv.DrawText(racial.ToString(), locX + 5 * pW * 2, locY); gv.DrawText(" = ", locX + 11 * pW, locY); gv.DrawText(pc.constitution.ToString(), locX + 13 * pW, locY); if (((pc.constitution - 10) / 2) > 0) { gv.DrawText(" (+" + ((pc.constitution - 10) / 2) + ")", locX + 15 * pW, locY); } else { gv.DrawText(" (" + ((pc.constitution - 10) / 2) + ")", locX + 15 * pW, locY); } gv.DrawText("SP: " + pc.sp + "/" + pc.spMax, tabX2, locY2 += spacing); //INT gv.DrawText("INT:", locX + pW, locY += (spacing)); gv.DrawText(pc.baseInt.ToString(), locX + 3 * pW * 2, locY); if (pc.intelligence - pc.baseInt >= 0) { gv.DrawText(" + ", locX + 4 * pW * 2, locY); } else { gv.DrawText(" - ", locX + 4 * pW * 2, locY); } racial = pc.intelligence - pc.baseInt; if (racial < 0) { racial *= -1; } gv.DrawText(racial.ToString(), locX + 5 * pW * 2, locY); gv.DrawText(" = ", locX + 11 * pW, locY); gv.DrawText(pc.intelligence.ToString(), locX + 13 * pW, locY); if (((pc.intelligence - 10) / 2) > 0) { gv.DrawText(" (+" + ((pc.intelligence - 10) / 2) + ")", locX + 15 * pW, locY); } else { gv.DrawText(" (" + ((pc.intelligence - 10) / 2) + ")", locX + 15 * pW, locY); } gv.DrawText("FORT: " + pc.fortitude + ", Acid: " + pc.damageTypeResistanceTotalAcid + "%" + ", Cold: " + pc.damageTypeResistanceTotalCold + "%" + ", Normal: " + pc.damageTypeResistanceTotalNormal + "%", tabX2, locY2 += spacing); gv.DrawText("REF: " + pc.reflex + ", Electricity: " + pc.damageTypeResistanceTotalElectricity + "%" + ", Fire: " + pc.damageTypeResistanceTotalFire + "%", tabX2, locY2 += spacing); gv.DrawText("WILL: " + pc.will + ", Magic: " + pc.damageTypeResistanceTotalMagic + "%" + ", Poison: " + pc.damageTypeResistanceTotalPoison + "%", tabX2, locY2 += spacing); //WIS gv.DrawText("WIS:", locX + pW, locY += (spacing)); gv.DrawText(pc.baseWis.ToString(), locX + 3 * pW * 2, locY); if (pc.wisdom - pc.baseWis >= 0) { gv.DrawText(" + ", locX + 4 * pW * 2, locY); } else { gv.DrawText(" - ", locX + 4 * pW * 2, locY); } racial = pc.wisdom - pc.baseWis; if (racial < 0) { racial *= -1; } gv.DrawText(racial.ToString(), locX + 5 * pW * 2, locY); gv.DrawText(" = ", locX + 11 * pW, locY); gv.DrawText(pc.wisdom.ToString(), locX + 13 * pW, locY); if (((pc.wisdom - 10) / 2) > 0) { gv.DrawText(" (+" + ((pc.wisdom - 10) / 2) + ")", locX + 15 * pW, locY); } else { gv.DrawText(" (" + ((pc.wisdom - 10) / 2) + ")", locX + 15 * pW, locY); } //CHA gv.DrawText("CHA:", locX + pW, locY += (spacing)); gv.DrawText(pc.baseCha.ToString(), locX + 3 * pW * 2, locY); if (pc.charisma - pc.baseCha >= 0) { gv.DrawText(" + ", locX + 4 * pW * 2, locY); } else { gv.DrawText(" - ", locX + 4 * pW * 2, locY); } racial = pc.charisma - pc.baseCha; if (racial < 0) { racial *= -1; } gv.DrawText(racial.ToString(), locX + 5 * pW * 2, locY); gv.DrawText(" = ", locX + 11 * pW, locY); gv.DrawText(pc.charisma.ToString(), locX + 13 * pW, locY); if (((pc.charisma - 10) / 2) > 0) { gv.DrawText(" (+" + ((pc.charisma - 10) / 2) + ")", locX + 15 * pW, locY); } else { gv.DrawText(" (" + ((pc.charisma - 10) / 2) + ")", locX + 15 * pW, locY); } if (gv.mod.useLuck) { if (((pc.luck - 10) / 2) > 0) { gv.DrawText("LCK: " + pc.baseLuck + " + " + (pc.luck - pc.baseLuck) + " = " + pc.luck, locX + pW, locY += spacing); } else { gv.DrawText("LCK: " + pc.baseLuck + " + " + (pc.luck - pc.baseLuck) + " = " + pc.luck, locX + pW, locY += spacing); } } /* * gv.DrawText("STR: " + pc.baseStr + " + " + (pc.strength - pc.baseStr) + " = " + pc.strength + " (" + ((pc.strength - 10) / 2) + ")", tabX - 3 * gv.squareSize, locY += leftStartY); * gv.DrawText("AC: " + actext, tabX2, locY2 += leftStartY); * //gv.DrawText("BAB: " + pc.baseAttBonus + ", Melee to hit/damage: " + (pc.baseAttBonus + ((pc.strength - 10) / 2)) + "/" + ((pc.strength - 10) / 2) + ", Ranged to hit: " + (pc.baseAttBonus + ((pc.dexterity - 10) / 2)), tabX2, locY2 += spacing); * gv.DrawText("BAB: " + pc.baseAttBonus + ", Melee to hit/damage: " + (pc.baseAttBonus + gv.sf.CalcPcMeleeAttackAttributeModifier(pc)) + "/" + (((pc.strength - 10) / 2) + gv.sf.CalcPcMeleeDamageModifier(pc)) + ", Ranged to hit: " + (pc.baseAttBonus + ((pc.dexterity - 10) / 2) + gv.sf.CalcPcRangedAttackModifier(pc)), tabX2, locY2 += spacing); * gv.DrawText("DEX: " + pc.baseDex + " + " + (pc.dexterity - pc.baseDex) + " = " + pc.dexterity + " (" + ((pc.dexterity - 10) / 2) + ")", tabX - 3 * gv.squareSize, locY += spacing); * gv.DrawText("HP: " + pc.hp + "/" + pc.hpMax, tabX2, locY2 += spacing); * gv.DrawText("CON: " + pc.baseCon + " + " + (pc.constitution - pc.baseCon) + " = " + pc.constitution + " (" + ((pc.constitution - 10) / 2) + ")", tabX - 3 * gv.squareSize, locY += spacing); * gv.DrawText("SP: " + pc.sp + "/" + pc.spMax, tabX2, locY2 += spacing); * gv.DrawText("INT: " + pc.baseInt + " + " + (pc.intelligence - pc.baseInt) + " = " + pc.intelligence + " (" + ((pc.intelligence - 10) / 2) + ")", tabX - 3 * gv.squareSize, locY += spacing); * gv.DrawText("FORT: " + pc.fortitude + ", Acid: " + pc.damageTypeResistanceTotalAcid + "%" + ", Cold: " + pc.damageTypeResistanceTotalCold + "%" + ", Normal: " + pc.damageTypeResistanceTotalNormal + "%", tabX2, locY2 += spacing); * gv.DrawText("REF: " + pc.reflex + ", Electricity: " + pc.damageTypeResistanceTotalElectricity + "%" + ", Fire: " + pc.damageTypeResistanceTotalFire + "%", tabX2, locY2 += spacing); * gv.DrawText("WILL: " + pc.will + ", Magic: " + pc.damageTypeResistanceTotalMagic + "%" + ", Poison: " + pc.damageTypeResistanceTotalPoison + "%", tabX2, locY2 += spacing); * gv.DrawText("WIS: " + pc.baseWis + " + " + (pc.wisdom - pc.baseWis) + " = " + pc.wisdom + " (" + ((pc.wisdom - 10) / 2) + ")", tabX - 3 * gv.squareSize, locY += spacing); * gv.DrawText("CHA: " + pc.baseCha + " + " + (pc.charisma - pc.baseCha) + " = " + pc.charisma + " (" + ((pc.charisma - 10) / 2) + ")", tabX - 3 * gv.squareSize, locY += spacing); * if (gv.mod.useLuck == true) * { * gv.DrawText("LCK: " + pc.baseLuck + " + " + (pc.luck - pc.baseLuck) + " = " + pc.luck, tabX - 3 * gv.squareSize, locY += spacing); * } */ } else { locX = tabX - 3 * gv.squareSize; locY += leftStartY; //tabX2 = 0; locY2 += leftStartY - spacing * 3; //STR gv.DrawText("STR:", locX + pW, locY); gv.DrawText(pc.baseStr.ToString(), locX + 3 * pW * 2, locY); if (pc.strength - pc.baseStr >= 0) { gv.DrawText(" + ", locX + 4 * pW * 2, locY); } else { gv.DrawText(" - ", locX + 4 * pW * 2, locY); } int racial = pc.strength - pc.baseStr; if (racial < 0) { racial *= -1; } gv.DrawText(racial.ToString(), locX + 5 * pW * 2, locY); gv.DrawText(" = ", locX + 11 * pW, locY); gv.DrawText(pc.strength.ToString(), locX + 13 * pW, locY); if (((pc.strength - 10) / 2) > 0) { gv.DrawText(" (+" + ((pc.strength - 10) / 2) + ")", locX + 15 * pW, locY); } else { gv.DrawText(" (" + ((pc.strength - 10) / 2) + ")", locX + 15 * pW, locY); } gv.DrawText("AC: " + actext, tabX2, locY2 += (spacing * 3)); gv.DrawText("BAB: " + pc.baseAttBonus + ", Melee to hit/damage: " + (pc.baseAttBonus + ((pc.strength - 10) / 2)) + "/" + ((pc.strength - 10) / 2) + ", Ranged to hit: " + (pc.baseAttBonus + ((pc.dexterity - 10) / 2)), tabX2, locY2 += spacing); //DEX gv.DrawText("DEX:", locX + pW, locY += (spacing)); gv.DrawText(pc.baseDex.ToString(), locX + 3 * pW * 2, locY); if (pc.dexterity - pc.baseDex >= 0) { gv.DrawText(" + ", locX + 4 * pW * 2, locY); } else { gv.DrawText(" - ", locX + 4 * pW * 2, locY); } racial = pc.dexterity - pc.baseDex; if (racial < 0) { racial *= -1; } gv.DrawText(racial.ToString(), locX + 5 * pW * 2, locY); gv.DrawText(" = ", locX + 11 * pW, locY); gv.DrawText(pc.dexterity.ToString(), locX + 13 * pW, locY); if (((pc.dexterity - 10) / 2) > 0) { gv.DrawText(" (+" + ((pc.dexterity - 10) / 2) + ")", locX + 15 * pW, locY); } else { gv.DrawText(" (" + ((pc.dexterity - 10) / 2) + ")", locX + 15 * pW, locY); } gv.DrawText("HP: " + pc.hp + "/" + pc.hpMax, tabX2, locY2 += spacing); //CON gv.DrawText("CON:", locX + pW, locY += (spacing)); gv.DrawText(pc.baseCon.ToString(), locX + 3 * pW * 2, locY); if (pc.constitution - pc.baseCon >= 0) { gv.DrawText(" + ", locX + 4 * pW * 2, locY); } else { gv.DrawText(" - ", locX + 4 * pW * 2, locY); } racial = pc.constitution - pc.baseCon; if (racial < 0) { racial *= -1; } gv.DrawText(racial.ToString(), locX + 5 * pW * 2, locY); gv.DrawText(" = ", locX + 11 * pW, locY); gv.DrawText(pc.constitution.ToString(), locX + 13 * pW, locY); if (((pc.constitution - 10) / 2) > 0) { gv.DrawText(" (+" + ((pc.constitution - 10) / 2) + ")", locX + 15 * pW, locY); } else { gv.DrawText(" (" + ((pc.constitution - 10) / 2) + ")", locX + 15 * pW, locY); } gv.DrawText("SP: " + pc.sp + "/" + pc.spMax, tabX2, locY2 += spacing); //INT gv.DrawText("INT:", locX + pW, locY += (spacing)); gv.DrawText(pc.baseInt.ToString(), locX + 3 * pW * 2, locY); if (pc.intelligence - pc.baseInt >= 0) { gv.DrawText(" + ", locX + 4 * pW * 2, locY); } else { gv.DrawText(" - ", locX + 4 * pW * 2, locY); } racial = pc.intelligence - pc.baseInt; if (racial < 0) { racial *= -1; } gv.DrawText(racial.ToString(), locX + 5 * pW * 2, locY); gv.DrawText(" = ", locX + 11 * pW, locY); gv.DrawText(pc.intelligence.ToString(), locX + 13 * pW, locY); if (((pc.intelligence - 10) / 2) > 0) { gv.DrawText(" (+" + ((pc.intelligence - 10) / 2) + ")", locX + 15 * pW, locY); } else { gv.DrawText(" (" + ((pc.intelligence - 10) / 2) + ")", locX + 15 * pW, locY); } gv.DrawText("FORT: " + pc.fortitude + ", Acid: " + pc.damageTypeResistanceTotalAcid + "%" + ", Cold: " + pc.damageTypeResistanceTotalCold + "%" + ", Normal: " + pc.damageTypeResistanceTotalNormal + "%", tabX2, locY2 += spacing); gv.DrawText("REF: " + pc.reflex + ", Electricity: " + pc.damageTypeResistanceTotalElectricity + "%" + ", Fire: " + pc.damageTypeResistanceTotalFire + "%", tabX2, locY2 += spacing); gv.DrawText("WILL: " + pc.will + ", Magic: " + pc.damageTypeResistanceTotalMagic + "%" + ", Poison: " + pc.damageTypeResistanceTotalPoison + "%", tabX2, locY2 += spacing); //WIS gv.DrawText("WIS:", locX + pW, locY += (spacing)); gv.DrawText(pc.baseWis.ToString(), locX + 3 * pW * 2, locY); if (pc.wisdom - pc.baseWis >= 0) { gv.DrawText(" + ", locX + 4 * pW * 2, locY); } else { gv.DrawText(" - ", locX + 4 * pW * 2, locY); } racial = pc.wisdom - pc.baseWis; if (racial < 0) { racial *= -1; } gv.DrawText(racial.ToString(), locX + 5 * pW * 2, locY); gv.DrawText(" = ", locX + 11 * pW, locY); gv.DrawText(pc.wisdom.ToString(), locX + 13 * pW, locY); if (((pc.wisdom - 10) / 2) > 0) { gv.DrawText(" (+" + ((pc.wisdom - 10) / 2) + ")", locX + 15 * pW, locY); } else { gv.DrawText(" (" + ((pc.wisdom - 10) / 2) + ")", locX + 15 * pW, locY); } //CHA gv.DrawText("CHA:", locX + pW, locY += (spacing)); gv.DrawText(pc.baseCha.ToString(), locX + 3 * pW * 2, locY); if (pc.charisma - pc.baseCha >= 0) { gv.DrawText(" + ", locX + 4 * pW * 2, locY); } else { gv.DrawText(" - ", locX + 4 * pW * 2, locY); } racial = pc.charisma - pc.baseCha; if (racial < 0) { racial *= -1; } gv.DrawText(racial.ToString(), locX + 5 * pW * 2, locY); gv.DrawText(" = ", locX + 11 * pW, locY); gv.DrawText(pc.charisma.ToString(), locX + 13 * pW, locY); if (((pc.charisma - 10) / 2) > 0) { gv.DrawText(" (+" + ((pc.charisma - 10) / 2) + ")", locX + 15 * pW, locY); } else { gv.DrawText(" (" + ((pc.charisma - 10) / 2) + ")", locX + 15 * pW, locY); } if (gv.mod.useLuck) { if (((pc.luck - 10) / 2) > 0) { gv.DrawText("LCK: " + pc.baseLuck + " + " + (pc.luck - pc.baseLuck) + " = " + pc.luck, locX + pW, locY += spacing); } else { gv.DrawText("LCK: " + pc.baseLuck + " + " + (pc.luck - pc.baseLuck) + " = " + pc.luck, locX + pW, locY += spacing); } } /* * gv.DrawText("STR: " + pc.baseStr + " + " + (pc.strength - pc.baseStr) + " = " + pc.strength + " (" + ((pc.strength - 10) / 2) + ")", tabX - 3 * gv.squareSize, locY += leftStartY); * gv.DrawText("AC: " + actext, tabX2, locY2 += leftStartY); * gv.DrawText("BAB: " + pc.baseAttBonus + ", Melee to hit/damage: " + (pc.baseAttBonus + gv.sf.CalcPcMeleeAttackAttributeModifier(pc)) + "/" + (((pc.strength - 10) / 2) + gv.sf.CalcPcMeleeDamageModifier(pc)) + ", Ranged to hit: " + (pc.baseAttBonus + ((pc.dexterity - 10) / 2) + gv.sf.CalcPcRangedAttackModifier(pc)), tabX2, locY2 += spacing); * gv.DrawText("DEX: " + pc.baseDex + " + " + (pc.dexterity - pc.baseDex) + " = " + pc.dexterity + " (" + ((pc.dexterity - 10) / 2) + ")", tabX - 3 * gv.squareSize, locY += spacing); * gv.DrawText("HP: " + pc.hp + "/" + pc.hpMax, tabX2, locY2 += spacing); * gv.DrawText("CON: " + pc.baseCon + " + " + (pc.constitution - pc.baseCon) + " = " + pc.constitution + " (" + ((pc.constitution - 10) / 2) + ")", tabX - 3 * gv.squareSize, locY += spacing); * gv.DrawText("SP: " + pc.sp + "/" + pc.spMax, tabX2, locY2 += spacing); * gv.DrawText("INT: " + pc.baseInt + " + " + (pc.intelligence - pc.baseInt) + " = " + pc.intelligence + " (" + ((pc.intelligence - 10) / 2) + ")", tabX - 3 * gv.squareSize, locY += spacing); * gv.DrawText("FORT: " + pc.fortitude + ", Acid: " + pc.damageTypeResistanceTotalAcid + "%" + ", Cold: " + pc.damageTypeResistanceTotalCold + "%" + ", Normal: " + pc.damageTypeResistanceTotalNormal + "%", tabX2, locY2 += spacing); * gv.DrawText("REF: " + pc.reflex + ", Electricity: " + pc.damageTypeResistanceTotalElectricity + "%" + ", Fire: " + pc.damageTypeResistanceTotalFire + "%", tabX2, locY2 += spacing); * gv.DrawText("WILL: " + pc.will + ", Magic: " + pc.damageTypeResistanceTotalMagic + "%" + ", Poison: " + pc.damageTypeResistanceTotalPoison + "%", tabX2, locY2 += spacing); * gv.DrawText("WIS: " + pc.baseWis + " + " + (pc.wisdom - pc.baseWis) + " = " + pc.wisdom + " (" + ((pc.wisdom - 10) / 2) + ")", tabX - 3 * gv.squareSize, locY += spacing); * gv.DrawText("CHA: " + pc.baseCha + " + " + (pc.charisma - pc.baseCha) + " = " + pc.charisma + " (" + ((pc.charisma - 10) / 2) + ")", tabX - 3 * gv.squareSize, locY += spacing); * if (gv.mod.useLuck == true) * { * gv.DrawText("LCK: " + pc.baseLuck + " + " + (pc.luck - pc.baseLuck) + " = " + pc.luck, tabX - 3 * gv.squareSize, locY += spacing); * } */ } } }
//PARTY SCREEN public void redrawPcSelector() { if (pcSelectorPcIndex >= gv.mod.playerList.Count) { pcSelectorPcIndex = 0; } Player pc = gv.mod.playerList[pcSelectorPcIndex]; gv.sf.UpdateStats(pc); int pW = (int)((float)gv.screenWidth / 100.0f); int pH = (int)((float)gv.screenHeight / 100.0f); int padH = gv.squareSize / 6; int locY = 0; int locX = pW * 4; int textH = (int)gv.drawFontRegHeight; int spacing = textH; int tabX = pW * 50; int tabX2 = pW * 70; int leftStartY = btnPartyIndex[0].Y + btnPartyIndex[0].Height + (pH * 4); //DRAW EACH PC BUTTON int cntPCs = 0; foreach (IbbButton btn in btnPartyIndex) { if (cntPCs < gv.mod.playerList.Count) { if (cntPCs == pcSelectorPcIndex) { btn.glowOn = true; } else { btn.glowOn = false; } btn.Draw(); } cntPCs++; } //DRAW LEFT STATS //name gv.DrawText("Name: " + pc.name, locX, locY += leftStartY, 1.0f, Color.White); //race gv.DrawText(gv.mod.raceLabel + ": " + gv.mod.getRace(pc.raceTag).name, locX, locY += spacing, 1.0f, Color.White); //gender if (pc.isMale) { gv.DrawText("Gender: Male", locX, locY += spacing, 1.0f, Color.White); } else { gv.DrawText("Gender: Female", locX, locY += spacing, 1.0f, Color.White); } //class gv.DrawText("Class: " + gv.mod.getPlayerClass(pc.classTag).name, locX, locY += spacing, 1.0f, Color.White); gv.DrawText("Level: " + pc.classLevel, locX, locY += spacing, 1.0f, Color.White); gv.DrawText("XP: " + pc.XP + "/" + pc.XPNeeded, locX, locY += spacing, 1.0f, Color.White); gv.DrawText("---------------", locX, locY += spacing, 1.0f, Color.White); //DRAW RIGHT STATS int actext = 0; if (gv.mod.ArmorClassAscending) { actext = pc.AC; } else { actext = 20 - pc.AC; } locY = 0; gv.DrawText("STR: " + pc.strength, tabX, locY += leftStartY); gv.DrawText("AC: " + actext, tabX2, locY); gv.DrawText("DEX: " + pc.dexterity, tabX, locY += spacing); gv.DrawText("HP: " + pc.hp + "/" + pc.hpMax, tabX2, locY); gv.DrawText("CON: " + pc.constitution, tabX, locY += spacing); gv.DrawText("SP: " + pc.sp + "/" + pc.spMax, tabX2, locY); gv.DrawText("INT: " + pc.intelligence, tabX, locY += spacing); gv.DrawText("BAB: " + pc.baseAttBonus, tabX2, locY); gv.DrawText("WIS: " + pc.wisdom, tabX, locY += spacing); gv.DrawText("CHA: " + pc.charisma, tabX, locY += spacing); btnReturn.Draw(); }
public void redrawJournal() { int pW = (int)((float)gv.screenWidth / 100.0f); int pH = (int)((float)gv.screenHeight / 100.0f); int locY = pH * 5; int locX = 4 * gv.squareSize; int spacing = (int)gv.drawFontRegHeight + pH; int leftStartY = pH * 4; int tabStartY = pH * 40; //IF BACKGROUND IS NULL, LOAD IMAGE if (journalBack == null) { gv.cc.DisposeOfBitmap(ref journalBack); journalBack = gv.cc.LoadBitmap("journalback"); } //IF BUTTONS ARE NULL, LOAD BUTTONS if (btnReturnJournal == null) { setControlsStart(); } //DRAW BACKGROUND IMAGE IbRect src = new IbRect(0, 0, journalBack.PixelSize.Width, journalBack.PixelSize.Height); IbRect dst = new IbRect(2 * gv.squareSize, 0, (gv.squaresInWidth - 4) * gv.squareSize, (gv.squaresInHeight - 1) * gv.squareSize); gv.DrawBitmap(journalBack, src, dst); //MAKE SURE NO OUT OF INDEX ERRORS if (gv.mod.partyJournalQuests.Count > 0) { if (journalScreenQuestIndex >= gv.mod.partyJournalQuests.Count) { journalScreenQuestIndex = 0; } if (journalScreenEntryIndex >= gv.mod.partyJournalQuests[journalScreenQuestIndex].Entries.Count) { journalScreenEntryIndex = 0; } } //DRAW QUESTS Color color = Color.Black; gv.DrawText("Active Quests:", locX, locY += leftStartY, 1.0f, color); gv.DrawText("--------------", locX, locY += spacing, 1.0f, color); //draw Faction info first bool drawFactionQuest = false; if (gv.mod.moduleFactionsList != null) { foreach (Faction f in gv.mod.moduleFactionsList) { if (f.showThisFactionInJournal) { drawFactionQuest = true; break; } } } if (drawFactionQuest) { //now add the faction quest and an entry for each drawn faction //1. No need to add the quest if it already exists bool factionQuestExistsAlready = false; foreach (JournalQuest jQ in gv.mod.partyJournalQuests) { if (jQ.Tag == "factionQuest001") { factionQuestExistsAlready = true; jQ.Entries.Clear(); break; } } if (!factionQuestExistsAlready) { JournalQuest factionQuest = new JournalQuest(); factionQuest.Tag = "factionQuest001"; factionQuest.Name = "Factions"; factionQuest.Entries.Clear(); gv.mod.partyJournalQuests.Add(factionQuest); } //2. update entries of faction quest foreach (JournalQuest jQ in gv.mod.partyJournalQuests) { if (jQ.Tag == "factionQuest001") { int idCounter = 0; foreach (Faction f in gv.mod.moduleFactionsList) { if (f.showThisFactionInJournal) { JournalEntry factionEntry = new JournalEntry(); factionEntry.EntryId = idCounter; factionEntry.EntryTitle = f.name; factionEntry.EntryText = ""; //Rank 1 (27 of 99, +1 every 24h), +4 buff to AC/toHit/Saves if (f.showRankInJournal) { if (f.displayRankInWords) { if (f.rank == 1) { factionEntry.EntryText += f.nameRank1 + " "; } else if (f.rank == 2) { factionEntry.EntryText += f.nameRank2 + " "; } else if (f.rank == 3) { factionEntry.EntryText += f.nameRank3 + " "; } else if (f.rank == 4) { factionEntry.EntryText += f.nameRank4 + " "; } else if (f.rank == 5) { factionEntry.EntryText += f.nameRank5 + " "; } else if (f.rank == 6) { factionEntry.EntryText += f.nameRank6 + " "; } else if (f.rank == 7) { factionEntry.EntryText += f.nameRank7 + " "; } else if (f.rank == 8) { factionEntry.EntryText += f.nameRank8 + " "; } else if (f.rank == 9) { factionEntry.EntryText += f.nameRank9 + " "; } else if (f.rank == 10) { factionEntry.EntryText += f.nameRank10 + " "; } } else { if (f.rank == 1) { factionEntry.EntryText += "Rank 1 "; } else if (f.rank == 2) { factionEntry.EntryText += "Rank 2 "; } else if (f.rank == 3) { factionEntry.EntryText += "Rank 3 "; } else if (f.rank == 4) { factionEntry.EntryText += "Rank 4 "; } else if (f.rank == 5) { factionEntry.EntryText += "Rank 5 "; } else if (f.rank == 6) { factionEntry.EntryText += "Rank 6 "; } else if (f.rank == 7) { factionEntry.EntryText += "Rank 7 "; } else if (f.rank == 8) { factionEntry.EntryText += "Rank 8 "; } else if (f.rank == 9) { factionEntry.EntryText += "Rank 9 "; } else if (f.rank == 9) { factionEntry.EntryText += "Rank 9 "; } else if (f.rank == 10) { factionEntry.EntryText += "Rank 10 "; } } } if ((f.showStrengthInJournal || f.showChangeRateInJournal) && (f.showRankInJournal)) { factionEntry.EntryText += "("; } if (f.showStrengthInJournal) { if (f.rank == 1) { factionEntry.EntryText += f.strength.ToString() + " of " + f.factionStrengthRequiredForRank2.ToString(); } else if (f.rank == 2) { factionEntry.EntryText += f.strength.ToString() + " of " + f.factionStrengthRequiredForRank3.ToString(); } else if (f.rank == 3) { factionEntry.EntryText += f.strength.ToString() + " of " + f.factionStrengthRequiredForRank4.ToString(); } else if (f.rank == 4) { factionEntry.EntryText += f.strength.ToString() + " of " + f.factionStrengthRequiredForRank5.ToString(); } else if (f.rank == 5) { factionEntry.EntryText += f.strength.ToString() + " of " + f.factionStrengthRequiredForRank6.ToString(); } else if (f.rank == 6) { factionEntry.EntryText += f.strength.ToString() + " of " + f.factionStrengthRequiredForRank7.ToString(); } else if (f.rank == 7) { factionEntry.EntryText += f.strength.ToString() + " of " + f.factionStrengthRequiredForRank8.ToString(); } else if (f.rank == 8) { factionEntry.EntryText += f.strength.ToString() + " of " + f.factionStrengthRequiredForRank9.ToString(); } else if (f.rank == 9) { factionEntry.EntryText += f.strength.ToString() + " of " + f.factionStrengthRequiredForRank10.ToString(); } else if (f.rank == 10) { factionEntry.EntryText += f.strength.ToString(); } } if ((f.showStrengthInJournal && !f.showChangeRateInJournal) && f.showRankInJournal) { factionEntry.EntryText += ") "; } if ((f.showChangeRateInJournal) && (f.showRankInJournal || f.showStrengthInJournal)) { if (f.showRankInJournal && f.showStrengthInJournal) { factionEntry.EntryText += ", " + f.amountOfFactionStrengthChangePerInterval.ToString() + " every " + f.intervalOfFactionStrengthChangeInHours.ToString() + "h)"; } else if (f.showRankInJournal && !f.showStrengthInJournal) { factionEntry.EntryText += f.amountOfFactionStrengthChangePerInterval.ToString() + " every " + f.intervalOfFactionStrengthChangeInHours.ToString() + "h)"; } else if (!f.showRankInJournal && f.showStrengthInJournal) { factionEntry.EntryText += ", " + f.amountOfFactionStrengthChangePerInterval.ToString() + " every " + f.intervalOfFactionStrengthChangeInHours.ToString() + "h"; } else if (f.showRankInJournal && !f.showStrengthInJournal) { factionEntry.EntryText += f.amountOfFactionStrengthChangePerInterval.ToString() + " every " + f.intervalOfFactionStrengthChangeInHours.ToString() + "h)"; } } else if (f.showChangeRateInJournal) { factionEntry.EntryText += f.amountOfFactionStrengthChangePerInterval.ToString() + " every " + f.intervalOfFactionStrengthChangeInHours.ToString() + "h"; } if (f.rank == 1) { if (f.accumulatedBuffStrengthRank1 != 0) { factionEntry.EntryText += ", +" + f.accumulatedBuffStrengthRank1.ToString() + " buff to AC/toHit/Saves"; //factionEntry.EntryText += "<br>"; } } else if (f.rank == 2) { if (f.accumulatedBuffStrengthRank2 != 0) { factionEntry.EntryText += ", +" + f.accumulatedBuffStrengthRank2.ToString() + " buff to AC/toHit/Saves"; //factionEntry.EntryText += "<br>"; } } else if (f.rank == 3) { if (f.accumulatedBuffStrengthRank3 != 0) { factionEntry.EntryText += ", +" + f.accumulatedBuffStrengthRank3.ToString() + " buff to AC/toHit/Saves"; //factionEntry.EntryText += "<br>"; } } else if (f.rank == 4) { if (f.accumulatedBuffStrengthRank4 != 0) { factionEntry.EntryText += ", +" + f.accumulatedBuffStrengthRank4.ToString() + " buff to AC/toHit/Saves"; //factionEntry.EntryText += "<br>"; } } else if (f.rank == 5) { if (f.accumulatedBuffStrengthRank5 != 0) { factionEntry.EntryText += ", +" + f.accumulatedBuffStrengthRank5.ToString() + " buff to AC/toHit/Saves"; //factionEntry.EntryText += "<br>"; } } else if (f.rank == 6) { if (f.accumulatedBuffStrengthRank6 != 0) { factionEntry.EntryText += ", +" + f.accumulatedBuffStrengthRank6.ToString() + " buff to AC/toHit/Saves"; //factionEntry.EntryText += "<br>"; } } else if (f.rank == 7) { if (f.accumulatedBuffStrengthRank7 != 0) { factionEntry.EntryText += ", +" + f.accumulatedBuffStrengthRank7.ToString() + " buff to AC/toHit/Saves"; //factionEntry.EntryText += "<br>"; } } else if (f.rank == 8) { if (f.accumulatedBuffStrengthRank8 != 0) { factionEntry.EntryText += ", +" + f.accumulatedBuffStrengthRank8.ToString() + " buff to AC/toHit/Saves"; //factionEntry.EntryText += "<br>"; } } else if (f.rank == 9) { if (f.accumulatedBuffStrengthRank9 != 0) { factionEntry.EntryText += ", +" + f.accumulatedBuffStrengthRank9.ToString() + " buff to AC/toHit/Saves"; //factionEntry.EntryText += "<br>"; } } else if (f.rank == 10) { if (f.accumulatedBuffStrengthRank10 != 0) { factionEntry.EntryText += ", +" + f.accumulatedBuffStrengthRank10.ToString() + " buff to AC/toHit/Saves"; //factionEntry.EntryText += "<br>"; } } factionEntry.EntryText += "<br>"; factionEntry.EntryText += "<br>"; factionEntry.EntryText += f.factionDescriptionInJournal; jQ.Entries.Add(factionEntry); idCounter++; } } break; } } } if (gv.mod.partyJournalQuests.Count > 0) { /* * int cnt = 0; * foreach (JournalQuest jq in gv.mod.partyJournalQuests) * { * if (journalScreenQuestIndex == cnt) { color = Color.Lime; } * else { color = Color.Black; } * gv.DrawText(jq.Name, locX, locY += spacing, 1.0f, color); * cnt++; * } */ int minQuestNumber = journalScreenQuestIndex - 3; int maxQuestNumber = journalScreenQuestIndex + 3; if (minQuestNumber < 0) { maxQuestNumber -= minQuestNumber; if (maxQuestNumber > gv.mod.partyJournalQuests.Count - 1) { maxQuestNumber = gv.mod.partyJournalQuests.Count - 1; } minQuestNumber = 0; } if (maxQuestNumber > gv.mod.partyJournalQuests.Count - 1) { minQuestNumber -= (maxQuestNumber - (gv.mod.partyJournalQuests.Count - 1)); if (minQuestNumber < 0) { minQuestNumber = 0; } maxQuestNumber = gv.mod.partyJournalQuests.Count - 1; } for (int i = minQuestNumber; i <= maxQuestNumber; i++) { if (journalScreenQuestIndex == i) { color = Color.Lime; } else { color = Color.Black; } gv.DrawText(gv.mod.partyJournalQuests[i].Name, locX, locY += spacing, 1.0f, color); } } //DRAW QUEST ENTRIES locY = tabStartY; gv.DrawText("Quest Entry:", locX, locY, 1.0f, Color.Black); gv.DrawText("--------------", locX, locY += spacing, 1.0f, Color.Black); if (gv.mod.partyJournalQuests.Count > 0) { //Description string textToSpan = "<font color='black'><i><b>" + gv.mod.partyJournalQuests[journalScreenQuestIndex].Entries[journalScreenEntryIndex].EntryTitle + "</b></i></font><br>"; textToSpan += gv.mod.partyJournalQuests[journalScreenQuestIndex].Entries[journalScreenEntryIndex].EntryText; string textToSpanReplaced = replaceText(textToSpan); int yLoc = pH * 18; description.tbXloc = locX; description.tbYloc = locY + spacing; description.tbWidth = pW * 60; description.tbHeight = pH * 45; description.logLinesList.Clear(); description.AddHtmlTextToLog(textToSpanReplaced); description.onDrawLogBox(); } //DRAW ALL CONTROLS ctrlUpArrow.Draw(); ctrlDownArrow.Draw(); ctrlLeftArrow.Draw(); ctrlRightArrow.Draw(); btnReturnJournal.Draw(); }
//PARTY SCREEN public void redrawPartyRoster() { if (partyScreenPcIndex >= gv.mod.playerList.Count) { partyScreenPcIndex = 0; } if (partyRosterPcIndex >= gv.mod.partyRosterList.Count) { partyRosterPcIndex = 0; } Player pc = null; if ((gv.mod.playerList.Count > 0) && (lastClickedPlayerList)) { pc = gv.mod.playerList[partyScreenPcIndex]; } else if ((gv.mod.partyRosterList.Count > 0) && (!lastClickedPlayerList)) { pc = gv.mod.partyRosterList[partyRosterPcIndex]; } if (pc != null) { gv.sf.UpdateStats(pc); } int pW = (int)((float)gv.screenWidth / 100.0f); int pH = (int)((float)gv.screenHeight / 100.0f); int padH = gv.squareSize / 6; int locY = 0; int locX = pW * 4; int textH = (int)gv.drawFontRegHeight; int spacing = textH; int tabX = pW * 50; int tabX2 = pW * 70; int leftStartY = 5 * gv.squareSize + (pH * 6); //Draw screen title name int textWidth = (int)gv.cc.MeasureString("Current Party Members [" + gv.mod.MaxPartySize + " Maximum]", SharpDX.DirectWrite.FontWeight.Normal, SharpDX.DirectWrite.FontStyle.Normal, gv.drawFontRegHeight); int ulX = (gv.screenWidth / 2) - (textWidth / 2); gv.DrawText("Current Party Members [" + gv.mod.MaxPartySize + " Maximum]", ulX, pH * 3, 1.0f, Color.Gray); //DRAW EACH PC BUTTON this.refreshPlayerTokens(); int cntPCs = 0; foreach (IbbButton btn in btnPartyIndex) { if (cntPCs < gv.mod.playerList.Count) { if (cntPCs == partyScreenPcIndex) { btn.glowOn = true; } else { btn.glowOn = false; } btn.Draw(); } cntPCs++; } //Draw screen title name textWidth = (int)gv.cc.MeasureString("Party Roster [Players in Reserve]", SharpDX.DirectWrite.FontWeight.Normal, SharpDX.DirectWrite.FontStyle.Normal, gv.drawFontRegHeight); ulX = (gv.screenWidth / 2) - (textWidth / 2); gv.DrawText("Party Roster [Players in Reserve]", ulX, 3 * gv.squareSize + (pH * 0), 1.0f, Color.Gray); //DRAW EACH ROSTER PC BUTTON this.refreshRosterPlayerTokens(); cntPCs = 0; foreach (IbbButton btn in btnPartyRosterIndex) { if (cntPCs < gv.mod.partyRosterList.Count) { if (cntPCs == partyRosterPcIndex) { btn.glowOn = true; } else { btn.glowOn = false; } btn.Draw(); } cntPCs++; } btnDown.Draw(); btnUp.Draw(); btnHelp.Draw(); btnReturn.Draw(); if (pc != null) { //DRAW LEFT STATS gv.DrawText("Name: " + pc.name, locX, locY += leftStartY); gv.DrawText(gv.mod.raceLabel + ": " + gv.mod.getRace(pc.raceTag).name, locX, locY += spacing); if (pc.isMale) { gv.DrawText("Gender: Male", locX, locY += spacing); } else { gv.DrawText("Gender: Female", locX, locY += spacing); } gv.DrawText("Class: " + gv.mod.getPlayerClass(pc.classTag).name, locX, locY += spacing); gv.DrawText("Level: " + pc.classLevel, locX, locY += spacing); gv.DrawText("XP: " + pc.XP + "/" + pc.XPNeeded, locX, locY += spacing); gv.DrawText("---------------", locX, locY += spacing); //draw spells known list string allSpells = ""; foreach (string s in pc.knownSpellsTags) { Spell sp = gv.mod.getSpellByTag(s); allSpells += sp.name + ", "; } gv.DrawText(pc.playerClass.spellLabelPlural + ": " + allSpells, locX, locY += spacing); //draw traits known list string allTraits = ""; foreach (string s in pc.knownTraitsTags) { Trait tr = gv.mod.getTraitByTag(s); allTraits += tr.name + ", "; } gv.DrawText(pc.playerClass.traitLabelPlural + ": " + allTraits, locX, locY += spacing); //DRAW RIGHT STATS int actext = 0; if (gv.mod.ArmorClassAscending) { actext = pc.AC; } else { actext = 20 - pc.AC; } locY = 0; gv.DrawText("STR: " + pc.strength, tabX, locY += leftStartY); gv.DrawText("AC: " + actext, tabX2, locY); gv.DrawText("DEX: " + pc.dexterity, tabX, locY += spacing); gv.DrawText("HP: " + pc.hp + "/" + pc.hpMax, tabX2, locY); gv.DrawText("CON: " + pc.constitution, tabX, locY += spacing); gv.DrawText("SP: " + pc.sp + "/" + pc.spMax, tabX2, locY); gv.DrawText("INT: " + pc.intelligence, tabX, locY += spacing); gv.DrawText("BAB: " + pc.baseAttBonus, tabX2, locY); gv.DrawText("WIS: " + pc.wisdom, tabX, locY += spacing); gv.DrawText("CHA: " + pc.charisma, tabX, locY += spacing); } }