From f4cff0e493c9b6d18a3ca10ea3e05e701504ce41 Mon Sep 17 00:00:00 2001 From: Harbinger Date: Thu, 27 Sep 2012 20:11:52 -0700 Subject: [PATCH] NPC loading and saving! --- src/org/sevenchan/AdventureController.as | 16 +++++- src/org/sevenchan/dongs/RPGMath.as | 36 +++++--------- src/org/sevenchan/dongs/bodyparts/Asshole.as | 2 +- src/org/sevenchan/dongs/creature/Demon.as | 2 - src/org/sevenchan/dongs/creature/Player.as | 1 + src/org/sevenchan/dongs/creature/npc/Gargoyle.as | 15 +++++- src/org/sevenchan/dongs/creature/npc/NPC.as | 2 +- .../dongs/screens/encounters/GargoyleEncounter.as | 58 ++++++++++++++-------- 8 files changed, 81 insertions(+), 51 deletions(-) rewrite src/org/sevenchan/dongs/RPGMath.as (78%) diff --git a/src/org/sevenchan/AdventureController.as b/src/org/sevenchan/AdventureController.as index a866b5e..b527d20 100644 --- a/src/org/sevenchan/AdventureController.as +++ b/src/org/sevenchan/AdventureController.as @@ -111,9 +111,11 @@ package org.sevenchan y += 129.2; btnLoadSaveGame.addEventListener(MouseEvent.CLICK, onLoadOrSave); btnImportGame = addButton("Import Game", 100, y, toprow); - y += 129.2; //btnNewGame.addEventListener(MouseEvent.CLICK, onSelectPerk); + y += 129.2; + btnImportGame.addEventListener(MouseEvent.CLICK, onImport); btnExportGame = addButton("Export Game", 100, y, toprow); - y += 129.2; //btnNewGame.addEventListener(MouseEvent.CLICK, onExport); + y += 129.2; + btnExportGame.addEventListener(MouseEvent.CLICK, onExport); btnDebugMenu = addButton("Debug Menu", 100, y, toprow); y += 129.2; btnDebugMenu.addEventListener(MouseEvent.CLICK, onDebugMenu); @@ -180,6 +182,16 @@ package org.sevenchan app.creatures.init(player); setScreen(new NewGameScreen()); } + private function onImport(e:MouseEvent):void + { + player = new Player(this); + player.setMain(this); + player.load(-1); + } + private function onExport(e:MouseEvent):void + { + player.save(-1); + } private function onLoadOrSave(e:MouseEvent):void { diff --git a/src/org/sevenchan/dongs/RPGMath.as b/src/org/sevenchan/dongs/RPGMath.as dissimilarity index 78% index bfaae84..4a96d65 100644 --- a/src/org/sevenchan/dongs/RPGMath.as +++ b/src/org/sevenchan/dongs/RPGMath.as @@ -1,23 +1,13 @@ -package org.sevenchan.dongs -{ - /** - * Calculate math stuff - * @author Harbinger - */ - public class RPGMath - { - /** - * Determine possible damage from a weapon strike based on attacker strength, weapon base damage and weapon wear, plus victim's armor - * @param attacker - * @param weapon - * @param victim - * @return - */ - public static function getDamage(attacker:Creature, weapon:Weapon, victim:Creature):Number { - return attacker.getEffectiveStrength() * (weapon.baseDamage * (1 - weapon.wear)) * (victim.getEffectiveArmor() > 0?0.1:1); - } - - - } - -} \ No newline at end of file +package org.sevenchan.dongs +{ + /** + * Calculate math stuff + * @author Harbinger + */ + public class RPGMath + { + + + } + +} \ No newline at end of file diff --git a/src/org/sevenchan/dongs/bodyparts/Asshole.as b/src/org/sevenchan/dongs/bodyparts/Asshole.as index 7b21ac4..6a7334d 100644 --- a/src/org/sevenchan/dongs/bodyparts/Asshole.as +++ b/src/org/sevenchan/dongs/bodyparts/Asshole.as @@ -78,7 +78,7 @@ package org.sevenchan.dongs.bodyparts var o:String = ""; if (num > 0) o += num + " "; - return o+tightness+filled+ " "+_name + " asshole"+((num>1)?"s":"")+", "+location+""+stretched; + return o+tightness+filled+ " "+_name + " asshole"+((num>1)?"s":"")+", "+location+stretched; } diff --git a/src/org/sevenchan/dongs/creature/Demon.as b/src/org/sevenchan/dongs/creature/Demon.as index 9bbb35b..a6f5807 100644 --- a/src/org/sevenchan/dongs/creature/Demon.as +++ b/src/org/sevenchan/dongs/creature/Demon.as @@ -8,8 +8,6 @@ package org.sevenchan.dongs.creature import flash.net.registerClassAlias; /** * Demons are basically magically corrupted humans, so many of the features should remain the same. - * - * Should add in some mutations, though. * @author Harbinger */ public class Demon extends Creature diff --git a/src/org/sevenchan/dongs/creature/Player.as b/src/org/sevenchan/dongs/creature/Player.as index a1700e1..b85795a 100644 --- a/src/org/sevenchan/dongs/creature/Player.as +++ b/src/org/sevenchan/dongs/creature/Player.as @@ -90,6 +90,7 @@ package org.sevenchan.dongs.creature body: baseType, npcs: NPC.instances }); + ba.objectEncoding = ObjectEncoding.AMF3; var f:FileReference = new FileReference(); f.save(ba, "save.dat"); } diff --git a/src/org/sevenchan/dongs/creature/npc/Gargoyle.as b/src/org/sevenchan/dongs/creature/npc/Gargoyle.as index 6fa3cfb..732ca7d 100644 --- a/src/org/sevenchan/dongs/creature/npc/Gargoyle.as +++ b/src/org/sevenchan/dongs/creature/npc/Gargoyle.as @@ -1,18 +1,22 @@ package org.sevenchan.dongs.creature.npc { + import org.sevenchan.dongs.bodyparts.Breast; import org.sevenchan.dongs.Creature; import org.sevenchan.dongs.screens.encounters.GargoyleEncounter; + import flash.net.*; + /** * ... * @author Harbinger */ public class Gargoyle extends NPC { + registerClassAlias("_NPC_Gargoyle", Gargoyle); public var confidence:int = 0; public function Gargoyle() { super("Gargoyle"); - // Defer setup until later. + // Defer setup until onNewNPC, since it's stored in saves. } override public function getTypeName():String { @@ -21,6 +25,7 @@ package org.sevenchan.dongs.creature.npc override public function onNewNPC():void { trace("Gargoyle.onNewNPC()!"); + ownName = "The Gargoyle"; } override public function onLoad(npc:NPC):void @@ -41,6 +46,14 @@ package org.sevenchan.dongs.creature.npc return false; } + override public function addBreast():Breast + { + var boob:Breast = BodyPartRegistry.demon_breast; + boob.size = 6; + breasts.push(boob); + return boob; + } + } } \ No newline at end of file diff --git a/src/org/sevenchan/dongs/creature/npc/NPC.as b/src/org/sevenchan/dongs/creature/npc/NPC.as index a7a1bca..573cc8c 100644 --- a/src/org/sevenchan/dongs/creature/npc/NPC.as +++ b/src/org/sevenchan/dongs/creature/npc/NPC.as @@ -14,7 +14,7 @@ package org.sevenchan.dongs.creature.npc /** * All NPCs in the world. */ - public static var instances:Object = new Object(); + public static var instances:Object = {}; /** * The unique ID of this particular NPC. diff --git a/src/org/sevenchan/dongs/screens/encounters/GargoyleEncounter.as b/src/org/sevenchan/dongs/screens/encounters/GargoyleEncounter.as index eb78eb1..30276cf 100644 --- a/src/org/sevenchan/dongs/screens/encounters/GargoyleEncounter.as +++ b/src/org/sevenchan/dongs/screens/encounters/GargoyleEncounter.as @@ -1,4 +1,4 @@ -package org.sevenchan.dongs.screens.encounters +package org.sevenchan.dongs.screens.encounters { import org.sevenchan.AdventureController; import org.sevenchan.dongs.ActionNode; @@ -12,7 +12,7 @@ package org.sevenchan.dongs.screens.encounters * ... * @author Harbinger */ - public class GargoyleEncounter extends Encounter + public class GargoyleEncounter extends Encounter { public static function push(subj:Gargoyle):void @@ -21,6 +21,7 @@ package org.sevenchan.dongs.screens.encounters } public var gargoyle:Gargoyle = new Gargoyle(); + public function GargoyleEncounter(subj:Gargoyle) { super(subj); @@ -32,29 +33,44 @@ package org.sevenchan.dongs.screens.encounters currentItem.content = "TESTING THE GODDAMN NPC SERIALIZING STUFF"; var boobs:MenuNode = currentItem.pushMenu("BOOBUSSES", "HOW MANY TITS DOES SHE HAVE") { - boobs.pushAction("ADD", -1, "GIRL U NEED MORE MEET ON UR BONEZ", function(ply:Creature, node:ActionNode, o:*):Boolean - { - gargoyle.addBreast(); - gargoyle.addBreast(); - gargoyle.save(); - node.content = "The Gargoyle currently has " + gargoyle.breasts.length + " titties."; - return true; - }); - boobs.pushAction("REMOVE", -1, "SHIT GRL U LOOK LIKE A WATARMELON CENTERPEED", function(ply:Creature, node:ActionNode, o:*):Boolean - { - if (gargoyle.breasts.length > 0) { - gargoyle.breasts=gargoyle.breasts.splice(0, 2); - } - gargoyle.save(); - node.content = "The Gargoyle currently has " + gargoyle.breasts.length + " titties."; - return true; - }); + boobs.pushAction("ADD", -1, "GIRL U NEED MORE MEET ON UR BONEZ", addBoobs); + boobs.pushAction("REMOVE", -1, "SHIT GRL U LOOK LIKE A WATARMELON CENTERPEED", remBoobs); } } - else { + else + { currentItem.content = "The Gargoyle currently has " + gargoyle.breasts.length + " titties."; } } + + override public function onStartupScreen():void + { + gargoyle.load(); + text = "The Gargoyle currently has " + gargoyle.breasts.length + " titties."; + } + override public function onLeaving():void + { + gargoyle.save(); + } + + private function addBoobs(ply:Creature, node:ActionNode, o:*):Boolean + { + gargoyle.addBreast(); + gargoyle.addBreast(); + text = "The Gargoyle currently has " + gargoyle.breasts.length + " titties."; + trace(text); + return false; + } + + private function remBoobs(ply:Creature, node:ActionNode, o:*):Boolean + { + if (gargoyle.breasts.length > 0) + { + gargoyle.breasts = gargoyle.breasts.splice(0, 2); + } + text = "The Gargoyle currently has " + gargoyle.breasts.length + " titties."; + trace(text); + return false; + } } - } \ No newline at end of file -- 2.11.4.GIT